From b635c35c022c80c21d54f5396dd6914afb25c6b8 Mon Sep 17 00:00:00 2001 From: gianelle Date: Tue, 15 Feb 2022 12:41:27 +0100 Subject: [PATCH 1/2] update values in LCTupleConf.h add in TrackBranches track hit subdetector add in TrackerHitBranches hit subdetector fix a bug in JetBranches --- include/LCTupleConf.h | 10 ++--- include/TrackBranches.h | 1 + include/TrackerHitBranches.h | 1 + src/JetBranches.cc | 71 ++++++++++++++++++------------------ src/TrackBranches.cc | 6 ++- src/TrackerHitBranches.cc | 3 ++ 6 files changed, 50 insertions(+), 42 deletions(-) diff --git a/include/LCTupleConf.h b/include/LCTupleConf.h index d772712..f8f6f4b 100644 --- a/include/LCTupleConf.h +++ b/include/LCTupleConf.h @@ -25,19 +25,19 @@ struct CollID : public lcrtrel::LCIntExtension {} ; #define LCT_COLLENTRIES_MAX 1000000 #define LCT_MCPARTICLE_MAX 1000000 #define LCT_RECOPARTICLE_MAX 100000 -#define LCT_TRACK_MAX 100000 +#define LCT_TRACK_MAX 300000 #define LCT_TRACKSTATE_MAX 1000000 -#define LCT_CLUSTER_MAX 100000 +#define LCT_CLUSTER_MAX 200000 #define LCT_RELATION_MAX 1000000 #define LCT_SIMTRACKERHIT_MAX 1000000 -#define LCT_TRACKERHIT_MAX 1000000 +#define LCT_TRACKERHIT_MAX 3000000 #define LCT_TRACKERRAWHIT_MAX 5000000 #define LCT_SIMCALORIMETERHIT_MAX 1000000 #define LCT_CALORIMETERHIT_MAX 1000000 #define LCT_PARTICLEID_MAX 1000000 #define LCT_VERTEX_MAX 1000 -#define LCT_JET_MAX 20 -#define LCT_JET_PARTICLES_MAX 20 +#define LCT_JET_MAX 200 +#define LCT_JET_PARTICLES_MAX 200 #define LCT_ISOLEP_MAX 100000 #define LCT_STRING_MAX 1024 diff --git a/include/TrackBranches.h b/include/TrackBranches.h index 6d654fa..07633e4 100644 --- a/include/TrackBranches.h +++ b/include/TrackBranches.h @@ -46,6 +46,7 @@ class TrackBranches : public CollectionBranches { float _trrih[ LCT_TRACK_MAX ] {} ; int _trthn[ LCT_TRACK_MAX ] {} ; // total number of hits int _trthi[ LCT_TRACK_MAX ][50] {} ; // track hit indices + int _trthd[ LCT_TRACK_MAX ][50] {} ; // track hit subdetector int _trshn[ LCT_TRACK_MAX ][12] {} ; int _trnts[ LCT_TRACK_MAX ] {} ; int _trfts[ LCT_TRACK_MAX ] {} ; diff --git a/include/TrackerHitBranches.h b/include/TrackerHitBranches.h index 4ab7e48..4534027 100644 --- a/include/TrackerHitBranches.h +++ b/include/TrackerHitBranches.h @@ -46,6 +46,7 @@ class TrackerHitBranches : public CollectionBranches { double _thpoz[ LCT_TRACKERHIT_MAX ] {} ; float _thedp[ LCT_TRACKERHIT_MAX ] {} ; float _thtim[ LCT_TRACKERHIT_MAX ] {} ; + int _thdet[ LCT_TRACKERHIT_MAX ] {} ; float _thcov[ LCT_TRACKERHIT_MAX ][6] {} ; diff --git a/src/JetBranches.cc b/src/JetBranches.cc index 1c2f56d..8aef656 100644 --- a/src/JetBranches.cc +++ b/src/JetBranches.cc @@ -87,26 +87,27 @@ void JetBranches::initBranches( TTree* tree, const std::string& pre){ tree->Branch( (pre+"jnpid" ).c_str() , &_jnpid , (pre+"jnpid/I").c_str() ) ; tree->Branch( (pre+"npfojet").c_str(), &_njetpfo , (pre+"npfojet["+pre+"njet]/I").c_str() ) ; - tree->Branch( (pre+"rcidx").c_str(), &_jetpfoori , (pre+"rcidx["+pre+"njet][20]/I").c_str() ) ; + tree->Branch( (pre+"rcidx").c_str(), &_jetpfoori , (pre+"rcidx["+pre+"njet][LCT_JET_PARTICLES_MAX]/I").c_str() ) ; } // end if //PFO branches if(_writeDaughtersParameters) { + tree->Branch( (pre+"ndaughters").c_str(), _ndaughters , (pre+"ndaughters["+pre+"njet]/I").c_str() ) ; - tree->Branch( (pre+"ntracks").c_str(), _ntracks , (pre+"ntracks["+pre+"njet]/I").c_str() ) ; - tree->Branch( (pre+"nclusters").c_str(), _nclusters , (pre+"nclusters["+pre+"njet]/I").c_str() ) ; - tree->Branch( (pre+"daughters_PX").c_str(), _daughters_PX , (pre+"daughters_PX["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_PY").c_str(), _daughters_PY , (pre+"daughters_PY["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_PZ").c_str(), _daughters_PZ , (pre+"daughters_PZ["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_E").c_str(), _daughters_E , (pre+"daughters_E["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_M").c_str(), _daughters_M , (pre+"daughters_M["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_Q").c_str(), _daughters_Q , (pre+"daughters_Q["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_trackD0").c_str(), _daughters_trackD0 , (pre+"daughters_trackD0["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_trackPhi").c_str(), _daughters_trackPhi , (pre+"daughters_trackPhi["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_trackOmega").c_str(), _daughters_trackOmega , (pre+"daughters_trackOmega["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_trackZ0").c_str(), _daughters_trackZ0 , (pre+"daughters_trackZ0["+pre+"njet][20]/F").c_str() ) ; - tree->Branch( (pre+"daughters_trackTanLambda").c_str(), _daughters_trackTanLambda , (pre+"daughters_trackTanLambda["+pre+"njet][20]/F").c_str() ) ; + tree->Branch( (pre+"ntracks").c_str(), _ntracks , (pre+"ntracks["+pre+"njet]/I").c_str() ) ; + tree->Branch( (pre+"nclusters").c_str(), _nclusters , (pre+"nclusters["+pre+"njet]/I").c_str() ) ; + tree->Branch( (pre+"daughters_PX").c_str(), _daughters_PX , (pre+"daughters_PX["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_PY").c_str(), _daughters_PY , (pre+"daughters_PY["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_PZ").c_str(), _daughters_PZ , (pre+"daughters_PZ["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_E").c_str(), _daughters_E , (pre+"daughters_E["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_M").c_str(), _daughters_M , (pre+"daughters_M["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_Q").c_str(), _daughters_Q , (pre+"daughters_Q["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_trackD0").c_str(), _daughters_trackD0 , (pre+"daughters_trackD0["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_trackPhi").c_str(), _daughters_trackPhi , (pre+"daughters_trackPhi["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_trackOmega").c_str(), _daughters_trackOmega , (pre+"daughters_trackOmega["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_trackZ0").c_str(), _daughters_trackZ0 , (pre+"daughters_trackZ0["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; + tree->Branch( (pre+"daughters_trackTanLambda").c_str(), _daughters_trackTanLambda , (pre+"daughters_trackTanLambda["+pre+"njet][LCT_JET_PARTICLES_MAX]/F").c_str() ) ; } @@ -196,23 +197,23 @@ void JetBranches::fill(const EVENT::LCCollection* col, EVENT::LCEvent* evt ) _ntracks[ i ] = 0; _nclusters[ i ] = 0; - - for ( size_t j = 0; j < LCT_JET_PARTICLES_MAX ; ++j ) { + if(_writeDaughtersParameters) { + + for ( size_t j = 0; j < LCT_JET_PARTICLES_MAX ; ++j ) { _daughters_PX[ i ][ j ] = 0 ; _daughters_PY[ i ][ j ] = 0 ; _daughters_PZ[ i ][ j ] = 0 ; _daughters_E[ i ][ j ] = 0 ; _daughters_M[ i ][ j ] = 0 ; _daughters_Q[ i ][ j ] = 0 ; - _daughters_trackD0[ i ][ j ] = 0; + _daughters_trackD0[ i ][ j ] = 0; _daughters_trackPhi[ i ][ j ] = 0; _daughters_trackOmega[ i ][ j ] = 0; _daughters_trackZ0[ i ][ j ] = 0; _daughters_trackTanLambda[ i ][ j ] = 0; - - } - - } + } + } + } if( !col ) return ; @@ -289,18 +290,16 @@ void JetBranches::fill(const EVENT::LCCollection* col, EVENT::LCEvent* evt ) _jcov8[ i ] = jet->getCovMatrix()[8]; _jcov9[ i ] = jet->getCovMatrix()[9]; - if(_writeDaughtersParameters){ - auto particles = jet->getParticles(); - _ndaughters[ i ] = particles.size() ; - - int nparticles = std::min( particles.size() , LCT_JET_PARTICLES_MAX ); // check array limit ... - memset( &_jetpfoori[ i ][0], -1, LCT_JET_PARTICLES_MAX ); // init indices + if (_writeDaughtersParameters) { + auto particles = jet->getParticles(); + _ndaughters[ i ] = particles.size() ; - int ntracks=0; - int nclusters=0; + int ntracks=0; + int nclusters=0; + int nparticles = std::min( particles.size() , LCT_JET_PARTICLES_MAX ); // check array limit ... - for( int partid = 0 ; partid < nparticles ; ++partid ) { - _daughters_PX[ i ][ partid ] = particles[partid]->getMomentum()[0] ; + for( int partid = 0 ; partid < nparticles ; ++partid ) { + _daughters_PX[ i ][ partid ] = particles[partid]->getMomentum()[0] ; _daughters_PY[ i ][ partid ] = particles[partid]->getMomentum()[1] ; _daughters_PZ[ i ][ partid ] = particles[partid]->getMomentum()[2] ; _daughters_E[ i ][ partid ] = particles[partid]->getEnergy() ; @@ -310,7 +309,7 @@ void JetBranches::fill(const EVENT::LCCollection* col, EVENT::LCEvent* evt ) if (abs(_daughters_Q[ i ][ partid ])>0) ntracks++; if (abs(_daughters_Q[ i ][ partid ])==0) nclusters++; - auto tracks = particles[partid]->getTracks(); + auto tracks = particles[partid]->getTracks(); //std::cout << "ntracks = " << tracks.size() << " charge = " << _daughters_Q[ i ][ partid ] << std::endl; if (tracks.size()>0) { @@ -321,12 +320,12 @@ void JetBranches::fill(const EVENT::LCCollection* col, EVENT::LCEvent* evt ) _daughters_trackTanLambda[ i ][ partid ] = tracks[0]->getTanLambda(); } - } - _ntracks[ i ] = ntracks ; - _nclusters[ i ] = nclusters ; + } + _ntracks[ i ] = ntracks ; + _nclusters[ i ] = nclusters ; } - // write tagginf parameters if it is enabled + // write tagging parameters if it is enabled if(_writeTaggingParameters) { std::vector< float > pidvec = pid->getParticleID (jet, algo).getParameters() ; diff --git a/src/TrackBranches.cc b/src/TrackBranches.cc index 145d16e..5167c7d 100644 --- a/src/TrackBranches.cc +++ b/src/TrackBranches.cc @@ -31,6 +31,7 @@ void TrackBranches::initBranches( TTree* tree, const std::string& pre){ tree->Branch( (pre+"trthn").c_str() , _trthn , (pre+"trthn["+pre+"ntrk]/I").c_str() ) ; tree->Branch( (pre+"trthi").c_str() , _trthi , (pre+"trthi["+pre+"ntrk][50]/I").c_str() ) ; tree->Branch( (pre+"trshn").c_str() , _trshn , (pre+"trshn["+pre+"ntrk][12]/I").c_str() ) ; + tree->Branch( (pre+"trthd").c_str() , _trthd , (pre+"trthd["+pre+"ntrk][50]/I").c_str() ) ; tree->Branch( (pre+"trnts").c_str() , _trnts , (pre+"trnts["+pre+"ntrk]/I").c_str() ) ; tree->Branch( (pre+"trfts").c_str() , _trfts , (pre+"trfts["+pre+"ntrk]/I").c_str() ) ; tree->Branch( (pre+"trsip").c_str() , _trsip , (pre+"trsip["+pre+"ntrk]/I").c_str() ) ; @@ -157,7 +158,10 @@ void TrackBranches::fill(const EVENT::LCCollection* col, EVENT::LCEvent* evt ){ int hit_index = ( trk->getTrackerHits().at(ihit) ? trk->getTrackerHits().at(ihit)->ext() - 1 : -1 ); - + unsigned det = ( trk->getTrackerHits().at(ihit) ? + (unsigned) (trk->getTrackerHits().at(ihit)->getCellID0() & 0x1f) : + 0 ); + _trthd[ i ][ ihit ] = det ; _trthi[ i ][ ihit ] = hit_index; } diff --git a/src/TrackerHitBranches.cc b/src/TrackerHitBranches.cc index 0fba34a..090450f 100644 --- a/src/TrackerHitBranches.cc +++ b/src/TrackerHitBranches.cc @@ -31,6 +31,7 @@ void TrackerHitBranches::initBranches( TTree* tree, const std::string& pre ){ tree->Branch( (pre+"thpoz").c_str() , _thpoz , (pre+"thpoz["+pre+"ntrh]/D").c_str() ) ; tree->Branch( (pre+"thedp").c_str() , _thedp , (pre+"thedp["+pre+"ntrh]/F").c_str() ) ; tree->Branch( (pre+"thtim").c_str() , _thtim , (pre+"thtim["+pre+"ntrh]/F").c_str() ) ; + tree->Branch( (pre+"thdet").c_str() , _thdet , (pre+"thdet["+pre+"ntrh]/I").c_str() ) ; tree->Branch( (pre+"thcov").c_str() , _thcov , (pre+"thcov["+pre+"ntrh][6]/F").c_str() ) ; @@ -95,6 +96,8 @@ void TrackerHitBranches::fill(const EVENT::LCCollection* col, const EVENT::LCCol _thedp[i] = hit->getEDep() ; _thtim[i] = hit->getTime() ; + _thdet[i] = (unsigned) hit->getCellID0() & 0x1f ; + for(int j=0;j<6;++j){ _thcov[ i ][ j ] = hit->getCovMatrix()[j] ; } From cb62ea3f85ff13c9a84ae71b617853195f0185ee Mon Sep 17 00:00:00 2001 From: gianelle Date: Fri, 28 Oct 2022 11:54:46 +0200 Subject: [PATCH 2/2] Update other values in LCTupleConf.h --- include/LCTupleConf.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/LCTupleConf.h b/include/LCTupleConf.h index f8f6f4b..b944fef 100644 --- a/include/LCTupleConf.h +++ b/include/LCTupleConf.h @@ -24,12 +24,12 @@ struct CollID : public lcrtrel::LCIntExtension {} ; #define LCT_COLLENTRIES_MAX 1000000 #define LCT_MCPARTICLE_MAX 1000000 -#define LCT_RECOPARTICLE_MAX 100000 +#define LCT_RECOPARTICLE_MAX 500000 #define LCT_TRACK_MAX 300000 #define LCT_TRACKSTATE_MAX 1000000 -#define LCT_CLUSTER_MAX 200000 +#define LCT_CLUSTER_MAX 500000 #define LCT_RELATION_MAX 1000000 -#define LCT_SIMTRACKERHIT_MAX 1000000 +#define LCT_SIMTRACKERHIT_MAX 2000000 #define LCT_TRACKERHIT_MAX 3000000 #define LCT_TRACKERRAWHIT_MAX 5000000 #define LCT_SIMCALORIMETERHIT_MAX 1000000