ATLAS Offline Software
InDetTrtTrackScoringTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "CLHEP/GenericFunctions/CumulativeChiSquare.hh"
13 #include "TrkTrack/Track.h"
15 
16 //---------------------------------------------------------------------------------------------------------------------
17 
19  const std::string& n,
20  const IInterface* p)
21  : AthAlgTool(t, n, p)
22  , m_trtId(nullptr)
23  , m_maxSigmaChi2(-1)
24  , m_maxTrtRatio(-1)
25  , m_maxTrtFittedRatio(-1)
26  , m_summaryTypeScore(Trk::numberOfTrackSummaryTypes)
27  , m_selectortool("InDet::InDetTrtDriftCircleCutTool")
28 {
29  declareInterface<Trk::ITrackScoringTool>(this);
30 
31  // cuts for tracks
32 
33  // There is room for 10 bins, for future development.
34  // The default below represents one eta bin between 0 and 999
35  // and no cuts applied.
36  m_TRTTrksEtaBins.clear();
39  for (unsigned int i = 0; i < 10; ++i) {
40  m_TRTTrksEtaBins.push_back(999);
41  m_TRTTrksMinTRTHitsThresholds.push_back(0);
43  }
44 
45  // declare properties
46  declareProperty("DriftCircleCutTool", m_selectortool);
47  declareProperty("useAmbigFcn", m_useAmbigFcn = true);
48  declareProperty("useSigmaChi2", m_useSigmaChi2 = false);
49  declareProperty("minTRTonTrk", m_minTRTonTrk = 15);
50  declareProperty("maxEta", m_maxEta = 2.1);
51  declareProperty("PtMin", m_ptmin = 1.0); // pt min cut
52  declareProperty("UseParameterization", m_parameterization = true);
53  declareProperty("OldTransitionLogic", m_oldLogic = false);
54  declareProperty("minTRTPrecisionFraction", m_minTRTprecision = 0.5);
55  declareProperty("TRTTrksEtaBins", m_TRTTrksEtaBins); /* expects 10 eta bins (set unused bins to e.g. 999) */
56  declareProperty("TRTTrksMinTRTHitsThresholds", m_TRTTrksMinTRTHitsThresholds); /* expects 10 values */
57  declareProperty("TRTTrksMinTRTHitsMuDependencies", m_TRTTrksMinTRTHitsMuDependencies); /* expects 10 values */
58  m_summaryTypeScore[Trk::numberOfTRTHits] = 1; // 10 straws ~ 1 SCT
59  m_summaryTypeScore[Trk::numberOfTRTHighThresholdHits] = 0; // addition for being TR
60 }
61 
62 //---------------------------------------------------------------------------------------------------------------------
63 
66 {
67  ATH_CHECK(m_selectortool.retrieve( DisableTool{m_selectortool.empty() } ));
68  ATH_CHECK(m_lumiBlockMuTool.retrieve());
69 
70  if (detStore()->retrieve(m_trtId, "TRT_ID").isFailure()) {
71  ATH_MSG_FATAL("Could not get TRT_ID helper !");
72  return StatusCode::FAILURE;
73  }
74  if (m_useAmbigFcn) {
76  }
77 
78  // Read handle for AtlasFieldCacheCondObj
80 
81  return StatusCode::SUCCESS;
82 }
83 
84 //---------------------------------------------------------------------------------------------------------------------
85 
88 {
89  if (!track.trackSummary()) {
90  ATH_MSG_FATAL("Track without a summary");
91  }
93  return score;
94 }
95 
96 //---------------------------------------------------------------------------------------------------------------------
97 
100 {
101  int numTRT = trackSummary.get(Trk::numberOfTRTHits);
102  int numTRTTube = trackSummary.get(Trk::numberOfTRTTubeHits);
103 
104  // TRT precision hits cut
105  if (numTRT >= 15 && ((double)(numTRT - numTRTTube)) / numTRT < m_minTRTprecision) {
106  return Trk::TrackScore(0);
107  }
108 
109  const Trk::Perigee* perigee = track.perigeeParameters();
110  int numTRT_plusOutliers = numTRT + trackSummary.get(Trk::numberOfTRTOutliers);
111  unsigned int eta_bin = getEtaBin(*perigee);
112  double minTRT = getMuDependentNtrtMinCut(eta_bin);
113 
114  // nTRT cut from egamma optimization
115  if (numTRT_plusOutliers < minTRT) {
116  return Trk::TrackScore(0);
117  }
118 
119  // Cut on the minimum number of hits
120  bool isGood = m_selectortool.isEnabled() ? isGoodTRT(track) : true;
121  if (!isGood) {
122  return Trk::TrackScore(0);
123  }
124 
125  // get parameters without error - this is faster
126  const Trk::TrackParameters* input = track.trackParameters()->front();
127 
129 
130  const EventContext& ctx = Gaudi::Hive::currentContext();
132  const AtlasFieldCacheCondObj* fieldCondObj{ *readHandle };
133  if (fieldCondObj == nullptr) {
134  ATH_MSG_ERROR("simpleScore: Failed to retrieve AtlasFieldCacheCondObj with key "
136  return Trk::TrackScore(0);
137  }
138  MagField::AtlasFieldCache fieldCache;
139  fieldCondObj->getInitializedCache(fieldCache);
140 
141  if (fieldCache.solenoidOn()) { // B field
142  if (input->pT() < m_ptmin) {
143  ATH_MSG_DEBUG("Reject track below Pt cut !");
144  return Trk::TrackScore(0);
145  }
146  }
147 
148  if (fabs(input->eta()) > m_maxEta) {
149  return Trk::TrackScore(0);
150  }
151  //
152  // --- Now Start Scoring
153  //
154 
155  if (m_useAmbigFcn) {
156 
157  //
158  // -- modern score
159  //
160  return TRT_ambigScore(track, trackSummary);
161 
162  } else {
163 
164  //
165  // --classical scoring !
166  //
167  // score of 100 per track
168  Trk::TrackScore score(100);
169  // --- summary score analysis
170  for (int i = 0; i < Trk::numberOfTrackSummaryTypes; ++i) {
171  int value = trackSummary.get(static_cast<Trk::SummaryType>(i));
172  // value is -1 if undefined.
173  if (value > 0) {
175  }
176  }
177  // --- prob(chi2,NDF), protect for chi2 <= 0
178  if (track.fitQuality() != nullptr && track.fitQuality()->chiSquared() > 0 && track.fitQuality()->numberDoF() > 0) {
179  double p = 1.0 - Genfun::CumulativeChiSquare(track.fitQuality()->numberDoF())(track.fitQuality()->chiSquared());
180  if (p > 0)
181  score += log10(p);
182  else
183  score -= 50;
184  }
185  return score;
186  }
187 }
188 
189 //---------------------------------------------------------------------------------------------------------------
190 
193 {
194  //
195  // --- start with bonus for high pt tracks
196  //
197  // double prob = 1.;
198  double pt = fabs(track.trackParameters()->front()->pT());
199  double prob = log10(pt) - 1.; // 100 MeV is min and gets score 1
200 
201  //
202  // --- special treatment for TRT hits
203  //
204  int iTRT_Hits = trackSummary.get(Trk::numberOfTRTHits);
205  int iTRT_Outliers = trackSummary.get(Trk::numberOfTRTOutliers);
206  //
207 
208  if (iTRT_Hits > 0 && m_maxTrtRatio > 0) {
209  // get expected number of TRT hits
210  double nTrtExpected = 30.;
211  assert( m_selectortool.isEnabled());
212  nTrtExpected = m_selectortool->minNumberDCs(track.trackParameters()->front());
213  double ratio = iTRT_Hits / nTrtExpected;
216  for (int i = 0; i < m_maxTrtRatio; ++i) {
217  if (m_boundsTrtRatio[i] < ratio && ratio <= m_boundsTrtRatio[i + 1]) {
218  prob *= m_factorTrtRatio[i];
219  break;
220  }
221  }
222  }
223 
224  if (iTRT_Hits > 0 && iTRT_Outliers >= 0 && m_maxTrtFittedRatio > 0) {
225  double fitted = double(iTRT_Hits) / double(iTRT_Hits + iTRT_Outliers);
228  for (int i = 0; i < m_maxTrtFittedRatio; ++i) {
229  if (fitted <= m_boundsTrtFittedRatio[i + 1]) {
231  break;
232  }
233  }
234  }
235 
236  //
237  // --- non binned Chi2
238 
239  if (track.fitQuality() != nullptr && track.fitQuality()->chiSquared() > 0 && track.fitQuality()->numberDoF() > 0) {
240  int indf = track.fitQuality()->numberDoF();
241  double chi2 = track.fitQuality()->chiSquared();
242  double fac = 1. / log10(10. + 10. * chi2 / indf); // very soft chi2
243  prob *= fac;
244  }
245 
246  //
247  // --- do we use the binned prob for chi2/NDF or sigma chi2 ?
248  //
249  if ((m_useSigmaChi2) && track.fitQuality()) {
250  int indf = track.fitQuality()->numberDoF();
251  double ichi2 = track.fitQuality()->chiSquared();
252  if (indf > 0) {
253  //
254  // --- binned sigma chi2 score
255  //
256  if (m_useSigmaChi2) {
257  int sigmaChi2times100 = trackSummary.get(Trk::standardDeviationOfChi2OS);
258  if (sigmaChi2times100 > 0) {
259  double testvar = double(sigmaChi2times100) / 100. - sqrt(2. * ichi2 / indf);
260  if (testvar < m_boundsSigmaChi2[0]) {
261  prob *= m_factorSigmaChi2[0];
262  } else if (m_boundsSigmaChi2[m_maxSigmaChi2] <= testvar) {
264  } else {
265  for (int i = 0; i < m_maxSigmaChi2; ++i) {
266  if (m_boundsSigmaChi2[i] <= testvar && testvar < m_boundsSigmaChi2[i + 1]) {
268  }
269  }
270  }
271  }
272  }
273  }
274  }
275 
277  return score;
278 }
279 
280 //-----------------------------------------------------------------------------------------------------------
281 void
283 {
284 
285  //
286  // --- ratio of TRT hits over expected
287  //
288  constexpr int maxTrtRatio = 7;
289  constexpr double TrtRatioBounds[maxTrtRatio + 1] = { 0, 0.2, 0.4, 0.6,
290  0.8, 1.0, 1.2, 2.4 };
291  // this needs tuning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
292  constexpr double goodTrtRatio[maxTrtRatio] = { 0.05, 0.11, 0.12, 0.15,
293  0.20, 0.16, 0.17 };
294  constexpr double fakeTrtRatio[maxTrtRatio] = { 0.6, 0.08, 0.06, 0.05,
295  0.04, 0.03, 0.03 };
296  // put it into the private members
297  m_maxTrtRatio = m_selectortool.isEnabled() ? maxTrtRatio : 0;
298  for (int i = 0; i < m_maxTrtRatio; ++i)
299  m_factorTrtRatio.push_back(goodTrtRatio[i] / fakeTrtRatio[i]);
300  for (int i = 0; i <= m_maxTrtRatio; ++i)
301  m_boundsTrtRatio.push_back(TrtRatioBounds[i]);
302 
303  //
304  // --- ratio of TRT fitted to (fitted+outliers)
305  //
306  const int maxTrtFittedRatio = 4;
307  const double TrtFittedRatioBounds[maxTrtFittedRatio + 1] = { 0, 0.3, 0.6, 0.9, 1.0 };
308  // this needs tuning !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
309  const double goodTrtFittedRatio[maxTrtFittedRatio] = { 0.1, 0.2, 0.3, 0.5 };
310  const double fakeTrtFittedRatio[maxTrtFittedRatio] = { 0.6, 0.1, 0.1, 0.1 };
311  // put it into the private members
312  m_maxTrtFittedRatio = maxTrtFittedRatio;
313  for (int i = 0; i < m_maxTrtFittedRatio; ++i)
314  m_factorTrtFittedRatio.push_back(goodTrtFittedRatio[i] / fakeTrtFittedRatio[i]);
315  for (int i = 0; i <= m_maxTrtFittedRatio; ++i)
316  m_boundsTrtFittedRatio.push_back(TrtFittedRatioBounds[i]);
317 
318  //
319  // --- sigma chi2
320  //
321  if (!m_useSigmaChi2) {
322  // do not use it !
323  m_maxSigmaChi2 = -1;
324  } else {
325  constexpr int maxSigmaChi2 = 26;
326  constexpr double SigmaChi2Bounds[maxSigmaChi2 + 1] = {
327  -5.0, -4.5, -4.0, -3.5, -3.0, -2.5, -2.0, -1.5, -1.0,
328  -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5,
329  4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8.0
330  };
331  constexpr double modiSigmaChi2[maxSigmaChi2] = {
332  0.0001, 0.0001, 0.0001, 0.0001, 0.001, 0.005, 0.024, 0.255, 0.644,
333  0.045, 0.008, 0.005, 0.004, 0.003, 0.002, 0.001, 0.001, 0.001,
334  0.001, 0.001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001, 0.0001
335  };
336  constexpr double vetoSigmaChi2[maxSigmaChi2] = {
337  0.001, 0.001, 0.001, 0.003, 0.014, 0.030, 0.079, 0.244, 0.295,
338  0.064, 0.029, 0.028, 0.030, 0.026, 0.023, 0.023, 0.021, 0.019,
339  0.016, 0.018, 0.012, 0.009, 0.007, 0.005, 0.001, 0.001
340  };
341  // put it into the private members
342  m_maxSigmaChi2 = maxSigmaChi2;
343  for (int i = 0; i < maxSigmaChi2; ++i) {
344  if (vetoSigmaChi2[i] == 0.0)
345  m_factorSigmaChi2.push_back(1.0);
346  else
347  m_factorSigmaChi2.push_back(modiSigmaChi2[i] / vetoSigmaChi2[i]);
348  }
349  for (int i = 0; i < maxSigmaChi2; ++i)
350  m_boundsSigmaChi2.push_back(SigmaChi2Bounds[i]);
351  }
352 }
353 
354 bool
356 {
357 
358  int nTRT = 0;
359 
360  // some cointer for the custom cuts
361  int nEC = 0;
362  int nBRL = 0;
363  int firstWheel = -999;
364  int lastLayer = -999;
365 
366  // get list of measurements
367  const DataVector<const Trk::MeasurementBase>* trkV = track.measurementsOnTrack();
368 
369  // loop over the measurements
371  for (im = trkV->begin(); im != ime; ++im) {
372 
373  const InDet::TRT_DriftCircleOnTrack* trtcircle = nullptr;
374  // Make sure is not a pseudomeasurement
375  if ((*im)->type(Trk::MeasurementBaseType::RIO_OnTrack)) {
376  const Trk::RIO_OnTrack* rot = static_cast<const Trk::RIO_OnTrack*>((*im));
377  // is it really a TRT ?
379  trtcircle = static_cast<const InDet::TRT_DriftCircleOnTrack*>(*im);
380  }
381  }
382  if (!trtcircle) {
383  continue;
384  }
385 
386  // increment measurment
387  ++nTRT;
388 
389  // compute some transition area variables...
390  if (!m_parameterization && m_oldLogic) {
391  Identifier id = trtcircle->detectorElement()->identify();
392  int isB = m_trtId->barrel_ec(id);
393  if (isB == 2 || isB == -2)
394  nEC++;
395  else if (isB == 1 || isB == -1)
396  nBRL++;
397  if (nBRL > 0)
398  lastLayer = m_trtId->layer_or_wheel(id);
399  if (nEC == 1)
400  firstWheel = m_trtId->layer_or_wheel(id);
401  }
402  }
403 
404  if (!m_parameterization) {
405 
406  bool toLower = false;
407 
408  // Cases where the min number of required TRT drift circles drops to 10
409  if (m_oldLogic && int(trkV->size()) <= m_minTRTonTrk) {
410  if ((nEC > 0 && nBRL > 0) || (nEC == 0 && nBRL > 0 && lastLayer < 2) ||
411  (nEC > 0 && nBRL == 0 && (firstWheel > 10 || firstWheel < 2))) {
412  toLower = true;
413  }
414  }
415 
416  if ((int(trkV->size()) > m_minTRTonTrk) || toLower) {
417  return true; // Ask for a minimum number of TRT hits to process
418  } else {
419  return false;
420  }
421  } else {
422 
423  // new pass, this is using the parameterization
424  const DataVector<const Trk::TrackParameters>* vpar = track.trackParameters();
425  const Trk::TrackParameters* par = (*vpar)[0];
426  int nCutTRT = m_minTRTonTrk;
427  assert( m_selectortool.isEnabled() );
428  int expected = m_selectortool->minNumberDCs(par);
429  if (expected > m_minTRTonTrk)
430  nCutTRT = expected;
431  return nTRT > nCutTRT;
432  }
433 }
434 
435 unsigned int
437 {
438  // Find the correct bin for applying eta-dependent cuts
439 
440  double tanThetaOver2 = std::tan(perigee.parameters()[Trk::theta] / 2.);
441  double abs_eta = (tanThetaOver2 == 0) ? 999.0 : std::fabs(std::log(tanThetaOver2));
442 
443  for (unsigned int i = 0; i < m_TRTTrksEtaBins.size(); ++i) {
444  if (abs_eta < m_TRTTrksEtaBins[i]) {
445  return i;
446  }
447  }
448  return m_TRTTrksEtaBins.size() - 1;
449 }
450 
451 double
453 {
454 
455  double minTRT = m_TRTTrksMinTRTHitsThresholds[eta_bin];
456 
458 
459  float avg_mu = m_lumiBlockMuTool->averageInteractionsPerCrossing();
460 
461  // The mu-dependent cuts have only been validted up to mu = 80.
462  // Also there is some physical limit to nTRT, so at some point
463  // there needs to be a ceiling for this threshold.
464  // To be revisited when a higher mu value is reached.
465  avg_mu = std::min(80.f,avg_mu);
466 
467  // minTRT = a + avg_mu * b
468  minTRT += avg_mu * m_TRTTrksMinTRTHitsMuDependencies[eta_bin];
469  }
470 
471  return minTRT;
472 }
473 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
InDet::InDetTrtTrackScoringTool::m_boundsTrtRatio
std::vector< double > m_boundsTrtRatio
Definition: InDetTrtTrackScoringTool.h:77
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
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
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
TrackParameters.h
InDet::InDetTrtTrackScoringTool::m_factorTrtFittedRatio
std::vector< double > m_factorTrtFittedRatio
Definition: InDetTrtTrackScoringTool.h:75
InDet::InDetTrtTrackScoringTool::m_minTRTprecision
double m_minTRTprecision
minimum fraction of TRT precision hits
Definition: InDetTrtTrackScoringTool.h:113
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
InDet::InDetTrtTrackScoringTool::m_factorTrtRatio
std::vector< double > m_factorTrtRatio
Definition: InDetTrtTrackScoringTool.h:74
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
InDet::InDetTrtTrackScoringTool::m_TRTTrksMinTRTHitsThresholds
std::vector< double > m_TRTTrksMinTRTHitsThresholds
Eta-binned nTRT cut for TRT-only cuts.
Definition: InDetTrtTrackScoringTool.h:118
InDet::InDetTrtTrackScoringTool::m_minTRTonTrk
int m_minTRTonTrk
cuts for selecting good tracks
Definition: InDetTrtTrackScoringTool.h:107
InDet::InDetTrtTrackScoringTool::m_factorSigmaChi2
std::vector< double > m_factorSigmaChi2
Definition: InDetTrtTrackScoringTool.h:74
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
InDet::InDetTrtTrackScoringTool::isGoodTRT
bool isGoodTRT(const Trk::Track &) const
Decide whether standalone TRT tracks pass the minimum hit requirement.
Definition: InDetTrtTrackScoringTool.cxx:355
InDet::InDetTrtTrackScoringTool::InDetTrtTrackScoringTool
InDetTrtTrackScoringTool(const std::string &, const std::string &, const IInterface *)
Definition: InDetTrtTrackScoringTool.cxx:18
InDet::InDetTrtTrackScoringTool::m_useSigmaChi2
bool m_useSigmaChi2
Definition: InDetTrtTrackScoringTool.h:82
Trk::numberOfTrackSummaryTypes
@ numberOfTrackSummaryTypes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:189
TRT_ID.h
This is an Identifier helper class for the TRT subdetector. This class is a factory for creating comp...
test_pyathena.pt
pt
Definition: test_pyathena.py:11
ITrtDriftCircleCutTool.h
python.atlas_oh.im
im
Definition: atlas_oh.py:167
athena.value
value
Definition: athena.py:122
Trk::RIO_OnTrack::rioType
virtual bool rioType(RIO_OnTrackType::Type type) const =0
Method checking the Rio On Track type.
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
InDet::InDetTrtTrackScoringTool::m_boundsSigmaChi2
std::vector< double > m_boundsSigmaChi2
Definition: InDetTrtTrackScoringTool.h:77
Trk::standardDeviationOfChi2OS
@ standardDeviationOfChi2OS
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:150
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
covarianceTool.prob
prob
Definition: covarianceTool.py:678
InDet::TRT_DriftCircleOnTrack
Definition: TRT_DriftCircleOnTrack.h:53
TrigConf::toLower
void toLower(std::string &)
Definition: Trigger/TrigConfiguration/TrigConfL1Data/Root/HelperFunctions.cxx:53
InDet::InDetTrtTrackScoringTool::m_maxTrtRatio
int m_maxTrtRatio
Definition: InDetTrtTrackScoringTool.h:72
InDet::TRT_DriftCircleOnTrack::detectorElement
virtual const InDetDD::TRT_BaseElement * detectorElement() const override final
returns the detector element, assoicated with the PRD of this class
Definition: TRT_DriftCircleOnTrack.h:224
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
InDet::InDetTrtTrackScoringTool::score
virtual Trk::TrackScore score(const Trk::Track &track) const override
create a score based on how good the passed track is
Definition: InDetTrtTrackScoringTool.cxx:87
Track.h
InDet::InDetTrtTrackScoringTool::m_oldLogic
bool m_oldLogic
use old transition hit logic
Definition: InDetTrtTrackScoringTool.h:112
InDet::InDetTrtTrackScoringTool::m_trtId
const TRT_ID * m_trtId
ID TRT helper.
Definition: InDetTrtTrackScoringTool.h:69
InDet::InDetTrtTrackScoringTool::m_maxSigmaChi2
int m_maxSigmaChi2
Definition: InDetTrtTrackScoringTool.h:72
Trk::numberOfTRTTubeHits
@ numberOfTRTTubeHits
number of TRT hits on track in straws with xenon
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:97
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:92
Trk::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT holes
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:81
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
beamspotman.n
n
Definition: beamspotman.py:731
Trk::theta
@ theta
Definition: ParamDefs.h:72
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
InDet::InDetTrtTrackScoringTool::getEtaBin
unsigned int getEtaBin(const Trk::Perigee &perigee) const
Definition: InDetTrtTrackScoringTool.cxx:436
chi2
double chi2(TH1 *h0, TH1 *h1)
Definition: comparitor.cxx:522
PseudoMeasurementOnTrack.h
InDet::InDetTrtTrackScoringTool::m_maxTrtFittedRatio
int m_maxTrtFittedRatio
Definition: InDetTrtTrackScoringTool.h:72
Trk::TrackScore
float TrackScore
Definition: TrackScore.h:10
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
InDetDD::TRT_BaseElement::identify
virtual Identifier identify() const override final
identifier of this detector element:
InDet::InDetTrtTrackScoringTool::simpleScore
virtual Trk::TrackScore simpleScore(const Trk::Track &track, const Trk::TrackSummary &trackSum) const override
create a score based on how good the passed TrackSummary is
Definition: InDetTrtTrackScoringTool.cxx:99
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
TrackSummary.h
Trk::ParametersBase
Definition: ParametersBase.h:55
TRT_DriftCircleOnTrack.h
TRT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: TRT_ID.h:866
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
InDet::InDetTrtTrackScoringTool::initialize
virtual StatusCode initialize() override
Definition: InDetTrtTrackScoringTool.cxx:65
DataVector< const Trk::MeasurementBase >
TRT_ID::layer_or_wheel
int layer_or_wheel(const Identifier &id) const
Definition: TRT_ID.h:884
xAOD::numberOfTrackSummaryTypes
@ numberOfTrackSummaryTypes
Definition: TrackingPrimitives.h:319
MagField::AtlasFieldCache::solenoidOn
bool solenoidOn() const
status of the magnets
min
#define min(a, b)
Definition: cfImp.cxx:40
Trk::RIO_OnTrackType::TRT_DriftCircle
@ TRT_DriftCircle
Definition: RIO_OnTrack.h:59
doL1CaloHVCorrections.eta_bin
eta_bin
Definition: doL1CaloHVCorrections.py:368
InDet::InDetTrtTrackScoringTool::m_ptmin
double m_ptmin
Minimum Pt.
Definition: InDetTrtTrackScoringTool.h:109
Trk::numberOfTRTHits
@ numberOfTRTHits
number of TRT outliers
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:79
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::TrackSummary
A summary of the information contained by a track.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:287
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
InDet::InDetTrtTrackScoringTool::m_parameterization
bool m_parameterization
use parameterization to cut instead of custom cut
Definition: InDetTrtTrackScoringTool.h:111
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
InDet::InDetTrtTrackScoringTool::setupTRT_ScoreModifiers
void setupTRT_ScoreModifiers()
Definition: InDetTrtTrackScoringTool.cxx:282
InDet::InDetTrtTrackScoringTool::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: InDetTrtTrackScoringTool.h:92
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
InDet::InDetTrtTrackScoringTool::m_maxEta
double m_maxEta
maximal Eta cut
Definition: InDetTrtTrackScoringTool.h:108
InDetTrtTrackScoringTool.h
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
InDet::InDetTrtTrackScoringTool::m_summaryTypeScore
std::vector< Trk::TrackScore > m_summaryTypeScore
holds the scores assigned to each Trk::SummaryType from the track's Trk::TrackSummary
Definition: InDetTrtTrackScoringTool.h:86
InDet::InDetTrtTrackScoringTool::TRT_ambigScore
Trk::TrackScore TRT_ambigScore(const Trk::Track &track, const Trk::TrackSummary &trackSum) const
Definition: InDetTrtTrackScoringTool.cxx:192
python.compareTCTs.ratio
ratio
Definition: compareTCTs.py:295
InDet::InDetTrtTrackScoringTool::getMuDependentNtrtMinCut
double getMuDependentNtrtMinCut(unsigned int eta_bin) const
Definition: InDetTrtTrackScoringTool.cxx:452
InDet::InDetTrtTrackScoringTool::m_lumiBlockMuTool
ToolHandle< ILumiBlockMuTool > m_lumiBlockMuTool
Definition: InDetTrtTrackScoringTool.h:99
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
InDet::InDetTrtTrackScoringTool::m_TRTTrksEtaBins
std::vector< double > m_TRTTrksEtaBins
Eta bins (10 expected) for TRT-only track cuts.
Definition: InDetTrtTrackScoringTool.h:116
Trk::SummaryType
SummaryType
enumerates the different types of information stored in Summary.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:45
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::TrackSummary::get
int get(const SummaryType &type) const
returns the summary information for the passed SummaryType.
AthAlgTool
Definition: AthAlgTool.h:26
FitQuality.h
InDet::InDetTrtTrackScoringTool::m_selectortool
ToolHandle< ITrtDriftCircleCutTool > m_selectortool
Returns minimum number of expected TRT drift circles depending on eta.
Definition: InDetTrtTrackScoringTool.h:89
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
InDet::InDetTrtTrackScoringTool::m_boundsTrtFittedRatio
std::vector< double > m_boundsTrtFittedRatio
Definition: InDetTrtTrackScoringTool.h:78
InDet::InDetTrtTrackScoringTool::m_TRTTrksMinTRTHitsMuDependencies
std::vector< double > m_TRTTrksMinTRTHitsMuDependencies
Eta-bined Mu-dependent component for nTRT cut.
Definition: InDetTrtTrackScoringTool.h:120
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
InDet::InDetTrtTrackScoringTool::m_useAmbigFcn
bool m_useAmbigFcn
use the scoring tuned to Ambiguity processing or not
Definition: InDetTrtTrackScoringTool.h:81