ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
InDet::InDetDetailedTrackSelectorTool Class Reference

#include <InDetDetailedTrackSelectorTool.h>

Inheritance diagram for InDet::InDetDetailedTrackSelectorTool:
Collaboration diagram for InDet::InDetDetailedTrackSelectorTool:

Public Types

enum  Grade { Undefined, Good, Shared, nbGrades }
 

Public Member Functions

StatusCode initialize ()
 
StatusCode finalize ()
 
 InDetDetailedTrackSelectorTool (const std::string &t, const std::string &n, const IInterface *p)
 
 ~InDetDetailedTrackSelectorTool ()
 
bool decision (const Trk::Track &track, const Trk::Vertex *vertex) const
 
bool decision (const Trk::TrackParticleBase &track, const Trk::Vertex *vertex) const
 
bool decision (const xAOD::TrackParticle &track, const xAOD::Vertex *vertex) const
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) 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 More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

int getCount (const xAOD::TrackParticle &tp, xAOD::SummaryType type) const
 
bool decision (const Trk::Perigee *track, const AmgSymMatrix(3) *covariancePosition) const
 
bool decision (const Trk::FitQuality *TrkQuality) const
 
bool decision (double chi2, int ndf) const
 
bool decision (const Trk::TrackSummary *summary, const xAOD::TrackParticle *tp, bool useSharedHitInfo, bool useTrtHitInfo, const Trk::Perigee *track, const int nHitTrt, const int nHitTrtPlusOutliers) const
 
bool preselectionBeforeExtrapolation (const Trk::Perigee &myPerigee) const
 
Amg::Vector3D getPosOrBeamSpot (const xAOD::Vertex *) const
 
Trk::VertexgetBeamSpot (const EventContext &) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

double m_pTMin
 
double m_pMin
 
double m_IPd0Max
 
double m_IPz0Max
 
double m_z0Max
 
double m_sigIPd0Max
 
double m_sigIPz0Max
 
double m_d0significanceMax
 
double m_z0significanceMax
 
double m_etaMax
 
bool m_useTrackSummaryInfo
 
int m_nHitBLayer
 
int m_nHitPix
 
int m_nHitBLayerPlusPix
 
int m_nHitSct
 
int m_nHitSi
 
int m_nHitPixPhysical
 at least n physical hits in pixel More...
 
int m_nHitSiPhysical
 at least n physical hits in pixel+SCT More...
 
int m_nHitTrt
 
int m_nHitTrtPlusOutliers
 
int m_nHitTrtHighE
 
int m_nHitTrtPlusOutliersHighE
 
double m_nHitTrtHighEFraction
 
double m_nHitTrtHighEFractionWithOutliers
 
double m_TrtMaxEtaAcceptance
 
bool m_useSharedHitInfo
 
int m_nSharedBLayer
 
int m_nSharedPix
 
int m_nSharedSct
 
int m_nSharedSi
 
int m_nHoles
 
int m_nDoubleHoles
 
int m_nHolesPix
 
int m_nHolesSct
 
bool m_useTrackQualityInfo
 
double m_fitChi2
 
double m_fitProb
 
double m_fitChi2OnNdfMax
 
double m_scaleMinHitTrt
 
int m_addToMinHitTrt
 
double m_scaleMinHitTrtWithOutliers
 
int m_addToMinHitTrtWithOutliers
 
bool m_usePreselectionCuts
 
double m_d0MaxPreselection
 
bool m_useEtaDepententMinHitTrt
 
bool m_useEtaDepententMinHitTrtWithOutliers
 
ToolHandle< Trk::ITrackSummaryToolm_trackSumTool
 Track summary tool. More...
 
ToolHandle< Trk::ITrackParticleCreatorToolm_particleCreator
 TrackParticle creator tool. More...
 
ToolHandle< Trk::IExtrapolatorm_extrapolator
 Extrapolator tool. More...
 
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
 
ToolHandle< ITrtDriftCircleCutToolm_trtDCTool
 Tool to get eta dependent cut on number of TRT hits. More...
 
ToolHandle< InDet::IInDetTestPixelLayerToolm_inDetTestPixelLayerTool
 
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
 
bool m_trackSumToolAvailable
 
bool m_partCreatorToolAvailable
 
bool m_usePtDependentCuts
 
std::vector< float > m_ptBenchmarks
 
std::vector< int > m_nSCTValues
 
SG::ReadHandleKey< xAOD::EventInfom_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"}
 
bool m_useEventInfoBs
 Access beamspot via the EvenInfo object. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 57 of file InDetDetailedTrackSelectorTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ Grade

Enumerator
Undefined 
Good 
Shared 
nbGrades 

Definition at line 62 of file InDetDetailedTrackSelectorTool.h.

Constructor & Destructor Documentation

◆ InDetDetailedTrackSelectorTool()

InDet::InDetDetailedTrackSelectorTool::InDetDetailedTrackSelectorTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 37 of file InDetDetailedTrackSelectorTool.cxx.

38  : AthAlgTool(t,n,p)
39  , m_trackSumTool("Trk::TrackSummaryTool", this)
40  , m_particleCreator("", this)
41  , m_extrapolator("Trk::Extrapolator", this)
42  , m_trtDCTool("InDet::InDetTrtDriftCircleCutTool", this)
43  , m_inDetTestPixelLayerTool("", this)
46  , m_usePtDependentCuts(false)
47  , m_useEventInfoBs(false)
48 
49 
50  {
51  declareInterface<ITrackSelectorTool>(this);
52  declareProperty("pTMin" , m_pTMin = 1.*GeV);
53  declareProperty("pMin" , m_pMin = 0.);
54  declareProperty("IPd0Max" , m_IPd0Max = 2.*mm);
55  declareProperty("IPz0Max" , m_IPz0Max = 1.5*mm);
56  declareProperty("z0Max" , m_z0Max = 9999.*mm);
57  declareProperty("sigIPd0Max" , m_sigIPd0Max = 999.*mm);
58  declareProperty("sigIPz0Max" , m_sigIPz0Max = 999.*mm);
59  declareProperty("d0significanceMax", m_d0significanceMax = -1.);
60  declareProperty("z0significanceMax", m_z0significanceMax = -1.);
61  declareProperty("etaMax" , m_etaMax = 9999.);
62 
63  declareProperty("useTrackSummaryInfo", m_useTrackSummaryInfo = true);
64 
65  declareProperty("nHitBLayer" , m_nHitBLayer = 1);
66  declareProperty("nHitPix" , m_nHitPix = 2);
67  declareProperty("nHitBLayerPlusPix", m_nHitBLayerPlusPix = 0);
68  declareProperty("nHitSct" , m_nHitSct = 0);
69  declareProperty("nHitSi" , m_nHitSi = 7);
70 
71  declareProperty("nHitPixPhysical", m_nHitPixPhysical = 0);
72  declareProperty("nHitSiPhysical", m_nHitSiPhysical = 3);
73 
74  declareProperty("nHitTrt" , m_nHitTrt = 0);
75  declareProperty("nHitTrtPlusOutliers" , m_nHitTrtPlusOutliers = 0);
76  declareProperty("nHitTrtHighE" , m_nHitTrtHighE = 0);
77  declareProperty("nHitTrtPlusOutliersHighE" , m_nHitTrtPlusOutliersHighE = 0);
78  declareProperty("nHitTrtHighEFractionMax" , m_nHitTrtHighEFraction = 999);
79  declareProperty("nHitTrtHighEFractionWithOutliersMax", m_nHitTrtHighEFractionWithOutliers = 999);
80 
81  declareProperty("useSharedHitInfo", m_useSharedHitInfo = false);
82  declareProperty("nSharedBLayer" , m_nSharedBLayer = 0);
83  declareProperty("nSharedPix" , m_nSharedPix = 0);
84  declareProperty("nSharedSct" , m_nSharedSct = 1);
85  declareProperty("nSharedSi" , m_nSharedSi = 999);
86 
87  declareProperty("nHoles" , m_nHoles = 999);
88  declareProperty("nDoubleHoles", m_nDoubleHoles = 999);
89  declareProperty("nHolesPixel" , m_nHolesPix = 999);
90  declareProperty("nHolesSct" , m_nHolesSct = 999);
91 
92  declareProperty("useTrackQualityInfo", m_useTrackQualityInfo = true);
93  declareProperty("fitChi2" , m_fitChi2 = 99999.);
94  declareProperty("fitProb" , m_fitProb = -1.);
95  declareProperty("fitChi2OnNdfMax" , m_fitChi2OnNdfMax = 999.);
96  declareProperty("TrtMaxEtaAcceptance", m_TrtMaxEtaAcceptance = 999.);
97 
98  declareProperty("usePreselectionCuts", m_usePreselectionCuts = false);
99  declareProperty("d0MaxPreselection" , m_d0MaxPreselection = 10.);
100 
101  declareProperty("useEtaDepententMinHitTrt", m_useEtaDepententMinHitTrt = false);
102  declareProperty("scaleMinHitTrt" , m_scaleMinHitTrt = 1.);
103  declareProperty("addToMinHitTrt" , m_addToMinHitTrt = 0);
104 
105  declareProperty("useEtaDepententMinHitTrtWithOutliers", m_useEtaDepententMinHitTrtWithOutliers = false);
106  declareProperty("scaleMinHitTrtWithOutliers" , m_scaleMinHitTrtWithOutliers = 1.);
107  declareProperty("addToMinHitTrtWithOutliers" , m_addToMinHitTrtWithOutliers = 0);
108 
109  declareProperty("TrackSummaryTool" , m_trackSumTool);
110  declareProperty("TrackParticleCreatorTool", m_particleCreator);
111  declareProperty("Extrapolator" , m_extrapolator);
112  declareProperty("TrtDCCutTool" , m_trtDCTool);
113  declareProperty("InDetTestPixelLayerTool", m_inDetTestPixelLayerTool);
114 
115 
116  declareProperty("UsePtDependentCuts", m_usePtDependentCuts = false);
117  declareProperty("PtBenchmarks" , m_ptBenchmarks);
118  declareProperty("SCTCutValues" , m_nSCTValues);
119  declareProperty("UseEventInfoBS" , m_useEventInfoBs);
120  }

◆ ~InDetDetailedTrackSelectorTool()

InDet::InDetDetailedTrackSelectorTool::~InDetDetailedTrackSelectorTool ( )
default

Member Function Documentation

◆ decision() [1/7]

bool InDet::InDetDetailedTrackSelectorTool::decision ( const Trk::FitQuality TrkQuality) const
private

Definition at line 882 of file InDetDetailedTrackSelectorTool.cxx.

883  {
884  if(nullptr == trkQuality) {
885  ATH_MSG_WARNING( "Null FitQuality pointer passed. No track Quality cut possible. Selection failed." );
886  return false;
887  }
888  return decision(trkQuality->chiSquared(),trkQuality->numberDoF());
889  }

◆ decision() [2/7]

bool InDet::InDetDetailedTrackSelectorTool::decision ( const Trk::Perigee track,
const AmgSymMatrix(3) *  covariancePosition 
) const
private

