23 const std::string&
anaTag ) :
62 return StatusCode::SUCCESS;
87 if( not pTruthEventCont.
isValid() ) {
95 if( not pTruthPUEventCont.
isValid() ) {
96 ATH_MSG_WARNING(
"Non valid truth pile up event collection: " << truthPUEventHandleKey.
key() );
101 return StatusCode::SUCCESS;
114 if( not pTruthColl.
isValid() ) {
115 ATH_MSG_ERROR(
"Non valid truth particles collection: " << truthPartHandleKey.
key() );
116 return StatusCode::FAILURE;
134 const auto& links =
event->truthParticleLinks();
135 for(
const auto& link : links ) {
147 for(
const auto& link : links ) {
155 return StatusCode::FAILURE;
162 return StatusCode::SUCCESS;
175 ATH_MSG_ERROR(
"Non valid offline tracks collection: " << handleKey.
key() );
176 return StatusCode::FAILURE;
186 pColl->begin(), pColl->end() );
192 return StatusCode::SUCCESS;
205 ATH_MSG_ERROR(
"Non valid trigger tracks collection: " << handleKey.
key() );
206 return StatusCode::FAILURE;
216 pColl->begin(), pColl->end() );
222 return StatusCode::SUCCESS;
230 const std::vector< const xAOD::TruthParticle* >&
vec,
238 return StatusCode::SUCCESS;
242 return StatusCode::SUCCESS;
247 const std::vector< const xAOD::TrackParticle* >&
vec,
255 return StatusCode::SUCCESS;
263 return StatusCode::SUCCESS;
267 return StatusCode::SUCCESS;
275 const std::vector< const xAOD::TruthParticle* >&
vec,
283 return StatusCode::SUCCESS;
287 return StatusCode::SUCCESS;
292 const std::vector< const xAOD::TrackParticle* >&
vec,
300 return StatusCode::SUCCESS;
308 return StatusCode::SUCCESS;
312 return StatusCode::SUCCESS;
320 const std::vector< const xAOD::TruthParticle* >&
vec,
328 return StatusCode::SUCCESS;
332 return StatusCode::SUCCESS;
337 const std::vector< const xAOD::TrackParticle* >&
vec,
345 return StatusCode::SUCCESS;
349 return StatusCode::SUCCESS;
354 const std::vector< const xAOD::TrackParticle* >&
vec,
362 return StatusCode::SUCCESS;
366 return StatusCode::SUCCESS;
381 truthVertexHandleKey.
key().empty() )
return StatusCode::SUCCESS;
385 if( not pTruthVertColl.
isValid() ) {
386 ATH_MSG_ERROR(
"Non valid truth vertex collection: " << truthVertexHandleKey.
key() );
387 return StatusCode::FAILURE;
396 pTruthVertColl->begin(), pTruthVertColl->end() );
400 return StatusCode::SUCCESS;
412 handleKey.
key().empty() )
return StatusCode::SUCCESS;
417 ATH_MSG_ERROR(
"Non valid offline vertex collection: " << handleKey.
key() );
418 return StatusCode::FAILURE;
427 pColl->begin(), pColl->end() );
429 return StatusCode::SUCCESS;
441 handleKey.
key().empty() )
return StatusCode::SUCCESS;
446 ATH_MSG_ERROR(
"Non valid trigger vertex collection: " << handleKey.
key() );
447 return StatusCode::FAILURE;
456 pColl->begin(), pColl->end() );
458 return StatusCode::SUCCESS;
466 const std::vector< const xAOD::TruthVertex* >&
vec,
474 return StatusCode::SUCCESS;
478 return StatusCode::SUCCESS;
483 const std::vector< const xAOD::Vertex* >&
vec,
491 return StatusCode::SUCCESS;
498 return StatusCode::SUCCESS;
502 return StatusCode::SUCCESS;
510 const std::vector< const xAOD::TruthVertex* >&
vec,
518 return StatusCode::SUCCESS;
522 return StatusCode::SUCCESS;
527 const std::vector< const xAOD::Vertex* >&
vec,
535 return StatusCode::SUCCESS;
542 return StatusCode::SUCCESS;
546 return StatusCode::SUCCESS;
554 const std::vector< const xAOD::TruthVertex* >&
vec,
562 return StatusCode::SUCCESS;
566 return StatusCode::SUCCESS;
571 const std::vector< const xAOD::Vertex* >&
vec,
579 return StatusCode::SUCCESS;
583 return StatusCode::SUCCESS;
588 const std::vector< const xAOD::Vertex* >&
vec,
596 return StatusCode::SUCCESS;
600 return StatusCode::SUCCESS;
622 if( isTrigEmpty or isEFTrigEmpty or isOfflEmpty or isTruthEmpty )
return true;
631 if( stage ==
FULL ) {
641 if( stage ==
FULL or stage ==
FS ) {
651 if( stage ==
FULL or stage ==
FS or stage ==
InRoI ) {
775const std::vector< const xAOD::TruthParticle* >&
788const std::vector< const xAOD::TrackParticle* >&
805const std::vector< const xAOD::TruthParticle* >&
818const std::vector< const xAOD::TrackParticle* >&
841 std::vector< size_t > counts(
NCOUNTERS, 0 );
859 std::vector< size_t > counts(
NCOUNTERS, 0 );
932const std::vector< const xAOD::TruthVertex* >&
945const std::vector< const xAOD::Vertex* >&
962const std::vector< const xAOD::TruthVertex* >&
975const std::vector< const xAOD::Vertex* >&
998 std::vector< size_t > counts(
NCOUNTERS, 0 );
1013std::vector< size_t >
1016 std::vector< size_t > counts(
NCOUNTERS, 0 );
1037 std::stringstream
ss;
1038 ss <<
"\n==========================================" << std::endl;
1042 ss <<
"Offline track"
1043 <<
" : pt = " <<
pT( *thisOfflineTrack )
1044 <<
" : eta = " <<
eta( *thisOfflineTrack )
1045 <<
" : phi = " <<
phi( *thisOfflineTrack )
1047 if( it > 20 ) {
ss <<
"et al...." << std::endl;
break; }
1052 ss <<
"==========================================" << std::endl;
1056 ss <<
"Truth particle"
1057 <<
" : pt = " <<
pT( *thisTruthParticle )
1058 <<
" : eta = " <<
eta( *thisTruthParticle )
1059 <<
" : phi = " <<
phi( *thisTruthParticle )
1061 if( it > 20 ) {
ss <<
"et al...." << std::endl;
break; }
1066 ss <<
"==========================================" << std::endl;
1070 ss <<
"Trigger track"
1071 <<
" : pt = " <<
pT( *thisTriggerTrack )
1072 <<
" : eta = " <<
eta( *thisTriggerTrack )
1073 <<
" : phi = " <<
phi( *thisTriggerTrack )
1075 if( it > 20 ) {
ss <<
"et al...." << std::endl;
break; }
1080 ss <<
"==========================================" << std::endl;
1092 std::stringstream
ss;
1093 ss <<
"\n==========================================" << std::endl;
1097 ss <<
"Offline vertex"
1098 <<
" : z = " <<
posZ( *thisOfflineVertex )
1100 if( it > 20 ) {
ss <<
"et al...." << std::endl;
break; }
1105 ss <<
"==========================================" << std::endl;
1109 ss <<
"Truth vertex"
1110 <<
" : z = " <<
posZ( *thisTruthVertex )
1112 if( it > 20 ) {
ss <<
"et al...." << std::endl;
break; }
1117 ss <<
"==========================================" << std::endl;
1121 ss <<
"Trigger vertex"
1122 <<
" : z = " <<
posZ( *thisTriggerVertex )
1124 if( it > 20 ) {
ss <<
"et al...." << std::endl;
break; }
1129 ss <<
"==========================================" << std::endl;
1156 const std::string& chainRoi,
const std::string& roiStr )
1158 ATH_MSG_DEBUG(
"Updating TrackAnalysisCollection with ChainRoiName: " << chainRoi );
1160 std::pair< mapChainRoi_t::iterator, bool >
result =
1161 m_chainRois.insert( mapChainRoi_t::value_type( chainRoi, roiStr ) );
1163 if( not
result.second ) {
1164 ATH_MSG_WARNING(
"ChainRoiName has already been cached. No update." );
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
std::vector< size_t > vec
Class to hold for each event collections needed in the TrkAnalsis.
Look-up table (templated) class to store (internally to IDTPM) all the matches between test and refer...
Utility methods to access track/truth particles parmeters in a consitent way in this package.
static const Attributes_t empty
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
const xAOD::VertexContainer * testRecoVertexContainer()
TEST = Reco.
const std::vector< const xAOD::TruthVertex * > & refTruthVertexVec(Stage stage=FULL)
get REFERENCE vertex vectors
const std::vector< const xAOD::TruthParticle * > & testTruthVec(Stage stage=FULL)
get TEST track vectors
const xAOD::TrackParticleContainer * refTrackContainer()
REFERENCE = Track.
bool empty(Stage stage=FULL)
check if collection are empty
StatusCode fillRefTruthVertexVec(const std::vector< const xAOD::TruthVertex * > &vec, Stage stage=FULL)
fill REFERENCE vertex vectors
StatusCode fillTruthVertexContainer(const SG::ReadHandleKey< xAOD::TruthVertexContainer > &truthVertexHandleKey)
fill FULL vertex collections and vectors
void clear(Stage stage=FULL)
Clear vectors.
const xAOD::TruthPileupEventContainer * m_truthPUEventContainer
StatusCode fillTrigTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
Trigger tracks.
void copyFS()
copy content of FS vectors to InRoI vectors
std::vector< size_t > refTrackCounts()
REFERENCE.
StatusCode fillOfflVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
Offline tracks.
const std::vector< const xAOD::Vertex * > & refRecoVertexVec(Stage stage=FULL)
REFERENCE = Reco.
std::vector< std::vector< const xAOD::TruthParticle * > > m_truthPartVec
vectors of track/truth particles at different stages of the selection/workflow
const std::string & anaTag()
— Getter methods —
StatusCode fillTrigVertexContainer(const SG::ReadHandleKey< xAOD::VertexContainer > &handleKey)
Trigger vertices.
std::string printInfo(Stage stage=FULL, bool printVertex=true) const
print information about tracks in the collection(s)
std::string printMatchInfo()
print track matching information
std::vector< std::vector< const xAOD::Vertex * > > m_offlVertexVec
const xAOD::TruthParticleContainer * testTruthContainer()
get full TEST track containers
StatusCode fillTruthPartVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill truth/offline/trigger track vector (TEST or REFERENCE)
bool updateChainRois(const std::string &chainRoi, const std::string &roiStr)
update chainRois map
const xAOD::TrackParticleContainer * m_trigTrackContainer
const xAOD::VertexContainer * m_trigVertexContainer
std::vector< std::vector< const xAOD::TruthVertex * > > m_truthVertexVec
vectors of reco/truth vertices at different stages of the selection/workflow
StatusCode fillRefTruthVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill REFERENCE track vectors
StatusCode fillTruthVertexVec(const std::vector< const xAOD::TruthVertex * > &vec, Stage stage=FULL)
fill truth/offline/trigger vertex vector (TEST or REFERENCE)
StatusCode initialize()
initialize
StatusCode fillOfflTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
Offline tracks.
const xAOD::VertexContainer * m_offlVertexContainer
StatusCode fillTrigVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
Trigger tracks.
ITrackMatchingLookup & matches()
get track matching information
StatusCode fillTestTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
TEST = tracks.
std::vector< size_t > refVertexCounts()
REFERENCE.
Stage
Enum for selection stages.
StatusCode fillTestTruthVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill TEST track vectors
StatusCode fillTruthPartContainer(const SG::ReadHandleKey< xAOD::TruthParticleContainer > &truthPartHandleKey)
fill FULL track collections and vectors
StatusCode fillEventInfo(const SG::ReadHandleKey< xAOD::EventInfo > &eventInfoHandleKey, const SG::ReadHandleKey< xAOD::TruthEventContainer > &truthEventHandleKey, const SG::ReadHandleKey< xAOD::TruthPileupEventContainer > &truthPUEventHandleKey)
— Setter methods —
const xAOD::TruthParticleContainer * refTruthContainer()
get full REFERENCE track containers
const xAOD::TruthParticleContainer * m_truthPartContainer
Full track collections.
std::vector< std::vector< const xAOD::TrackParticle * > > m_offlTrackVec
StatusCode fillTrigTrackContainer(const SG::ReadHandleKey< xAOD::TrackParticleContainer > &handleKey)
Trigger track particles.
std::vector< std::vector< const xAOD::Vertex * > > m_trigVertexVec
std::vector< const xAOD::TruthParticle * > m_nullTruthVec
const xAOD::TrackParticleContainer * testTrackContainer()
TEST = Track.
std::vector< std::vector< const xAOD::TrackParticle * > > m_trigTrackVec
const xAOD::TruthVertexContainer * testTruthVertexContainer()
get full TEST vertex containers
TrackAnalysisCollections(const std::string &anaTag)
Constructor.
const xAOD::TruthVertexContainer * m_truthVertexContainer
Full vertex collections.
const std::vector< const xAOD::TruthVertex * > & testTruthVertexVec(Stage stage=FULL)
get TEST vertex vectors
const std::vector< const xAOD::TrackParticle * > & testTrackVec(Stage stage=FULL)
TEST = Track.
std::unique_ptr< ITrackMatchingLookup > m_matches
Lookup table for test-reference matching.
const xAOD::EventInfo * m_eventInfo
— Collections class variables — EventInfo, TruthEvent, and TruthPUEvent
const xAOD::TruthEventContainer * m_truthEventContainer
StatusCode fillRefRecoVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
REFERENCE = reco.
StatusCode fillRefTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
REFERENCE = tracks.
const std::vector< const xAOD::TruthParticle * > & refTruthVec(Stage stage=FULL)
get REFERENCE track vectors
std::vector< const xAOD::TruthVertex * > m_nullTruthVertVec
const xAOD::TrackParticleContainer * m_offlTrackContainer
std::vector< const xAOD::TrackParticle * > m_nullTrackVec
null vectors
const std::vector< const xAOD::Vertex * > & testRecoVertexVec(Stage stage=FULL)
TEST = Reco.
std::string m_anaTag
TrackAnalysis properties.
StatusCode fillOfflTrackContainer(const SG::ReadHandleKey< xAOD::TrackParticleContainer > &handleKey)
Offline track particles.
std::string printVertexInfo(Stage stage=FULL) const
print information about vertices in the collection(s)
const xAOD::VertexContainer * refRecoVertexContainer()
REFERENCE = Reco.
std::vector< size_t > testTrackCounts()
get counts vectors for TEST/REFERENCE track vectors at all stages
StatusCode fillTestTruthVertexVec(const std::vector< const xAOD::TruthVertex * > &vec, Stage stage=FULL)
fill TEST vertex vectors
StatusCode fillOfflVertexContainer(const SG::ReadHandleKey< xAOD::VertexContainer > &handleKey)
Offline vertices.
const xAOD::TruthVertexContainer * refTruthVertexContainer()
get full REFERENCE vertex containers
std::vector< size_t > testVertexCounts()
get counts vectors for TEST/REFERENCE vertex vectors at all stages
std::vector< const xAOD::Vertex * > m_nullRecoVertVec
const std::vector< const xAOD::TrackParticle * > & refTrackVec(Stage stage=FULL)
TEST = Track.
StatusCode fillTestRecoVertexVec(const std::vector< const xAOD::Vertex * > &vec, Stage stage=FULL)
TEST = reco.
mapChainRoi_t m_chainRois
SmartIF< ITrackAnalysisDefinitionSvc > m_trkAnaDefSvc
Property holding a SG store/key/clid from which a ReadHandle is made.
const_pointer_type ptr()
Dereference the pointer.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const std::string & key() const
Return the StoreGate ID for the referenced object.
const TruthParticleLinks_t & truthParticleLinks() const
Get all the truth particles.
float pT(const U &p)
Accessor utility function for getting the value of pT.
float posZ(const V &v)
Accessor utility function for getting the value of vertex position z.
TruthVertex_v1 TruthVertex
Typedef to implementation.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TruthVertexContainer_v1 TruthVertexContainer
Declare the latest version of the truth vertex container.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
TruthEvent_v1 TruthEvent
Typedef to implementation.
TruthParticle_v1 TruthParticle
Typedef to implementation.
TruthPileupEvent_v1 TruthPileupEvent
Typedef to implementation.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
TruthParticleContainer_v1 TruthParticleContainer
Declare the latest version of the truth particle container.