ATLAS Offline Software
Loading...
Searching...
No Matches
InDetAlignTrackSelTool Class Reference

The InDetAlignTrackSelTool serves to select high quality tracks for the inner detector (Pixel+SCT) alignment algorithms. More...

#include <InDetAlignTrackSelTool.h>

Inheritance diagram for InDetAlignTrackSelTool:
Collaboration diagram for InDetAlignTrackSelTool:

Public Member Functions

 InDetAlignTrackSelTool (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~InDetAlignTrackSelTool ()
virtual StatusCode initialize ()
virtual StatusCode finalize ()
virtual int getStatus (const Trk::Track &) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

double Momentum (const Trk::Track &) const
double Pt (const Trk::Track &) const
int nShared (const Trk::Track &) const
int nHoles (const Trk::Track &) const
double chi2Prob (const Trk::Track &) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< Trk::ITrackParticleCreatorToolm_particleCreator
 Pointer to track particle creator tool.
double m_minMomentum
 Minimum value of the momentum of the track.
double m_minPt
 Minimum value of the transverse momentum of the track.
int m_maxShared
 Maximum number of shared hits of the track.
int m_maxHoles
 Maximum number of holes of the track.
double m_minChi2Prob
 Minimum value of the chi2 Probality of the track.
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

The InDetAlignTrackSelTool serves to select high quality tracks for the inner detector (Pixel+SCT) alignment algorithms.

This AlgTool provides a track selection based on the following cut variables: Momentum, pt, number of shared hits, number of holes and chi2 probability. Returns 0 in case a track is not accepted, otherwise 1

Author
Sergio Gonzalez Sevilla, Miguel Olivo Gomez http://consult.cern.ch/xwho

Definition at line 37 of file InDetAlignTrackSelTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ InDetAlignTrackSelTool()

InDetAlignTrackSelTool::InDetAlignTrackSelTool ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 25 of file InDetAlignTrackSelTool.cxx.

29 : AthAlgTool(type,name,parent),
30 m_particleCreator("Trk::TrackParticleCreatorTool/TrackParticleCreatorTool", this),
32 m_minPt(2),
33 m_maxShared(0),
34 m_maxHoles(1),
35 m_minChi2Prob(0.2)
36{
37 declareInterface<IInDetAlignTrackSelTool>(this);
38 declareProperty("MinMomentum" , m_minMomentum);
39 declareProperty("MinPt" , m_minPt);
40 declareProperty("MaxShared" , m_maxShared);
41 declareProperty("MaxHoles" , m_maxHoles);
42 declareProperty("MinChi2Prob" , m_minChi2Prob);
43
44 // Tools
45 declareProperty("TrackParticleCreatorTool", m_particleCreator,
46 "tool to build TrackParticle");
47}
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ToolHandle< Trk::ITrackParticleCreatorTool > m_particleCreator
Pointer to track particle creator tool.
int m_maxShared
Maximum number of shared hits of the track.
double m_minPt
Minimum value of the transverse momentum of the track.
double m_minMomentum
Minimum value of the momentum of the track.
int m_maxHoles
Maximum number of holes of the track.
double m_minChi2Prob
Minimum value of the chi2 Probality of the track.

◆ ~InDetAlignTrackSelTool()

InDetAlignTrackSelTool::~InDetAlignTrackSelTool ( )
virtual

Definition at line 49 of file InDetAlignTrackSelTool.cxx.

50{}

Member Function Documentation

◆ chi2Prob()

double InDetAlignTrackSelTool::chi2Prob ( const Trk::Track & track) const
private

Definition at line 177 of file InDetAlignTrackSelTool.cxx.

177 {
179 ATH_MSG_DEBUG( "in chi2Prob()" ) ;
180 double chi2Prob=0.;
181
182 // get fit quality and chi2 probability of track
183 // chi2Prob = TMath::Prob(chi2,DoF) ROOT function
184 const Trk::FitQuality* fitQual = track.fitQuality();
185
186 if (fitQual==nullptr) {
187 ATH_MSG_ERROR( "No fit quality assigned to the track" ) ;
188 chi2Prob = -1e12; // return big value
189 }
190 else {
191 if (fitQual->chiSquared() > 0. && fitQual->numberDoF() > 0) {
192 Genfun::CumulativeChiSquare probabilityFunction( fitQual->numberDoF() );
193 chi2Prob = 1 - probabilityFunction( fitQual->chiSquared() );
194 }
195 }
196
197 return chi2Prob;
198}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
double chi2Prob(const Trk::Track &) const
int numberDoF() const
returns the number of degrees of freedom of the overall track or vertex fit as integer
Definition FitQuality.h:60
double chiSquared() const
returns the of the overall track fit
Definition FitQuality.h:56

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ finalize()

StatusCode InDetAlignTrackSelTool::finalize ( )
virtual

Definition at line 70 of file InDetAlignTrackSelTool.cxx.

70 {
72 ATH_MSG_DEBUG( "InDetAlignTrackSelTool finalize method called" ) ;
73 return StatusCode::SUCCESS;
74}

◆ getStatus()

int InDetAlignTrackSelTool::getStatus ( const Trk::Track & track) const
virtual

Implements IInDetAlignTrackSelTool.

Definition at line 201 of file InDetAlignTrackSelTool.cxx.

201 {
203 ATH_MSG_DEBUG( "in getStatus()" ) ;
204 int stat=1, nholes, nshared;
205 double mom, pt, chi2prob;
206
207 // momentum
208 mom = Momentum(track);
209 if (mom < m_minMomentum) {
210 stat=0;
211 }
212
213 // transverse momentum
214 pt = Pt(track);
215 if (pt < m_minPt) {
216 stat=0;
217 }
218
219 // number of holes
220 nholes = nHoles(track);
221 if (nholes > m_maxHoles) {
222 stat=0;
223 }
224
225 // number of shared hits
226 nshared = nShared(track);
227 if (nshared > m_maxShared) {
228 stat=0;
229 }
230
231 // chi2 Probability
232 chi2prob = chi2Prob(track);
233 if (chi2prob < m_minChi2Prob) {
234 stat=0;
235 }
236
237 ATH_MSG_DEBUG( " momentum(CLHEP::GeV)=" << mom
238 << " pt (CLHEP::GeV)=" << pt
239 << " nshared=" << nshared
240 << " nholes=" << nholes
241 << " chi2Prob=" << chi2prob
242 ) ;
243
244 if(!stat)
245 ATH_MSG_DEBUG( "Track not accepted" ) ;
246 else
247 ATH_MSG_DEBUG( "Track accepted" ) ;
248
249 return stat;
250}
double Momentum(const Trk::Track &) const
int nShared(const Trk::Track &) const
int nHoles(const Trk::Track &) const
double Pt(const Trk::Track &) const

◆ initialize()

StatusCode InDetAlignTrackSelTool::initialize ( )
virtual

Definition at line 53 of file InDetAlignTrackSelTool.cxx.

53 {
55
56 // get TrackParticleCreatorTool
57 ATH_CHECK(m_particleCreator.retrieve());
58
59 ATH_MSG_DEBUG( "Cuts selected : min_Momentum(CLHEP::GeV)=" << m_minMomentum
60 << " min_pt(CLHEP::GeV)=" << m_minPt
61 << " max_shared=" << m_maxShared
62 << " max_holes=" << m_maxHoles
63 << " min_chi2Prob=" << m_minChi2Prob ) ;
64
65 ATH_MSG_DEBUG( "InDetAlignTrackSelTool initialize() successful" ) ;
66 return StatusCode::SUCCESS;
67}
#define ATH_CHECK
Evaluate an expression and check for errors.

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ interfaceID()

const InterfaceID & IInDetAlignTrackSelTool::interfaceID ( )
inlinestaticinherited

Definition at line 32 of file IInDetAlignTrackSelTool.h.

static const InterfaceID IID_INDETALIGN_IInDetAlignTrackSelTool("IInDetAlignTrackSelTool", 1, 0)

◆ Momentum()

double InDetAlignTrackSelTool::Momentum ( const Trk::Track & track) const
private

Definition at line 77 of file InDetAlignTrackSelTool.cxx.

77 {
79 ATH_MSG_DEBUG( "in Momentum() " ) ;
80 double mom=0.;
81
82 // get measured perigee and momentum of track
83 const Trk::Perigee* perigee = track.perigeeParameters();
84
85 if ( !perigee->covariance()) {
86 ATH_MSG_ERROR( "No measured perigee parameters assigned to the track" ) ;
87 mom = -1e12; // return big value
88 }
89 else{
90 Amg::VectorX perigeeParams = perigee->parameters();
91 mom = std::abs(1./perigeeParams[Trk::qOverP]);
92 mom /= 1000.; //mom in GeV
93 }
94
95 return mom;
96}
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ qOverP
perigee
Definition ParamDefs.h:67

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ nHoles()

int InDetAlignTrackSelTool::nHoles ( const Trk::Track & track) const
private

Definition at line 149 of file InDetAlignTrackSelTool.cxx.

149 {
151 ATH_MSG_DEBUG( "in nHoles() " ) ;
152 int nholes=0, nhpix, nhsct;
153
154 xAOD::TrackParticle* trackPart = m_particleCreator->createParticle(track);
155 uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
156
157 if (not trackPart){
158 ATH_MSG_ERROR("Could not get xAOD::TrackParticle");
159 nholes = 1000;
160 }
161 else{
162 nhpix = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelHoles) ? iSummaryValue : 0;
163 nhsct = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTHoles) ? iSummaryValue : 0;
164
165 if(nhpix==-1)
166 nhpix = 0;
167
168 if(nhsct==-1)
169 nhsct = 0;
170
171 nholes = nhpix + nhsct;
172 }
173 return nholes;
174}
TrackParticle_v1 TrackParticle
Reference the current persistent version:
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfSCTHoles
number of SCT holes [unit8_t].