Definition at line 741 of file InDetDetailedTrackSelectorTool.cxx.

741  {
742 
743  // checking pointer first
744  if(nullptr==track || !track->covariance()) {
745  ATH_MSG_WARNING( "Decision on measured perigee: Zero pointer to measured perigee passed. Selection failed." );
746  return false;
747  }
748 
749  const AmgVector(5)& perigeeParms = track->parameters();
750 
751  // only check pt if mag. field is on
752  const EventContext& ctx = Gaudi::Hive::currentContext();
754  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
755  if (fieldCondObj == nullptr) {
756  ATH_MSG_ERROR("execute: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
757  return false;
758  }
759  MagField::AtlasFieldCache fieldCache;
760  fieldCondObj->getInitializedCache (fieldCache);
761 
762  if (fieldCache.solenoidOn()){//B field
763  if (perigeeParms[Trk::qOverP] == 0.) {
764  ATH_MSG_DEBUG("Track rejected because of qOverP == 0.");
765  return false;
766  }
767  double p = std::fabs(1./perigeeParms[Trk::qOverP]);
768  if (p<m_pMin) {
769  ATH_MSG_DEBUG("Track rejected because of p " << p << " < " << m_pMin);
770  return false;
771  }
772  double pt = p*std::sin(perigeeParms[Trk::theta]);
773  if (pt<m_pTMin) {
774  ATH_MSG_DEBUG("Track rejected because of pt " << pt << " < " << m_pTMin);
775  return false;
776  }
777  }
778 
779  if (std::fabs(perigeeParms[Trk::d0]) > m_IPd0Max) {
780  ATH_MSG_DEBUG("Track rejected because of fabs(d0) " << std::fabs(perigeeParms[Trk::d0]) << " > " << m_IPd0Max);
781  return false;
782  }
783 
784  if (std::fabs(perigeeParms[Trk::z0]*std::sin(perigeeParms[Trk::theta])) > m_IPz0Max) {
785  ATH_MSG_DEBUG("Track rejected because of fabs(z0*sin(theta)) " << std::fabs(perigeeParms[Trk::z0]*std::sin(perigeeParms[Trk::theta])) << " > " << m_IPz0Max);
786  return false;
787  }
788 
789  if (std::fabs(perigeeParms[Trk::z0]) > m_z0Max) {
790  ATH_MSG_DEBUG("Track rejected because of fabs(z0) " << std::fabs(perigeeParms[Trk::z0]) << " > " << m_z0Max);
791  return false;
792  }
793 
794  if (sqrt( (*track->covariance())(Trk::z0,Trk::z0) )*std::sin(perigeeParms[Trk::theta])>m_sigIPz0Max) {
795  ATH_MSG_DEBUG("Track rejected because of err(z0)*sin(theta) " << sqrt( (*track->covariance())(Trk::z0,Trk::z0) )*std::sin(perigeeParms[Trk::theta]) << " > " << m_sigIPz0Max);
796  return false;
797  }
798 
799  if (sqrt( (*track->covariance())(Trk::d0,Trk::d0) )>m_sigIPd0Max) {
800  ATH_MSG_DEBUG("Track rejected because of err(d0) " << sqrt( (*track->covariance())(Trk::d0,Trk::d0) ) << " > " << m_sigIPd0Max);
801  return false;
802  }
803 
805 
806  double sinTheta = std::sin(perigeeParms[Trk::theta]);
807  double cosTheta = std::cos(perigeeParms[Trk::theta]);
808  double d0wrtPriVtx = perigeeParms[Trk::d0];
809  double deltaZ = perigeeParms[Trk::z0];
810  double z0wrtPriVtx = deltaZ*sinTheta;
811  double testtrackSigD0 = sqrt( (*track->covariance())(Trk::d0,Trk::d0) );
812  double testtrackSigZ0 = sqrt( (*track->covariance())(Trk::z0,Trk::z0) );
813  double testtrackSigTh = sqrt( (*track->covariance())(Trk::theta,Trk::theta) );
814  // error on IP:
815  double trackPhi = perigeeParms[Trk::phi];
816  double dIPdx = std::sin(trackPhi);
817  double dIPdy = -std::cos(trackPhi);
818  double DD0 = testtrackSigD0*testtrackSigD0;
819  double newD0Err=0;
820  if (covariancePosition) {
821  double DXX = dIPdx*dIPdx* (*covariancePosition)(0,0);
822  double DYY = dIPdy*dIPdy* (*covariancePosition)(1,1);
823  double DXY = 2.*dIPdx*dIPdy* (*covariancePosition)(0,1);
824  newD0Err = DD0 + DXX + DYY + DXY;
825  } else {
826  newD0Err = DD0;
827  }
828 
829  double d0ErrwrtPriVtx = (newD0Err>0 ? sqrt(newD0Err) : -10e-9);
830 
831  if (d0ErrwrtPriVtx<0) {
832  ATH_MSG_WARNING( " error on d0 is negative: numeric error... (not expected. please report!)" );
833  }
834 
835  if (m_d0significanceMax>0) {
836  if (std::fabs(d0wrtPriVtx/d0ErrwrtPriVtx)>m_d0significanceMax) {
837  ATH_MSG_DEBUG("Track rejected because of fabs(d0wrtPriVtx/d0ErrwrtPriVtx) " << std::fabs(d0wrtPriVtx/d0ErrwrtPriVtx) << " > " << m_d0significanceMax);
838  return false;
839  }
840  }
841 
842  if (m_z0significanceMax>0) {
843 
844  // error on zIP:
845  double dZIPdTheta = deltaZ*cosTheta;
846  double dZIPdz0 = sinTheta;
847  double dZIPdzV = -sinTheta;
848  double DTheta2 = dZIPdTheta*dZIPdTheta*testtrackSigTh*testtrackSigTh;
849  double DZ02 = dZIPdz0*dZIPdz0*testtrackSigZ0*testtrackSigZ0;
850  double DThetaZ0 = 2.*dZIPdTheta*dZIPdz0*(*track->covariance())(Trk::theta,Trk::z0);
851  double newZ0Err(0);
852  if (covariancePosition) {
853  double DZV2 = dZIPdzV*dZIPdzV* (*covariancePosition)(2,2);
854  newZ0Err = DTheta2 + DZ02 + DZV2 + DThetaZ0;
855  } else {
856  newZ0Err = DTheta2 + DZ02 + DThetaZ0;
857  }
858 
859  double z0ErrwrtPriVtx = (newZ0Err>0 ? sqrt(newZ0Err) : -10e-9);
860 
861  if (z0ErrwrtPriVtx<0) {
862  ATH_MSG_WARNING( " error on z0 is negative: numeric error... (not expected. please report!)" );
863  }
864 
865  if (std::fabs(z0wrtPriVtx/z0ErrwrtPriVtx)>m_z0significanceMax) {
866  ATH_MSG_DEBUG("Track rejected because of fabs(z0wrtPriVtx/z0ErrwrtPriVtx) " << std::fabs(z0wrtPriVtx/z0ErrwrtPriVtx) << " > " << m_z0significanceMax);
867  return false;
868  }
869  }
870 
871  }
872 
873  if (std::fabs(track->momentum().eta())>m_etaMax) {
874  ATH_MSG_DEBUG("Track rejected because of fabs(eta) " << std::fabs(track->momentum().eta()) << " > " << m_etaMax);
875  return false;
876  }
877 
878  return true;
879  }

◆ decision() [3/7]

bool InDet::InDetDetailedTrackSelectorTool::decision ( const Trk::Track track,
const Trk::Vertex vertex 
) const
virtual

Implements Trk::ITrackSelectorTool.

Definition at line 213 of file InDetDetailedTrackSelectorTool.cxx.

213  {
214  int nHitTrt = m_nHitTrt;
215  int nHitTrtPlusOutliers = m_nHitTrtPlusOutliers;
216  const Trk::Perigee* perigeeBeforeExtrapolation=dynamic_cast<const Trk::Perigee*>(track.perigeeParameters());
217  if (perigeeBeforeExtrapolation && m_usePreselectionCuts){
218  bool preselectionDecision=preselectionBeforeExtrapolation(*perigeeBeforeExtrapolation);
219  if (!preselectionDecision) {
220  ATH_MSG_DEBUG("Track rejected because of preselection decision!");
221  return false;
222  }
223  } else if (m_usePreselectionCuts){
224  ATH_MSG_DEBUG( " Preselection was requested but cannot be made since no Perigee in Track is available. This is not an error." );
225  }
226  const Trk::Vertex* myVertex=vertex;
227  //in case no Vertex is provided by the user, beam position will be used if available
228  if (myVertex==nullptr) {
229  myVertex = getBeamSpot(Gaudi::Hive::currentContext());
230  }
231  Trk::PerigeeSurface perigeeSurface(myVertex->position());
232  const Trk::TrackParameters *firstmeaspar=nullptr;
233  for (const auto *i : *track.trackParameters()){
234  if ( i->covariance() && !dynamic_cast<const Trk::Perigee*>(i)) {
235  firstmeaspar=i;
236  break;
237  }
238  }
239  if (!firstmeaspar) {
240  //assumes perigeeParameters exist...
241  //no track selection if firstmeas + perigee does not exist !
242  firstmeaspar=track.perigeeParameters();
243  if (!firstmeaspar){
244  ATH_MSG_WARNING( " First measurment on track is missing. Using perigee Parameters, but they are missing: 0 pointer! Track selection failed " );
245  //clean up vertex
246  if (myVertex!=vertex) {
247  delete myVertex;
248  myVertex=nullptr;
249  }
250  return false;
251  }
252  }
253  const Trk::TrackParameters* extrapolatedParameters= m_extrapolator->extrapolate(Gaudi::Hive::currentContext(),
254  *firstmeaspar,
255  perigeeSurface,
257  true,
258  track.info().particleHypothesis() ).release();
259  const Trk::Perigee* extrapolatedPerigee = extrapolatedParameters ? dynamic_cast<const Trk::Perigee*>(extrapolatedParameters) : nullptr;
260  if (!extrapolatedPerigee || !extrapolatedPerigee->covariance() ) {
261  ATH_MSG_WARNING( "Track Selector failed to extrapolate track to the vertex: " << myVertex->position() );
262  if (extrapolatedParameters) {
263  ATH_MSG_WARNING( "The return object of the extrapolator was not a perigee even if a perigeeSurface was used!" );
264  delete extrapolatedParameters;
265  extrapolatedParameters=nullptr;
266  }
267  }
268 
269  //decision based on the track parameters
270  const Trk::RecVertex* recVertex = dynamic_cast<const Trk::RecVertex*>(myVertex);
271  bool dec = decision(extrapolatedPerigee, recVertex ? &recVertex->covariancePosition() : nullptr );
272  if (myVertex!=vertex) {
273  delete myVertex;
274  myVertex=nullptr;
275  }
276  bool isInTrtAcceptance=true;
277  if (!extrapolatedPerigee || std::fabs(extrapolatedPerigee->momentum().eta())>m_TrtMaxEtaAcceptance) {
278  isInTrtAcceptance=false;
279  }
280  if (extrapolatedPerigee!=track.perigeeParameters()) {
281  delete extrapolatedPerigee;
282  extrapolatedPerigee=nullptr;
283  }
284  if(!dec) {
285  ATH_MSG_DEBUG("Track rejected because of perigee parameters!");
286  return false;
287  }
288  if (m_useTrackQualityInfo) {
289  const Trk::FitQuality* TrkQuality=track.fitQuality();
290  if (TrkQuality==nullptr) {
291  ATH_MSG_WARNING( "Requested cut on track quality was not possible. Track has no FitQuality object attached. Selection failed." );
292  return false;
293  }
294  if (!decision(TrkQuality)) {
295  return false;
296  }
297  }
298  if (m_useTrackSummaryInfo) {
299  //number of hits, silicon hits, b-layer
300  // first ask track for summary
301  std::unique_ptr<Trk::TrackSummary> summaryUniquePtr;
302  const Trk::TrackSummary* summary = track.trackSummary();
303  if (m_trackSumToolAvailable && summary == nullptr) {
304  summaryUniquePtr = m_trackSumTool->summary(track);
305  summary = summaryUniquePtr.get();
306  }
307  if (nullptr==summary ) {
308  ATH_MSG_FATAL( "Track preselection: cannot create a track summary (but useTrackSummary is true). Selection failed." );
309  return false;
310  }
311 
312  // Create xAOD::TrackParticle to retrieve shared hit info
313  const xAOD::TrackParticle* tp = m_partCreatorToolAvailable ? m_particleCreator->createParticle(track) : nullptr;
314  if(m_useSharedHitInfo && tp==nullptr){
315  ATH_MSG_FATAL( "Track preselection: cannot create a track particle (but useSharedHitInfo is true). Selection failed." );
316  return false;
317  }
318 
319  // get the minimum nimber of TRT hits based on eta of the track
321  nHitTrt = m_trtDCTool->minNumberDCs( (*track.trackParameters())[0] );
322  if(m_addToMinHitTrt!=0){
323  nHitTrt += m_addToMinHitTrt;
324  }else{
325  nHitTrt = (int)((double)nHitTrt*m_scaleMinHitTrt);
326  }
327  }
328 
329  // get the minimum nimber of TRT hits + outliers based on eta of the track
331  nHitTrtPlusOutliers = m_trtDCTool->minNumberDCs( (*track.trackParameters())[0] );
333  nHitTrtPlusOutliers += m_addToMinHitTrtWithOutliers;
334  }else{
335  nHitTrtPlusOutliers = (int)((double)nHitTrtPlusOutliers*m_scaleMinHitTrtWithOutliers);
336  }
337  }
338 
339  if (!decision(summary, tp, m_useSharedHitInfo,isInTrtAcceptance, perigeeBeforeExtrapolation,
340  nHitTrt, nHitTrtPlusOutliers)) {
341  return false;
342  }
343  }
344  return true;
345  }

