ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::ConstrainedTrackProvider Class Reference

#include <ConstrainedTrackProvider.h>

Inheritance diagram for Trk::ConstrainedTrackProvider:
Collaboration diagram for Trk::ConstrainedTrackProvider:

Public Member Functions

 ConstrainedTrackProvider (const std::string &type, const std::string &name, const IInterface *parent)
virtual ~ConstrainedTrackProvider ()
virtual StatusCode initialize ()
virtual StatusCode finalize ()
virtual StatusCode trackCollection (const TrackCollection *&tracks)
virtual void printSummary ()
 Print statistical summary to logfile.
virtual void setLogStream (std::ostream *os)
 sets the output stream for the logfile
virtual void setNtuple (TFile *)
 sets ntuple
virtual StatusCode fillNtuple ()
 writes tree to ntuple
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.

Protected Attributes

std::ostream * m_logStream = nullptr
 logfile output stream

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

void getCorrectedValues_P (const Trk::Perigee *mp, double &correctedQoverP, double &correctedQoverPError)
void getCorrectedValues_d0 (const Trk::Perigee *mp, double &corrected_d0, double &corrected_d0Error)
void getCorrectedValues_z0 (const Trk::Perigee *mp, double &corrected_z0, double &corrected_z0Error)
bool passTrackSelection (const Trk::Track *track)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

ToolHandle< IGlobalTrackFitterm_trackFitter
 normal track fitter
RunOutlierRemoval m_runOutlierRemoval
 run outlier removal in the GX2 fitter
bool m_scalepmaptogev
bool m_doTrackSelection
int m_maxRetrievalErrors
 maximum allowed number of retrieval errors at the beginning of the job (-1 for infinite)
bool m_useConstrainedTrkOnly
int m_constrainedTracks
int m_passconstrainedRequirements
int m_unconstrainedTracks
bool m_useConstraintError
double m_reduceConstraintUncertainty
double m_reduceConstraintUncert_z0
double m_deltaScaling
int m_minPIXHits
int m_minSCTHits
int m_minTRTHits
double m_maxd0
double m_maxz0
double m_minPt
double m_maxPt
std::string m_inputTrackCollection
bool m_CorrectMomentum
std::string m_constraintFileName_P
TFile * m_constraintInputFile_P
std::string m_constraintHistName_P
TH2F * m_etaphiMap_P
std::string m_constraintFileName_d0
TFile * m_constraintInputFile_d0
std::string m_constraintHistName_d0
TH2F * m_etaphiMap_d0
bool m_CorrectZ0
std::string m_constraintFileName_z0
TFile * m_constraintInputFile_z0
std::string m_constraintHistName_z0
TH2F * m_etaphiMap_z0
bool m_CorrectD0
bool m_CorrectMeanD0
bool m_SelectByCharge
bool m_SelectPositive
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

Definition at line 31 of file ConstrainedTrackProvider.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

◆ ConstrainedTrackProvider()

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

Definition at line 22 of file ConstrainedTrackProvider.cxx.

26 : AthAlgTool(type,name,parent)
27 , m_trackFitter("Trk::GlobalChi2Fitter/InDetTrackFitter")
28 , m_scalepmaptogev(false)
29 , m_doTrackSelection (true)
33 , m_inputTrackCollection("Tracks")
35 , m_etaphiMap_P(nullptr)
37 , m_etaphiMap_d0(nullptr)
39 , m_etaphiMap_z0(nullptr)
42 , m_SelectPositive(false)
43 {
44 declareInterface<ITrackCollectionProvider>(this);
45 declareProperty("doTrackSelection", m_doTrackSelection );
46 declareProperty("TrackFitter", m_trackFitter );
47 declareProperty("InputTracksCollection", m_inputTrackCollection );
48 declareProperty("RunOutlierRemoval", m_runOutlierRemoval = true );
49 declareProperty("MaxRetrievalErrors", m_maxRetrievalErrors = 10 );
50 declareProperty("UseConstrainedTrkOnly", m_useConstrainedTrkOnly = false );
51 declareProperty("MinPt", m_minPt = 15.0 );
52 declareProperty("MaxPt", m_maxPt = 100.0 );
53 declareProperty("SelectByCharge", m_SelectByCharge = false );
54 declareProperty("SelectPositive", m_SelectPositive = true );
55 declareProperty("MinPIXHits", m_minPIXHits = 0 ); //1
56 declareProperty("MinSCTHits", m_minSCTHits = 0 ); //6
57 declareProperty("MinTRTHits", m_minTRTHits = 0 );
58 declareProperty("Maxd0", m_maxd0 = 500. );
59 declareProperty("Maxz0", m_maxz0 = 500. );
60 declareProperty("CorrectMomentum", m_CorrectMomentum = true );
61 declareProperty("MomentumConstraintFileName", m_constraintFileName_P = "Constraint.root" );
62 declareProperty("MomentumConstraintHistName", m_constraintHistName_P = "EtaPhiMap" );
63 declareProperty("CorrectD0", m_CorrectD0 = false );
64 declareProperty("CorrectMeanD0", m_CorrectMeanD0 = false );
65 declareProperty("d0ConstraintFileName", m_constraintFileName_d0 = "Constraint.root" );
66 declareProperty("d0ConstraintHistName", m_constraintHistName_d0 = "EtaPhiMap" );
67 declareProperty("CorrectZ0", m_CorrectZ0 = false );
68 declareProperty("z0ConstraintFileName", m_constraintFileName_z0 = "Constraint.root" );
69 declareProperty("z0ConstraintHistName", m_constraintHistName_z0 = "EtaPhiMap" );
70 declareProperty("UseConstraintError", m_useConstraintError = true ,"Bla bla " );
71 declareProperty("ReduceConstraintUncertainty",m_reduceConstraintUncertainty = 1., "Reduce the uncertainty on teh track parmater constraint by this amount" );
72 declareProperty("ReduceConstraintUncert_z0" ,m_reduceConstraintUncert_z0 = 1., "Reduce the uncertainty on z0 track parameter constraint by this amount" );
73 declareProperty("DeltaScaling", m_deltaScaling = 1.);
74 declareProperty("ScalePMapToGeV" ,m_scalepmaptogev);
75 }
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
int m_maxRetrievalErrors
maximum allowed number of retrieval errors at the beginning of the job (-1 for infinite)
ToolHandle< IGlobalTrackFitter > m_trackFitter
normal track fitter
RunOutlierRemoval m_runOutlierRemoval
run outlier removal in the GX2 fitter

