8 #include "EVENT/LCIO.h"
25 using namespace lcio ;
31 static string FILEN =
"trackerhits.slcio" ;
34 const static string testname=
"test_trackerhit";
46 MYTEST.
LOG(
" writing TrackerHits " );
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::TRACKERHIT ) ;
65 ILDCellIDEncoder<TrackerHitImpl> idEnc(
"readoutUnit:8,daqChannel:16," , trkHits ) ;
71 for(
int j=0;j<
NHITS;j++){
73 TrackerHitImpl* trkHit =
new TrackerHitImpl ;
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 trkHit->setEDepError( (i+j)*.3 ) ;
89 double pos[3] = { 1.*i, 1.*j, 1.*i*j } ;
90 trkHit->setPosition( pos ) ;
92 float cov[
TRKHITNCOVMATRIX] = { float(i), float(j), float(i+j) , float(2*i), float(2.*j), float(2.*(i+j) ) } ;
93 trkHit->setCovMatrix( cov );
95 trkHits->addElement( trkHit ) ;
97 evt->addCollection( trkHits ,
"TrackerHits") ;
99 lcWrt->writeEvent(evt) ;
107 MYTEST.
LOG(
" reading back TrackerHits from file " ) ;
110 LCReader* lcRdr = LCFactory::getInstance()->createLCReader() ;
112 lcRdr->open(
FILEN ) ;
114 for(
int i=0;i<
NEVENT;i++){
118 LCEvent* evt = lcRdr->readNextEvent() ;
120 MYTEST( evt->getRunNumber() , 4711 ,
" run number " ) ;
122 MYTEST( evt->getEventNumber() , i ,
" event number " ) ;
124 LCCollection* trkHits = evt->getCollection(
"TrackerHits") ;
126 CellIDDecoder<TrackerHit> idDec( trkHits ) ;
128 for(
int j=0;j<
NHITS;j++) {
132 TrackerHit* trkHit =
dynamic_cast<TrackerHit*
>(trkHits->getElementAt(j)) ;
135 MYTEST( idDec(trkHit)[ LCTrackerCellID::subdet() ] , ILDDetID::FTD ,
" cellID(trkHit) == ( ILDDetID::FTD ) " ) ;
136 MYTEST( idDec(trkHit)[ LCTrackerCellID::layer() ] , j % 100 ,
" cellID(trkHit) == ( j % 100 ) " ) ;
137 MYTEST( idDec(trkHit)[ LCTrackerCellID::side() ] , ILDDetID::bwd ,
" cellID(trkHit) == ( ILDDetID::bwd ) " ) ;
138 MYTEST( idDec(trkHit)[ LCTrackerCellID::module() ] , j / 100 + 1 ,
" cellID(trkHit) == ( j / 100 + 1 ) " ) ;
139 MYTEST( idDec(trkHit)[ LCTrackerCellID::sensor() ] , j % 4 ,
" cellID(trkHit) == ( j % 4 ) " ) ;
140 MYTEST( idDec(trkHit)[
"daqChannel"] , j*8 ,
" cellID(trkHit) == ( j*8 ) " ) ;
145 MYTEST( trkHit->getEDep() , i*j*117. ,
"EDep" ) ;
149 MYTEST( trkHit->getEDepError() , float((i+j)*.3) ,
"EDepError" ) ;
152 const double* pos = trkHit->getPosition() ;
154 MYTEST( pos[0] , i ,
" pos[0] " ) ;
155 MYTEST( pos[1] , j ,
" pos[1] " ) ;
156 MYTEST( pos[2] , i*j ,
" pos[2] " ) ;
159 const FloatVec& cov = trkHit->getCovMatrix() ;
161 MYTEST( cov[0] , i ,
" cov[0] " ) ;
162 MYTEST( cov[1] , j ,
" cov[1] " ) ;
163 MYTEST( cov[2] , i+j ,
" cov[2] " ) ;
170 }
catch( Exception &e ){
171 MYTEST.
FAILED( e.what() );
static const string testname
std::vector< float > FloatVec
Vector of floats.
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)