◆ decision() [4/7]

bool InDet::InDetDetailedTrackSelectorTool::decision ( const Trk::TrackParticleBase track,
const Trk::Vertex vertex 
) const
virtual

Implements Trk::ITrackSelectorTool.

Definition at line 349 of file InDetDetailedTrackSelectorTool.cxx.

349  {
350  int nHitTrt = m_nHitTrt;
351  int nHitTrtPlusOutliers = m_nHitTrtPlusOutliers;
352  const Trk::TrackParameters* definintParameters=&(track.definingParameters());
353  const Trk::Perigee* perigeeBeforeExtrapolation=dynamic_cast<const Trk::Perigee*>(definintParameters);
354  if (perigeeBeforeExtrapolation && m_usePreselectionCuts) {
355  bool preselectionDecision=preselectionBeforeExtrapolation(*perigeeBeforeExtrapolation);
356  if (!preselectionDecision) {
357  ATH_MSG_DEBUG("Track rejected because of preselection decision!");
358  return false;
359  }
360  } else if (m_usePreselectionCuts) {
361  ATH_MSG_WARNING( " Preselection was requested but cannot be made since the Perigee is not the defining Parameter of the TrackParticle. This is not an error." );
362  }
363  bool isInTrtAcceptance=true;
364  if (!perigeeBeforeExtrapolation || std::fabs(perigeeBeforeExtrapolation->momentum().eta())>m_TrtMaxEtaAcceptance) {
365  isInTrtAcceptance=false;
366  }
367  if (m_useTrackQualityInfo) {
368  const Trk::FitQuality* TrkQuality=track.fitQuality();
369  if (TrkQuality==nullptr) {
370  ATH_MSG_WARNING( "Requested cut on track quality was not possible. TrackParticleBase has no FitQuality object attached. Selection failed." );
371  return false;
372  }
373  if (!decision(TrkQuality)) {
374  return false;
375  }
376  }
377  if (m_useTrackSummaryInfo) {
378  //number of hits, silicon hits, b-layer
379  const Trk::TrackSummary* summary = track.trackSummary();
380  if (nullptr==summary ) {
381  ATH_MSG_WARNING( "Track preselection: cannot create a track summary (but useTrackSummary is true). Selection failed." );
382  return false;
383  }
384 
385 
386  if (m_useSharedHitInfo) {
387  ATH_MSG_ERROR( "Use of InDetDetailedTrackSelectorTool with Trk::TrackParticleBase and useSharedHitInfo is not supported");
388  return false;
389  }
390  const xAOD::TrackParticle* tp = nullptr;
391 
393  nHitTrt = m_trtDCTool->minNumberDCs( (track.trackParameters())[0] );
394  if(m_addToMinHitTrt!=0){
395  nHitTrt += m_addToMinHitTrt;
396  }else{
397  nHitTrt = (int)((double)nHitTrt*m_scaleMinHitTrt);
398  }
399  }
400 
402  nHitTrtPlusOutliers = m_trtDCTool->minNumberDCs( (track.trackParameters())[0] );
404  nHitTrtPlusOutliers += m_addToMinHitTrtWithOutliers;
405  }else{
406  nHitTrtPlusOutliers = (int)((double)nHitTrtPlusOutliers*m_scaleMinHitTrtWithOutliers);
407  }
408  }
409 
410  if ((!perigeeBeforeExtrapolation) or
411  (!decision(summary, tp, m_useSharedHitInfo, isInTrtAcceptance, perigeeBeforeExtrapolation,
412  nHitTrt, nHitTrtPlusOutliers))) {
413  return false;
414  }
415  }
416  const Trk::Perigee* extrapolatedPerigee=dynamic_cast<const Trk::Perigee*>(definintParameters);
417  const Trk::Vertex* myVertex=vertex;
418  if (vertex==nullptr) {
419  myVertex = getBeamSpot(Gaudi::Hive::currentContext());
420  }
421  Trk::PerigeeSurface perigeeSurface(myVertex->position());
422  const Trk::TrackParameters *firstmeaspar=nullptr;
423  for (const auto *i : track.trackParameters()) {
424  if (i->covariance() &&
425  !dynamic_cast<const Trk::Perigee*>(i)) {
426  firstmeaspar=i;
427  break;
428  }
429  }
430  if (!firstmeaspar) {
431  if (!extrapolatedPerigee || !extrapolatedPerigee->covariance() ) {
432  ATH_MSG_DEBUG( " Track Paraemters at first measurement not found. Perigee not found. Cannot do TrackSelection..." );
433  if (myVertex!=vertex) {
434  delete myVertex;
435  myVertex=nullptr;
436  }
437  return false;
438  }
439  //using perigee instead of firstmeasurement, since first measurement was not found...
440  firstmeaspar=&(track.definingParameters());
441  }
442 
443  ATH_MSG_VERBOSE ("Input to extrapolation: " << *firstmeaspar);
444  ATH_MSG_VERBOSE ("Extrapolating to position: " << myVertex->position()[0] << " , " <<
445  myVertex->position()[1] << " , " << myVertex->position()[2]);
446  const Trk::TrackParameters* extrapolatedParameters= firstmeaspar ?
447  m_extrapolator->extrapolate(Gaudi::Hive::currentContext(),
448  *firstmeaspar,
449  perigeeSurface,
451  true,Trk::pion ).release() : nullptr;
452  extrapolatedPerigee = extrapolatedParameters ? dynamic_cast<const Trk::Perigee*>(extrapolatedParameters) : nullptr;
453  if (extrapolatedPerigee==nullptr || !extrapolatedPerigee->covariance()) {
454  ATH_MSG_WARNING( "Track Selector failed to extrapolate track to the vertex: " << myVertex->position() );
455  if (extrapolatedParameters) {
456  ATH_MSG_WARNING( "The return object of the extrapolator was not a perigee even if a perigeeSurface was used!" );
457  delete extrapolatedParameters;
458  extrapolatedParameters = nullptr;
459  }
460  }
461  if (extrapolatedParameters) ATH_MSG_VERBOSE ("Result: " << *extrapolatedParameters);
462  const Trk::RecVertex* recVertex = dynamic_cast<const Trk::RecVertex*>(myVertex);
463  bool dec = decision(extrapolatedPerigee, recVertex ? &recVertex->covariancePosition() : nullptr );
464  if (myVertex!=vertex) {
465  delete myVertex;
466  myVertex=nullptr;
467  }
468  if (extrapolatedPerigee!=&(track.definingParameters())) {
469  delete extrapolatedPerigee;
470  extrapolatedPerigee=nullptr;
471  }
472  if(!dec) {
473  ATH_MSG_DEBUG("Track rejected because of perigee parameters!");
474  return false;
475  }
476  return true;
477  }

◆ decision() [5/7]

bool InDet::InDetDetailedTrackSelectorTool::decision ( const Trk::TrackSummary summary,
const xAOD::TrackParticle tp,
bool  useSharedHitInfo,
bool  useTrtHitInfo,
const Trk::Perigee track,
const int  nHitTrt,
const int  nHitTrtPlusOutliers 
) const
private

Definition at line 923 of file InDetDetailedTrackSelectorTool.cxx.

930  {
931  if (summary==nullptr) {
932  ATH_MSG_WARNING( "Null TrackSummary pointer passed. Selection failed." );
933  return false;
934  }
935 
937 
938  if(nb<0) nb=0;
939 
940  int np = summary->get(Trk::numberOfPixelHits);
941  if(np<0) np=0;
942 
943  int npd = summary->get(Trk::numberOfPixelDeadSensors);
944  if(npd<0) npd=0;
945 
946  int ns = summary->get(Trk::numberOfSCTHits);
947  if(ns<0) ns=0;
948 
949  int nhp = summary->get(Trk::numberOfPixelHoles);
950  if (nhp < 0) nhp = 0;
951 
952  int nhs = summary->get(Trk::numberOfSCTHoles);
953  if (nhs < 0) nhs = 0;
954 
955  int ndhs = summary->get(Trk::numberOfSCTDoubleHoles);
956  if (ndhs < 0) ndhs = 0;
957 
958  //**-----------------------------------------------------------------------
959 
961  if (!track) {
962  return false;
963  }
964  const AmgVector(5)& perigeeParms = track->parameters();
965  double p = std::fabs(1./perigeeParms[Trk::qOverP]);
966  double pt = p*std::sin(perigeeParms[Trk::theta]);
967 
968  unsigned int it = 0;
969  for(; it< m_ptBenchmarks.size()-1; ++it ) {
970  if(pt>m_ptBenchmarks[it] && pt <=m_ptBenchmarks[it+1] && ns < m_nSCTValues[it]) {
971  ATH_MSG_DEBUG("Track rejected because of Pt-Dependent SCT Hit cut (CAREFUL! Excludes dead modules)") ;
972  return false;
973  }
974  }//end of pt intervals loop
975 
976  //now cutting all the rest by the last value in the vector
977  if(pt>m_ptBenchmarks[it+1] && ns < m_nSCTValues[it+1]) {
978  ATH_MSG_DEBUG("Track rejected because of Pt-Dependent SCT Hit cut (CAREFUL! Excludes dead modules)") ;
979  return false;
980  }
981 
982  }
983 
984  //*--------------------------------------------------------------------------------
985 
986  //normal cuts in all their variety
987 
988  if(nb == 0 && nb < m_nHitBLayer) {
989  ATH_MSG_DEBUG("Track rejected because of nHitBLayer "<<nb<<" < "<<m_nHitBLayer);
990  if(m_inDetTestPixelLayerTool.empty()) {
991  ATH_MSG_DEBUG("and no blayer tool configured, so will not try to recover track");
992  return false;
993  } else if (m_inDetTestPixelLayerTool->expectHitInInnermostPixelLayer(track)) {
994  ATH_MSG_DEBUG("and track rejected because at least one hit is expected in the innermost pixel layer") ;
995  return false;
996  }else ATH_MSG_DEBUG("recovered track as no b-layer expected") ;
997  }//end of checking the b-layer
998 
999  if(np+npd < m_nHitPix) {
1000  ATH_MSG_DEBUG("Track rejected because of nHitPix "<<np+npd<<" < "<<m_nHitPix);
1001  return false;
1002  }
1003 
1004  if(np < m_nHitPixPhysical) {
1005  ATH_MSG_DEBUG("Track rejected because of nHitPixPhysical "<<np<<" < "<<m_nHitPixPhysical);
1006  return false;
1007  }
1008 
1009  int nsd = summary->get(Trk::numberOfSCTDeadSensors);
1010  if(nsd<0)
1011  nsd=0;
1012 
1013  if(ns+nsd < m_nHitSct)
1014  {
1015  ATH_MSG_DEBUG("Track rejected because of nHitSct "<<ns+nsd<<" < "<<m_nHitSct);
1016  return false;
1017  }
1018 
1019  if((np+ns+npd+nsd) < m_nHitSi)
1020  {
1021  ATH_MSG_DEBUG("Track rejected because of nHitSi "<<np+npd+ns+nsd<<" < "<<m_nHitSi);
1022  return false;
1023  }
1024 
1025  if((np+ns) < m_nHitSiPhysical)
1026  {
1027  ATH_MSG_DEBUG("Track rejected because of nHitSiPhysical "<<np+ns<<" < "<<m_nHitSiPhysical);
1028  return false;
1029  }
1030 
1031  if ((nb+np+npd)< m_nHitBLayerPlusPix)
1032  {
1033  ATH_MSG_DEBUG("Track rejected because of nHitBLayerPlusPix "<<nb+np+npd<<" < "<<m_nHitBLayerPlusPix);
1034  return false;
1035  }
1036 
1037  // Cuts on number of Holes
1038 
1039  if ((nhp+nhs) > m_nHoles)
1040  {
1041  ATH_MSG_DEBUG("Track rejected because of nHolesPixPlusSCT "<<nhp+nhs<<" > "<<m_nHoles);
1042  return false;
1043  }
1044 
1045  if (ndhs > m_nDoubleHoles)
1046  {
1047  ATH_MSG_DEBUG("Track rejected because of nDoubleHolesSCT "<<ndhs<<" > "<<m_nDoubleHoles);
1048  return false;
1049  }
1050 
1051  if (nhp > m_nHolesPix)
1052  {
1053  ATH_MSG_DEBUG("Track rejected because of nHolesPix "<<nhp<<" > "<<m_nHolesPix);
1054  return false;
1055  }
1056 
1057  if (nhs > m_nHolesSct)
1058  {
1059  ATH_MSG_DEBUG("Track rejected because of nHolesSct "<<nhs<<" > "<<m_nHolesSct);
1060  return false;
1061  }
1062 
1063  if (useTrtHitInfo) {
1064 
1065  int nh = summary->get(Trk::numberOfTRTHits);
1066  if(nh<0) nh=0;
1067  if(nh < nHitTrt) {
1068  ATH_MSG_DEBUG("Track rejected because of nHitTrt "<<nh<<" < "<<nHitTrt);
1069  return false;
1070  }
1071 
1072  int nhh = summary->get( Trk::numberOfTRTHits ) + summary->get( Trk::numberOfTRTOutliers );
1073  if (nhh<0) nhh=0;
1074  if (nhh<nHitTrtPlusOutliers) {
1075  ATH_MSG_DEBUG("Track rejected because of nHitTrtPlusOutliers "<<nhh<<" < "<<nHitTrtPlusOutliers);
1076  return false;
1077  }
1078 
1079  int nhthits=summary->get(Trk::numberOfTRTHighThresholdHits);
1080  if (nhthits<0) nhthits=0;
1081  if (nhthits<m_nHitTrtHighE) {
1082  ATH_MSG_DEBUG("Track rejected because of nHitTrtHighE "<<nhthits<<" < "<<m_nHitTrtHighE);
1083  return false;
1084  }
1085 
1087  if (nhthitsWithOutliers<0) nhthitsWithOutliers=0;
1088  if (nhthitsWithOutliers<m_nHitTrtPlusOutliersHighE) {
1089  ATH_MSG_DEBUG("Track rejected because of nHitTrtPlusOutliersHighE "<<nhthitsWithOutliers<<" < "<<m_nHitTrtPlusOutliersHighE);
1090  return false;
1091  }
1092 
1093  if (summary->get( Trk :: numberOfTRTHits )>0) {
1095  if(nhe<0.) nhe=0.;
1096  if(nhe > m_nHitTrtHighEFraction ) {
1097  ATH_MSG_DEBUG("Track rejected because of nHitTrtHighEFraction "<<nhe<<" < "<<m_nHitTrtHighEFraction);
1098  return false;
1099  }
1100  }
1101 
1102  if ( summary->get( Trk :: numberOfTRTHits ) + summary->get( Trk :: numberOfTRTOutliers ) > 0 ) {
1104  (double)(summary->get( Trk::numberOfTRTHits) + summary->get( Trk :: numberOfTRTOutliers ) );
1105  if(nheh<0.) nheh=0.;
1106  if (nheh>1.) nheh=1.;
1108  ATH_MSG_DEBUG("Track rejected because of nHitTrtHighEFractionWithOutliers "<<nheh<<" < "<<m_nHitTrtHighEFractionWithOutliers);
1109  return false;
1110  }
1111  }
1112  }
1113 
1114  if (useSharedHitInfo) {
1115  if(!tp){
1116  ATH_MSG_DEBUG("Track rejected because xAOD::TrackParticle not available");
1117  return false;
1118  }
1119 
1121  if(nbs < 0) nbs = 0;
1122  if (nbs>1) nbs=1;
1123  if(nbs>m_nSharedBLayer) {
1124  ATH_MSG_DEBUG("Track rejected because of nSharedBLayer "<<nbs<<" < "<<m_nSharedBLayer);
1125  return false;
1126  }
1127 
1129  if(nps < 0) nps = 0;
1130  if(nps>m_nSharedPix) {
1131  ATH_MSG_DEBUG("Track rejected because of nSharedPix "<<nps<<" < "<<m_nSharedPix);
1132  return false;
1133  }
1134 
1136  if(nss < 0) nss = 0;
1137  if(nss > m_nSharedSct) {
1138  ATH_MSG_DEBUG("Track rejected because of nSharedSct "<<nss<<" < "<<m_nSharedSct);
1139  return false;
1140  }
1141 
1142  int nst = nps + nss;
1143  if(nst>m_nSharedSi) {
1144  ATH_MSG_DEBUG("Track rejected because of nSharedSi "<<nst<<" < "<<m_nSharedSi);
1145  return false;
1146  }
1147  }
1148 
1149  return true;
1150 
1151  }

◆ decision() [6/7]

bool InDet::InDetDetailedTrackSelectorTool::decision ( const xAOD::TrackParticle track,
const xAOD::Vertex vertex 
) const
virtual

Implements Trk::ITrackSelectorTool.

Definition at line 506 of file InDetDetailedTrackSelectorTool.cxx.

507  {
508  int nHitTrt = m_nHitTrt;
509  int nHitTrtPlusOutliers = m_nHitTrtPlusOutliers;
510 
511  const Trk::Perigee& perigee=tp.perigeeParameters();
513  ATH_MSG_DEBUG("Track rejected because of preselection decision!");
514  return false;
515  }
516 
517  if (m_useTrackQualityInfo && !decision(tp.chiSquared(),tp.numberDoF())) {
518  ATH_MSG_DEBUG("Track rejected because of bad fit quality!");
519  return false;
520  }
521 
522  if (m_useTrackSummaryInfo) {
523  //number of hits, silicon hits, b-layer
524 
526  nHitTrt = m_trtDCTool->minNumberDCs( &perigee );
527  if(m_addToMinHitTrt!=0){
528  nHitTrt += m_addToMinHitTrt;
529  }else{
530  nHitTrt = (int)((double)nHitTrt*m_scaleMinHitTrt);
531  }
532  }
534  nHitTrtPlusOutliers = m_trtDCTool->minNumberDCs( &perigee );
536  nHitTrtPlusOutliers += m_addToMinHitTrtWithOutliers;
537  }else{
538  nHitTrtPlusOutliers = (int)((double)nHitTrtPlusOutliers*m_scaleMinHitTrtWithOutliers);
539  }
540  }
546  int nhs = getCount(tp,xAOD::numberOfSCTHoles );
549 
550  //**-----------------------------------------------------------------------
552  double pt = tp.pt();
553  unsigned int it = 0;
554  for(; it< m_ptBenchmarks.size()-1; ++it ) {
555  if(pt>m_ptBenchmarks[it] && pt <=m_ptBenchmarks[it+1] && ns < m_nSCTValues[it]) {
556  ATH_MSG_DEBUG("Track rejected because of Pt-Dependent SCT Hit cut (CAREFUL! Excludes dead modules)") ;
557  return false;
558  }
559  }//end of pt intervals loop
560 
561  //now cutting all the rest by the last value in the vector
562  if(pt>m_ptBenchmarks[it+1] && ns < m_nSCTValues[it+1]) {
563  ATH_MSG_DEBUG("Track rejected because of Pt-Dependent SCT Hit cut (CAREFUL! Excludes dead modules)") ;
564  return false;
565  }
566  }
567 
568  //*--------------------------------------------------------------------------------
569 
570  //normal cuts in all their variety
571 
572  if(nb == 0 && nb < m_nHitBLayer) {
573  ATH_MSG_DEBUG("Track rejected because of nHitBLayer "<<nb<<" < "<<m_nHitBLayer);
574  if (eiph) {
575  ATH_MSG_DEBUG("and track rejected because at least one hit is expected in the innermost pixel layer") ;
576  return false;
577  }else ATH_MSG_DEBUG("recovered track as no b-layer expected") ;
578  }//end of checking the b-layer
579 
580  if(np+npd < m_nHitPix) {
581  ATH_MSG_DEBUG("Track rejected because of nHitPix "<<np+npd<<" < "<<m_nHitPix);
582  return false;
583  }
584 
585  if(np < m_nHitPixPhysical) {
586  ATH_MSG_DEBUG("Track rejected because of nHitPixPhysical "<<np<<" < "<<m_nHitPixPhysical);
587  return false;
588  }
589 
591  if(ns+nsd < m_nHitSct) {
592  ATH_MSG_DEBUG("Track rejected because of nHitSct "<<ns+nsd<<" < "<<m_nHitSct);
593  return false;
594  }
595 
596  if(np+ns+npd+nsd < m_nHitSi) {
597  ATH_MSG_DEBUG("Track rejected because of nHitSi "<<np+npd+ns+nsd<<" < "<<m_nHitSi);
598  return false;
599  }
600 
601  if(np+ns < m_nHitSiPhysical) {
602  ATH_MSG_DEBUG("Track rejected because of nHitSiPhysical "<<np+ns<<" < "<<m_nHitSiPhysical);
603  return false;
604  }
605 
606  if (nb+np+npd< m_nHitBLayerPlusPix){
607  ATH_MSG_DEBUG("Track rejected because of nHitBLayerPlusPix "<<nb+np+npd<<" < "<<m_nHitBLayerPlusPix);
608  return false;
609  }
610 
611  // Cuts on number of Holes
612  if (nhp+nhs > m_nHoles){
613  ATH_MSG_DEBUG("Track rejected because of nHolesPixPlusSCT "<<nhp+nhs<<" > "<<m_nHoles);
614  return false;
615  }
616 
617  if(ndhs > m_nDoubleHoles){
618  ATH_MSG_DEBUG("Track rejected because of nDoubleHolesSCT "<<ndhs<<" > "<<m_nDoubleHoles);
619  return false;
620  }
621 
622  if(nhp > m_nHolesPix){
623  ATH_MSG_DEBUG("Track rejected because of nHolesPix "<<nhp<<" > "<<m_nHolesPix);
624  return false;
625  }
626 
627  if (nhs > m_nHolesSct){
628  ATH_MSG_DEBUG("Track rejected because of nHolesSct "<<nhs<<" > "<<m_nHolesSct);
629  return false;
630  }
631 
632  if (std::fabs(tp.eta())>m_TrtMaxEtaAcceptance) {
634  if(nh < nHitTrt) {
635  ATH_MSG_DEBUG("Track rejected because of nHitTrt "<<nh<<" < "<<nHitTrt);
636  return false;
637  }
638 
640  if (nhh<nHitTrtPlusOutliers) {
641  ATH_MSG_DEBUG("Track rejected because of nHitTrtPlusOutliers "<<nhh<<" < "<<nHitTrtPlusOutliers);
642  return false;
643  }
644 
646  if (nhthits<m_nHitTrtHighE) {
647  ATH_MSG_DEBUG("Track rejected because of nHitTrtHighE "<<nhthits<<" < "<<m_nHitTrtHighE);
648  return false;
649  }
650 
652  if (nhthitsWithOutliers<m_nHitTrtPlusOutliersHighE) {
653  ATH_MSG_DEBUG("Track rejected because of nHitTrtPlusOutliersHighE "<<nhthitsWithOutliers<<" < "<<m_nHitTrtPlusOutliersHighE);
654  return false;
655  }
656 
657  if ( getCount(tp, xAOD::numberOfTRTHits )>0) {
660  if(nhe > m_nHitTrtHighEFraction ) {
661  ATH_MSG_DEBUG("Track rejected because of nHitTrtHighEFraction "<<nhe<<" < "<<m_nHitTrtHighEFraction);
662  return false;
663  }
664  }
665 
669  if(nheh<0.) nheh=0.;
670  if (nheh>1.) nheh=1.;
672  ATH_MSG_DEBUG("Track rejected because of nHitTrtHighEFractionWithOutliers "<<nheh<<" < "<<m_nHitTrtHighEFractionWithOutliers);
673  return false;
674  }
675  }
676  }
677  if (m_useSharedHitInfo) {
679  if (nbs>1) nbs=1;
680  if(nbs>m_nSharedBLayer) {
681  ATH_MSG_DEBUG("Track rejected because of nSharedBLayer "<<nbs<<" < "<<m_nSharedBLayer);
682  return false;
683  }
684 
686  if(nps>m_nSharedPix) {
687  ATH_MSG_DEBUG("Track rejected because of nSharedPix "<<nps<<" < "<<m_nSharedPix);
688  return false;
689  }
690 
692  if(nss > m_nSharedSct) {
693  ATH_MSG_DEBUG("Track rejected because of nSharedSct "<<nss<<" < "<<m_nSharedSct);
694  return false;
695  }
696 
697  int nst = nps + nss;
698  if(nst>m_nSharedSi) {
699  ATH_MSG_DEBUG("Track rejected because of nSharedSi "<<nst<<" < "<<m_nSharedSi);
700  return false;
701  }
702  }
703  }
704  Trk::PerigeeSurface perigeeSurface( getPosOrBeamSpot(vertex) );
705 
706  const Trk::TrackParameters* extrapolatedParameters= m_extrapolator->extrapolate(
707  Gaudi::Hive::currentContext(),
708  perigee,perigeeSurface,
709  Trk::anyDirection,true,Trk::pion).release();
710  const Trk::Perigee* extrapolatedPerigee = extrapolatedParameters ? dynamic_cast<const Trk::Perigee*>(extrapolatedParameters) : nullptr;
711  if (extrapolatedPerigee==nullptr) {
712  ATH_MSG_WARNING( "Extrapolation to the vertex failed: " << perigeeSurface << std::endl << perigee );
713  if (extrapolatedParameters!=nullptr) {
714  ATH_MSG_WARNING( "The return object of the extrapolator was not a perigee even if a perigeeSurface was used!" );
715  delete extrapolatedParameters;
716  extrapolatedParameters=nullptr;
717  }
718  return false;
719  }
720  bool dec = false;
721  if( vertex ){
722  // for now copy the position error
723  AmgSymMatrix(3) vertexError = vertex->covariancePosition();
724  dec = decision(extrapolatedPerigee,&vertexError);
725  }else{
726  dec = decision(extrapolatedPerigee,nullptr);
727  }
728 
729  delete extrapolatedPerigee;
730 
731  if(!dec) {
732  ATH_MSG_DEBUG("Track rejected because of perigee parameters!");
733  return false;
734  }
735 
736  return true;
737  }

◆ decision() [7/7]

bool InDet::InDetDetailedTrackSelectorTool::decision ( double  chi2,
int  ndf 
) const
private

Definition at line 891 of file InDetDetailedTrackSelectorTool.cxx.

891  {
892 
893  double proba = 1.;
894 
895  if(ndf>0 && chi2>=0.) {
896  Genfun::CumulativeChiSquare myCumulativeChiSquare(ndf);
897  proba = 1.-myCumulativeChiSquare(chi2);
898  }
899 
900  if(chi2>m_fitChi2) {
901  ATH_MSG_DEBUG("Track rejected because of chi2 "<<chi2<<" > "<<m_fitChi2);
902  return false;
903  }
904 
905  if(proba<m_fitProb) {
906  ATH_MSG_DEBUG("Track rejected because of fit probability "<<proba<<" > "<<m_fitProb);
907  return false;
908  }
909  if(!ndf) {
910  ATH_MSG_DEBUG("Track rejected because of ndof = "<<ndf);
911  return false;
912  }
913  if(chi2/double(ndf)>m_fitChi2OnNdfMax) {
914  ATH_MSG_DEBUG("Track rejected because of chi2/ndof "<<chi2/double(ndf)<<" > "<<m_fitChi2OnNdfMax);
915  return false;
916  }
917 
918  return true;
919  }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ 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 InDet::InDetDetailedTrackSelectorTool::finalize ( )

Definition at line 205 of file InDetDetailedTrackSelectorTool.cxx.

206  {
207  ATH_MSG_DEBUG( "Finalize successful" );
208  return StatusCode::SUCCESS;
209  }

◆ getBeamSpot()

Trk::Vertex * InDet::InDetDetailedTrackSelectorTool::getBeamSpot ( const EventContext &  ctx) const
private

Definition at line 122 of file InDetDetailedTrackSelectorTool.cxx.

123  {
124  if(m_useEventInfoBs){
126  if (evt.isValid()) {
127  InDet::BeamSpotData temp(evt->beamStatus(), evt->beamPosX(), evt->beamPosY(), evt->beamPosZ(),
128  evt->beamPosSigmaX(), evt->beamPosSigmaY(), evt->beamPosSigmaZ(),
129  evt->beamTiltXZ(), evt->beamTiltYZ(), evt->beamPosSigmaXY());
130  return new Trk::RecVertex(temp.beamVtx());
131  } else {
132  ATH_MSG_WARNING( " Cannot get beamSpot center from xAOD::EventInfo. Using (0,0,0)... " );
133  return new Trk::Vertex(Amg::Vector3D(0,0,0));
134  }
135  }else{
137  if (beamSpotHandle.isValid()) {
138  return new Trk::RecVertex(beamSpotHandle->beamVtx());
139  } else {
140  ATH_MSG_WARNING( " Cannot get beamSpot center from BeamSpotData. Using (0,0,0)... " );
141  return new Trk::Vertex(Amg::Vector3D(0,0,0));
142  }
143  }
144  }

◆ getCount()

int InDet::InDetDetailedTrackSelectorTool::getCount ( const xAOD::TrackParticle tp,
xAOD::SummaryType  type 
) const
inlineprivate

Definition at line 79 of file InDetDetailedTrackSelectorTool.h.

79  {
80  uint8_t val;
81  if( !tp.summaryValue(val,type) ) return 0;
82  return val > 0 ? val : 0;
83  }

◆ getPosOrBeamSpot()

Amg::Vector3D InDet::InDetDetailedTrackSelectorTool::getPosOrBeamSpot ( const xAOD::Vertex vertex) const
private

Definition at line 479 of file InDetDetailedTrackSelectorTool.cxx.

480  {
481  if(vertex) return vertex->position();
482  if(m_useEventInfoBs){
484  if (evt.isValid()) {
485  InDet::BeamSpotData temp(evt->beamStatus(), evt->beamPosX(), evt->beamPosY(), evt->beamPosZ(),
486  evt->beamPosSigmaX(), evt->beamPosSigmaY(), evt->beamPosSigmaZ(),
487  evt->beamTiltXZ(), evt->beamTiltYZ(), evt->beamPosSigmaXY());
488  return temp.beamVtx().position();
489  } else {
490  ATH_MSG_WARNING( " Cannot get beamSpot center from xAOD::EventInfo. Using (0,0,0)... " );
491  return Amg::Vector3D(0,0,0);
492  }
493  }else{
495  if (beamSpotHandle.isValid()) {
496  return beamSpotHandle->beamVtx().position();
497  } else {
498  ATH_MSG_WARNING( " Cannot get beamSpot center from BeamSpotData. Using (0,0,0)... " );
499  return Amg::Vector3D(0,0,0);
500  }
501  }
502  }

◆ initialize()

StatusCode InDet::InDetDetailedTrackSelectorTool::initialize ( )

Definition at line 152 of file InDetDetailedTrackSelectorTool.cxx.

152  {
153  if(m_trackSumTool.empty()){
154  ATH_MSG_DEBUG("No TrackSummaryTool set. OK if running on AOD.");
155  }
157  ATH_CHECK(m_trackSumTool.retrieve(DisableTool{!m_trackSumToolAvailable}));
158 
159  if(m_useSharedHitInfo && m_particleCreator.empty()){
160  ATH_MSG_DEBUG("No TrackParticleCreatorTool set but shared hit selection used. OK if running on AOD.");
161  }
163  ATH_CHECK(m_particleCreator.retrieve(DisableTool{!m_partCreatorToolAvailable}));
164 
165  ATH_CHECK( m_extrapolator.retrieve() );
169  if(m_trtDCTool.empty()) {
170  ATH_MSG_ERROR(" Eta dependent cut on number of TRT hits requested but TrtDCCutTool not specified. ");
171  return StatusCode::FAILURE;
172  } else if(m_trtDCTool.retrieve().isFailure()) {
173  ATH_MSG_ERROR(" Unable to retrieve tool "<<m_trtDCTool);
174  return StatusCode::FAILURE;
175  }
176  ATH_MSG_DEBUG("Retrieved tool "<<m_trtDCTool);
178  ATH_MSG_DEBUG("Using eta dependent cut on number of TRT hits.");
179  }
181  ATH_MSG_DEBUG("Using eta dependent cut on number of TRT hits + outliers.");
182  }
183  }else{
184  m_trtDCTool.disable();
185  }
186 
187  // Read handle for AtlasFieldCacheCondObj
189 
190  ATH_MSG_DEBUG("Using cuts on the number of Silicon hits");
192  //checking whether sizes of cuts and pt interval expressed in vectors match
193  if( m_ptBenchmarks.size() != m_nSCTValues.size()){
194  ATH_MSG_ERROR( "Number of cuts DOES NOT match the number of intervals to apply. Please check jobOptions. ");
195  return StatusCode::FAILURE;
196  } else if (m_ptBenchmarks.empty()){
197  ATH_MSG_ERROR( "Zero vectors for number of cuts and pt intervals. Please check jobOptions. ");
198  return StatusCode::FAILURE;
199  }//end of vector size protection block
200  }//end of memory protection
201  return StatusCode::SUCCESS;
202  }

◆ 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()

static const InterfaceID& Trk::ITrackSelectorTool::interfaceID ( )
inlinestaticinherited

Definition at line 38 of file ITrackSelectorTool.h.

39  {
40  return IID_ITrackSelectorTool;
41  }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

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

◆ preselectionBeforeExtrapolation()

bool InDet::InDetDetailedTrackSelectorTool::preselectionBeforeExtrapolation ( const Trk::Perigee myPerigee) const
private

Definition at line 1154 of file InDetDetailedTrackSelectorTool.cxx.

