ATLAS Offline Software
TruthQualitySelectionTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 
9 
11  : asg::AsgTool( name ) { }
12 
14 {
15  ATH_CHECK( m_truthTool.retrieve() );
16  ATH_CHECK( m_trackTruthOriginTool.retrieve() );
17  return StatusCode::SUCCESS;
18 }
19 
20 
22 {
23  std::vector< const xAOD::TruthParticle* > selected;
24  for( const xAOD::TruthParticle* truth :
26  if( accept( truth ) ) selected.push_back( truth );
27  }
28 
29  ATH_MSG_DEBUG( "Size before selection: " <<
30  trkAnaColls.truthPartVec( TrackAnalysisCollections::FS ).size() <<
31  "\t Size after selection: " << selected.size() );
32 
34  ATH_CHECK( trkAnaColls.fillTruthPartVec( selected, TrackAnalysisCollections::FS ) );
35 
36  return StatusCode::SUCCESS;
37 }
38 
39 
41 {
43  if( not m_truthTool->accept( truth ) ) return false;
44 
46  if (m_maxEta!=-9999. and (eta(*truth)) > m_maxEta ) return false;
47  if (m_minEta!=-9999. and (eta(*truth)) < m_minEta ) return false;
48  if (m_minPhi!=-9999. and (phi(*truth)) < m_minPhi ) return false;
49  if (m_maxPhi!=-9999. and (phi(*truth)) > m_maxPhi ) return false;
50  if (m_minD0!=-9999. and (d0(*truth)) < m_minD0 ) return false;
51  if (m_maxD0!=-9999. and (d0(*truth)) > m_maxD0 ) return false;
52  if (m_minZ0!=-9999. and (z0(*truth)) < m_minZ0 ) return false;
53  if (m_maxZ0!=-9999. and (z0(*truth)) > m_maxZ0 ) return false;
54  if (m_minQoPT!=-9999. and (qOverPT(*truth)) < m_minQoPT ) return false;
55  if (m_maxQoPT!=-9999. and (qOverPT(*truth)) > m_maxQoPT ) return false;
56  if (m_minAbsEta!=-9999. and std::fabs(eta(*truth)) < m_minAbsEta ) return false;
57  if (m_minAbsPhi!=-9999. and std::fabs(phi(*truth)) < m_minAbsPhi ) return false;
58  if (m_maxAbsPhi!=-9999. and std::fabs(phi(*truth)) > m_maxAbsPhi ) return false;
59  if (m_minAbsD0!=-9999. and std::fabs(d0(*truth)) < m_minAbsD0 ) return false;
60  if (m_maxAbsD0!=-9999. and std::fabs(d0(*truth)) > m_maxAbsD0 ) return false;
61  if (m_minAbsZ0!=-9999. and std::fabs(z0(*truth)) < m_minAbsZ0 ) return false;
62  if (m_maxAbsZ0!=-9999. and std::fabs(z0(*truth)) > m_maxAbsZ0 ) return false;
63  if (m_minAbsQoPT!=-9999. and std::fabs(qOverPT(*truth)) < m_minAbsQoPT ) return false;
64  if (m_maxAbsQoPT!=-9999. and std::fabs(qOverPT(*truth)) > m_maxAbsQoPT ) return false;
65  if (m_isHadron and not isHadron(*truth) ) return false;
66  if (m_isPion and not isPion(*truth) ) return false;
67  bool isFromBdecay = m_trackTruthOriginTool->isFrom( truth, MC::BQUARK );
68  bool isFromCdecay = m_trackTruthOriginTool->isFrom( truth, MC::CQUARK );
69  bool isFromHeavy = isFromBdecay or isFromCdecay;
70  if( m_isFromB and not isFromBdecay ) return false;
71  if( m_isFromC and not isFromCdecay ) return false;
72  if( m_isFromHeavyFlav and not isFromHeavy ) return false;
73  if( m_isFromLightFlav and isFromHeavy ) return false;
74 
75  return true;
76 }
IDTPM::TrackAnalysisCollections
Definition: TrackAnalysisCollections.h:46
IDTPM::TruthQualitySelectionTool::accept
bool accept(const xAOD::TruthParticle *truth)
Definition: TruthQualitySelectionTool.cxx:40
IDTPM::TruthQualitySelectionTool::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: TruthQualitySelectionTool.cxx:13
IDTPM::TruthQualitySelectionTool::selectTracks
virtual StatusCode selectTracks(TrackAnalysisCollections &trkAnaColls) override
Definition: TruthQualitySelectionTool.cxx:21
IDTPM::z0
float z0(const U &p)
Definition: TrackParametersHelper.h:72
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
IDTPM::isHadron
float isHadron(const U &p)
Definition: TrackParametersHelper.h:258
asg
Definition: DataHandleTestTool.h:28
IDTPM::phi
float phi(const U &p)
Definition: TrackParametersHelper.h:61
IDTPM::TrackAnalysisCollections::fillTruthPartVec
StatusCode fillTruthPartVec(const std::vector< const xAOD::TruthParticle * > &vec, Stage stage=FULL)
fill truth/offline/trigger track vector (TEST or REFERENCE)
Definition: TrackAnalysisCollections.cxx:319
TrackParametersHelper.h
Utility methods to access track/truth particles parmeters in a consitent way in this package.
IDTPM::qOverPT
float qOverPT(const U &p)
Definition: TrackParametersHelper.h:114
IDTPM::TruthQualitySelectionTool::TruthQualitySelectionTool
TruthQualitySelectionTool(const std::string &name)
Definition: TruthQualitySelectionTool.cxx:10
IDTPM::eta
float eta(const U &p)
Accessor utility function for getting the value of eta.
Definition: TrackParametersHelper.h:43
TruthQualitySelectionTool.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
IDTPM::TrackAnalysisCollections::FS
@ FS
Definition: TrackAnalysisCollections.h:54
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
IDTPM::d0
float d0(const U &p)
Definition: TrackParametersHelper.h:84
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IDTPM::isPion
float isPion(const U &p)
Definition: TrackParametersHelper.h:264
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
IDTPM::TrackAnalysisCollections::truthPartVec
const std::vector< const xAOD::TruthParticle * > & truthPartVec(Stage stage=FULL)
get truth/offline/trigger track vector (TEST or REFERENCE)
Definition: TrackAnalysisCollections.h:229
HepMCHelpers.h