Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
InDetPerfPlot_Efficiency.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
8 #include "logLinearBinning.h"
9 #include "GaudiKernel/SystemOfUnits.h" //for Gaudi::Units
10 using namespace IDPVM;
11 
12 InDetPerfPlot_Efficiency::InDetPerfPlot_Efficiency(InDetPlotBase* pParent, const std::string& sDir, bool doTechEff, bool isITk) :
13  InDetPlotBase(pParent, sDir),
14  m_doTechEff(doTechEff),
15  m_isITk(isITk) {}
16 
17 void
19  // Drop eta bins larger than 2.5
20  if(!m_isITk){
21  m_eta_bins.erase(std::remove_if(m_eta_bins.begin(), m_eta_bins.end(),
22  [](float eta) { return eta > 2.5; }),
23  m_eta_bins.end());
24  }
25 
26  book(m_efficiency_vs_pteta, "efficiency_vs_pteta");
27  book(m_efficiency_vs_ptTruthMu, "efficiency_vs_ptTruthMu");
28  book(m_efficiency_vs_ptActualMu, "efficiency_vs_ptActualMu");
29 
30  book(m_efficiency_vs_etaTruthMu, "efficiency_vs_absEtaTruthMu");
31  book(m_efficiency_vs_etaActualMu, "efficiency_vs_absEtaActualMu");
32 
33  for(unsigned int i=0; i<m_eta_bins.size()-1; i++){
34  m_efficiency_vs_truthMu_eta_bin.emplace_back();
35  m_efficiency_vs_actualMu_eta_bin.emplace_back();
36 
37  std::string bin_low = std::to_string(m_eta_bins[i]);
38  size_t dotPos = bin_low.find('.');
39  bin_low.resize(dotPos+2);
40  bin_low.replace(dotPos, 1, 1, 'p');
41  std::string bin_up = std::to_string(m_eta_bins[i+1]);
42  dotPos = bin_up.find('.');
43  bin_up.resize(dotPos+2);
44  bin_up.replace(dotPos, 1, 1, 'p');
45 
47  "efficiency_vs_truthMu_absEta_"+bin_low+"_"+bin_up);
49  "efficiency_vs_actualMu_absEta_"+bin_low+"_"+bin_up);
50  }
51 
52  book(m_efficiency_vs_eta, "efficiency_vs_eta");
53  book(m_efficiency_vs_pt, "efficiency_vs_pt");
54  book(m_efficiency_vs_pt_low, "efficiency_vs_pt_low");
55  book(m_efficiency_vs_pt_high, "efficiency_vs_pt_high");
56  book(m_efficiency_vs_lowpt, "efficiency_vs_lowpt");
57  book(m_efficiency_vs_phi, "efficiency_vs_phi");
58  book(m_efficiency_vs_d0, "efficiency_vs_d0");
59  book(m_efficiency_vs_d0_abs, "efficiency_vs_d0_abs");
60  book(m_efficiency_vs_z0, "efficiency_vs_z0");
61  book(m_efficiency_vs_z0_abs, "efficiency_vs_z0_abs");
62  book(m_efficiency_vs_R, "efficiency_vs_R");
63  book(m_efficiency_vs_Z, "efficiency_vs_Z");
64  book(m_efficiency_vs_truthMu, "efficiency_vs_truthMu");
65  book(m_efficiency_vs_actualMu, "efficiency_vs_actualMu");
66 
67  if(m_doTechEff){
68  book(m_technical_efficiency_vs_eta, "technical_efficiency_vs_eta");
69  book(m_technical_efficiency_vs_pt, "technical_efficiency_vs_pt");
70  book(m_technical_efficiency_vs_phi, "technical_efficiency_vs_phi");
71  book(m_technical_efficiency_vs_d0, "technical_efficiency_vs_d0");
72  book(m_technical_efficiency_vs_z0, "technical_efficiency_vs_z0");
73  book(m_technical_efficiency_vs_truthMu, "technical_efficiency_vs_truthMu");
74  book(m_technical_efficiency_vs_actualMu, "technical_efficiency_vs_actualMu");
75  }
76 
77  book(m_extended_efficiency_vs_d0, "extended_efficiency_vs_d0");
78  book(m_extended_efficiency_vs_d0_abs, "extended_efficiency_vs_d0_abs");
79  book(m_extended_efficiency_vs_z0, "extended_efficiency_vs_z0");
80  book(m_extended_efficiency_vs_z0_abs, "extended_efficiency_vs_z0_abs");
81  book(m_efficiency_vs_prodR, "efficiency_vs_prodR");
82  book(m_efficiency_vs_prodR_extended, "efficiency_vs_prodR_extended");
83  book(m_efficiency_vs_prodZ, "efficiency_vs_prodZ");
84  book(m_efficiency_vs_prodZ_extended, "efficiency_vs_prodZ_extended");
85 
86  book(m_TrkRec_eta, "TrkRec_eta");
87  book(m_TrkRec_d0, "TrkRec_d0");
88  book(m_TrkRec_prodR, "TrkRec_prodR");
89  book(m_TrkRec_pT, "TrkRec_pT");
90  book(m_TrkRec_truthMu, "TrkRec_truthMu");
91  book(m_TrkRec_actualMu, "TrkRec_actualMu");
92  book(m_TrkRec_eta_d0, "TrkRec_eta_d0");
93  book(m_TrkRec_eta_prodR, "TrkRec_eta_prodR");
94  book(m_TrkRec_eta_pT, "TrkRec_eta_pT");
95 
96  book(m_efficiency_vs_pt_log, "efficiency_vs_pt_log");
97  const TH1* h = m_efficiency_vs_pt_log->GetTotalHistogram();
98  int nbins = h->GetNbinsX();
99  std::vector<double> logptbins = IDPVM::logLinearBinning(nbins, h->GetBinLowEdge(1), h->GetBinLowEdge(nbins + 1), false);
100  m_efficiency_vs_pt_log->SetBins(nbins, logptbins.data());
101 }
102 
103 void
104 InDetPerfPlot_Efficiency::fill(const xAOD::TruthParticle& truth, const bool isGood, unsigned int truthMu, float actualMu, float weight) {
105  double eta = truth.eta();
106  double pt = truth.pt() / Gaudi::Units::GeV; // convert MeV to GeV
107  double phi = truth.phi();
108 
110  fillHisto(m_efficiency_vs_ptTruthMu, pt, truthMu, isGood, weight);
111  fillHisto(m_efficiency_vs_ptActualMu, pt, actualMu, isGood, weight);
112 
113  fillHisto(m_efficiency_vs_etaTruthMu, std::abs(eta), truthMu, isGood, weight);
114  fillHisto(m_efficiency_vs_etaActualMu, std::abs(eta), actualMu, isGood, weight);
115 
116  const auto pVal = std::lower_bound(m_eta_bins.begin(), m_eta_bins.end(), std::abs(eta));
117  const int bin = std::distance(m_eta_bins.begin(), pVal) - 1;
118  // Protect against overflow
119  // for LRT config in particular which keeps truth particles up to eta=3.0
120  if(bin<static_cast<int>(m_efficiency_vs_truthMu_eta_bin.size())){
123  }
124 
132 
133  static const SG::ConstAccessor<float> d0Acc("d0");
134  static const SG::ConstAccessor<float> z0Acc("z0");
135  static const SG::ConstAccessor<float> prodRAcc("prodR");
136  static const SG::ConstAccessor<float> prodZAcc("prodZ");
137  double d0 = d0Acc(truth);
138  double z0 = z0Acc(truth);
139  double R = prodRAcc(truth);
140  double Z = prodZAcc(truth);
142  fillHisto(m_efficiency_vs_d0_abs, std::abs(d0), isGood, weight);
144  fillHisto(m_efficiency_vs_z0_abs, std::abs(z0), isGood, weight);
145  fillHisto(m_efficiency_vs_R, R, isGood, weight);
146  fillHisto(m_efficiency_vs_Z, Z, isGood, weight);
147 
149  fillHisto(m_extended_efficiency_vs_d0_abs, std::abs(d0), isGood, weight);
151  fillHisto(m_extended_efficiency_vs_z0_abs, std::abs(z0), isGood, weight);
152  fillHisto(m_efficiency_vs_truthMu, truthMu, isGood, weight);
153  fillHisto(m_efficiency_vs_actualMu, actualMu, isGood, weight);
154 
155  fillHisto(m_TrkRec_eta, eta, isGood, weight);
156  fillHisto(m_TrkRec_d0, d0, isGood, weight);
157  fillHisto(m_TrkRec_pT, pt, isGood, weight);
158  fillHisto(m_TrkRec_truthMu, truthMu, isGood, weight);
159  fillHisto(m_TrkRec_actualMu, actualMu, isGood, weight);
160 
161  fillHisto(m_TrkRec_eta_d0, eta, d0, isGood, weight);
162  fillHisto(m_TrkRec_eta_pT, eta, pt, isGood, weight);
163 
164  if (truth.hasProdVtx()) {
165  const xAOD::TruthVertex* vtx = truth.prodVtx();
166  double prod_rad = vtx->perp();
167  double prod_z = vtx->z();
168  fillHisto(m_efficiency_vs_prodR, prod_rad, isGood, weight);
169  fillHisto(m_efficiency_vs_prodR_extended, prod_rad, isGood, weight);
170  fillHisto(m_efficiency_vs_prodZ, prod_z, isGood, weight);
172 
173  fillHisto(m_TrkRec_prodR, prod_rad, isGood, weight);
174 
175  fillHisto(m_TrkRec_eta_prodR, eta, prod_rad, isGood, weight);
176  }
177 }
178 
179 void
180 InDetPerfPlot_Efficiency::fillTechnicalEfficiency(const xAOD::TruthParticle& truth, const bool isGood, unsigned int truthMu, float actualMu, float weight) {
181  double eta = truth.eta();
182  double pt = truth.pt() / Gaudi::Units::GeV; // convert MeV to GeV
183  double phi = truth.phi();
188 
189  static const SG::ConstAccessor<float> d0Acc("d0");
190  static const SG::ConstAccessor<float> z0Acc("z0");
191  double d0 = d0Acc(truth);
192  double z0 = z0Acc(truth);
197 }
198 
199 
200 void
202 }
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_actualMu
TEfficiency * m_technical_efficiency_vs_actualMu
Definition: InDetPerfPlot_Efficiency.h:72
IDPVM
Class to retrieve associated truth from a track, implementing a cached response.
Definition: InDetPhysValMonitoringTool.h:56
InDetPerfPlot_Efficiency::m_efficiency_vs_pt_log
TEfficiency * m_efficiency_vs_pt_log
Definition: InDetPerfPlot_Efficiency.h:53
InDetPerfPlot_Efficiency::m_efficiency_vs_actualMu_eta_bin
std::vector< TEfficiency * > m_efficiency_vs_actualMu_eta_bin
Definition: InDetPerfPlot_Efficiency.h:43
InDetPerfPlot_Efficiency::m_efficiency_vs_prodR
TEfficiency * m_efficiency_vs_prodR
Definition: InDetPerfPlot_Efficiency.h:78
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
InDetPerfPlot_Efficiency::m_efficiency_vs_ptTruthMu
TEfficiency * m_efficiency_vs_ptTruthMu
Definition: InDetPerfPlot_Efficiency.h:37
InDetPerfPlot_Efficiency::m_extended_efficiency_vs_z0
TEfficiency * m_extended_efficiency_vs_z0
Definition: InDetPerfPlot_Efficiency.h:76
InDetPerfPlot_Efficiency.h
InDetPerfPlot_Efficiency::m_TrkRec_pT
TEfficiency * m_TrkRec_pT
Definition: InDetPerfPlot_Efficiency.h:86
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
InDetPlotBase::book
void book(Htype *&pHisto, const std::string &histoIdentifier, const std::string &nameOverride="", const std::string &folder="default")
Helper method to book histograms using an identifier string.
InDetPerfPlot_Efficiency::m_efficiency_vs_eta
TEfficiency * m_efficiency_vs_eta
Definition: InDetPerfPlot_Efficiency.h:49
InDetPerfPlot_Efficiency::m_efficiency_vs_truthMu
TEfficiency * m_efficiency_vs_truthMu
Definition: InDetPerfPlot_Efficiency.h:62
InDetPerfPlot_Efficiency::m_efficiency_vs_prodZ
TEfficiency * m_efficiency_vs_prodZ
Definition: InDetPerfPlot_Efficiency.h:80
InDetPerfPlot_Efficiency::m_efficiency_vs_etaActualMu
TEfficiency * m_efficiency_vs_etaActualMu
Definition: InDetPerfPlot_Efficiency.h:41
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_eta
TEfficiency * m_technical_efficiency_vs_eta
Definition: InDetPerfPlot_Efficiency.h:66
InDetPerfPlot_Efficiency::initializePlots
void initializePlots()
Definition: InDetPerfPlot_Efficiency.cxx:18
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
InDetPerfPlot_Efficiency::finalizePlots
void finalizePlots()
Definition: InDetPerfPlot_Efficiency.cxx:201
Monitored::Z
@ Z
Definition: HistogramFillerUtils.h:24
python.copyTCTOutput.sDir
sDir
Definition: copyTCTOutput.py:60
InDetPerfPlot_Efficiency::m_efficiency_vs_z0
TEfficiency * m_efficiency_vs_z0
Definition: InDetPerfPlot_Efficiency.h:58
InDetPerfPlot_Efficiency::m_TrkRec_eta
TEfficiency * m_TrkRec_eta
Definition: InDetPerfPlot_Efficiency.h:83
InDetPerfPlot_Efficiency::m_TrkRec_actualMu
TEfficiency * m_TrkRec_actualMu
Definition: InDetPerfPlot_Efficiency.h:88
test_pyathena.pt
pt
Definition: test_pyathena.py:11
bin
Definition: BinsDiffFromStripMedian.h:43
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_z0
TEfficiency * m_technical_efficiency_vs_z0
Definition: InDetPerfPlot_Efficiency.h:70
InDetPerfPlot_Efficiency::m_extended_efficiency_vs_d0
TEfficiency * m_extended_efficiency_vs_d0
Definition: InDetPerfPlot_Efficiency.h:74
InDetPerfPlot_Efficiency::m_efficiency_vs_prodZ_extended
TEfficiency * m_efficiency_vs_prodZ_extended
Definition: InDetPerfPlot_Efficiency.h:81
SG::ConstAccessor< float >
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_pteta
TEfficiency * m_technical_efficiency_vs_pteta
Definition: InDetPerfPlot_Efficiency.h:65
InDetPerfPlot_Efficiency::m_TrkRec_truthMu
TEfficiency * m_TrkRec_truthMu
Definition: InDetPerfPlot_Efficiency.h:87
InDetPerfPlot_Efficiency::m_extended_efficiency_vs_d0_abs
TEfficiency * m_extended_efficiency_vs_d0_abs
Definition: InDetPerfPlot_Efficiency.h:75
InDetPerfPlot_Efficiency::m_efficiency_vs_pt_high
TEfficiency * m_efficiency_vs_pt_high
Definition: InDetPerfPlot_Efficiency.h:52
InDetPerfPlot_Efficiency::m_efficiency_vs_pteta
TEfficiency * m_efficiency_vs_pteta
Definition: InDetPerfPlot_Efficiency.h:36
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:189
IDPVM::logLinearBinning
std::vector< double > logLinearBinning(const unsigned int nBins, const double absXmin, const double absXmax, const bool symmetriseAroundZero)
Definition: logLinearBinning.cxx:16
InDetPerfPlot_Efficiency::m_efficiency_vs_R
TEfficiency * m_efficiency_vs_R
Definition: InDetPerfPlot_Efficiency.h:60
InDetPerfPlot_Efficiency::m_efficiency_vs_ptActualMu
TEfficiency * m_efficiency_vs_ptActualMu
Definition: InDetPerfPlot_Efficiency.h:38
InDetPlotBase
Mixin class to give extra capabilities to plots such as ATH_MSG and an easier booking interface,...
Definition: InDetPlotBase.h:33
lumiFormat.i
int i
Definition: lumiFormat.py:85
h
InDetPerfPlot_Efficiency::m_TrkRec_prodR
TEfficiency * m_TrkRec_prodR
Definition: InDetPerfPlot_Efficiency.h:85
logLinearBinning.h
InDetPerfPlot_Efficiency::fillTechnicalEfficiency
void fillTechnicalEfficiency(const xAOD::TruthParticle &truth, const bool isGood, unsigned int truthMu, float actualMu, float weight)
Definition: InDetPerfPlot_Efficiency.cxx:180
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
xAOD::TruthVertex_v1::perp
float perp() const
Vertex transverse distance from the beam line.
Definition: TruthVertex_v1.cxx:163
xAOD::TruthParticle_v1::hasProdVtx
bool hasProdVtx() const
Check for a production vertex on this particle.
Definition: TruthParticle_v1.cxx:74
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
InDetPerfPlot_Efficiency::m_eta_bins
std::vector< float > m_eta_bins
Definition: InDetPerfPlot_Efficiency.h:44
InDetPerfPlot_Efficiency::m_efficiency_vs_truthMu_eta_bin
std::vector< TEfficiency * > m_efficiency_vs_truthMu_eta_bin
Definition: InDetPerfPlot_Efficiency.h:42
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
InDetPerfPlot_Efficiency::m_TrkRec_d0
TEfficiency * m_TrkRec_d0
Definition: InDetPerfPlot_Efficiency.h:84
InDetPerfPlot_Efficiency::InDetPerfPlot_Efficiency
InDetPerfPlot_Efficiency(InDetPlotBase *pParent, const std::string &dirName, bool doTechEff=false, bool isITk=false)
Definition: InDetPerfPlot_Efficiency.cxx:12
InDetPerfPlot_Efficiency::m_doTechEff
bool m_doTechEff
Definition: InDetPerfPlot_Efficiency.h:93
InDetPerfPlot_Efficiency::m_efficiency_vs_z0_abs
TEfficiency * m_efficiency_vs_z0_abs
Definition: InDetPerfPlot_Efficiency.h:59
TruthVertex.h
InDetPerfPlot_Efficiency::fill
void fill(const xAOD::TruthParticle &truth, const bool isGood, unsigned int truthMu, float actualMu, float weight)
Definition: InDetPerfPlot_Efficiency.cxx:104
xAOD::TruthParticle_v1::prodVtx
const TruthVertex_v1 * prodVtx() const
The production vertex of this particle.
Definition: TruthParticle_v1.cxx:80
InDetPerfPlot_Efficiency::m_isITk
bool m_isITk
Definition: InDetPerfPlot_Efficiency.h:94
InDetPerfPlot_Efficiency::m_TrkRec_eta_d0
TEfficiency * m_TrkRec_eta_d0
Definition: InDetPerfPlot_Efficiency.h:89
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:37
InDetPerfPlot_Efficiency::m_TrkRec_eta_prodR
TEfficiency * m_TrkRec_eta_prodR
Definition: InDetPerfPlot_Efficiency.h:90
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
InDetPerfPlot_Efficiency::m_efficiency_vs_d0
TEfficiency * m_efficiency_vs_d0
Definition: InDetPerfPlot_Efficiency.h:56
xAOD::TruthParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TruthParticle_v1.cxx:174
SCT_CalibAlgs::nbins
@ nbins
Definition: SCT_CalibNumbers.h:10
InDetPerfPlot_Efficiency::m_efficiency_vs_Z
TEfficiency * m_efficiency_vs_Z
Definition: InDetPerfPlot_Efficiency.h:61
InDetPerfPlot_Efficiency::m_efficiency_vs_etaTruthMu
TEfficiency * m_efficiency_vs_etaTruthMu
Definition: InDetPerfPlot_Efficiency.h:40
InDetPerfPlot_Efficiency::m_efficiency_vs_d0_abs
TEfficiency * m_efficiency_vs_d0_abs
Definition: InDetPerfPlot_Efficiency.h:57
xAOD::TruthParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
Definition: TruthParticle_v1.cxx:181
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_pt
TEfficiency * m_technical_efficiency_vs_pt
Definition: InDetPerfPlot_Efficiency.h:67
InDetPerfPlot_Efficiency::m_TrkRec_eta_pT
TEfficiency * m_TrkRec_eta_pT
Definition: InDetPerfPlot_Efficiency.h:91
InDetPerfPlot_Efficiency::m_efficiency_vs_prodR_extended
TEfficiency * m_efficiency_vs_prodR_extended
Definition: InDetPerfPlot_Efficiency.h:79
xAOD::TruthVertex_v1::z
float z() const
Vertex longitudinal distance along the beam line form the origin.
InDetPerfPlot_Efficiency::m_efficiency_vs_pt_low
TEfficiency * m_efficiency_vs_pt_low
Definition: InDetPerfPlot_Efficiency.h:51
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_truthMu
TEfficiency * m_technical_efficiency_vs_truthMu
Definition: InDetPerfPlot_Efficiency.h:71
xAOD::TruthParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TruthParticle_v1.cxx:166
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_d0
TEfficiency * m_technical_efficiency_vs_d0
Definition: InDetPerfPlot_Efficiency.h:69
InDetPerfPlot_Efficiency::m_extended_efficiency_vs_z0_abs
TEfficiency * m_extended_efficiency_vs_z0_abs
Definition: InDetPerfPlot_Efficiency.h:77
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
InDetPlotBase::fillHisto
static void fillHisto(TProfile *pTprofile, const float bin, const float weight, const float weight2=1.0)
Definition: InDetPlotBase.cxx:82
InDetPerfPlot_Efficiency::m_technical_efficiency_vs_phi
TEfficiency * m_technical_efficiency_vs_phi
Definition: InDetPerfPlot_Efficiency.h:68
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54
InDetPerfPlot_Efficiency::m_efficiency_vs_phi
TEfficiency * m_efficiency_vs_phi
Definition: InDetPerfPlot_Efficiency.h:55
InDetPerfPlot_Efficiency::m_efficiency_vs_actualMu
TEfficiency * m_efficiency_vs_actualMu
Definition: InDetPerfPlot_Efficiency.h:63
InDetPerfPlot_Efficiency::m_efficiency_vs_lowpt
TEfficiency * m_efficiency_vs_lowpt
Definition: InDetPerfPlot_Efficiency.h:54
InDetPerfPlot_Efficiency::m_efficiency_vs_pt
TEfficiency * m_efficiency_vs_pt
Definition: InDetPerfPlot_Efficiency.h:50