1155  {
1156  const AmgVector(5)& perigeeParms = myPerigee.parameters();
1157 
1158  // only check pt if mag. field is on
1159  const EventContext& ctx = Gaudi::Hive::currentContext();
1161  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
1162  if (fieldCondObj == nullptr) {
1163  ATH_MSG_ERROR("execute: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCacheCondObjInputKey.key());
1164  return false;
1165  }
1166  MagField::AtlasFieldCache fieldCache;
1167  fieldCondObj->getInitializedCache (fieldCache);
1168 
1169  if (fieldCache.solenoidOn()){//B field
1170  if (perigeeParms[Trk::qOverP] == 0.) {
1171  ATH_MSG_DEBUG("Track rejected because of perigee qOverP == 0.");
1172  return false;
1173  }
1174  double p = std::fabs(1./perigeeParms[Trk::qOverP]);
1175  if (p<m_pMin) {
1176  ATH_MSG_DEBUG("Track rejected because of p " << p << " < " << m_pMin);
1177  return false;
1178  }
1179  double pt = p*std::sin(perigeeParms[Trk::theta]);
1180  if (pt<m_pTMin) {
1181  ATH_MSG_DEBUG("Track rejected because of pt " << pt << " < " << m_pTMin);
1182  return false;
1183  }
1184  }
1185 
1186  if (std::fabs(perigeeParms[Trk::d0]) > m_d0MaxPreselection) {
1187  ATH_MSG_DEBUG("Track rejected because of fabs(d0) "<<std::fabs(perigeeParms[Trk::d0])<<" < "<<m_d0MaxPreselection);
1188  return false;
1189  }
1190 
1191  return true;
1192  }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
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 DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_addToMinHitTrt

int InDet::InDetDetailedTrackSelectorTool::m_addToMinHitTrt
private

Definition at line 148 of file InDetDetailedTrackSelectorTool.h.

◆ m_addToMinHitTrtWithOutliers

int InDet::InDetDetailedTrackSelectorTool::m_addToMinHitTrtWithOutliers
private

Definition at line 150 of file InDetDetailedTrackSelectorTool.h.

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> InDet::InDetDetailedTrackSelectorTool::m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
private

Definition at line 161 of file InDetDetailedTrackSelectorTool.h.

◆ m_d0MaxPreselection

double InDet::InDetDetailedTrackSelectorTool::m_d0MaxPreselection
private

Definition at line 153 of file InDetDetailedTrackSelectorTool.h.

◆ m_d0significanceMax

double InDet::InDetDetailedTrackSelectorTool::m_d0significanceMax
private

Definition at line 105 of file InDetDetailedTrackSelectorTool.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_etaMax

double InDet::InDetDetailedTrackSelectorTool::m_etaMax
private

Definition at line 107 of file InDetDetailedTrackSelectorTool.h.

◆ m_eventInfo_key

SG::ReadHandleKey<xAOD::EventInfo> InDet::InDetDetailedTrackSelectorTool::m_eventInfo_key {this, "EventInfo", "EventInfo", "Input event information"}
private

Definition at line 177 of file InDetDetailedTrackSelectorTool.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_extrapolator

ToolHandle<Trk::IExtrapolator> InDet::InDetDetailedTrackSelectorTool::m_extrapolator
private

Extrapolator tool.

Definition at line 160 of file InDetDetailedTrackSelectorTool.h.

◆ m_fieldCacheCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> InDet::InDetDetailedTrackSelectorTool::m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
private

Definition at line 166 of file InDetDetailedTrackSelectorTool.h.

◆ m_fitChi2

double InDet::InDetDetailedTrackSelectorTool::m_fitChi2
private

Definition at line 143 of file InDetDetailedTrackSelectorTool.h.

◆ m_fitChi2OnNdfMax

double InDet::InDetDetailedTrackSelectorTool::m_fitChi2OnNdfMax
private

Definition at line 145 of file InDetDetailedTrackSelectorTool.h.

◆ m_fitProb

double InDet::InDetDetailedTrackSelectorTool::m_fitProb
private

Definition at line 144 of file InDetDetailedTrackSelectorTool.h.

◆ m_inDetTestPixelLayerTool

ToolHandle< InDet::IInDetTestPixelLayerTool > InDet::InDetDetailedTrackSelectorTool::m_inDetTestPixelLayerTool
private

Definition at line 164 of file InDetDetailedTrackSelectorTool.h.

◆ m_IPd0Max

double InDet::InDetDetailedTrackSelectorTool::m_IPd0Max
private

Definition at line 100 of file InDetDetailedTrackSelectorTool.h.

◆ m_IPz0Max

double InDet::InDetDetailedTrackSelectorTool::m_IPz0Max
private

Definition at line 101 of file InDetDetailedTrackSelectorTool.h.

◆ m_nDoubleHoles

int InDet::InDetDetailedTrackSelectorTool::m_nDoubleHoles
private

Definition at line 138 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitBLayer

int InDet::InDetDetailedTrackSelectorTool::m_nHitBLayer
private

Definition at line 111 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitBLayerPlusPix

int InDet::InDetDetailedTrackSelectorTool::m_nHitBLayerPlusPix
private

Definition at line 113 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitPix

int InDet::InDetDetailedTrackSelectorTool::m_nHitPix
private

Definition at line 112 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitPixPhysical

int InDet::InDetDetailedTrackSelectorTool::m_nHitPixPhysical
private

at least n physical hits in pixel

Definition at line 117 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitSct

int InDet::InDetDetailedTrackSelectorTool::m_nHitSct
private

Definition at line 114 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitSi

int InDet::InDetDetailedTrackSelectorTool::m_nHitSi
private

Definition at line 115 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitSiPhysical

int InDet::InDetDetailedTrackSelectorTool::m_nHitSiPhysical
private

at least n physical hits in pixel+SCT

Definition at line 118 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitTrt

int InDet::InDetDetailedTrackSelectorTool::m_nHitTrt
private

Definition at line 120 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitTrtHighE

int InDet::InDetDetailedTrackSelectorTool::m_nHitTrtHighE
private

Definition at line 124 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitTrtHighEFraction

double InDet::InDetDetailedTrackSelectorTool::m_nHitTrtHighEFraction
private

Definition at line 127 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitTrtHighEFractionWithOutliers

double InDet::InDetDetailedTrackSelectorTool::m_nHitTrtHighEFractionWithOutliers
private

Definition at line 128 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitTrtPlusOutliers

int InDet::InDetDetailedTrackSelectorTool::m_nHitTrtPlusOutliers
private

Definition at line 121 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHitTrtPlusOutliersHighE

int InDet::InDetDetailedTrackSelectorTool::m_nHitTrtPlusOutliersHighE
private

Definition at line 125 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHoles

int InDet::InDetDetailedTrackSelectorTool::m_nHoles
private

Definition at line 137 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHolesPix

int InDet::InDetDetailedTrackSelectorTool::m_nHolesPix
private

Definition at line 139 of file InDetDetailedTrackSelectorTool.h.

◆ m_nHolesSct

int InDet::InDetDetailedTrackSelectorTool::m_nHolesSct
private

Definition at line 140 of file InDetDetailedTrackSelectorTool.h.

◆ m_nSCTValues

std::vector<int> InDet::InDetDetailedTrackSelectorTool::m_nSCTValues
private

Definition at line 176 of file InDetDetailedTrackSelectorTool.h.

◆ m_nSharedBLayer

int InDet::InDetDetailedTrackSelectorTool::m_nSharedBLayer
private

Definition at line 132 of file InDetDetailedTrackSelectorTool.h.

◆ m_nSharedPix

int InDet::InDetDetailedTrackSelectorTool::m_nSharedPix
private

Definition at line 133 of file InDetDetailedTrackSelectorTool.h.

◆ m_nSharedSct

int InDet::InDetDetailedTrackSelectorTool::m_nSharedSct
private

Definition at line 134 of file InDetDetailedTrackSelectorTool.h.

◆ m_nSharedSi

int InDet::InDetDetailedTrackSelectorTool::m_nSharedSi
private

Definition at line 135 of file InDetDetailedTrackSelectorTool.h.

◆ m_partCreatorToolAvailable

bool InDet::InDetDetailedTrackSelectorTool::m_partCreatorToolAvailable
private

Definition at line 169 of file InDetDetailedTrackSelectorTool.h.

◆ m_particleCreator

ToolHandle<Trk::ITrackParticleCreatorTool> InDet::InDetDetailedTrackSelectorTool::m_particleCreator
private

TrackParticle creator tool.

Definition at line 159 of file InDetDetailedTrackSelectorTool.h.

◆ m_pMin

double InDet::InDetDetailedTrackSelectorTool::m_pMin
private

Definition at line 99 of file InDetDetailedTrackSelectorTool.h.

◆ m_ptBenchmarks

std::vector<float> InDet::InDetDetailedTrackSelectorTool::m_ptBenchmarks
private

Definition at line 174 of file InDetDetailedTrackSelectorTool.h.

◆ m_pTMin

double InDet::InDetDetailedTrackSelectorTool::m_pTMin
private

Definition at line 98 of file InDetDetailedTrackSelectorTool.h.

◆ m_scaleMinHitTrt

double InDet::InDetDetailedTrackSelectorTool::m_scaleMinHitTrt
private

Definition at line 147 of file InDetDetailedTrackSelectorTool.h.

◆ m_scaleMinHitTrtWithOutliers

double InDet::InDetDetailedTrackSelectorTool::m_scaleMinHitTrtWithOutliers
private

Definition at line 149 of file InDetDetailedTrackSelectorTool.h.

◆ m_sigIPd0Max

double InDet::InDetDetailedTrackSelectorTool::m_sigIPd0Max
private

Definition at line 103 of file InDetDetailedTrackSelectorTool.h.

◆ m_sigIPz0Max

double InDet::InDetDetailedTrackSelectorTool::m_sigIPz0Max
private

Definition at line 104 of file InDetDetailedTrackSelectorTool.h.

◆ m_trackSumTool

ToolHandle<Trk::ITrackSummaryTool> InDet::InDetDetailedTrackSelectorTool::m_trackSumTool
private

Track summary tool.

Definition at line 158 of file InDetDetailedTrackSelectorTool.h.

◆ m_trackSumToolAvailable

bool InDet::InDetDetailedTrackSelectorTool::m_trackSumToolAvailable
private

Definition at line 168 of file InDetDetailedTrackSelectorTool.h.

◆ m_trtDCTool

ToolHandle<ITrtDriftCircleCutTool> InDet::InDetDetailedTrackSelectorTool::m_trtDCTool
private

Tool to get eta dependent cut on number of TRT hits.

Definition at line 162 of file InDetDetailedTrackSelectorTool.h.

◆ m_TrtMaxEtaAcceptance

double InDet::InDetDetailedTrackSelectorTool::m_TrtMaxEtaAcceptance
private

Definition at line 130 of file InDetDetailedTrackSelectorTool.h.

◆ m_useEtaDepententMinHitTrt

bool InDet::InDetDetailedTrackSelectorTool::m_useEtaDepententMinHitTrt
private

Definition at line 155 of file InDetDetailedTrackSelectorTool.h.

◆ m_useEtaDepententMinHitTrtWithOutliers

bool InDet::InDetDetailedTrackSelectorTool::m_useEtaDepententMinHitTrtWithOutliers
private

Definition at line 156 of file InDetDetailedTrackSelectorTool.h.

◆ m_useEventInfoBs

bool InDet::InDetDetailedTrackSelectorTool::m_useEventInfoBs
private

Access beamspot via the EvenInfo object.

Definition at line 178 of file InDetDetailedTrackSelectorTool.h.

◆ m_usePreselectionCuts

bool InDet::InDetDetailedTrackSelectorTool::m_usePreselectionCuts
private

Definition at line 152 of file InDetDetailedTrackSelectorTool.h.

◆ m_usePtDependentCuts

bool InDet::InDetDetailedTrackSelectorTool::m_usePtDependentCuts
private

Definition at line 172 of file InDetDetailedTrackSelectorTool.h.

◆ m_useSharedHitInfo

bool InDet::InDetDetailedTrackSelectorTool::m_useSharedHitInfo
private

Definition at line 131 of file InDetDetailedTrackSelectorTool.h.

◆ m_useTrackQualityInfo

bool InDet::InDetDetailedTrackSelectorTool::m_useTrackQualityInfo
private

Definition at line 142 of file InDetDetailedTrackSelectorTool.h.

◆ m_useTrackSummaryInfo

bool InDet::InDetDetailedTrackSelectorTool::m_useTrackSummaryInfo
private

Definition at line 109 of file InDetDetailedTrackSelectorTool.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.

◆ m_z0Max

double InDet::InDetDetailedTrackSelectorTool::m_z0Max
private

Definition at line 102 of file InDetDetailedTrackSelectorTool.h.

◆ m_z0significanceMax

double InDet::InDetDetailedTrackSelectorTool::m_z0significanceMax
private

Definition at line 106 of file InDetDetailedTrackSelectorTool.h.


The documentation for this class was generated from the following files:
InDet::InDetDetailedTrackSelectorTool::m_IPz0Max
double m_IPz0Max
Definition: InDetDetailedTrackSelectorTool.h:101
InDet::InDetDetailedTrackSelectorTool::m_trackSumTool
ToolHandle< Trk::ITrackSummaryTool > m_trackSumTool
Track summary tool.
Definition: InDetDetailedTrackSelectorTool.h:158
covarianceTool.ndf
ndf
Definition: covarianceTool.py:678
Trk::numberOfPixelHits
@ numberOfPixelHits
number of pixel layers on track with absence of hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:57
Trk::anyDirection
@ anyDirection
Definition: PropDirection.h:22
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:261
InDet::InDetDetailedTrackSelectorTool::m_z0Max
double m_z0Max
Definition: InDetDetailedTrackSelectorTool.h:102
Trk::Vertex
Definition: Tracking/TrkEvent/VxVertex/VxVertex/Vertex.h:26
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
Trk::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
total number of TRT hits which pass the high threshold
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:87
InDet::InDetDetailedTrackSelectorTool::m_nHitBLayerPlusPix
int m_nHitBLayerPlusPix
Definition: InDetDetailedTrackSelectorTool.h:113
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
InDet::InDetDetailedTrackSelectorTool::m_etaMax
double m_etaMax
Definition: InDetDetailedTrackSelectorTool.h:107
Trk::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of dead TRT straws crossed
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:93
Trk::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 1st pixel layer
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:53
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:272
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition: Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
Trk::PerigeeSurface
Definition: PerigeeSurface.h:43
InDet::InDetDetailedTrackSelectorTool::m_nHitSiPhysical
int m_nHitSiPhysical
at least n physical hits in pixel+SCT
Definition: InDetDetailedTrackSelectorTool.h:118
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
InDet::InDetDetailedTrackSelectorTool::m_nHitTrt
int m_nHitTrt
Definition: InDetDetailedTrackSelectorTool.h:120
InDet::InDetDetailedTrackSelectorTool::preselectionBeforeExtrapolation
bool preselectionBeforeExtrapolation(const Trk::Perigee &myPerigee) const
Definition: InDetDetailedTrackSelectorTool.cxx:1154
Trk::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of TRT hits
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:76
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
InDet::InDetDetailedTrackSelectorTool::m_ptBenchmarks
std::vector< float > m_ptBenchmarks
Definition: InDetDetailedTrackSelectorTool.h:174
InDet::InDetDetailedTrackSelectorTool::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: InDetDetailedTrackSelectorTool.h:166
InDet::InDetDetailedTrackSelectorTool::m_nSCTValues
std::vector< int > m_nSCTValues
Definition: InDetDetailedTrackSelectorTool.h:176
InDet::InDetDetailedTrackSelectorTool::m_nHolesPix
int m_nHolesPix
Definition: InDetDetailedTrackSelectorTool.h:139
InDet::InDetDetailedTrackSelectorTool::m_nSharedSct
int m_nSharedSct
Definition: InDetDetailedTrackSelectorTool.h:134
skel.it
it
Definition: skel.GENtoEVGEN.py:423
InDet::InDetDetailedTrackSelectorTool::decision
bool decision(const Trk::Track &track, const Trk::Vertex *vertex) const
Definition: InDetDetailedTrackSelectorTool.cxx:213
test_pyathena.pt
pt
Definition: test_pyathena.py:11
InDet::InDetDetailedTrackSelectorTool::m_IPd0Max
double m_IPd0Max
Definition: InDetDetailedTrackSelectorTool.h:100
InDet::InDetDetailedTrackSelectorTool::getCount
int getCount(const xAOD::TrackParticle &tp, xAOD::SummaryType type) const
Definition: InDetDetailedTrackSelectorTool.h:79
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
ParticleTest.tp
tp
Definition: ParticleTest.py:25
Trk::z0
@ z0
Definition: ParamDefs.h:70
InDet::InDetDetailedTrackSelectorTool::m_nSharedBLayer
int m_nSharedBLayer
Definition: InDetDetailedTrackSelectorTool.h:132
InDet::InDetDetailedTrackSelectorTool::m_inDetTestPixelLayerTool
ToolHandle< InDet::IInDetTestPixelLayerTool > m_inDetTestPixelLayerTool
Definition: InDetDetailedTrackSelectorTool.h:164
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
xAOD::expectInnermostPixelLayerHit
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
Definition: TrackingPrimitives.h:236
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:275
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDet::InDetDetailedTrackSelectorTool::m_trackSumToolAvailable
bool m_trackSumToolAvailable
Definition: InDetDetailedTrackSelectorTool.h:168
InDet::InDetDetailedTrackSelectorTool::m_nHitPix
int m_nHitPix
Definition: InDetDetailedTrackSelectorTool.h:112
PlotPulseshapeFromCool.np
np
Definition: PlotPulseshapeFromCool.py:64
InDet::InDetDetailedTrackSelectorTool::m_addToMinHitTrt
int m_addToMinHitTrt
Definition: InDetDetailedTrackSelectorTool.h:148
InDet::InDetDetailedTrackSelectorTool::m_partCreatorToolAvailable
bool m_partCreatorToolAvailable
Definition: InDetDetailedTrackSelectorTool.h:169
Trk::numberOfSCTHoles
@ numberOfSCTHoles
number of Holes in both sides of a SCT module
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:73
InDet::InDetDetailedTrackSelectorTool::m_fitChi2
double m_fitChi2
Definition: InDetDetailedTrackSelectorTool.h:143
InDet::InDetDetailedTrackSelectorTool::m_TrtMaxEtaAcceptance
double m_TrtMaxEtaAcceptance
Definition: InDetDetailedTrackSelectorTool.h:130
AmgSymMatrix
#define AmgSymMatrix(dim)
Definition: EventPrimitives.h:52
InDet::InDetDetailedTrackSelectorTool::m_nSharedPix
int m_nSharedPix
Definition: InDetDetailedTrackSelectorTool.h:133
Trk::RecVertex
Trk::RecVertex inherits from Trk::Vertex.
Definition: RecVertex.h:44
InDet::InDetDetailedTrackSelectorTool::m_z0significanceMax
double m_z0significanceMax
Definition: InDetDetailedTrackSelectorTool.h:106
xAOD::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
Definition: TrackingPrimitives.h:278
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
InDet::InDetDetailedTrackSelectorTool::m_scaleMinHitTrt
double m_scaleMinHitTrt
Definition: InDetDetailedTrackSelectorTool.h:147
InDet::InDetDetailedTrackSelectorTool::m_nHitTrtHighE
int m_nHitTrtHighE
Definition: InDetDetailedTrackSelectorTool.h:124
InDet::InDetDetailedTrackSelectorTool::getBeamSpot
Trk::Vertex * getBeamSpot(const EventContext &) const
Definition: InDetDetailedTrackSelectorTool.cxx:122
InDet::InDetDetailedTrackSelectorTool::nbGrades
@ nbGrades
Definition: InDetDetailedTrackSelectorTool.h:62
InDet::InDetDetailedTrackSelectorTool::m_scaleMinHitTrtWithOutliers
double m_scaleMinHitTrtWithOutliers
Definition: InDetDetailedTrackSelectorTool.h:149
InDet::InDetDetailedTrackSelectorTool::m_d0MaxPreselection
double m_d0MaxPreselection
Definition: InDetDetailedTrackSelectorTool.h:153
InDet::InDetDetailedTrackSelectorTool::m_d0significanceMax
double m_d0significanceMax
Definition: InDetDetailedTrackSelectorTool.h:105
xAOD::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
Definition: TrackingPrimitives.h:281
InDet::InDetDetailedTrackSelectorTool::m_nHitTrtPlusOutliersHighE
int m_nHitTrtPlusOutliersHighE
Definition: InDetDetailedTrackSelectorTool.h:125
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:262
InDet::InDetDetailedTrackSelectorTool::m_nHoles
int m_nHoles
Definition: InDetDetailedTrackSelectorTool.h:137
InDet::InDetDetailedTrackSelectorTool::m_usePtDependentCuts
bool m_usePtDependentCuts
Definition: InDetDetailedTrackSelectorTool.h:172
AthCommonDataStore
Definition: AthCommonDataStore.h:52
InDet::InDetDetailedTrackSelectorTool::m_particleCreator
ToolHandle< Trk::ITrackParticleCreatorTool > m_particleCreator
TrackParticle creator tool.
Definition: InDetDetailedTrackSelectorTool.h:159
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDet::InDetDetailedTrackSelectorTool::getPosOrBeamSpot
Amg::Vector3D getPosOrBeamSpot(const xAOD::Vertex *) const
Definition: InDetDetailedTrackSelectorTool.cxx:479
InDet::InDetDetailedTrackSelectorTool::m_sigIPz0Max
double m_sigIPz0Max
Definition: InDetDetailedTrackSelectorTool.h:104
lumiFormat.i
int i
Definition: lumiFormat.py:92
Trk::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:81
beamspotman.n
n
Definition: beamspotman.py:731
Trk::theta
@ theta
Definition: ParamDefs.h:72
Trk::numberOfSCTHits
@ numberOfSCTHits
number of SCT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:71
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AmgVector
AmgVector(4) T2BSTrackFilterTool
Definition: T2BSTrackFilterTool.cxx:114
InDet::InDetDetailedTrackSelectorTool::m_fitProb
double m_fitProb
Definition: InDetDetailedTrackSelectorTool.h:144
Trk::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of pixel hits with broad errors (width/sqrt(12))
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:65
Trk::pion
@ pion
Definition: ParticleHypothesis.h:29
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
InDet::InDetDetailedTrackSelectorTool::m_nHitTrtHighEFractionWithOutliers
double m_nHitTrtHighEFractionWithOutliers
Definition: InDetDetailedTrackSelectorTool.h:128
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
InDet::InDetDetailedTrackSelectorTool::m_nHolesSct
int m_nHolesSct
Definition: InDetDetailedTrackSelectorTool.h:140
InDet::InDetDetailedTrackSelectorTool::m_pTMin
double m_pTMin
Definition: InDetDetailedTrackSelectorTool.h:98
InDet::InDetDetailedTrackSelectorTool::m_fitChi2OnNdfMax
double m_fitChi2OnNdfMax
Definition: InDetDetailedTrackSelectorTool.h:145
Trk::FitQuality
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition: FitQuality.h:97
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::ParametersBase
Definition: ParametersBase.h:55
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Trk::Vertex::position
const Amg::Vector3D & position() const
return position of vertex
Definition: Vertex.cxx:72
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:270
InDet::InDetDetailedTrackSelectorTool::m_addToMinHitTrtWithOutliers
int m_addToMinHitTrtWithOutliers
Definition: InDetDetailedTrackSelectorTool.h:150
InDet::InDetDetailedTrackSelectorTool::m_nHitSct
int m_nHitSct
Definition: InDetDetailedTrackSelectorTool.h:114
MagField::AtlasFieldCache::solenoidOn
bool solenoidOn() const
status of the magnets
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
InDet::InDetDetailedTrackSelectorTool::m_pMin
double m_pMin
Definition: InDetDetailedTrackSelectorTool.h:99
Trk::numberOfPixelHoles
@ numberOfPixelHoles
number of pixels which have a ganged ambiguity.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:59
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
InDet::InDetDetailedTrackSelectorTool::m_eventInfo_key
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo_key
Definition: InDetDetailedTrackSelectorTool.h:177
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
InDet::InDetDetailedTrackSelectorTool::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: InDetDetailedTrackSelectorTool.h:161
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
InDet::InDetDetailedTrackSelectorTool::m_extrapolator
ToolHandle< Trk::IExtrapolator > m_extrapolator
Extrapolator tool.
Definition: InDetDetailedTrackSelectorTool.h:160
Trk::TrackSummary
A summary of the information contained by a track.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:287
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
Trk::d0
@ d0
Definition: ParamDefs.h:69
InDet::InDetDetailedTrackSelectorTool::m_nHitTrtHighEFraction
double m_nHitTrtHighEFraction
Definition: InDetDetailedTrackSelectorTool.h:127
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
InDet::InDetDetailedTrackSelectorTool::m_useTrackSummaryInfo
bool m_useTrackSummaryInfo
Definition: InDetDetailedTrackSelectorTool.h:109
InDet::InDetDetailedTrackSelectorTool::m_useEtaDepententMinHitTrtWithOutliers
bool m_useEtaDepententMinHitTrtWithOutliers
Definition: InDetDetailedTrackSelectorTool.h:156
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
InDet::InDetDetailedTrackSelectorTool::m_nHitBLayer
int m_nHitBLayer
Definition: InDetDetailedTrackSelectorTool.h:111
xAOD::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Definition: TrackingPrimitives.h:276
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
InDet::InDetDetailedTrackSelectorTool::Undefined
@ Undefined
Definition: InDetDetailedTrackSelectorTool.h:62
InDet::BeamSpotData
Definition: BeamSpotData.h:21
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
InDet::InDetDetailedTrackSelectorTool::Good
@ Good
Definition: InDetDetailedTrackSelectorTool.h:62
a
TList * a
Definition: liststreamerinfos.cxx:10
h
InDet::InDetDetailedTrackSelectorTool::m_usePreselectionCuts
bool m_usePreselectionCuts
Definition: InDetDetailedTrackSelectorTool.h:152
InDet::InDetDetailedTrackSelectorTool::m_nDoubleHoles
int m_nDoubleHoles
Definition: InDetDetailedTrackSelectorTool.h:138
InDet::InDetDetailedTrackSelectorTool::m_nSharedSi
int m_nSharedSi
Definition: InDetDetailedTrackSelectorTool.h:135
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:273
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
InDet::InDetDetailedTrackSelectorTool::m_useSharedHitInfo
bool m_useSharedHitInfo
Definition: InDetDetailedTrackSelectorTool.h:131
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:73
InDet::InDetDetailedTrackSelectorTool::m_trtDCTool
ToolHandle< ITrtDriftCircleCutTool > m_trtDCTool
Tool to get eta dependent cut on number of TRT hits.
Definition: InDetDetailedTrackSelectorTool.h:162
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
xAOD::numberOfInnermostPixelLayerSharedHits
@ numberOfInnermostPixelLayerSharedHits
number of Pixel 0th layer barrel hits shared by several tracks.
Definition: TrackingPrimitives.h:239
InDet::InDetDetailedTrackSelectorTool::m_nHitTrtPlusOutliers
int m_nHitTrtPlusOutliers
Definition: InDetDetailedTrackSelectorTool.h:121
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
InDet::InDetDetailedTrackSelectorTool::m_useTrackQualityInfo
bool m_useTrackQualityInfo
Definition: InDetDetailedTrackSelectorTool.h:142
InDet::InDetDetailedTrackSelectorTool::m_nHitPixPhysical
int m_nHitPixPhysical
at least n physical hits in pixel
Definition: InDetDetailedTrackSelectorTool.h:117
TauGNNUtils::Variables::Track::trackPhi
bool trackPhi(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:480
Trk::phi
@ phi
Definition: ParamDefs.h:81
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
InDet::InDetDetailedTrackSelectorTool::m_nHitSi
int m_nHitSi
Definition: InDetDetailedTrackSelectorTool.h:115
InDet::InDetDetailedTrackSelectorTool::m_useEtaDepententMinHitTrt
bool m_useEtaDepententMinHitTrt
Definition: InDetDetailedTrackSelectorTool.h:155
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:266
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
InDet::InDetDetailedTrackSelectorTool::m_useEventInfoBs
bool m_useEventInfoBs
Access beamspot via the EvenInfo object.
Definition: InDetDetailedTrackSelectorTool.h:178
InDet::InDetDetailedTrackSelectorTool::m_sigIPd0Max
double m_sigIPd0Max
Definition: InDetDetailedTrackSelectorTool.h:103
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
xAOD::numberOfSCTDoubleHoles
@ numberOfSCTDoubleHoles
number of Holes in both sides of a SCT module [unit8_t].
Definition: TrackingPrimitives.h:271
makeComparison.deltaZ
int deltaZ
Definition: makeComparison.py:46
hotSpotInTAG.nb
nb
Definition: hotSpotInTAG.py:164
Trk::numberOfSCTDoubleHoles
@ numberOfSCTDoubleHoles
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:75
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
InDet::InDetDetailedTrackSelectorTool::Shared
@ Shared
Definition: InDetDetailedTrackSelectorTool.h:62
fitman.k
k
Definition: fitman.py:528
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:237
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65