ATLAS Offline Software
Loading...
Searching...
No Matches
ZeeTaPMonTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
6//
7// 2014-05-21 Author: Remi Lafaye (Annecy)
8// 2015-05-20 Author: Bertrand LAFORGE (LPNHE Paris)
9//
10// NAME: ZeeTaPMonTool.cxx
11// PACKAGE: offline/Reconstruction/egamma/egammaPerformance
12// PURPOSE: Simple tag and probe method to check electron
13// ID and ISO performance
14//
16
17
18#include "ZeeTaPMonTool.h"
19#include "GaudiKernel/MsgStream.h"
20#include "GaudiKernel/StatusCode.h"
24#include "xAODEgamma/Electron.h"
27#include "TH1F.h"
28
29#include "GaudiKernel/SystemOfUnits.h"
30using Gaudi::Units::GeV;
31
32ZeeTaPMonTool::ZeeTaPMonTool(const std::string & type, const std::string & name, const IInterface* parent)
33 : egammaMonToolBase(type,name,parent),
34 m_hNZcandidates(nullptr),
35 m_electronGroup(nullptr),
36 m_electronTrkGroup(nullptr),
37 m_electronIdGroup(nullptr),
38 m_electronIsoGroup(nullptr),
39 m_electronLBGroup(nullptr),
40 m_electronEffGroup(nullptr),
41 m_hMass(nullptr),
42 m_hIDEt(nullptr),
43 m_hIDEta(nullptr),
44 m_hIDPhi(nullptr),
45 m_effhIDEt(nullptr),
46 m_effhIDEta(nullptr),
47 m_effhIDPhi(nullptr),
48 m_hISOEt(nullptr),
49 m_hISOEta(nullptr),
50 m_hISOPhi(nullptr),
51 m_effhISOEt(nullptr),
52 m_effhISOEta(nullptr),
53 m_effhISOPhi(nullptr),
54 m_hN(nullptr),
55 m_hEt(nullptr),
56 m_hEta(nullptr),
57 m_hPhi(nullptr),
58 m_hEtaPhi(nullptr),
59 m_hLB_N(nullptr)
60{
61 // Name of the electron collection
62 declareProperty("massPeak", m_MassPeak = ParticleConstants::ZMassInMeV, "Resonance peak position" );
63 declareProperty("electronEtCut",m_ElectronEtCut = 15*GeV, "Et cut for electrons");
64 declareProperty("massLowerCut", m_MassLowerCut = 70*GeV,"Lower mass cut");
65 declareProperty("massUpperCut", m_MassUpperCut = 110*GeV,"Upper mass cut");
66 declareProperty("PhiBinning", m_PhiBinning = 64,"Number of bins for phi");
67
70 m_nZCandidates = 0;
71}
72
74{
76 ATH_CHECK( m_ElectronContainer.initialize() );
77 return StatusCode::SUCCESS;
78}
79
81{
82 ATH_MSG_DEBUG("ZeeTaPMonTool::bookHistograms()");
83 int start;
84 int end;
85 start = 0;
86 end = ENDCAP;
87
88 // Create groups
89 m_electronGroup = new MonGroup(this,"egamma/tagandprobe"+m_GroupExtension, run); // to be re-booked every new run
90 // Create sub groups
91 m_electronTrkGroup = new MonGroup(this,"egamma/tagandprobe"+m_GroupExtension+"/Track", run); // to be re-booked every new run
92 m_electronIdGroup = new MonGroup(this,"egamma/tagandprobe"+m_GroupExtension+"/ID", run); // to be re-booked every new run
93 m_electronEffGroup = new MonGroup(this,"egamma/tagandprobe"+m_GroupExtension+"/EfficienciesIDISO", run, ManagedMonitorToolBase::ATTRIB_MANAGED , "", "effAsPerCent"); // to be re-booked every new run
94 m_electronIsoGroup = new MonGroup(this,"egamma/tagandprobe"+m_GroupExtension+"/Isolation", run); // to be re-booked every new run
95 m_electronLBGroup = new MonGroup(this,"egamma/tagandprobe"+m_GroupExtension+"/LBMon", run); // to be re-booked every new run
96
97 // Number of Z candidates vs eta of leading electron
98 bookTH1F(m_hNZcandidates,*m_electronGroup,"electronTagAndProbeNcandidates", "Number of "+m_GroupExtension+" candidates vs eta of leading electron",64,-3.2,3.2);
99
100 // Mass plots
101 bookTH1F(m_hMass, *m_electronGroup,"electronTagAndProbeGlobalMass", "ee invariant mass",100,m_MassLowerCut,m_MassUpperCut);
102 bookTH1FperRegion(m_hvMass, *m_electronGroup,"electronTagAndProbeMass", "ee invariant mass",100,m_MassLowerCut,m_MassUpperCut,start,end);
103
104 // EFFICIENCIES IN MAIN PANEL
105 bookTH1F(m_hIDEt, *m_electronEffGroup,"EfficiencyTagAndProbeElectronIDvsEtOld", "LHTight electron ID efficiency vs Et [MeV]",100, -1000.0, 250000.0);
106 bookTH1F(m_hIDEta, *m_electronEffGroup,"EfficiencyTagAndProbeElectronIDvsEtaOld", "LHTight electron ID efficiency vs #eta", 64, -3.2, 3.2);
107 bookTH1F(m_hIDPhi, *m_electronEffGroup,"EfficiencyTagAndProbeElectronIDvsPhiOld", "LHTight electron ID efficiency vs #phi", m_PhiBinning, -3.2, 3.2);
108 bookTH1F(m_hISOEt, *m_electronEffGroup,"EfficiencyTagAndProbeElectronISOvsEtOld", "LHTight electron ISO efficiency vs Et [MeV]",100, -1000.0, 250000.0);
109 bookTH1F(m_hISOEta,*m_electronEffGroup,"EfficiencyTagAndProbeElectronISOvsEtaOld", "LHTight electron ISO efficiency vs #eta", 64, -3.2, 3.2);
110 bookTH1F(m_hISOPhi,*m_electronEffGroup,"EfficiencyTagAndProbeElectronISOvsPhiOld", "LHTight electron ISO efficiency vs #phi", m_PhiBinning, -3.2, 3.2);
111
112 bookTProfile(m_effhIDEt, *m_electronGroup,"EfficiencyTagAndProbeElectronIDvsEt", "LHTight electron ID efficiency vs Et [MeV]",100, -1000.0, 250000.0, 0.,1.1);
113 bookTProfile(m_effhIDEta, *m_electronGroup,"EfficiencyTagAndProbeElectronIDvsEta", "LHTight electron ID efficiency vs #eta", 64, -3.2, 3.2, 0.,1.1);
114 bookTProfile(m_effhIDPhi, *m_electronGroup,"EfficiencyTagAndProbeElectronIDvsPhi", "LHTight electron ID efficiency vs #phi", m_PhiBinning, -3.2, 3.2, 0.,1.1);
115 bookTProfile(m_effhISOEt, *m_electronGroup,"EfficiencyTagAndProbeElectronISOvsEt", "LHTight electron ISO efficiency vs Et [MeV]",100, -1000.0, 250000.0, 0.,1.1);
116 bookTProfile(m_effhISOEta,*m_electronGroup,"EfficiencyTagAndProbeElectronISOvsEta", "LHTight electron ISO efficiency vs #eta", 64, -3.2, 3.2, 0., 1.1);
117 bookTProfile(m_effhISOPhi,*m_electronGroup,"EfficiencyTagAndProbeElectronISOvsPhi", "LHTight electron ISO efficiency vs #phi", m_PhiBinning, -3.2, 3.2, 0., 1.1);
118
119 // COMPLEMENTARY HISTOGRAMS FOR EXPERT PANEL
120 bookTH1F(m_hN, *m_electronGroup,"electronTagAndProbeN", "Number of Probe electrons",40, 0.0, 40.0);
121 bookTH1F(m_hEt, *m_electronGroup,"electronTagAndProbeEt", "Probe electron Et [MeV]",100, -1000.0, 250000.0);
122 bookTH2F(m_hEtaPhi, *m_electronGroup,"electronTagAndProbeEtaPhi", "Probe electron #eta,#phi map", 64, -3.2, 3.2, m_PhiBinning, -3.2, 3.2);
123 bookTH1F(m_hEta, *m_electronGroup,"electronTagAndProbeEta", "Probe electron #eta", 64, -3.2, 3.2);
124 bookTH1F(m_hPhi, *m_electronGroup,"electronTagAndProbePhi", "Probe electron #phi", m_PhiBinning, -3.2, 3.2);
125
126 // TRACK PANEL
127 bookTH1FperRegion(m_hvDeltaEta1 , *m_electronTrkGroup,"electronTagAndProbeDeltaEta1", "PROBE electron track match #Delta #eta (1st sampling) ;#Delta #eta;Nevents", 50,-0.05,0.05,start,end);
128 bookTH1FperRegion(m_hvDeltaPhi2 , *m_electronTrkGroup,"electronTagAndProbeDeltaPhi2", "PROBE electron track match #Delta #phi (2st sampling) ;#Delta #phi;Nevents", 50,-0.15,0.1,start,end);
129 bookTH1FperRegion(m_hvNOfBLayerHits , *m_electronTrkGroup,"electronTagAndProbeNOfBLayerHits", "PROBE electron number of track B-Layer Hits ;N B layer hits;Nevents", 6,-0.5,5.5,start,end);
130 bookTH1FperRegion(m_hvNOfSiHits , *m_electronTrkGroup,"electronTagAndProbeNOfSiHits", "PROBE electron number of track precision Hits ;N Si hits;Nevents", 26,-0.5,25.5,start,end);
131 bookTH1FperRegion(m_hvNOfTRTHits , *m_electronTrkGroup,"electronTagAndProbeNOfTRTHits", "PROBE electron number of TRT Hits ;N TRT hits;Nevents", 51,-0.5,50.5,start,end);
132
133 // ID PANEL
134 bookTH1FperRegion(m_hvEhad1 , *m_electronIdGroup,"electronTagAndProbeEhad1", "PROBE electron energy leakage in 1st sampling of hadronic cal. ;E had1; Nevents", 50, -1000., 10000.,start,end);
135 bookTH1FperRegion(m_hvEoverP , *m_electronIdGroup,"electronTagAndProbeEoverP", "PROBE electron match track E over P ;E/p;Nevents", 50,0,5,start,end);
136 bookTH1FperRegion(m_hvCoreEM , *m_electronIdGroup,"electronTagAndProbeCoreEM", "PROBE electron core energy in EM calorimeter ;E [MeV]; Nevents",50, -5000., 250000.,start,end);
137 bookTH1FperRegion(m_hvF1 , *m_electronIdGroup,"electronTagAndProbeF1", "PROBE electron fractional energy in 1st sampling;F1; Nevents", 50, -0.2,1.0,start,end);
138 bookTH1FperRegion(m_hvF2 , *m_electronIdGroup,"electronTagAndProbeF2", "PROBE electron fractional energy in 2nd sampling;F2; Nevents", 50, -0.2,1.0,start,end);
139 bookTH1FperRegion(m_hvF3 , *m_electronIdGroup,"electronTagAndProbeF3", "PROBE electron fractional energy in 3rd sampling;F3; Nevents", 50, -0.2,1.0,start,end);
140 bookTH1FperRegion(m_hvRe233e237 , *m_electronIdGroup,"electronTagAndProbeRe233e237", "PROBE electron uncor. energy fraction in 3x3/3x7 cells in em sampling 2 ;R 3x3/3x7; Nevents", 50, 0., 2.,start,end);
141 bookTH1FperRegion(m_hvRe237e277 , *m_electronIdGroup,"electronTagAndProbeRe237e277", "PROBE electron uncor. energy fraction in 3x7/7x7 cells in em sampling 2 ;R 3x7/7x7; Nevents", 50, 0., 2.,start,end);
142
143 // ISO PANEL
144 bookTH1FperRegion(m_hvCaloIso , *m_electronIsoGroup,"electronTagAndProbeCaloIso", "PROBE electron calorimeter isolation;E_{iso} [MeV];Nevents", 50,-10000.,40000.0,start,end);
145 bookTH1FperRegion(m_hvTrackIso , *m_electronIsoGroup,"electronTagAndProbeTrackIso", "PROBE electron track isolation;E_{trk iso} [MeV];Nevents", 50,-10000.,40000.0,start,end);
146
147 // LUMI BLOCK MONITORING PANEL
148
149 std::string hname = std::string("LBEvoNZcandidates");
150 std::string hlongname = std::string("Number of Z candidates vs LB");
151 bookTH1F(m_hLB_N, *m_electronLBGroup, hname, hlongname, 2000, -0.5, 1999.5);
152
153 return StatusCode::SUCCESS;
154}
155
156StatusCode ZeeTaPMonTool::fillHistograms(const EventContext& ctx)
157{
158 ATH_MSG_DEBUG("ZeeTaPMonTool::fillHistograms(const EventContext& ctx)");
159
160 if (!hasGoodTrigger("Zee T&P electron")) return StatusCode::SUCCESS;
161
162 //check whether Lar signaled event bad
163 if(hasBadLar(ctx)) {
164 ATH_MSG_DEBUG("ZeeTaPMonTool::hasBadLar()");
165 return StatusCode::RECOVERABLE;
166 }
167
168 //--------------------
169 //figure out current LB
170 //--------------------
171 unsigned int previousLB = m_currentLB;
173
174 //deal with the change of LB
175 if (m_currentLB>previousLB) {
176 // update the by LB variables
178 // Reset counters
180 }
181
182 // Get electron container
184 ATH_CHECK(electron_container.isValid());
185
186 xAOD::ElectronContainer::const_iterator e_iter = electron_container->begin();
187 xAOD::ElectronContainer::const_iterator e_end = electron_container->end();
188 ATH_MSG_DEBUG("Number of electrons: " << electron_container->size());
189
190 int ngood_el = 0;
191 float lead_et=-999;
192 float subl_et=-999;
193 const xAOD::Electron *lead_el = nullptr;
194 const xAOD::Electron *subl_el = nullptr;
195
196 for (; e_iter!=e_end; ++e_iter) {
197
198 if(!(*e_iter)) continue;
199 // Formally unnecessary because all electrons in the container have these authors by construction
200 if (!((*e_iter)->author(xAOD::EgammaParameters::AuthorElectron)|| (*e_iter)->author(xAOD::EgammaParameters::AuthorAmbiguous))) continue;
201
202 // Ask these electrons to be LHLoose
203 bool isGood=false;
204
205 bool passed = (*e_iter)->passSelection(isGood,"LHLoose");
206 if( passed || !isGood ) ATH_MSG_DEBUG("not a good LHLoose electron candidate found in TDS");
207
208 // LHMedium
209 // sc = (*e_iter)->passSelection(isGood,"LHMedium");
210 // if(sc.isFailure() || !isGood ) ATH_MSG_DEBUG("not a good LHMedium electron candidate found in TDS");
211
212 // LHTight
213 // sc = (*e_iter)->passSelection(isGood,"LHTight");
214 // if(sc.isFailure() || !isGood ) ATH_MSG_DEBUG("not a good electron candidate found in TDS");
215
216 if(isGood) {
217 ++ngood_el;
218 // Look for two electrons
219 float et = (*e_iter)->pt();
220 if(et>lead_et) {
221 subl_et = lead_et;
222 subl_el = lead_el;
223 lead_et = et;
224 lead_el = *e_iter;
225 } else if(et>subl_et) {
226 subl_et = et;
227 subl_el = *e_iter;
228 }
229 }
230 }
231
232
233 // Fill number of electrons histograms
234 if (m_hN) m_hN->Fill(ngood_el);
235
236 // request at least two electrons
237
238 if (ngood_el<2) return StatusCode::SUCCESS;
239
240 // Et cuts
241 if(lead_et<m_ElectronEtCut || lead_et<0) return StatusCode::SUCCESS;
242 if(subl_et<m_ElectronEtCut || subl_et<0) return StatusCode::SUCCESS;
243
244 // Mass window
245 float mass = (lead_el->p4()+subl_el->p4()).M();
246 ATH_MSG_DEBUG("Zee mass & cuts: (" << mass << ", " << m_MassLowerCut << ", " << m_MassUpperCut << ")");
247 if(mass<m_MassLowerCut || mass>m_MassUpperCut) return StatusCode::SUCCESS;
248
249 // Basic kinematics
250 float lead_eta = lead_el->eta();
251 float lead_phi = lead_el->phi();
252 float subl_eta = subl_el->eta();
253 float subl_phi = subl_el->phi();
254 ATH_MSG_DEBUG("Leading electron (eta,phi,et,q): (" << lead_eta << ", " << lead_phi << ", " << lead_et << ", " << lead_el->charge() << ")");
255 ATH_MSG_DEBUG("Subleading electron (eta,phi,et,q): (" << subl_eta << ", " << subl_phi << ", " << subl_et << ", " << subl_el->charge() << ")");
256
257 // Eta cuts
258 if(fabs(lead_eta)>2.47 || fabs(subl_eta)>2.47) return StatusCode::SUCCESS;
259
260 // Check charges
261 if (lead_el->charge()*subl_el->charge()>=0) return StatusCode::SUCCESS;
262
263 bool lead_isLHTight = false;
264 if ( !lead_el->passSelection(lead_isLHTight,"LHTight") ) return StatusCode::FAILURE;
265
266 bool subl_isLHTight = false;
267 if ( !subl_el->passSelection(subl_isLHTight,"LHTight") ) return StatusCode::FAILURE;
268
269 bool EventZcandidateUsed = false;
270
271 // If leading electron is LHTight use subleading as probe
272 if(lead_isLHTight) {
273 m_hNZcandidates->Fill(lead_eta);
274 EventZcandidateUsed = true;
275 // Isolation Energy
276 float topoetcone40;
277 bool subl_isIsolated = false;
278 if ( !subl_el->isolationValue(topoetcone40,xAOD::Iso::topoetcone40) ) return StatusCode::FAILURE;
279 if ( topoetcone40 < 4.5*GeV ) subl_isIsolated = true;
280 fillElectronProbe(subl_el, subl_isLHTight, subl_isIsolated, mass);
281 }
282
283 // If subleading electron is LHTight use leading as probe
284 if(subl_isLHTight) {
285 if (!EventZcandidateUsed) m_hNZcandidates->Fill(subl_eta);
286 // Isolation Energy
287 float topoetcone40;
288 bool lead_isIsolated = false;
289 if ( !lead_el->isolationValue(topoetcone40,xAOD::Iso::topoetcone40) ) return StatusCode::FAILURE;
290 if ( topoetcone40 < 4.5*GeV ) lead_isIsolated = true;
291 fillElectronProbe(lead_el, lead_isLHTight, lead_isIsolated, mass);
292 }
293
294 // Fill number of Z found in the LB
295 if (m_hLB_N) m_hLB_N->Fill(m_currentLB);
296
297 return StatusCode::SUCCESS;
298}
299
300void ZeeTaPMonTool::fillElectronProbe(const xAOD::Electron *el, bool isTight, bool isIso, double mass)
301{
302
303 float et = el->pt();
304 float eta = el->eta();
305 float phi = el->phi();
306
307 int ir = GetRegion(eta);
308 if (m_hEt) m_hEt->Fill(et);
309 if (m_hEtaPhi) m_hEtaPhi->Fill(eta,phi);
310 if (m_hEta) {
311 m_hEta->Fill(eta);
312 }
313 else {
314 ATH_MSG_DEBUG("ERRORBL eta histo not filled !!!!");
315 }
316
317 if (m_hPhi) m_hPhi->Fill(phi);
319 if (m_hMass) m_hMass->Fill(mass);
320
321 if (isTight) {
322 if (m_hIDEt) m_hIDEt->Fill(et);
323 if (m_hIDEta) m_hIDEta->Fill(eta);
324 if (m_hIDPhi) m_hIDPhi->Fill(phi);
325 if (m_effhIDEt) m_effhIDEt->Fill(et,1.);
326 if (m_effhIDEta) m_effhIDEta->Fill(eta,1.);
327 if (m_effhIDPhi) m_effhIDPhi->Fill(phi,1.);
328 } else {
329 if (m_effhIDEt) m_effhIDEt->Fill(et,0.);
330 if (m_effhIDEta) m_effhIDEta->Fill(eta,0.);
331 if (m_effhIDPhi) m_effhIDPhi->Fill(phi,0.);
332 }
333
334 if (isTight && isIso) {
335 if (m_hISOEt) m_hISOEt->Fill(et);
336 if (m_hISOEta) m_hISOEta->Fill(eta);
337 if (m_hISOPhi) m_hISOPhi->Fill(phi);
338 if (m_effhISOEt) m_effhISOEt->Fill(et,1.);
339 if (m_effhISOEta) m_effhISOEta->Fill(eta,1.);
340 if (m_effhISOPhi) m_effhISOPhi->Fill(phi,1.);
341 } else {
342 if (m_effhISOEt) m_effhISOEt->Fill(et,0.);
343 if (m_effhISOEta) m_effhISOEta->Fill(eta,0.);
344 if (m_effhISOPhi) m_effhISOPhi->Fill(phi,0.);
345 }
346
347 // Cluster track match details
348 float deltaEta1 = -999.0;
349 if( el->trackCaloMatchValue(deltaEta1, xAOD::EgammaParameters::deltaEta1) ) {
351 }
352 float deltaPhi2 = -999.0;
353 if( el->trackCaloMatchValue(deltaPhi2, xAOD::EgammaParameters::deltaPhi2) ) {
355 }
356
357 // Shower shape variable details
358 float ehad1 = 0.0;
359 float ecore = 0.0;
360 float f1 = 0.0;
361 float f3 = 0.0;
362 float e233 = 0.0;
363 float e237 = 0.0;
364 float e277 = 0.0;
365 if( el->showerShapeValue(ehad1, xAOD::EgammaParameters::ehad1) ) {
367 }
368 if( el->showerShapeValue(ecore, xAOD::EgammaParameters::ecore) ) {
370 }
371 if( el->showerShapeValue(f1, xAOD::EgammaParameters::f1) ) {
373 }
374 if( el->showerShapeValue(f3, xAOD::EgammaParameters::f3) ) {
376 }
377 if( el->showerShapeValue(e237, xAOD::EgammaParameters::e237) ) {
378 float Re233e237 = 0.0;
379 if( e237!=0 && el->showerShapeValue(e233, xAOD::EgammaParameters::e233) ) {
380 Re233e237 = e233 / e237;
381 }
383 float Re237e277 = 0.0;
384 if( e237!=0 && el->showerShapeValue(e277, xAOD::EgammaParameters::e277) ) {
385 if(e277!=0) Re237e277 = e237 / e277;
386 }
388 }
389
390 // Isolation Energy
391 float topoetcone40;
392 if( el->isolationValue(topoetcone40,xAOD::Iso::topoetcone40)) {
393 fillTH1FperRegion(m_hvCaloIso,ir,topoetcone40);
394 }
395 float ptcone20;
396 if( el->isolationValue(ptcone20,xAOD::Iso::ptcone20)) {
398 }
399
400 // Associated track details
401 const xAOD::TrackParticle *t = el->trackParticle();
402 double trackp = 0;
403 unsigned char numberOfInnermostPixelLayerHits=-1;
404 unsigned char numberOfPixelHits=-1;
405 unsigned char numberOfSCTHits=-1;
406 unsigned char numberOfTRTHits=-1;
407 if(t) {
408 trackp = t->pt()*cosh(t->eta());
409 // retrieve track summary information
410 if( t->summaryValue(numberOfInnermostPixelLayerHits,xAOD::numberOfInnermostPixelLayerHits) ) {
411 fillTH1FperRegion(m_hvNOfBLayerHits,ir,numberOfInnermostPixelLayerHits);
412 }
413 if( t->summaryValue(numberOfPixelHits,xAOD::numberOfPixelHits) && t->summaryValue(numberOfSCTHits,xAOD::numberOfSCTHits) ) {
414 fillTH1FperRegion(m_hvNOfSiHits,ir,numberOfPixelHits+numberOfSCTHits);
415 }
416 if( t->summaryValue(numberOfTRTHits,xAOD::numberOfTRTHits) ) {
417 fillTH1FperRegion(m_hvNOfTRTHits,ir,numberOfTRTHits);
418 }
419 } else ATH_MSG_DEBUG( "Error attempting to retrieve associated track");
420
421 // Associated cluster details
422 const xAOD::CaloCluster *aCluster = el->caloCluster();
423 if (aCluster) {
424 float ep = 0;
425 if(trackp !=0) ep = aCluster->e()/trackp;
427 double ec = aCluster->et()*cosh(aCluster->eta());
428 float f2 = 0.0;
429 if(ec!=0) f2 = aCluster->energyBE(2)/ec;
431 } else ATH_MSG_WARNING( "Can't get CaloCluster" );
432}
433
435{
436 ATH_MSG_DEBUG("ZeeTaPMonTool::procHistograms()");
437 //normalize efficiencies
444
445 return StatusCode::SUCCESS;
446}
447
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
bool passed(DecisionID id, const DecisionIDContainer &)
checks if required decision ID is in the set of IDs in the container
A number of constexpr particle constants to avoid hardcoding them directly in various places.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
A container of information describing a monitoring object.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::vector< TH1 * > m_hvDeltaPhi2
TH1 * m_hNZcandidates
virtual StatusCode fillHistograms(const EventContext &ctx) override
An inheriting class should either override this function or fillHists().
MonGroup * m_electronEffGroup
std::vector< TH1 * > m_hvTrackIso
virtual StatusCode initialize() override
virtual StatusCode bookHistograms() override
An inheriting class should either override this function or bookHists().
std::vector< TH1 * > m_hvRe237e277
std::vector< TH1 * > m_hvMass
std::vector< TH1 * > m_hvCoreEM
std::vector< TH1 * > m_hvF1
TProfile * m_effhISOPhi
std::vector< int > m_nZCandidatesPerLumiBlock
unsigned int m_lumiBlockNumber
TProfile * m_effhIDPhi
std::vector< TH1 * > m_hvDeltaEta1
TProfile * m_effhIDEta
std::vector< TH1 * > m_hvF2
MonGroup * m_electronGroup
TProfile * m_effhIDEt
ZeeTaPMonTool(const std::string &type, const std::string &name, const IInterface *parent)
unsigned int m_nZCandidates
std::vector< TH1 * > m_hvRe233e237
std::vector< TH1 * > m_hvNOfTRTHits
MonGroup * m_electronIdGroup
MonGroup * m_electronTrkGroup
unsigned int m_nZCandidatesInCurrentLB
float m_ElectronEtCut
std::vector< TH1 * > m_hvNOfSiHits
std::vector< TH1 * > m_hvNOfBLayerHits
MonGroup * m_electronIsoGroup
std::vector< TH1 * > m_hvEoverP
void fillElectronProbe(const xAOD::Electron *el, bool isTight, bool isIso, double mass)
TProfile * m_effhISOEt
TProfile * m_effhISOEta
MonGroup * m_electronLBGroup
SG::ReadHandleKey< xAOD::ElectronContainer > m_ElectronContainer
std::vector< TH1 * > m_hvEhad1
std::vector< TH1 * > m_hvF3
virtual StatusCode procHistograms() override
An inheriting class should either override this function or finalHists().
std::vector< TH1 * > m_hvCaloIso
virtual StatusCode initialize() override
std::string m_GroupExtension
void bookTH1FperRegion(std::vector< TH1 * > &vhist, MonGroup &mygroup, const std::string &hname, const std::string &htitle, int nbins, float low, float high, unsigned int min_region, unsigned int max_region)
void bookTProfile(TProfile *&h, MonGroup &mygroup, const std::string &hname, const std::string &htitle, int nbins, float xlow, float xhigh, float ylow, float yhigh)
unsigned int getCurrentLB(const EventContext &ctx)
bool hasBadLar(const EventContext &ctx)
bool hasGoodTrigger(const std::string &comment)
void bookTH2F(TH2 *&h, MonGroup &mygroup, const std::string &hname, const std::string &htitle, int nbinsx, float xlow, float xhigh, int nbinsy, float ylow, float yhigh)
egammaMonToolBase(const std::string &type, const std::string &name, const IInterface *parent)
static void fillTH1FperRegion(std::vector< TH1 * > &vhist, unsigned int ir, float x)
static int GetRegion(float eta)
void bookTH1F(TH1 *&h, MonGroup &mygroup, const std::string &hname, const std::string &htitle, int nbins, float low, float high)
void fillEfficiencies(TH1 *h, TH1 *href)
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
float energyBE(const unsigned layer) const
Get the energy in one layer of the EM Calo.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition Egamma_v1.cxx:71
bool passSelection(bool &value, const std::string &menu) const
Check if the egamma object pass a selection menu (using the name) If the menu decision is stored in t...
bool isolationValue(float &value, const Iso::IsolationType information) const
old Accessor for Isolation values.
Definition Egamma_v1.h:251
virtual FourMom_t p4() const override final
The full 4-momentum of the particle as a TLoretzVector.
Definition Egamma_v1.cxx:94
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
Definition Egamma_v1.cxx:76
float charge() const
Obtain the charge of the object.
int ir
counter of the current depth
Definition fastadd.cxx:49
constexpr double ZMassInMeV
the mass of the Z0 boson (in MeV)
@ deltaPhi2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
@ deltaEta1
difference between the cluster eta (first sampling) and the eta of the track extrapolated to the firs...
const uint16_t AuthorElectron
Object Reconstructed by standard cluster-based algorithm.
Definition EgammaDefs.h:24
const uint16_t AuthorAmbiguous
Object Reconstructed by standard cluster-based algorithm.
Definition EgammaDefs.h:32
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
Definition EgammaEnums.h:81
@ e237
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x7
Definition EgammaEnums.h:78
@ f3
fraction of energy reconstructed in 3rd sampling
Definition EgammaEnums.h:55
@ ecore
core energy in em calo E(core) = E0(3x3) + E1(15x2) + E2(5x5) + E3(3x5)
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
Definition EgammaEnums.h:53
@ ehad1
E leakage into 1st sampling of had calo (CaloSampling::HEC0 + CaloSampling::TileBar0 + CaloSampling::...
Definition EgammaEnums.h:49
@ e233
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x3 (in cell units e...
Definition EgammaEnums.h:69
@ ptcone20
Track isolation.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Electron_v1 Electron
Definition of the current "egamma version".
Extra patterns decribing particle interation process.