◆ ~ConstrainedTrackProvider()

Trk::ConstrainedTrackProvider::~ConstrainedTrackProvider ( )
virtualdefault

Member Function Documentation

◆ 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

◆ fillNtuple()

virtual StatusCode Trk::ITrackCollectionProvider::fillNtuple ( )
inlinevirtualinherited

writes tree to ntuple

Reimplemented in Trk::MSConstraintTracksProvider.

Definition at line 46 of file ITrackCollectionProvider.h.

46{ return StatusCode::SUCCESS; }

◆ finalize()

StatusCode Trk::ConstrainedTrackProvider::finalize ( )
virtual

Definition at line 171 of file ConstrainedTrackProvider.cxx.

172 {
176 }
177
181 }
182
186 }
187
188 return StatusCode::SUCCESS;
189 }

◆ getCorrectedValues_d0()

void Trk::ConstrainedTrackProvider::getCorrectedValues_d0 ( const Trk::Perigee * mp,
double & corrected_d0,
double & corrected_d0Error )
private

Definition at line 493 of file ConstrainedTrackProvider.cxx.

494 {
495 ATH_MSG_DEBUG(" == getCorrectedValues_d0 == STARTED ==");
496 // scale d0
497
498 double charge(0);
499 if( measuredPerigee->parameters()[Trk::qOverP] > 0)
500 charge = 1.;
501 else
502 charge = -1.;
503
504 double d0 = measuredPerigee->parameters()[Trk::d0];
505 double eta = -log(tan(measuredPerigee->parameters()[Trk::theta]/2.));
506 double phi = measuredPerigee->parameters()[Trk::phi];
507 double d0err = (*measuredPerigee->covariance())( Trk::d0, Trk::d0 );
508
509
510 int binNumber = m_etaphiMap_d0->FindBin(eta, phi);
511 double constraintErr = m_etaphiMap_d0->GetBinError(binNumber);
512 double delta = m_etaphiMap_d0->GetBinContent(binNumber) * m_deltaScaling;
513
514 correctedD0 = d0 - charge * delta * 0.5 ; // delta d0 = d0_pos - d0_neg . To make the difference null, substract half to the pos and add half to the neg track.
515 if (m_CorrectMeanD0) {correctedD0 = d0 + delta;}
516 correctedD0Error = d0err;
517 ATH_MSG_DEBUG("Correcting d0 by delta = " << delta << "\t, corrected d0 = "<< correctedD0 << "\t, original d0 = "<< d0 ) ;
518
520 correctedD0Error = d0err + pow( constraintErr, 2 );
521 }
522 ATH_MSG_DEBUG("Scaling by 1/m_reduceConstraintUncertainty " << m_reduceConstraintUncertainty << '\t'<< pow( m_reduceConstraintUncertainty,-2)) ;
523 correctedD0Error = correctedD0Error * pow( m_reduceConstraintUncertainty,-2);
524
525 ATH_MSG_DEBUG(" == input d0: " << d0 << " deltad0: " << delta << " final d0: " << correctedD0 << " +- " << correctedD0Error);
526 ATH_MSG_DEBUG(" == getCorrectedValues_d0 == Completed ==");
527 }
Scalar eta() const
pseudorapidity method
#define ATH_MSG_DEBUG(x)
double charge(const T &p)
Definition AtlasPID.h:997
constexpr int pow(int base, int exp) noexcept
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ phi
Definition ParamDefs.h:75
@ d0
Definition ParamDefs.h:63

◆ getCorrectedValues_P()

void Trk::ConstrainedTrackProvider::getCorrectedValues_P ( const Trk::Perigee * mp,
double & correctedQoverP,
double & correctedQoverPError )
private

Definition at line 454 of file ConstrainedTrackProvider.cxx.

