FE Software Emulator Progress
Nikola Whallon
University of Washington
April 14, 2017, LBNL Instrumentation Meeting
1 / 12
FE Software Emulator Progress Nikola Whallon University of - - PowerPoint PPT Presentation
FE Software Emulator Progress Nikola Whallon University of Washington April 14, 2017, LBNL Instrumentation Meeting 1 / 12 Current Emulator Flow Chart a lot of work has gone into refactoring the emulator to expand functionality and flexibility
1 / 12
YARR EmuManager Fei4Emu m fei4Pixels m fei4Cfg m fei4PixelModelCfg m pixelIterator Emu Fei4Pixel m fei4Cfg m fei4PixelModelCfg Pixel Fei4Cfg Fei4PixelModelCfg PixelIterator<Fei4Pixel> shm shm ClipBoard ClipBoard data flow pointer shared ptr inheritance x FE Num
2 / 12
YARR EmuManager Emu Fei4Emu m fei4Pixels m fei4Cfg m fei4PixelModelCfg m pixelIterator Fei4Pixel m fei4Cfg m fei4PixelModelCfg Pixel Fei4Cfg Fei4PixelModelCfg PixelIterator<Fei4Pixel> shm shm ClipBoard ClipBoard data flow pointer shared ptr inheritance x FE Num
3 / 12
YARR EmuManager Emu RD53AEmu m rd53aPixels m rd53aCfg m rd53aPixelModelCfg m pixelIterator RD53APixel m rd53aCfg m rd53aPixelModelCfg Pixel RD53ACfg RD53APixelModelCfg PixelIterator<RD53APixel> shm shm ClipBoard ClipBoard data flow pointer shared ptr inheritance x FE Num
4 / 12
v i r t u a l bool i s E n a b l e d ( ) = 0 ; v i r t u a l void i n i t N o i s e D i s t r i b u t i o n ( ) = 0; v i r t u a l f l o a t c a l c u l a t e T h r e s h o l d ( ) = 0; v i r t u a l f l o a t c a l c u l a t e N o i s e () = 0 ; v i r t u a l u i n t 3 2 t calculateToT ( f l o a t charge ) = 0 ;
std : : s h a r e d p t r<RD53ACfg> m rd53aCfg ; std : : s h a r e d p t r<RD53APixelModelCfg> m rd53aPixelModelCfg ;
5 / 12
c l a s s Fei4PixelModelCfg { p u b l i c : RD53APixelModelCfg ( std : : s t r i n g j s o n f i l e p a t h ) ; ˜ RD53APixelModelCfg ( ) ; // 80 and 336 would change to whatever // the number
rows and columns i s f l o a t noise sigma mean [ 8 0 ] [ 3 3 6 ] ; f l o a t n o i s e s i g m a s i g m a [ 8 0 ] [ 3 3 6 ] ; f l o a t n o i s e s i g m a g a u s s [ 8 0 ] [ 3 3 6 ] ; //
v a r i a b l e s which may need modeling // f o r example , g l o b a l t h r e s h o l d s
. . . };
6 / 12
7 / 12
// we use ClipBoard
to communicate with the EmuManager ClipBoard<u i n t 3 2 t >∗ m txClipBoard ; ClipBoard<u i n t 3 2 t >∗ m rxClipBoard ; // f u n c t i o n s f o r sending data to the EmuManager void pushOutput ( u i n t 3 2 t v a l u e ) ; // use a mutex to make s u r e the emulator i s ready to r e c e i v e commands std : : mutex m mutex ;
// the main loop which r e c i e v e s commands from y a r r v i r t u a l void executeLoop ( ) = 0; // f u n c t i o n s f o r h a n d l i n g the r e c i e v e d commands v i r t u a l void h a n d l e T r i g g e r ( ) = 0 ;
8 / 12
P i x e l I t e r a t o r& o p e r a t o r ++(); P i x e l I t e r a t o r begin ( ) ; P i x e l I t e r a t o r end ( ) ;
template< > P i x e l I t e r a t o r <RD53APixel> & P i x e l I t e r a t o r <RD53APixel >:: o p e r a t o r ++(); template< > P i x e l I t e r a t o r <RD53APixel> P i x e l I t e r a t o r <RD53APixel >:: begin ( ) ; template< > P i x e l I t e r a t o r <RD53APixel> P i x e l I t e r a t o r <RD53APixel >:: end ( ) ;
9 / 12
10 / 12
11 / 12
12 / 12