ATLAS Offline Software
HIEfficiencyResponseHistos.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
10 
11 #include "TH1.h"
12 #include "TH2.h"
13 #include "TProfile.h"
14 
15 
16 #define toGeV 1/1000.
17 #define toTeV 1/1000000.
18 
20  , m_histoDef(this)
21 {
22  declareProperty("HistoDef", m_histoDef, "The list of HistoDefinitionTool defining the histos to be used in this tool");
23  declareProperty("RefContainer", m_refContainerName);
24  declareProperty("HIEventShapeContainerName", m_container_key="CaloSums");
25 }
26 
27 
28 
30  CHECK( m_histoDef.retrieve() );
31  return StatusCode::SUCCESS;
32 }
33 
35  ATH_MSG_INFO(" buildHistos num of histos : "<< m_histoDef.size() );
36 
38 
39  // Histos are defined in jobOptions !
40  // For each histo, ask hbuilder if a corresponding definition exists in the jobOption list.
41  // -> if so a valid histo is returned (and booked)
42  // -> else NULL is returned
43  m_eff1 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR1") );
44  m_eff2 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR2") );
45  m_eff3 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR3") );
46 
47  m_etres = bookHisto( hbuilder.build<TH1F>("erhResponse") );
48  m_etres_eta =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta") );
49  m_etres_eta_hpt =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_highpT") );
50  m_etres_pt =bookHisto( hbuilder.build<TProfile>("erhResponseVsPt") );
51 
52  m_deltaRclosest = bookHisto( hbuilder.build<TH1F>("erhDeltaR") );
54 
55  m_eff1_0_10 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR1_0_10") );
56  m_eff2_0_10 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR2_0_10") );
57  m_eff3_0_10 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR3_0_10") );
58 
59  m_eff1_10_20 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR1_10_20") );
60  m_eff2_10_20 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR2_10_20") );
61  m_eff3_10_20 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR3_10_20") );
62 
63  m_eff1_20_40 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR1_20_40") );
64  m_eff2_20_40 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR2_20_40") );
65  m_eff3_20_40 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR3_20_40") );
66 
67  m_eff1_60_100 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR1_60_100") );
68  m_eff2_60_100 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR2_60_100") );
69  m_eff3_60_100 = bookHisto( hbuilder.build<TProfile>("erhEfficiencyR3_60_100") );
70 
71  m_etres_0_10 = bookHisto( hbuilder.build<TH1F>("erhResponse_0_10") );
72  m_etres_eta_0_10 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_0_10") );
73  m_etres_eta_hpt_0_10 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_highpT_0_10") );
74  m_etres_pt_0_10 =bookHisto( hbuilder.build<TProfile>("erhResponseVsPt_0_10") );
75 
76  m_etres_10_20 = bookHisto( hbuilder.build<TH1F>("erhResponse_10_20") );
77  m_etres_eta_10_20 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_10_20") );
78  m_etres_eta_hpt_10_20 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_highpT_10_20") );
79  m_etres_pt_10_20 =bookHisto( hbuilder.build<TProfile>("erhResponseVsPt_10_20") );
80 
81  m_etres_20_40 = bookHisto( hbuilder.build<TH1F>("erhResponse_20_40") );
82  m_etres_eta_20_40 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_20_40") );
83  m_etres_eta_hpt_20_40 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_highpT_20_40") );
84  m_etres_pt_20_40 =bookHisto( hbuilder.build<TProfile>("erhResponseVsPt_20_40") );
85 
86  m_etres_60_100 = bookHisto( hbuilder.build<TH1F>("erhResponse_60_100") );
87  m_etres_eta_60_100 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_60_100") );
88  m_etres_eta_hpt_60_100 =bookHisto( hbuilder.build<TProfile>("erhResponseVsEta_highpT_60_100") );
89  m_etres_pt_60_100 =bookHisto( hbuilder.build<TProfile>("erhResponseVsPt_60_100") );
90 
91  m_etres_pt_RP = bookHisto( hbuilder.build<TProfile>("erhResponse_RP") );
92  m_etres_pt_2Dphi = bookHisto( hbuilder.build<TProfile>("erhResponse_2Dphi") );
93 
94  m_etres_pt_hpt_RP = bookHisto( hbuilder.build<TProfile>("erhResponse_highpT_RP") );
95  m_etres_pt_hpt_2Dphi = bookHisto( hbuilder.build<TProfile>("erhResponse_highpT_2Dphi") );
96  return 0;
97 }
98 
99 
101  m_n=2;
102  m_harmonic=m_n-1;
103  m_eventShape=nullptr;
105  m_FCalET=0;
106  m_psiN_FCal=0;
107  // m_vN_fcal=0;
108  for(const xAOD::HIEventShape* sh : *m_eventShape){
109  static const SG::ConstAccessor<std::string> SummaryAcc("Summary");
110  std::string summary = SummaryAcc.withDefault(*sh, "");
111  if(summary.compare("FCal")==0){
112  m_FCalET=sh->et()*toTeV;
113  float qx=sh->etCos().at(m_harmonic);
114  float qy=sh->etSin().at(m_harmonic);
115  m_psiN_FCal=std::atan2(qy,qx)/float(m_n); // Psi2 (m_n=2)
116  // vN_fcal=std::sqrt(qx+qx+qy*qy)/m_FCalET;
117  break;
118  }
119  }
120 
121  const xAOD::JetContainer* refContainer = nullptr;
122  CHECK( evtStore()->retrieve( refContainer, m_refContainerName), 1 );
124  std::list<const xAOD::Jet*> listJets(cont.begin(), cont.end());
125 
126  for ( const xAOD::Jet* refjet : *refContainer ){
127  double dr2min = 500000;
128 
129  if (listJets.empty() ) break;
130  // find the min match
131  std::list<const xAOD::Jet*>::iterator it=listJets.begin();
132  std::list<const xAOD::Jet*>::iterator itmin=listJets.end();
133  for( ; it != listJets.end(); ++it) {
134  double dr2 = jet::JetDistances::deltaR2(*(*it),*refjet);
135  if(dr2 < dr2min) { dr2min = dr2; itmin = it ;}
136  }
137  //cppcheck-suppress derefInvalidIterator
138  const xAOD::Jet* matched = *itmin;
139  listJets.erase(itmin);
140 
141  double dr = sqrt(dr2min);
142  double refPt = refjet->pt() * toGeV;
143 
144  if (fabs(refjet->eta()) > 2.1 ) continue;
145  // if (refPt<100 ) continue;
146  m_eff1->Fill(refPt, dr<0.1 ? weight : 0 ); // 0 weight if not matching close enough
147  m_eff2->Fill(refPt, dr<0.2 ? weight : 0 ); // 0 weight if not matching close enough
148  m_eff3->Fill(refPt, dr<0.3 ? weight : 0 ); // 0 weight if not matching close enough
149 
150  if (m_FCalET > 2.7){
151  m_eff1_0_10->Fill(refPt, dr<0.1 ? weight : 0 ); // 0 weight if not matching close enough
152  m_eff2_0_10->Fill(refPt, dr<0.2 ? weight : 0 ); // 0 weight if not matching close enough
153  m_eff3_0_10->Fill(refPt, dr<0.3 ? weight : 0 ); // 0 weight if not matching close enough
154  }
155  if (m_FCalET < 2.7 && m_FCalET > 1.75 ){//10-20%
156  m_eff1_10_20->Fill(refPt, dr<0.1 ? weight : 0 ); // 0 weight if not matching close enough
157  m_eff2_10_20->Fill(refPt, dr<0.2 ? weight : 0 ); // 0 weight if not matching close enough
158  m_eff3_10_20->Fill(refPt, dr<0.3 ? weight : 0 ); // 0 weight if not matching close enough
159  }
160  if (m_FCalET < 1.75 && m_FCalET > 0.65 ){//20-40%
161  m_eff1_20_40->Fill(refPt, dr<0.1 ? weight : 0 ); // 0 weight if not matching close enough
162  m_eff2_20_40->Fill(refPt, dr<0.2 ? weight : 0 ); // 0 weight if not matching close enough
163  m_eff3_20_40->Fill(refPt, dr<0.3 ? weight : 0 ); // 0 weight if not matching close enough
164  }
165  if (m_FCalET < 0.20 ){//60-100%
166  m_eff1_60_100->Fill(refPt, dr<0.1 ? weight : 0 ); // 0 weight if not matching close enough
167  m_eff2_60_100->Fill(refPt, dr<0.2 ? weight : 0 ); // 0 weight if not matching close enough
168  m_eff3_60_100->Fill(refPt, dr<0.3 ? weight : 0 ); // 0 weight if not matching close enough
169  }
170  m_deltaRclosest->Fill( dr );
171  float Acos = std::acos(std::cos(2*(matched->getAttribute<float>("JetEtaJESScaleMomentum_phi") - m_psiN_FCal)));
172  // float diff = fabs(matched->phi() - m_psiN_FCal);
173  // while (diff > TMath::Pi()/2. ) diff = TMath::Pi() - diff;
174 
175  if( dr < 0.2) {
176  double relDiff = -999.;
177  if (refPt > 0.) relDiff = ( matched->pt()* toGeV - refPt )/refPt;
178  m_etres->Fill( relDiff, weight );
179  m_etres_eta->Fill( refjet->eta(), relDiff);
180  if (matched->pt()* toGeV > 100) {
181  m_etres_eta_hpt->Fill( refjet->eta(), relDiff, weight);
183  m_etres_pt_hpt_2Dphi->Fill( Acos, relDiff, weight );
184  }
185  m_etres_pt->Fill( refPt, relDiff, weight);
186  m_etres_pt_2Dphi->Fill( Acos, relDiff, weight );
187  m_etres_pt_RP->Fill( m_psiN_FCal, relDiff, weight );
188  if (m_FCalET > 2.7){
189  m_etres_0_10->Fill( relDiff, weight );
190  m_etres_eta_0_10->Fill( refjet->eta(), relDiff, weight);
191  if (matched->pt()* toGeV > 100) m_etres_eta_hpt_0_10->Fill( refjet->eta(), relDiff, weight);
192  m_etres_pt_0_10->Fill( refPt, relDiff, weight);
193  }
194  if (m_FCalET < 2.7 && m_FCalET > 1.75 ){//10-20%
195  m_etres_10_20->Fill( relDiff, weight );
196  m_etres_eta_10_20->Fill( refjet->eta(), relDiff, weight);
197  if (matched->pt()* toGeV > 100) m_etres_eta_hpt_10_20->Fill( refjet->eta(), relDiff, weight);
198  m_etres_pt_10_20->Fill( refPt, relDiff, weight);
199  }
200  if (m_FCalET < 1.75 && m_FCalET > 0.65 ){//20-40%
201  m_etres_20_40->Fill( relDiff, weight );
202  m_etres_eta_20_40->Fill( refjet->eta(), relDiff, weight);
203  if (matched->pt()* toGeV > 100) m_etres_eta_hpt_20_40->Fill( refjet->eta(), relDiff, weight);
204  m_etres_pt_20_40->Fill( refPt, relDiff, weight);
205  }
206  if (m_FCalET < 0.20 ){//60-100%
207  m_etres_60_100->Fill( relDiff, weight );
208  m_etres_eta_60_100->Fill( refjet->eta(), relDiff, weight);
209  if (matched->pt()* toGeV > 100) m_etres_eta_hpt_60_100->Fill( refjet->eta(), relDiff, weight);
210  m_etres_pt_60_100->Fill( refPt, relDiff, weight);
211  }
212 
213  }
214 
215  }
216 
217 
218  return 0;
219 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
HIEfficiencyResponseHistos::buildHistos
virtual int buildHistos()
Definition: HIEfficiencyResponseHistos.cxx:34
HIEfficiencyResponseHistos::m_eff2_10_20
TProfile * m_eff2_10_20
Definition: HIEfficiencyResponseHistos.h:59
HIEfficiencyResponseHistos::m_eff1_0_10
TProfile * m_eff1_0_10
Definition: HIEfficiencyResponseHistos.h:54
toTeV
#define toTeV
Definition: HIEfficiencyResponseHistos.cxx:17
HIEfficiencyResponseHistos::m_etres_eta_20_40
TProfile * m_etres_eta_20_40
Definition: HIEfficiencyResponseHistos.h:81
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
HIEfficiencyResponseHistos::HIEfficiencyResponseHistos
HIEfficiencyResponseHistos(const std::string &t)
Definition: HIEfficiencyResponseHistos.cxx:19
HIEfficiencyResponseHistos::m_FCalET
float m_FCalET
Centrality.
Definition: HIEfficiencyResponseHistos.h:35
HIEfficiencyResponseHistos::m_etres_20_40
TH1F * m_etres_20_40
Definition: HIEfficiencyResponseHistos.h:80
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
HIEfficiencyResponseHistos::m_etres_eta_hpt_10_20
TProfile * m_etres_eta_hpt_10_20
Definition: HIEfficiencyResponseHistos.h:77
HIEfficiencyResponseHistos::m_etres_10_20
TH1F * m_etres_10_20
Definition: HIEfficiencyResponseHistos.h:75
HIEfficiencyResponseHistos::m_n
unsigned int m_n
Definition: HIEfficiencyResponseHistos.h:37
HIEfficiencyResponseHistos::m_etres_pt_60_100
TProfile * m_etres_pt_60_100
Definition: HIEfficiencyResponseHistos.h:88
skel.it
it
Definition: skel.GENtoEVGEN.py:423
HIEfficiencyResponseHistos::m_etres_eta_10_20
TProfile * m_etres_eta_10_20
Definition: HIEfficiencyResponseHistos.h:76
HIEfficiencyResponseHistos::m_etres_eta_60_100
TProfile * m_etres_eta_60_100
Definition: HIEfficiencyResponseHistos.h:86
HIEfficiencyResponseHistos::m_eff3_10_20
TProfile * m_eff3_10_20
Definition: HIEfficiencyResponseHistos.h:60
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
HIEfficiencyResponseHistos.h
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
HIEfficiencyResponseHistos::m_etres_pt_0_10
TProfile * m_etres_pt_0_10
Definition: HIEfficiencyResponseHistos.h:73
HIEfficiencyResponseHistos::m_etres_pt_RP
TProfile * m_etres_pt_RP
Definition: HIEfficiencyResponseHistos.h:90
HIEfficiencyResponseHistos::m_etres_eta_hpt
TProfile * m_etres_eta_hpt
Definition: HIEfficiencyResponseHistos.h:51
HIEfficiencyResponseHistos::m_etres_pt
TProfile * m_etres_pt
Definition: HIEfficiencyResponseHistos.h:52
HIEfficiencyResponseHistos::m_eff2_60_100
TProfile * m_eff2_60_100
Definition: HIEfficiencyResponseHistos.h:67
HIEfficiencyResponseHistos::m_eff2_20_40
TProfile * m_eff2_20_40
Definition: HIEfficiencyResponseHistos.h:63
HIEfficiencyResponseHistos::m_etres_pt_20_40
TProfile * m_etres_pt_20_40
Definition: HIEfficiencyResponseHistos.h:83
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
JetHistoBase
Definition: JetHistoBase.h:27
HIEfficiencyResponseHistos::m_eff3_0_10
TProfile * m_eff3_0_10
Definition: HIEfficiencyResponseHistos.h:56
xAOD::HIEventShape_v2
Interface class for the HI reconstruction EDM.
Definition: HIEventShape_v2.h:31
HIEfficiencyResponseHistos::m_eff2_0_10
TProfile * m_eff2_0_10
Definition: HIEfficiencyResponseHistos.h:55
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
HIEfficiencyResponseHistos::m_etres_0_10
TH1F * m_etres_0_10
Definition: HIEfficiencyResponseHistos.h:70
HIEfficiencyResponseHistos::m_eff2
TProfile * m_eff2
Definition: HIEfficiencyResponseHistos.h:46
HIEfficiencyResponseHistos::m_etres_eta_0_10
TProfile * m_etres_eta_0_10
Definition: HIEfficiencyResponseHistos.h:71
RCU::Shell
Definition: ShellExec.cxx:28
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
HIEfficiencyResponseHistos::m_refContainerName
std::string m_refContainerName
Definition: HIEfficiencyResponseHistos.h:42
HIEfficiencyResponseHistos::m_eff1_60_100
TProfile * m_eff1_60_100
Definition: HIEfficiencyResponseHistos.h:66
HIEfficiencyResponseHistos::m_etres_eta_hpt_0_10
TProfile * m_etres_eta_hpt_0_10
Definition: HIEfficiencyResponseHistos.h:72
HIEfficiencyResponseHistos::m_etres_pt_2Dphi
TProfile * m_etres_pt_2Dphi
Definition: HIEfficiencyResponseHistos.h:92
toGeV
#define toGeV
Definition: HIEfficiencyResponseHistos.cxx:16
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
ToolHandleHistoHelper::HistoRetriever
Definition: ToolHandleHistoHelper.h:26
HIEfficiencyResponseHistos::m_etres_pt_hpt_2Dphi
TProfile * m_etres_pt_hpt_2Dphi
Definition: HIEfficiencyResponseHistos.h:93
HIEfficiencyResponseHistos::m_etres
TH1F * m_etres
Definition: HIEfficiencyResponseHistos.h:49
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
HIEfficiencyResponseHistos::m_histoDef
ToolHandleArray< HistoDefinitionTool > m_histoDef
Definition: HIEfficiencyResponseHistos.h:41
python.ElectronD3PDObject.matched
matched
Definition: ElectronD3PDObject.py:138
HIEfficiencyResponseHistos::m_eff3_20_40
TProfile * m_eff3_20_40
Definition: HIEfficiencyResponseHistos.h:64
TProfile
Definition: rootspy.cxx:515
HIEfficiencyResponseHistos::m_eff1_20_40
TProfile * m_eff1_20_40
Definition: HIEfficiencyResponseHistos.h:62
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
HIEfficiencyResponseHistos::m_eff1_10_20
TProfile * m_eff1_10_20
Definition: HIEfficiencyResponseHistos.h:58
ToolHandleHistoHelper::HistoRetriever::build
T * build(const std::string &n)
Definition: ToolHandleHistoHelper.h:44
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
HIEfficiencyResponseHistos::initialize
virtual StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: HIEfficiencyResponseHistos.cxx:29
HIEfficiencyResponseHistos::m_eff1
TProfile * m_eff1
Definition: HIEfficiencyResponseHistos.h:45
TProfile::Fill
int Fill(double, double)
Definition: rootspy.cxx:523
HIEfficiencyResponseHistos::m_etres_eta_hpt_60_100
TProfile * m_etres_eta_hpt_60_100
Definition: HIEfficiencyResponseHistos.h:87
TH1F
Definition: rootspy.cxx:320
HIEfficiencyResponseHistos::m_eff3_60_100
TProfile * m_eff3_60_100
Definition: HIEfficiencyResponseHistos.h:68
HIEfficiencyResponseHistos::m_etres_60_100
TH1F * m_etres_60_100
Definition: HIEfficiencyResponseHistos.h:85
HIEfficiencyResponseHistos::m_etres_eta_hpt_20_40
TProfile * m_etres_eta_hpt_20_40
Definition: HIEfficiencyResponseHistos.h:82
HIEfficiencyResponseHistos::m_eff3
TProfile * m_eff3
Definition: HIEfficiencyResponseHistos.h:47
HIEfficiencyResponseHistos::m_etres_eta
TProfile * m_etres_eta
Definition: HIEfficiencyResponseHistos.h:50
HIEfficiencyResponseHistos::m_psiN_FCal
float m_psiN_FCal
Definition: HIEfficiencyResponseHistos.h:36
HistoGroupBase::bookHisto
T * bookHisto(T *h, Interval_t ityp=useToolInterval)
register the histo h in this group (if h!=NULL). The histo name is changed if m_prefixedHistoName==tr...
Definition: HistoGroupBase.h:69
HIEfficiencyResponseHistos::m_harmonic
unsigned int m_harmonic
Definition: HIEfficiencyResponseHistos.h:38
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
HIEfficiencyResponseHistos::m_etres_pt_hpt_RP
TProfile * m_etres_pt_hpt_RP
Definition: HIEfficiencyResponseHistos.h:91
HIEfficiencyResponseHistos::m_deltaRclosest
TH1F * m_deltaRclosest
Definition: HIEfficiencyResponseHistos.h:94
readCCLHist.float
float
Definition: readCCLHist.py:83
HIEfficiencyResponseHistos::m_etres_pt_10_20
TProfile * m_etres_pt_10_20
Definition: HIEfficiencyResponseHistos.h:78
ToolHandleHistoHelper.h
HIEfficiencyResponseHistos::m_eventShape
const xAOD::HIEventShapeContainer * m_eventShape
Definition: HIEfficiencyResponseHistos.h:32
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
JetDistances.h
SG::ConstAccessor::withDefault
const_reference_type withDefault(const ELT &e, const T &deflt) const
Fetch the variable for one element, as a const reference, with a default.
HIEfficiencyResponseHistos::fillHistosFromContainer
virtual int fillHistosFromContainer(const xAOD::JetContainer &cont, float weight)
Definition: HIEfficiencyResponseHistos.cxx:100
HIEfficiencyResponseHistos::m_container_key
std::string m_container_key
HI.
Definition: HIEfficiencyResponseHistos.h:31
SCT_Monitoring::summary
@ summary
Definition: SCT_MonitoringNumbers.h:65