455 {
456
457 // scale q/p not p
458
459 double charge(0);
460 if( measuredPerigee->parameters()[Trk::qOverP] > 0)
461 charge = 1.;
462 else
463 charge = -1.;
464
465 double pt = fabs(1./(measuredPerigee->parameters()[Trk::qOverP]))* sin(measuredPerigee->parameters()[Trk::theta]) *1e-3;
466 double eta = -log(tan(measuredPerigee->parameters()[Trk::theta]/2.));
467 double phi = measuredPerigee->parameters()[Trk::phi];
468 double perr = (*measuredPerigee->covariance())( Trk::qOverP, Trk::qOverP );
469
470
471 int binNumber = m_etaphiMap_P->FindBin(eta, phi);
472 double constraintErr = m_etaphiMap_P->GetBinError(binNumber);
473
474 double delta = m_etaphiMap_P->GetBinContent(binNumber) * m_deltaScaling;
475
477 delta = delta * 0.001;
478
479 correctedQoverP = measuredPerigee->parameters()[Trk::qOverP] * (1.+ charge *pt *delta );
480 correctedQoverPError = perr;
481
483 double qoverpFracError = perr/pow(measuredPerigee->parameters()[Trk::qOverP], 2);
484 qoverpFracError += pow(constraintErr,2);
485 correctedQoverPError = qoverpFracError*correctedQoverP*correctedQoverP;
486 }
487 ATH_MSG_DEBUG("Scaling by 1/m_reduceConstraintUncertainty " << m_reduceConstraintUncertainty << '\t'<< pow( m_reduceConstraintUncertainty,-2)) ;
488 correctedQoverPError = correctedQoverPError * pow( m_reduceConstraintUncertainty,-2);
489 ATH_MSG_DEBUG(" == input pt: " << pt << " deltaSagitta: " << delta << " final pt: " << sin(measuredPerigee->parameters()[Trk::theta]) * 1e-3/correctedQoverP);
490 }
perr(error, exc=None, exit=False)
Definition calibdata.py:116

◆ getCorrectedValues_z0()

void Trk::ConstrainedTrackProvider::getCorrectedValues_z0 ( const Trk::Perigee * mp,
double & corrected_z0,
double & corrected_z0Error )
private

Definition at line 529 of file ConstrainedTrackProvider.cxx.

530 {
531
532 // scale z0
533
534 double charge(0);
535 if( measuredPerigee->parameters()[Trk::qOverP] > 0)
536 charge = 1.;
537 else
538 charge = -1.;
539
540 double z0 = measuredPerigee->parameters()[Trk::z0];
541 double eta = -log(tan(measuredPerigee->parameters()[Trk::theta]/2.));
542 double phi = measuredPerigee->parameters()[Trk::phi];
543 double z0err = (*measuredPerigee->covariance())( Trk::z0, Trk::z0 );
544
545 int binNumber = m_etaphiMap_z0->FindBin(eta, phi);
546 double constraintErr = m_etaphiMap_z0->GetBinError(binNumber);
547 double delta = m_etaphiMap_z0->GetBinContent(binNumber) * m_deltaScaling;
548
549 correctedZ0 = z0 - charge * delta * 0.5 ; // delta z0 = z0_pos - z0_neg . To make the difference null, substract half to the pos and add half to the neg track.
550 correctedZ0Error = z0err;
551
553 correctedZ0Error = z0err + pow( constraintErr, 2 );
554 }
555 ATH_MSG_DEBUG("Scaling by 1/m_reduceConstraintUncertainty " << m_reduceConstraintUncertainty << '\t'<< pow( m_reduceConstraintUncertainty,-2)) ;
556 correctedZ0Error = correctedZ0Error * pow( m_reduceConstraintUncertainty,-2);
557 ATH_MSG_DEBUG("Scaling by 1/m_reduceConstraintUncert_z0 " << m_reduceConstraintUncert_z0 << '\t'<< pow( m_reduceConstraintUncert_z0,-2)) ;
558 correctedZ0Error = correctedZ0Error * pow( m_reduceConstraintUncert_z0,-2);
559 ATH_MSG_DEBUG(" == input z0: " << z0 << " deltaz0: " << delta << " final z0: " << correctedZ0 << " +- " << correctedZ0Error);
560 }
@ z0
Definition ParamDefs.h:64

◆ initialize()

StatusCode Trk::ConstrainedTrackProvider::initialize ( )
virtual

Definition at line 82 of file ConstrainedTrackProvider.cxx.