◆ nShared()

int InDetAlignTrackSelTool::nShared ( const Trk::Track & track) const
private

Definition at line 121 of file InDetAlignTrackSelTool.cxx.

121 {
123 ATH_MSG_DEBUG( "in nShared()" ) ;
124 int nshared=0, nshpix, nshsct;
125
126 xAOD::TrackParticle* trackPart = m_particleCreator->createParticle(track);
127 uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
128
129 if (not trackPart){
130 ATH_MSG_ERROR("Could not get xAOD::TrackParticle");
131 nshared = 1000;
132 }
133 else{
134 nshpix = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelSharedHits) ? iSummaryValue : 0;
135 nshsct = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTSharedHits) ? iSummaryValue : 0;
136
137 if(nshpix==-1)
138 nshpix=0;
139
140 if(nshsct==-1)
141 nshsct=0;
142
143 nshared = nshpix + nshsct;
144 }
145 return nshared;
146}
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ Pt()

double InDetAlignTrackSelTool::Pt ( const Trk::Track & track) const
private

Definition at line 99 of file InDetAlignTrackSelTool.cxx.

99 {
101 ATH_MSG_DEBUG( "in Pt() " ) ;
102 double pt=0.;
103
104 // get measured perigee and pt of track
105 const Trk::Perigee* perigee = track.perigeeParameters();
106
107 if (!perigee->covariance()) {
108 ATH_MSG_ERROR( "No measured perigee parameters assigned to the track" ) ;
109 pt = -1e12; // return big value
110 }
111 else{
112 Amg::VectorX perigeeParams = perigee->parameters();
113 pt = std::abs(sin(perigeeParams[Trk::theta])/perigeeParams[Trk::qOverP]);
114 pt /= 1000.; // pt in GeV
115 }
116
117 return pt;
118}
@ theta
Definition ParamDefs.h:66

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_maxHoles

int InDetAlignTrackSelTool::m_maxHoles
private

Maximum number of holes of the track.

Definition at line 59 of file InDetAlignTrackSelTool.h.

◆ m_maxShared

int InDetAlignTrackSelTool::m_maxShared
private

Maximum number of shared hits of the track.

Definition at line 58 of file InDetAlignTrackSelTool.h.

◆ m_minChi2Prob

double InDetAlignTrackSelTool::m_minChi2Prob
private

Minimum value of the chi2 Probality of the track.

Definition at line 60 of file InDetAlignTrackSelTool.h.

◆ m_minMomentum

double InDetAlignTrackSelTool::m_minMomentum
private

Minimum value of the momentum of the track.

Definition at line 56 of file InDetAlignTrackSelTool.h.

◆ m_minPt

double InDetAlignTrackSelTool::m_minPt
private

Minimum value of the transverse momentum of the track.

Definition at line 57 of file InDetAlignTrackSelTool.h.

◆ m_particleCreator

ToolHandle<Trk::ITrackParticleCreatorTool> InDetAlignTrackSelTool::m_particleCreator
private

Pointer to track particle creator tool.

Definition at line 54 of file InDetAlignTrackSelTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: