ATLAS Offline Software
InDetPerfPlot_HitEfficiency.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
14 #include "TProfile.h"
15 #include "TEfficiency.h"
16 #include <vector>
17 #include <cmath> // for std::fabs
18 
19 
20 
21 
22 InDetPerfPlot_HitEfficiency::InDetPerfPlot_HitEfficiency(InDetPlotBase* pParent, const std::string& sDir) : InDetPlotBase(pParent, sDir), m_HitEfficiencyVsEta{}, m_debug{false} {
23  //
24 }
25 
26 void
28  // const bool prependDirectory(false);
29  // eff plots for L0PIXBARR, PIXEL, SCT, TRT
30  // Barrel
41  //
42  book(m_HitEfficiencyVsEta[L0PIXBARR][BARREL], "eff_hit_vs_eta_l0pix_barrel");
43  book(m_HitEfficiencyVsEta[PIXEL][BARREL], "eff_hit_vs_eta_pix_barrel");
44  book(m_HitEfficiencyVsEta[SCT][BARREL], "eff_hit_vs_eta_sct_barrel");
45  book(m_HitEfficiencyVsEta[TRT][BARREL], "eff_hit_vs_eta_trt_barrel");
46 
47  book(m_HitEfficiencyVsEta[PIXEL][ENDCAP], "eff_hit_vs_eta_pix_endcap");
48  book(m_HitEfficiencyVsEta[SCT][ENDCAP], "eff_hit_vs_eta_sct_endcap");
49  book(m_HitEfficiencyVsEta[TRT][ENDCAP], "eff_hit_vs_eta_trt_endcap");
50 }
51 
52 void
54  if (m_debug) {
55  ATH_MSG_INFO("Filling HitEfficiency");
56  }
57 
58  static const SG::ConstAccessor< std::vector<int> > measurement_regionAcc("measurement_region");
59  const bool hitDetailsAvailable = measurement_regionAcc.isAvailable(trkprt);
60  if (!hitDetailsAvailable) {
61  if (m_warnCount++ < 10) {
62  ATH_MSG_WARNING("The HitEff plots dont see any data (note: only 10 warnings issued)");
63  }
64  } else {
65  static const SG::ConstAccessor< std::vector<int> > measurement_detAcc("measurement_det");
66  const std::vector<int>& result_det = measurement_detAcc(trkprt);
67  if (!result_det.empty()) {
68  static const SG::ConstAccessor< std::vector<int> > measurement_typeAcc("measurement_type");
69  const std::vector<int>& result_measureType = measurement_typeAcc(trkprt);
70  const std::vector<int>& result_region = measurement_regionAcc(trkprt);
71  // const std::vector<int> &result_iLayer = trkprt.auxdata< std::vector<int> >("hitResiduals_iLayer");
72  // NP: this should be fine... residual filled with -1 if not hit
73 
74  for (unsigned int idx = 0; idx < result_region.size(); ++idx) {
75  const int measureType = result_measureType[idx];
76  const bool isHit((measureType == 0)or(measureType == 4));
77  const int det = result_det[idx]; // LAYER TYPE L0PIXBARR / PIXEL / ...
78  const int region = result_region[idx]; // BARREL OR ENDCAP
79  float eta = std::fabs(trkprt.eta());
80 
81  fillHisto(m_HitEfficiencyVsEta[det][region], eta, isHit, weight);
82  }
83  }
84  }
90 }
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
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.
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
python.copyTCTOutput.sDir
sDir
Definition: copyTCTOutput.py:60
xAOD::TrackParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TrackParticle_v1.cxx:77
InDetPerfPlot_HitEfficiency::PIXEL
@ PIXEL
Definition: InDetPerfPlot_HitEfficiency.h:43
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
InDetPlotBase
Mixin class to give extra capabilities to plots such as ATH_MSG and an easier booking interface,...
Definition: InDetPlotBase.h:31
TRT
Definition: HitInfo.h:33
InDetPerfPlot_HitEfficiency::ENDCAP
@ ENDCAP
Definition: InDetPerfPlot_HitEfficiency.h:46
WritePulseShapeToCool.det
det
Definition: WritePulseShapeToCool.py:204
InDetPerfPlot_HitEfficiency::L0PIXBARR
@ L0PIXBARR
Definition: InDetPerfPlot_HitEfficiency.h:43
InDetPerfPlot_HitEfficiency::InDetPerfPlot_HitEfficiency
InDetPerfPlot_HitEfficiency(InDetPlotBase *pParent, const std::string &dirName)
Definition: InDetPerfPlot_HitEfficiency.cxx:22
InDetPerfPlot_HitEfficiency.h
SCT
Definition: SCT_ChipUtils.h:14
InDetPerfPlot_HitEfficiency::m_debug
bool m_debug
Definition: InDetPerfPlot_HitEfficiency.h:53
InDetPerfPlot_HitEfficiency::m_warnCount
std::atomic< int > m_warnCount
Definition: InDetPerfPlot_HitEfficiency.h:55
TrackParticle.h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
InDetPhysHitDecoratorAlg.h
InDetPerfPlot_HitEfficiency::initializePlots
void initializePlots()
Definition: InDetPerfPlot_HitEfficiency.cxx:27
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
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:85
InDetPerfPlot_HitEfficiency::fill
void fill(const xAOD::TrackParticle &trkprt, float weight)
Definition: InDetPerfPlot_HitEfficiency.cxx:53
InDetPerfPlot_HitEfficiency::m_HitEfficiencyVsEta
TEfficiency * m_HitEfficiencyVsEta[N_SUBDETECTORS][N_REGIONS]
Definition: InDetPerfPlot_HitEfficiency.h:52
InDetPerfPlot_HitEfficiency::BARREL
@ BARREL
Definition: InDetPerfPlot_HitEfficiency.h:46