83 {
84 // configure main track fitter
85 if(m_trackFitter.retrieve().isFailure()) {
86 msg(MSG::FATAL) << "Could not get " << m_trackFitter << endmsg;
87 return StatusCode::FAILURE;
88 }
89 ATH_MSG_INFO("Retrieved " << m_trackFitter);
90
91
92 ATH_MSG_INFO( "init m_useConstraintError " <<m_useConstraintError );
93
94 ATH_MSG_INFO( "Init m_reduceConstraintUncertainty " << m_reduceConstraintUncertainty );
95
96 ATH_MSG_INFO( "Init m_reduceConstraintUncert_z0 " << m_reduceConstraintUncert_z0 );
97
99
100 m_constraintInputFile_P = new TFile(m_constraintFileName_P.c_str() ,"read");
101 if ( m_constraintInputFile_P->IsZombie() || !(m_constraintInputFile_P->IsOpen()) ) {
102 ATH_MSG_FATAL( " Problem reading TFile " << m_constraintFileName_P );
103 return StatusCode::FAILURE;
104 }
105 ATH_MSG_INFO("Opened file containing the deltaSagitta constraints" << m_constraintFileName_P);
107 if(!m_etaphiMap_P){
108 ATH_MSG_FATAL( " Problem getting constraints Hist. Name " << m_constraintHistName_P );
111 return StatusCode::FAILURE;
112 }
113 ATH_MSG_INFO("Opened constraints histogram " << m_constraintHistName_P);
114
115 }
116
117 if(m_CorrectD0){
118
119 m_constraintInputFile_d0 = new TFile(m_constraintFileName_d0.c_str() ,"read");
120 if ( m_constraintInputFile_d0->IsZombie() || !(m_constraintInputFile_d0->IsOpen()) ) {
121 ATH_MSG_FATAL( " Problem reading TFile " << m_constraintFileName_d0 );
122 return StatusCode::FAILURE;
123 }
124 ATH_MSG_INFO("Opened file containing the d0 constraints" << m_constraintFileName_d0);
126 if(!m_etaphiMap_d0){
127 ATH_MSG_FATAL( " Problem getting constraints Hist. Name " << m_constraintHistName_d0 );
130 return StatusCode::FAILURE;
131 }
132 ATH_MSG_INFO("Opened constraints histogram " << m_constraintHistName_d0);
133
134 }
135
136 if(m_CorrectZ0){
137
138 m_constraintInputFile_z0 = new TFile(m_constraintFileName_z0.c_str() ,"read");
139 if ( m_constraintInputFile_z0->IsZombie() || !(m_constraintInputFile_z0->IsOpen()) ) {
140 ATH_MSG_FATAL( " Problem reading TFile " << m_constraintFileName_z0 );
141 return StatusCode::FAILURE;
142 }
143 ATH_MSG_INFO("Opened file containing the z0 constraints" << m_constraintFileName_z0);
145 if(!m_etaphiMap_z0){
146 ATH_MSG_FATAL( " Problem getting constraints Hist. Name " << m_constraintHistName_z0 );
149 return StatusCode::FAILURE;
150 }
151 ATH_MSG_INFO("Opened constraints histogram " << m_constraintHistName_z0);
152
153 }
154
155 /* Commented to enable the scaling of the uncertainty
156 *
157 if(m_reduceConstraintUncertainty<=0){
158 ATH_MSG_FATAL( " reduceConstraintUncertainty is <= 0 it must be >0 . Currently " << m_reduceConstraintUncertainty );
159 return StatusCode::FAILURE;
160 }
161 */
162
163 return StatusCode::SUCCESS;
164 }
#define endmsg
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
MsgStream & msg() const
TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)

◆ 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 & ITrackCollectionProvider::interfaceID ( )
inlinestaticinherited

Definition at line 57 of file ITrackCollectionProvider.h.

57 {
59 }
static const InterfaceID IID_TRK_ITrackCollectionProvider("ITrackCollectionProvider", 1, 0)

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

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

◆ passTrackSelection()

bool Trk::ConstrainedTrackProvider::passTrackSelection ( const Trk::Track * track)
private

Definition at line 380 of file ConstrainedTrackProvider.cxx.

