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 EventContext &ctx, 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 EventContext &ctx, const Trk::Track &) const
int nHoles (const EventContext &ctx, 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 172 of file InDetAlignTrackSelTool.cxx.

172 {
174 ATH_MSG_DEBUG( "in chi2Prob()" ) ;
175 double chi2Prob=0.;
176
177 // get fit quality and chi2 probability of track
178 // chi2Prob = TMath::Prob(chi2,DoF) ROOT function
179 const Trk::FitQuality* fitQual = track.fitQuality();
180
181 if (fitQual==nullptr) {
182 ATH_MSG_ERROR( "No fit quality assigned to the track" ) ;
183 chi2Prob = -1e12; // return big value
184 }
185 else {
186 if (fitQual->chiSquared() > 0. && fitQual->numberDoF() > 0) {
187 Genfun::CumulativeChiSquare probabilityFunction( fitQual->numberDoF() );
188 chi2Prob = 1 - probabilityFunction( fitQual->chiSquared() );
189 }
190 }
191
192 return chi2Prob;
193}
#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 EventContext & ctx,
const Trk::Track & track ) const
virtual

Implements IInDetAlignTrackSelTool.

Definition at line 196 of file InDetAlignTrackSelTool.cxx.

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

Definition at line 147 of file InDetAlignTrackSelTool.cxx.

147 {
149 ATH_MSG_DEBUG( "in nHoles() " ) ;
150 int nholes{}, nhpix{}, nhsct{};
151
152 xAOD::TrackParticle* trackPart = m_particleCreator->createParticle(ctx, track);
153 uint8_t iSummaryValue(0); // Dummy counter to retrieve summary values
154
155 if (not trackPart){
156 ATH_MSG_ERROR("Could not get xAOD::TrackParticle");
157 nholes = 1000;
158 }
159 else{
160 nhpix = trackPart->summaryValue(iSummaryValue, xAOD::numberOfPixelHoles) ? iSummaryValue : 0;
161 nhsct = trackPart->summaryValue(iSummaryValue, xAOD::numberOfSCTHoles) ? iSummaryValue : 0;
162 //At condition nhpix == -1, the following bits of nhsct are known to be unset: 8-31.
163 //The condition nhpix == -1 cannot be true.
164 //At condition nhsct == -1, the following bits of nhsct are known to be unset: 8-31.
165 //The condition nhsct == -1 cannot be true.
166 nholes = nhpix + nhsct;
167 }
168 return nholes;
169}
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 EventContext & ctx,
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(ctx, 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 //At condition nhpix == -1, the following bits of nhsct are known to be unset: 8-31.
137 //The condition nhpix == -1 cannot be true.
138 //At condition nhsct == -1, the following bits of nhsct are known to be unset: 8-31.
139 //The condition nhsct == -1 cannot be true.
140
141 nshared = nshpix + nshsct;
142 }
143 return nshared;
144}
@ 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 >, and AthCheckedComponent<::AthAlgTool >.

◆ 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: