ATLAS Offline Software
TrackObjectSelectionTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
10 #include "GaudiKernel/ISvcLocator.h"
12 #include "GaudiKernel/Service.h"
13 
18 #include "TrackParametersHelper.h"
19 
20 
25  const std::string& name ) :
26  asg::AsgTool( name ) { }
27 
28 
33 
35 
36  ATH_MSG_INFO( "Initializing " << name() << "..." );
37 
38  return StatusCode::SUCCESS;
39 }
40 
41 
46  TrackAnalysisCollections& trkAnaColls ) {
47 
48  ATH_MSG_DEBUG( "Selecting offline tracks matched to an offline " << m_objectType.value() );
49 
50  ITrackAnalysisDefinitionSvc* trkAnaDefSvc( nullptr );
51  ISvcLocator* svcLoc = Gaudi::svcLocator();
52  ATH_CHECK( svcLoc->service( "TrkAnaDefSvc" + trkAnaColls.anaTag(), trkAnaDefSvc ) );
53 
54  if( not trkAnaDefSvc->useOffline() ) {
55  ATH_MSG_DEBUG( "Tool not enabled if offline tracks are not used." );
56  return StatusCode::SUCCESS;
57  }
58 
60  std::vector< const xAOD::TrackParticle* > newVec;
61  for( const xAOD::TrackParticle* thisTrack :
63  if( accept( *thisTrack ) ) newVec.push_back( thisTrack );
64  }
65 
67  ATH_CHECK( trkAnaColls.fillOfflTrackVec( newVec,
69 
71  ATH_MSG_DEBUG( "Tracks after offline object-matching: " <<
72  trkAnaColls.printInfo( TrackAnalysisCollections::FS ) );
73 
74  return StatusCode::SUCCESS;
75 }
76 
77 
82  const xAOD::TrackParticle& offTrack ) const {
83 
85  if( m_objectType.value().find("Electron") != std::string::npos ) {
86 
87  const xAOD::Electron* ele = getLinkedElectron(
88  offTrack, m_objectQuality.value() );
89 
90  if( not ele ) return false;
91 
92  ATH_MSG_DEBUG( "Offline Track with pt = " << pT( offTrack ) <<
93  " matches with " << m_objectQuality.value() <<
94  " Electron with transverse energy = " << eT( *ele ) );
95 
96  return true;
97  }
98 
100  if( m_objectType.value().find("Muon") != std::string::npos ) {
101  const xAOD::Muon* mu = getLinkedMuon(
102  offTrack, m_objectQuality.value() );
103 
104  if( not mu ) return false;
105 
106  ATH_MSG_DEBUG( "Offline Track with pt = " << pT( offTrack ) <<
107  " matches with " << m_objectQuality.value() <<
108  " Muon with transverse energy = " << eT( *mu ) );
109 
110  return true;
111  }
112 
114  if( m_objectType.value().find("Tau") != std::string::npos ) {
115 
116  const xAOD::TauJet* tau = getLinkedTau(
117  offTrack, m_tauNprongs.value(),
118  m_tauType.value(), m_objectQuality.value() );
119 
120  if( not tau ) return false;
121 
122  ATH_MSG_DEBUG( "Offline Track with pt = " << pT( offTrack ) <<
123  " matches with " << m_objectQuality.value() <<
124  " hadronic " << m_tauNprongs.value() << "prong " <<
125  m_tauType.value() << " Tau with transverse energy = " <<
126  eT( *tau ) );
127 
128  return true;
129  }
130 
132  if( m_objectType.value().find("Truth") != std::string::npos ) {
133 
134  const xAOD::TruthParticle* truth = getLinkedTruth(
135  offTrack, m_truthProbCut.value() );
136 
137  if( not truth ) return false;
138 
139  ATH_MSG_DEBUG( "Offline Track with pt = " << pT( offTrack ) <<
140  " matches with truth particle with pt = " << pT( *truth ) );
141 
142  return true;
143  }
144 
145  ATH_MSG_WARNING( "Type " << m_objectType.value() <<
146  " is not supported for track-object selection" );
147  return false;
148 }
IDTPM::TrackObjectSelectionTool::initialize
virtual StatusCode initialize() override
Initialize.
Definition: TrackObjectSelectionTool.cxx:32
IDTPM::TrackObjectSelectionTool::selectTracks
virtual StatusCode selectTracks(TrackAnalysisCollections &trkAnaColls) override
Main Track selection method.
Definition: TrackObjectSelectionTool.cxx:45
IDTPM::TrackObjectSelectionTool::TrackObjectSelectionTool
TrackObjectSelectionTool(const std::string &name)
Constructor.
Definition: TrackObjectSelectionTool.cxx:24
ITrackAnalysisDefinitionSvc::useOffline
virtual bool useOffline() const =0
IDTPM::TrackAnalysisCollections
Definition: TrackAnalysisCollections.h:41
IDTPM::TrackObjectSelectionTool::accept
bool accept(const xAOD::TrackParticle &offTrack) const
Definition: TrackObjectSelectionTool.cxx:81
ITrackAnalysisDefinitionSvc
Athena include(s).
Definition: ITrackAnalysisDefinitionSvc.h:26
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
IDTPM::getLinkedTau
const xAOD::TauJet * getLinkedTau(const xAOD::TrackParticle &track, const int requiredNtracks, const std::string &type, const std::string &quality)
getLinkedTau
Definition: OfflineObjectDecorHelper.cxx:33
IDTPM::getLinkedTruth
const xAOD::TruthParticle * getLinkedTruth(const xAOD::TrackParticle &track, const float truthProbCut)
getLinkedTruth
Definition: OfflineObjectDecorHelper.cxx:58
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
asg
Definition: DataHandleTestTool.h:28
IDTPM::getLinkedElectron
const xAOD::Electron * getLinkedElectron(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedElectron
Definition: OfflineObjectDecorHelper.cxx:17
TrackAnalysisCollections.h
Class to hold for each event collections needed in the TrkAnalsis.
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
IDTPM::TrackAnalysisCollections::fillOfflTrackVec
StatusCode fillOfflTrackVec(const std::vector< const xAOD::TrackParticle * > &vec, Stage stage=FULL)
Offline tracks.
Definition: TrackAnalysisCollections.cxx:256
TrackParametersHelper.h
Utility methods to access track/truth particles parmeters in a consitent way in this package.
IDTPM::eT
float eT(const U &p)
Accessor utility function for getting the value of Tranverse energy.
Definition: TrackParametersHelper.h:130
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:49
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
IDTPM::getLinkedMuon
const xAOD::Muon * getLinkedMuon(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedMuon
Definition: OfflineObjectDecorHelper.cxx:25
IDTPM::pT
float pT(const U &p)
Accessor utility function for getting the value of pT.
Definition: TrackParametersHelper.h:30
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IDTPM::TrackAnalysisCollections::offlTrackVec
const std::vector< const xAOD::TrackParticle * > & offlTrackVec(Stage stage=FULL)
Definition: TrackAnalysisCollections.h:152
TrackObjectSelectionTool.h
Tool to select offline ID tracks which asociated with fully-reconstructed object with specific qualit...
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
xAOD::Electron_v1
Definition: Electron_v1.h:34
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
IDTPM::TrackAnalysisCollections::printInfo
std::string printInfo(Stage stage=FULL) const
print Information about tracks in the collection(s)
Definition: TrackAnalysisCollections.cxx:488
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
OfflineObjectDecorHelper.h
Utility methods to access offline object decorations.
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
IDTPM::TrackAnalysisCollections::anaTag
const std::string & anaTag()
— Getter methods —
Definition: TrackAnalysisCollections.h:123
asg::AsgTool::initialize
virtual StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: AsgTool.h:133