381 {
382 ATH_MSG_DEBUG("== TrackSelection == STARTED ==");
383
384 const Trk::Perigee* perigee = track->perigeeParameters();
385 if(!perigee){
386 ATH_MSG_DEBUG("== TrackSelection == NO perigee on this track");
387 return false;
388 }
389
390 const Trk::TrackSummary* summary = track->trackSummary();
391
392 if(!summary){
393 ATH_MSG_DEBUG("== TrackSelection == No summary on this track");
394 return false;
395 }
396
397 const int nPixHits = summary->get(Trk::numberOfPixelHits);
398 const int nSCTHits = summary->get(Trk::numberOfSCTHits);
399 const int nTRTHits = summary->get(Trk::numberOfTRTHits);
400
401 const double qoverP = perigee->parameters()[Trk::qOverP] * 1000.;
402 const double z0 = perigee->parameters()[Trk::z0];
403 const double d0 = perigee->parameters()[Trk::d0];
404 double pt = 0.;
405 if ( qoverP != 0 ) pt = fabs(1.0/qoverP)*sin(perigee->parameters()[Trk::theta]);
406
407 ATH_MSG_DEBUG( "== TrackSelection == track pt : "<< pt );
408 double charge(0);
409 if( qoverP > 0)
410 charge = 1.;
411 else
412 charge = -1.;
413 ATH_MSG_DEBUG( " pt : "<< pt << " ; Charge : "<< charge);
414
415 if(pt < m_minPt || pt > m_maxPt ){
416 ATH_MSG_DEBUG("== TrackSelection == Track fails pt cut [ "<<m_minPt<<", "<< m_maxPt << "] " << pt );
417 return false;
418 }
419
420 if (m_SelectByCharge) {
421 if (m_SelectPositive){
422 if (charge<0){
423 ATH_MSG_DEBUG("Track fails charge cut: negative charge " << charge );
424 return false;
425 }
426 }
427 if (not m_SelectPositive){
428 if (charge>0) {
429 ATH_MSG_DEBUG("Track fails charge cut: positive charge " << charge);
430 return false;
431 }
432 }
433 }
434
435 ATH_MSG_VERBOSE("== TrackSelection == Track N PIX hits: " << nPixHits << " requested: "<< m_minPIXHits );
436 ATH_MSG_VERBOSE("== TrackSelection == Track N SCT hits: " << nSCTHits << " requested: "<< m_minSCTHits );
437 ATH_MSG_VERBOSE("== TrackSelection == Track N TRT hits: " << nTRTHits << " requested: "<< m_minTRTHits );
438 ATH_MSG_VERBOSE("== TrackSelection == Track d0: " << d0 << " requested: "<< m_maxd0 );
439 ATH_MSG_VERBOSE("== TrackSelection == Track z0: " << z0 << " requested: "<< m_maxz0 );
440
441 if( nPixHits < m_minPIXHits ||
442 nSCTHits < m_minSCTHits ||
443 nTRTHits < m_minTRTHits ||
444 d0 > m_maxd0 ||
445 z0 > m_maxz0 ) {
446 ATH_MSG_DEBUG("This track did not pass cuts --- nPixHits: " << nPixHits << " nSCTHits: " << nSCTHits <<
447 " nTRTHits: " << nTRTHits << " idd0atIP: " << d0 << " idz0atIP: " << z0 );
448 return false;
449 }
450
451 return true;
452 }
#define ATH_MSG_VERBOSE(x)
float nSCTHits(const U &p)
float nTRTHits(const U &p)
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ numberOfPixelHits
number of pixel layers on track with absence of hits

◆ printSummary()

void Trk::ConstrainedTrackProvider::printSummary ( )
virtual

Print statistical summary to logfile.

Reimplemented from Trk::ITrackCollectionProvider.

Definition at line 566 of file ConstrainedTrackProvider.cxx.

566 {
567
568 if(m_logStream) {
569
570 *m_logStream<<"*************************************************************"<<std::endl;
571 *m_logStream<<"****** ConstrainedTrackProvider Summary ******"<<std::endl;
572 *m_logStream<<"*"<<std::endl;
573 *m_logStream<<"* number of combined muons failed in refit: " << m_passconstrainedRequirements << std::endl;
574 *m_logStream<<"* number of combined muons failed in refit: " << m_constrainedTracks << std::endl;
575 *m_logStream<<"* number of combined muons succeeded in refit: " << m_unconstrainedTracks << std::endl;
576
577 *m_logStream<<"*"<<std::endl;
578 }
579 }
std::ostream * m_logStream
logfile output stream

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

◆ setLogStream()

virtual void Trk::ITrackCollectionProvider::setLogStream ( std::ostream * os)
inlinevirtualinherited

sets the output stream for the logfile

Definition at line 40 of file ITrackCollectionProvider.h.

◆ setNtuple()

virtual void Trk::ITrackCollectionProvider::setNtuple ( TFile * )
inlinevirtualinherited

sets ntuple

Reimplemented in Trk::MSConstraintTracksProvider.

Definition at line 43 of file ITrackCollectionProvider.h.

43{}

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

◆ trackCollection()

StatusCode Trk::ConstrainedTrackProvider::trackCollection ( const TrackCollection *& tracks)
virtual

Implements Trk::ITrackCollectionProvider.

Definition at line 192 of file ConstrainedTrackProvider.cxx.

193 {
194
195
196 const TrackCollection* originalTracks = nullptr;
197
198 if ( StatusCode::SUCCESS != evtStore()->retrieve(originalTracks, m_inputTrackCollection) ){
199 ATH_MSG_WARNING(" Can't retrieve " << m_inputTrackCollection << " from the StoreGate ");
200 finalTracks = originalTracks; // return empty collection
201 return StatusCode::SUCCESS;
202 }
203
205
206 ATH_MSG_DEBUG("Input track collection size: " << originalTracks->size());
207
208 TrackCollection::const_iterator trackIt = originalTracks->begin();
209 TrackCollection::const_iterator trackItE = originalTracks->end();
210 int trackCount = 0;
211
212 for ( ; trackIt != trackItE; ++trackIt ) {
213 trackCount++;
214 ATH_MSG_DEBUG("Dealing with track: " << trackCount << " / " << originalTracks->size());
215
216 bool acceptedTrack = true;
218
219 if( acceptedTrack ){
220 ATH_MSG_DEBUG("Track selection OK for track: " << trackCount);
221 const Trk::Perigee* measuredPerigee = (*trackIt)->perigeeParameters();
222 if(!measuredPerigee){
223 ATH_MSG_DEBUG(" no measuredPerigee");
224 continue;
225 }
226
227 if(!(measuredPerigee->covariance()) ){
228 ATH_MSG_DEBUG(" no measuredPerigee");
229 continue;
230 }
231
232 const Trk::Surface* surf = dynamic_cast<const Trk::Surface*>( &(measuredPerigee->associatedSurface()) ) ;
233 if( !surf ) {
234 ATH_MSG_DEBUG("NO surface of the measuredPerigee");
235 continue;
236 }
237
238 // Get corrections from histograms if they are requested
239
240 double correctedQoverP(0), correctedQoverPError(0);
242 getCorrectedValues_P( measuredPerigee, correctedQoverP, correctedQoverPError);
243 } else {
244 correctedQoverP = measuredPerigee->parameters()[Trk::qOverP];
245 correctedQoverPError = 1e6;
246 }
247
248 double correctedD0(0), correctedD0Error(0);
249 if(m_CorrectD0){
250 getCorrectedValues_d0( measuredPerigee, correctedD0, correctedD0Error);
251 } else {
252 correctedD0 = measuredPerigee->parameters()[Trk::d0];
253 correctedD0Error = 1e6;
254 }
255
256 double correctedZ0(0), correctedZ0Error(0);
257 if(m_CorrectZ0){
258 getCorrectedValues_z0( measuredPerigee, correctedZ0, correctedZ0Error);
259 } else {
260 correctedZ0 = measuredPerigee->parameters()[Trk::z0];
261 correctedZ0Error = 1e6;
262 }
263
264 // Construct pseudomeasurement
265 Trk::DefinedParameter constrainedD0( correctedD0 , Trk::d0) ;
266 Trk::DefinedParameter constrainedZ0( correctedZ0 , Trk::z0) ;
267 Trk::DefinedParameter constrainedqOverP( correctedQoverP , Trk::qOverP) ;
268
269 std::vector<Trk::DefinedParameter> constrainedPars;
270 constrainedPars.push_back( constrainedD0 ) ;
271 constrainedPars.push_back( constrainedZ0 ) ;
272 constrainedPars.push_back( constrainedqOverP ) ;
273
274 Amg::MatrixX constrainedCov( 3,3 ) ;
275 constrainedCov.setZero();
276 constrainedCov( 0, 0 ) = correctedD0Error;
277 constrainedCov( 1, 1 ) = correctedZ0Error;
278 constrainedCov( 2, 2 ) = correctedQoverPError;
279 // constrainedCov( 1, 0 ) = 0; //initially we will assume the constraints are independant
280 // constrainedCov( 2, 0 ) = 0;
281 // constrainedCov( 2, 1 ) = 0;
282
283 Trk::PseudoMeasurementOnTrack *pmot = new Trk::PseudoMeasurementOnTrack( Trk::LocalParameters( constrainedPars ),
284 std::move(constrainedCov), *surf) ;
285
286
287 // Add pseusdo measurement to a list of hits to be fit;
288 std::vector<const Trk::MeasurementBase*> vecOfMB;
289 if (pmot) vecOfMB.push_back(pmot);
290
291 // Add the remaining hits;
292 DataVector<const Trk::MeasurementBase>::const_iterator it = (*trackIt)->measurementsOnTrack()->begin();
293 DataVector<const Trk::MeasurementBase>::const_iterator itend = (*trackIt)->measurementsOnTrack()->end();
294 for (;it!=itend;++it)
295 vecOfMB.push_back(*it);
296
298 it = (*trackIt)->outliersOnTrack()->begin();
299 itend = (*trackIt)->outliersOnTrack()->end();
300 // Add the remaining hits;
301 for (;it!=itend;++it)
302 vecOfMB.push_back(*it);
303 }
304
305 Trk::Track* constrainedFittedTrack = m_trackFitter->fit( Gaudi::Hive::currentContext(),
306 vecOfMB, *measuredPerigee,
307 m_runOutlierRemoval, Trk::pion).release();
308 delete pmot;
309
310 if (constrainedFittedTrack){
311 ATH_MSG_DEBUG("Fit was successful");
312 const Trk::Perigee* constrainedPerigee = constrainedFittedTrack->perigeeParameters();
313 if(!constrainedPerigee){
314 ATH_MSG_DEBUG(" no constrainedmeasuredPerigee");
315 } else {
316 ATH_MSG_DEBUG("Initial track parameters --> momentum: " << 1/measuredPerigee->parameters()[Trk::qOverP] * 1e-3
317 << " pt: " << 1/measuredPerigee->parameters()[Trk::qOverP] * 1e-3 * sin(measuredPerigee->parameters()[Trk::theta])
318 << " d0: " << measuredPerigee->parameters()[Trk::d0]
319 << " z0: " << measuredPerigee->parameters()[Trk::z0] );
320 ATH_MSG_DEBUG("constraint values --> momentum: " << 1/correctedQoverP * 1e-3
321 << " pt: " << 1/correctedQoverP * 1e-3 * sin(measuredPerigee->parameters()[Trk::theta])
322 << " d0: " << correctedD0
323 << " z0: " << correctedZ0 );
324 ATH_MSG_DEBUG("Constrained fit result --> momentum: " << 1/constrainedPerigee->parameters()[Trk::qOverP] * 1e-3
325 << " pt: " << 1/constrainedPerigee->parameters()[Trk::qOverP] * 1e-3 * sin(constrainedPerigee->parameters()[Trk::theta])
326 << " d0: " << constrainedPerigee->parameters()[Trk::d0]
327 << " z0: " << constrainedPerigee->parameters()[Trk::z0] );
328 }
329
330 const Track* track = *trackIt;
331 constrainedFittedTrack->setTrackSummary( std::make_unique<Trk::TrackSummary> (*track->trackSummary()) );
332
333 trackCollection->push_back(constrainedFittedTrack);
335 } else{
336 ATH_MSG_DEBUG("Constrained fit was unsuccessful");
337 }
338 } //--> if ( acceptedTrack)
339 else {
340
341 if(m_useConstrainedTrkOnly) continue;
342
343 //Prob could just copy the track?
344 Trk::Track* unconstrainedFittedTrack =
346 ->fit(Gaudi::Hive::currentContext(),
347 **trackIt,
349 Trk::pion)
350 .release();
351
352 if(unconstrainedFittedTrack) {
353 ATH_MSG_DEBUG("Unconstrained fit was successful");
354 trackCollection->push_back(unconstrainedFittedTrack);
356 } else {
357 ATH_MSG_DEBUG("Unconstrained fit was unsuccessful");
358 }
359 }
360 }
361
362
363 if (StatusCode::SUCCESS != evtStore()->record(trackCollection, "AlignmentConstrainedTracks")){
364 ATH_MSG_WARNING("Problem with recording AlignmentConstrainedTracks to StoreGate!");
365 delete trackCollection;
366 return StatusCode::SUCCESS;
367 }
368
369 ATH_MSG_INFO ("Size of the trackCollection in this event : " << trackCollection->size() );
370 //track Collection cannot be null here; it has already been dereferenced
371 finalTracks = trackCollection;
372
373 return StatusCode::SUCCESS;
374
375 }
#define ATH_MSG_WARNING(x)
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
ServiceHandle< StoreGateSvc > & evtStore()
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
void getCorrectedValues_d0(const Trk::Perigee *mp, double &corrected_d0, double &corrected_d0Error)
void getCorrectedValues_P(const Trk::Perigee *mp, double &correctedQoverP, double &correctedQoverPError)
void getCorrectedValues_z0(const Trk::Perigee *mp, double &corrected_z0, double &corrected_z0Error)
bool passTrackSelection(const Trk::Track *track)
virtual StatusCode trackCollection(const TrackCollection *&tracks)
virtual const S & associatedSurface() const override final
Access to the Surface method.
void setTrackSummary(std::unique_ptr< Trk::TrackSummary > input)
Set the track summary.
const Perigee * perigeeParameters() const
return Perigee.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
std::pair< double, ParamDefs > DefinedParameter
Typedef to of a std::pair<double, ParamDefs> to identify a passed-through double as a specific type o...
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

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

