ATLAS Offline Software
Loading...
Searching...
No Matches
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
9
14#include "TProfile.h"
15#include "TEfficiency.h"
16#include <vector>
17#include <cmath> // for std::fabs
18
19
20
21
22InDetPerfPlot_HitEfficiency::InDetPerfPlot_HitEfficiency(InDetPlotBase* pParent, const std::string& sDir, bool isITk) :
23 InDetPlotBase(pParent, sDir), m_isITk{isITk}, m_HitEfficiencyVsEta{}, m_debug{false} {
24 //
25}
26
27void
29 // const bool prependDirectory(false);
30 // eff plots for L0PIXBARR, PIXEL, SCT, TRT
31 // Barrel
32 book(m_HitEfficiencyVsEta[L0PIXBARR][BARREL], "eff_hit_vs_eta_l0pix_barrel");
33 book(m_HitEfficiencyVsEta[PIXEL][BARREL], "eff_hit_vs_eta_pix_barrel");
34 book(m_HitEfficiencyVsEta[SCT][BARREL], "eff_hit_vs_eta_sct_barrel");
35 if(!m_isITk) book(m_HitEfficiencyVsEta[TRT][BARREL], "eff_hit_vs_eta_trt_barrel");
36
37 book(m_HitEfficiencyVsEta[PIXEL][ENDCAP], "eff_hit_vs_eta_pix_endcap");
38 book(m_HitEfficiencyVsEta[SCT][ENDCAP], "eff_hit_vs_eta_sct_endcap");
39 if(!m_isITk) book(m_HitEfficiencyVsEta[TRT][ENDCAP], "eff_hit_vs_eta_trt_endcap");
40}
41
42void
44 if (m_debug) {
45 ATH_MSG_INFO("Filling HitEfficiency");
46 }
47
48 static const SG::ConstAccessor< std::vector<int> > measurement_regionAcc("measurement_region");
49 const bool hitDetailsAvailable = measurement_regionAcc.isAvailable(trkprt);
50 if (!hitDetailsAvailable) {
51 if (m_warnCount++ < 10) {
52 ATH_MSG_WARNING("The HitEff plots dont see any data (note: only 10 warnings issued)");
53 }
54 } else {
55 static const SG::ConstAccessor< std::vector<int> > measurement_detAcc("measurement_det");
56 const std::vector<int>& result_det = measurement_detAcc(trkprt);
57 if (!result_det.empty()) {
58 static const SG::ConstAccessor< std::vector<int> > measurement_typeAcc("measurement_type");
59 const std::vector<int>& result_measureType = measurement_typeAcc(trkprt);
60 const std::vector<int>& result_region = measurement_regionAcc(trkprt);
61 // NP: this should be fine... residual filled with -1 if not hit
62
63 for (unsigned int idx = 0; idx < result_region.size(); ++idx) {
64 const int measureType = result_measureType[idx];
65 const bool isHit((measureType == 0)or(measureType == 4));
66 const int det = result_det[idx]; // LAYER TYPE L0PIXBARR / PIXEL / ...
67 const int region = result_region[idx]; // BARREL OR ENDCAP
68 float eta = std::fabs(trkprt.eta());
69
70 fillHisto(m_HitEfficiencyVsEta[det][region], eta, isHit, weight);
71 }
72 }
73 }
74}
Scalar eta() const
pseudorapidity method
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
Helper class to provide constant type-safe access to aux data.
header file for class of same name
TEfficiency * m_HitEfficiencyVsEta[N_SUBDETECTORS][N_REGIONS]
void fill(const xAOD::TrackParticle &trkprt, float weight)
InDetPerfPlot_HitEfficiency(InDetPlotBase *pParent, const std::string &dirName, bool isITk)
static void fillHisto(TProfile *pTprofile, const float bin, const float weight, const float weight2=1.0)
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.
InDetPlotBase(InDetPlotBase *pParent, const std::string &dirName)
Constructor taking parent node and directory name for plots.
Helper class to provide constant type-safe access to aux data.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition HitInfo.h:33
TrackParticle_v1 TrackParticle
Reference the current persistent version: