8 #include "EVENT/LCIO.h"
25 using namespace lcio ;
31 static string FILEN =
"simtrackerhits.slcio" ;
34 const static string testname=
"test_simtrackerhit";
46 MYTEST.
LOG(
" writing SimTrackerHits " );
49 LCWriter* lcWrt = LCFactory::getInstance()->createLCWriter() ;
51 lcWrt->open(
FILEN , LCIO::WRITE_NEW ) ;
57 LCEventImpl* evt =
new LCEventImpl() ;
60 evt->setRunNumber( 4711 ) ;
61 evt->setEventNumber( i ) ;
63 LCCollectionVec* trkHits =
new LCCollectionVec( LCIO::SIMTRACKERHIT ) ;
65 ILDCellIDEncoder<SimTrackerHitImpl> idEnc(
"readoutUnit:8,daqChannel:16," , trkHits ) ;
71 for(
int j=0;j<
NHITS;j++){
73 SimTrackerHitImpl* trkHit =
new SimTrackerHitImpl ;
77 idEnc[ LCTrackerCellID::subdet() ] = ILDDetID::FTD ;
78 idEnc[ LCTrackerCellID::layer() ] = j % 100 ;
79 idEnc[ LCTrackerCellID::side() ] = ILDDetID::bwd ;
80 idEnc[ LCTrackerCellID::module() ] = j / 100 + 1 ;
81 idEnc[ LCTrackerCellID::sensor() ] = j % 4 ;
82 idEnc[
"daqChannel"] = j*8 ;
84 idEnc.setCellID( trkHit ) ;
86 trkHit->setEDep( i*j*117. ) ;
88 if( (i+j) % 3 == 0 ) {
89 trkHit->setProducedBySecondary(
true );
92 if( (i+j) % 5 == 0 ) {
93 trkHit->setOverlay(
true );
96 double pos[3] = { 1.*i, 1.*j, 1.*i*j } ;
97 trkHit->setPosition( pos ) ;
99 trkHits->addElement( trkHit ) ;
101 evt->addCollection( trkHits ,
"SimTrackerHits") ;
103 lcWrt->writeEvent(evt) ;
111 MYTEST.
LOG(
" reading back SimTrackerHits from file " ) ;
114 LCReader* lcRdr = LCFactory::getInstance()->createLCReader() ;
116 lcRdr->open(
FILEN ) ;
118 for(
int i=0;i<
NEVENT;i++){
122 LCEvent* evt = lcRdr->readNextEvent() ;
124 MYTEST( evt->getRunNumber() , 4711 ,
" run number " ) ;
126 MYTEST( evt->getEventNumber() , i ,
" event number " ) ;
128 LCCollection* trkHits = evt->getCollection(
"SimTrackerHits") ;
130 CellIDDecoder<SimTrackerHit> idDec( trkHits ) ;
132 for(
int j=0;j<
NHITS;j++) {
136 SimTrackerHit* trkHit =
dynamic_cast<SimTrackerHit*
>(trkHits->getElementAt(j)) ;
139 MYTEST( idDec(trkHit)[ LCTrackerCellID::subdet() ] , ILDDetID::FTD ,
" cellID(trkHit) == ( ILDDetID::FTD ) " ) ;
140 MYTEST( idDec(trkHit)[ LCTrackerCellID::layer() ] , j % 100 ,
" cellID(trkHit) == ( j % 100 ) " ) ;
141 MYTEST( idDec(trkHit)[ LCTrackerCellID::side() ] , ILDDetID::bwd ,
" cellID(trkHit) == ( ILDDetID::bwd ) " ) ;
142 MYTEST( idDec(trkHit)[ LCTrackerCellID::module() ] , j / 100 + 1 ,
" cellID(trkHit) == ( j / 100 + 1 ) " ) ;
143 MYTEST( idDec(trkHit)[ LCTrackerCellID::sensor() ] , j % 4 ,
" cellID(trkHit) == ( j % 4 ) " ) ;
144 MYTEST( idDec(trkHit)[
"daqChannel"] , j*8 ,
" cellID(trkHit) == ( j*8 ) " ) ;
146 MYTEST( trkHit->getEDep() , i*j*117. ,
"EDep" ) ;
148 MYTEST( trkHit->isProducedBySecondary() ,
bool((i+j)%3==0) ,
"Secondary" ) ;
149 MYTEST( trkHit->isOverlay() ,
bool((i+j)%5==0) ,
"Overlay" ) ;
151 const double* pos = trkHit->getPosition() ;
153 MYTEST( pos[0] , i ,
" pos[0] " ) ;
154 MYTEST( pos[1] , j ,
" pos[1] " ) ;
155 MYTEST( pos[2] , i*j ,
" pos[2] " ) ;
162 }
catch( Exception &e ){
163 MYTEST.
FAILED( e.what() );
static const string testname
void FAILED(const std::string &msg)
int main(int argc, char **argv)
Simple program that opens existing LCIO files and appends the records needed for direct access - if t...
void LOG(const std::string &msg)