int Trk::ConstrainedTrackProvider::m_constrainedTracks
private

Definition at line 58 of file ConstrainedTrackProvider.h.

◆ m_constraintFileName_d0

std::string Trk::ConstrainedTrackProvider::m_constraintFileName_d0
private

Definition at line 85 of file ConstrainedTrackProvider.h.

◆ m_constraintFileName_P

std::string Trk::ConstrainedTrackProvider::m_constraintFileName_P
private

Definition at line 79 of file ConstrainedTrackProvider.h.

◆ m_constraintFileName_z0

std::string Trk::ConstrainedTrackProvider::m_constraintFileName_z0
private

Definition at line 92 of file ConstrainedTrackProvider.h.

◆ m_constraintHistName_d0

std::string Trk::ConstrainedTrackProvider::m_constraintHistName_d0
private

Definition at line 87 of file ConstrainedTrackProvider.h.

◆ m_constraintHistName_P

std::string Trk::ConstrainedTrackProvider::m_constraintHistName_P
private

Definition at line 81 of file ConstrainedTrackProvider.h.

◆ m_constraintHistName_z0

std::string Trk::ConstrainedTrackProvider::m_constraintHistName_z0
private

Definition at line 94 of file ConstrainedTrackProvider.h.

◆ m_constraintInputFile_d0

TFile* Trk::ConstrainedTrackProvider::m_constraintInputFile_d0
private

Definition at line 86 of file ConstrainedTrackProvider.h.

◆ m_constraintInputFile_P

TFile* Trk::ConstrainedTrackProvider::m_constraintInputFile_P
private

Definition at line 80 of file ConstrainedTrackProvider.h.

◆ m_constraintInputFile_z0

TFile* Trk::ConstrainedTrackProvider::m_constraintInputFile_z0
private

Definition at line 93 of file ConstrainedTrackProvider.h.

◆ m_CorrectD0

bool Trk::ConstrainedTrackProvider::m_CorrectD0
private

Definition at line 99 of file ConstrainedTrackProvider.h.

◆ m_CorrectMeanD0

bool Trk::ConstrainedTrackProvider::m_CorrectMeanD0
private

Definition at line 100 of file ConstrainedTrackProvider.h.

◆ m_CorrectMomentum

bool Trk::ConstrainedTrackProvider::m_CorrectMomentum
private

Definition at line 78 of file ConstrainedTrackProvider.h.

◆ m_CorrectZ0

bool Trk::ConstrainedTrackProvider::m_CorrectZ0
private

Definition at line 91 of file ConstrainedTrackProvider.h.

◆ m_deltaScaling

double Trk::ConstrainedTrackProvider::m_deltaScaling
private

Definition at line 64 of file ConstrainedTrackProvider.h.

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

bool Trk::ConstrainedTrackProvider::m_doTrackSelection
private

Definition at line 55 of file ConstrainedTrackProvider.h.

◆ m_etaphiMap_d0

TH2F* Trk::ConstrainedTrackProvider::m_etaphiMap_d0
private

Definition at line 88 of file ConstrainedTrackProvider.h.

◆ m_etaphiMap_P

TH2F* Trk::ConstrainedTrackProvider::m_etaphiMap_P
private

Definition at line 82 of file ConstrainedTrackProvider.h.

◆ m_etaphiMap_z0

TH2F* Trk::ConstrainedTrackProvider::m_etaphiMap_z0
private

Definition at line 97 of file ConstrainedTrackProvider.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_inputTrackCollection

std::string Trk::ConstrainedTrackProvider::m_inputTrackCollection
private

Definition at line 75 of file ConstrainedTrackProvider.h.

◆ m_logStream

std::ostream* Trk::ITrackCollectionProvider::m_logStream = nullptr
protectedinherited

logfile output stream

Definition at line 53 of file ITrackCollectionProvider.h.

◆ m_maxd0

double Trk::ConstrainedTrackProvider::m_maxd0
private

Definition at line 69 of file ConstrainedTrackProvider.h.

◆ m_maxPt

double Trk::ConstrainedTrackProvider::m_maxPt
private

Definition at line 72 of file ConstrainedTrackProvider.h.

◆ m_maxRetrievalErrors

int Trk::ConstrainedTrackProvider::m_maxRetrievalErrors
private

maximum allowed number of retrieval errors at the beginning of the job (-1 for infinite)

Definition at line 56 of file ConstrainedTrackProvider.h.

◆ m_maxz0

double Trk::ConstrainedTrackProvider::m_maxz0
private

Definition at line 70 of file ConstrainedTrackProvider.h.

◆ m_minPIXHits

int Trk::ConstrainedTrackProvider::m_minPIXHits
private

Definition at line 66 of file ConstrainedTrackProvider.h.

◆ m_minPt

double Trk::ConstrainedTrackProvider::m_minPt
private

Definition at line 71 of file ConstrainedTrackProvider.h.

◆ m_minSCTHits

int Trk::ConstrainedTrackProvider::m_minSCTHits
private

Definition at line 67 of file ConstrainedTrackProvider.h.

◆ m_minTRTHits

int Trk::ConstrainedTrackProvider::m_minTRTHits
private

Definition at line 68 of file ConstrainedTrackProvider.h.

◆ m_passconstrainedRequirements

int Trk::ConstrainedTrackProvider::m_passconstrainedRequirements
private

Definition at line 59 of file ConstrainedTrackProvider.h.

◆ m_reduceConstraintUncert_z0

double Trk::ConstrainedTrackProvider::m_reduceConstraintUncert_z0
private

Definition at line 63 of file ConstrainedTrackProvider.h.

◆ m_reduceConstraintUncertainty

double Trk::ConstrainedTrackProvider::m_reduceConstraintUncertainty
private

Definition at line 62 of file ConstrainedTrackProvider.h.

◆ m_runOutlierRemoval

RunOutlierRemoval Trk::ConstrainedTrackProvider::m_runOutlierRemoval
private

run outlier removal in the GX2 fitter

Definition at line 53 of file ConstrainedTrackProvider.h.

◆ m_scalepmaptogev

bool Trk::ConstrainedTrackProvider::m_scalepmaptogev
private

Definition at line 54 of file ConstrainedTrackProvider.h.

◆ m_SelectByCharge

bool Trk::ConstrainedTrackProvider::m_SelectByCharge
private

Definition at line 102 of file ConstrainedTrackProvider.h.

◆ m_SelectPositive

bool Trk::ConstrainedTrackProvider::m_SelectPositive
private

Definition at line 103 of file ConstrainedTrackProvider.h.

◆ m_trackFitter

ToolHandle<IGlobalTrackFitter> Trk::ConstrainedTrackProvider::m_trackFitter
private

normal track fitter

Definition at line 51 of file ConstrainedTrackProvider.h.

◆ m_unconstrainedTracks

int Trk::ConstrainedTrackProvider::m_unconstrainedTracks
private

Definition at line 60 of file ConstrainedTrackProvider.h.

◆ m_useConstrainedTrkOnly

bool Trk::ConstrainedTrackProvider::m_useConstrainedTrkOnly
private

Definition at line 57 of file ConstrainedTrackProvider.h.

◆ m_useConstraintError

bool Trk::ConstrainedTrackProvider::m_useConstraintError
private

Definition at line 61 of file ConstrainedTrackProvider.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: