ATLAS Offline Software
MonitorTnPAlgorithm.cxx
Go to the documentation of this file.
1 /*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 
4 Author : B. Laforge (laforge@lpnhe.in2p3.fr)
5 4 May 2020
6 */
7 
8 #include "MonitorTnPAlgorithm.h"
9 
10 MonitorTnPAlgorithm::MonitorTnPAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
11 :AthMonitorAlgorithm(name,pSvcLocator) {
12 }
13 
15  using namespace Monitored;
18  ATH_CHECK(m_ElectronIsolationKey.initialize());
19  return StatusCode::SUCCESS;
20 }
21 
22 StatusCode MonitorTnPAlgorithm::fillHistograms( const EventContext& ctx ) const {
23  using namespace Monitored;
24 
25  // Only monitor good LAr Events :
26 
28  if (error_state==xAOD::EventInfo::Error) {
29  ATH_MSG_DEBUG("LAr event data integrity error");
30  return StatusCode::SUCCESS;
31  }
32 
33  //
34  // now, fill the specific Electron information
35  //
36  // get the Electron container
37 
39  ATH_CHECK(electrons.isValid());
40 
41  // Useful variables to find the leading pair of electrons
42 
43  int mynp = 0;
44 
45  float lead_et=-999;
46  float subl_et=-999;
47  const xAOD::Electron *lead_el = nullptr;
48  const xAOD::Electron *subl_el = nullptr;
49 
50  for (const auto *const e_iter : *electrons) {
51  // Check that the electron meets our requirements
52  bool isGood;
53  if (! e_iter->passSelection(isGood,m_RecoName)) {
54  ATH_MSG_WARNING("Misconfiguration: " << m_RecoName << " is not a valid working point for electrons");
55  break; // no point in continuing
56  }
57  if(isGood) {mynp++;} else continue;
58 
59  // Look for two highest pt electrons
60  float etloc = e_iter->pt();
61  if(etloc>lead_et) {
62  subl_et = lead_et;
63  subl_el = lead_el;
64  lead_et = etloc;
65  lead_el = e_iter;
66  } else if(etloc>subl_et) {
67  subl_et = etloc;
68  subl_el = e_iter;
69  }
70  }
71 
72  // Check that there are at least a good pair of electrons
73  if (mynp<2) return StatusCode::SUCCESS;
74 
75  // Check that this pair meet the T&P selection and is in the correct mass range
76 
77  // Et cuts
78  if(lead_et<m_ElectronEtCut || lead_et<0) return StatusCode::SUCCESS;
79  if(subl_et<m_ElectronEtCut || subl_et<0) return StatusCode::SUCCESS;
80 
81  // Basic kinematics
82  float lead_eta = lead_el->eta();
83  float lead_phi = lead_el->phi();
84  float subl_eta = subl_el->eta();
85  float subl_phi = subl_el->phi();
86  ATH_MSG_DEBUG("Leading electron (eta,phi,et,q): (" << lead_eta << ", " << lead_phi << ", " << lead_et << ", " << lead_el->charge() << ")");
87  ATH_MSG_DEBUG("Subleading electron (eta,phi,et,q): (" << subl_eta << ", " << subl_phi << ", " << subl_et << ", " << subl_el->charge() << ")");
88 
89  // Eta cuts
90  if(fabs(lead_eta)>2.47 || fabs(subl_eta)>2.47) return StatusCode::SUCCESS;
91  // Check charges
92  if (lead_el->charge()*subl_el->charge()>=0) return StatusCode::SUCCESS;
93 
94  // Mass window
95  Float_t mass = (lead_el->p4()+subl_el->p4()).M();
96 
97  // Monitor the electron pair mass before cutting on the mass range
98 
99  auto TnPMass = Monitored::Scalar<Float_t>("MassZ",0.);
100  auto TnPMass_barrel = Monitored::Scalar<Float_t>("MassZ_BARREL",0.);
101  auto TnPMass_endcap = Monitored::Scalar<Float_t>("MassZ_ENDCAP",0.);
102  auto TnPMass_crack = Monitored::Scalar<Float_t>("MassZ_CRACK",0.);
103  TnPMass = mass;
104  fill("MonitorTnP",TnPMass);
105 
106  auto region = GetRegion(lead_eta);
107  switch(region){
108  case BARREL :
109  TnPMass_barrel = mass;
110  fill("MonitorTnP", TnPMass_barrel);
111  break;
112  case ENDCAP :
113  TnPMass_endcap = mass;
114  fill("MonitorTnP", TnPMass_endcap);
115  break;
116  case CRACK :
117  TnPMass_crack = mass;
118  fill("MonitorTnP", TnPMass_crack);
119  break;
120  default :
121  //ATH_MSG_WARNING("found an electron outside the |eta| > 2.47 acceptance");
122  break;
123  }
124 
125  ATH_MSG_DEBUG("ee mass & cuts: (" << mass << ", " << m_MassLowerCut << ", " << m_MassUpperCut << ")");
126  if(mass<m_MassLowerCut || mass>m_MassUpperCut) return StatusCode::SUCCESS;
127 
128  // Register this good Tag & Probe candidate
129  // count the number of good Z candidate per LB
130 
131  auto lbNZ = Monitored::Scalar<u_int16_t>("LB",0);
132  lbNZ = GetEventInfo(ctx)->lumiBlock();
133  fill("MonitorTnP",lbNZ);
134 
135  bool lead_isLHTight = false;
136  if ( !lead_el->passSelection(lead_isLHTight,"LHTight") ) return StatusCode::FAILURE;
137 
138  bool subl_isLHTight = false;
139  if ( !subl_el->passSelection(subl_isLHTight,"LHTight") ) return StatusCode::FAILURE;
140 
141  // If leading electron is LHTight use subleading as probe
142  if(lead_isLHTight) {
143  ATH_CHECK(fillElectronProbe(subl_el, true, ctx));
144  }
145  // If subleading electron is LHTight use leading as probe
146  if(subl_isLHTight) {
147  ATH_CHECK(fillElectronProbe(lead_el, false, ctx));
148  }
149 
150 return StatusCode::SUCCESS;
151 
152 }
153 
154 StatusCode MonitorTnPAlgorithm::fillElectronProbe(const xAOD::Electron *el, const bool isleading, const EventContext& ctx) const {
155  using namespace Monitored;
156 
157  auto lbNProbeCandidates = Monitored::Scalar<u_int16_t>("LBEvoN",0);
158 
159  lbNProbeCandidates = GetEventInfo(ctx)->lumiBlock();
160 
161  if (isleading) {
162  auto EtaZ = Monitored::Scalar<Float_t>("EtaZ",0.0);
163  auto PhiZ = Monitored::Scalar<Float_t>("PhiZ",0.0);
164  EtaZ = el->eta();
165  PhiZ = el->phi();
166  fill("MonitorTnP",EtaZ,PhiZ);
167  }
168 
169  auto is_TightID = Monitored::Scalar<bool>("is_Tight",false);
170 
171  bool lead_isLHTight = false;
172  if ( !el->passSelection(lead_isLHTight,"LHTight") ) return StatusCode::FAILURE;
173  is_TightID = lead_isLHTight;
174 
175  auto is_Iso = Monitored::Scalar<bool>("is_Iso",false);
176  auto is_IsoandTight = Monitored::Scalar<bool>("is_IsoandTight",false);
177 
178  Float_t myet = el->pt(); // in MeV (/Gaudi::Units::GeV; // in GeV)
179  Float_t myptcone20 = -999.;
180  Float_t mytopoetcone40 = -999.;
181 
182  bool isIsolated = false;
183  if ( ! el->isolationValue(mytopoetcone40,xAOD::Iso::topoetcone40) ) return StatusCode::FAILURE;
184 
185  if (myet>0) {
186  if ( ! el->isolationValue(myptcone20,xAOD::Iso::ptcone20) ) return StatusCode::FAILURE;
187  if ( myptcone20/myet < 0.15 ) isIsolated = true;
188  }
189 
190  is_Iso = isIsolated;
191  is_IsoandTight = isIsolated && lead_isLHTight;
192 
193  auto et = Monitored::Scalar<Float_t>("Etprobe",0.0);
194  auto eta = Monitored::Scalar<Float_t>("Etaprobe",0.0);
195  auto phi = Monitored::Scalar<Float_t>("Phiprobe",0.0);
196  auto time = Monitored::Scalar<Float_t>("Timeprobe",0.0);
197  auto topoetcone40 = Monitored::Scalar<Float_t>("TopoEtCone40probe",0.0);
198  auto ptcone20 = Monitored::Scalar<Float_t>("PtCone20probe",0.0);
199 
200  // Particle variables per Region
201 
202  // BARREL
203 
204  auto et_barrel = Monitored::Scalar<Float_t>("EtProbeinBARREL",0.0);
205  auto eta_barrel = Monitored::Scalar<Float_t>("EtaProbeinBARREL",0.0);
206  auto phi_barrel = Monitored::Scalar<Float_t>("PhiProbeinBARREL",0.0);
207  auto time_barrel = Monitored::Scalar<Float_t>("TimeProbeinBARREL",0.0);
208  auto ehad1_barrel = Monitored::Scalar<Float_t>("Ehad1ProbeinBARREL",0.0);
209  auto eoverp_barrel = Monitored::Scalar<Float_t>("EoverPProbeinBARREL",0.0);
210  auto coreem_barrel = Monitored::Scalar<Float_t>("CoreEMProbeinBARREL",0.0);
211  auto f0_barrel = Monitored::Scalar<Float_t>("F0ProbeinBARREL",0.0);
212  auto f1_barrel = Monitored::Scalar<Float_t>("F1ProbeinBARREL",0.0);
213  auto f2_barrel = Monitored::Scalar<Float_t>("F2ProbeinBARREL",0.0);
214  auto f3_barrel = Monitored::Scalar<Float_t>("F3ProbeinBARREL",0.0);
215  auto re233e237_barrel = Monitored::Scalar<Float_t>("Re233e237ProbeinBARREL",0.0);
216  auto re237e277_barrel = Monitored::Scalar<Float_t>("Re237e277ProbeinBARREL",0.0);
217  auto nofblayerhits_barrel = Monitored::Scalar<u_int8_t>("NOfBLayerHitsProbeinBARREL",0);
218  auto nofpixelhits_barrel = Monitored::Scalar<u_int8_t>("NOfPixelHitsProbeinBARREL",0);
219  auto nofscthits_barrel = Monitored::Scalar<u_int8_t>("NOfSCTHitsProbeinBARREL",0);
220  auto noftrthits_barrel = Monitored::Scalar<u_int8_t>("NOfTRTHitsProbeinBARREL",0);
221  auto noftrthighthresholdhits_barrel = Monitored::Scalar<u_int8_t>("NOfTRTHighThresholdHitsProbeinBARREL",0);
222  auto deltaeta1_barrel = Monitored::Scalar<Float_t>("DeltaEta1ProbeinBARREL",0.0);
223  auto deltaphi2_barrel = Monitored::Scalar<Float_t>("DeltaPhi2ProbeinBARREL",0.0);
224  auto trackd0_barrel = Monitored::Scalar<Float_t>("Trackd0ProbeinBARREL",0.0);
225 
226  // ENDCAP
227 
228  auto et_endcap = Monitored::Scalar<Float_t>("EtProbeinENDCAP",0.0);
229  auto eta_endcap = Monitored::Scalar<Float_t>("EtaProbeinENDCAP",0.0);
230  auto phi_endcap = Monitored::Scalar<Float_t>("PhiProbeinENDCAP",0.0);
231  auto time_endcap = Monitored::Scalar<Float_t>("TimeProbeinENDCAP",0.0);
232  auto ehad1_endcap = Monitored::Scalar<Float_t>("Ehad1ProbeinENDCAP",0.0);
233  auto eoverp_endcap = Monitored::Scalar<Float_t>("EoverPProbeinENDCAP",0.0);
234  auto coreem_endcap = Monitored::Scalar<Float_t>("CoreEMProbeinENDCAP",0.0);
235  auto f0_endcap = Monitored::Scalar<Float_t>("F0ProbeinENDCAP",0.0);
236  auto f1_endcap = Monitored::Scalar<Float_t>("F1ProbeinENDCAP",0.0);
237  auto f2_endcap = Monitored::Scalar<Float_t>("F2ProbeinENDCAP",0.0);
238  auto f3_endcap = Monitored::Scalar<Float_t>("F3ProbeinENDCAP",0.0);
239  auto re233e237_endcap = Monitored::Scalar<Float_t>("Re233e237ProbeinENDCAP",0.0);
240  auto re237e277_endcap = Monitored::Scalar<Float_t>("Re237e277ProbeinENDCAP",0.0);
241  auto nofblayerhits_endcap = Monitored::Scalar<u_int8_t>("NOfBLayerHitsProbeinENDCAP",0);
242  auto nofpixelhits_endcap = Monitored::Scalar<u_int8_t>("NOfPixelHitsProbeinENDCAP",0);
243  auto nofscthits_endcap = Monitored::Scalar<u_int8_t>("NOfSCTHitsProbeinENDCAP",0);
244  auto noftrthits_endcap = Monitored::Scalar<u_int8_t>("NOfTRTHitsProbeinENDCAP",0);
245  auto noftrthighthresholdhits_endcap = Monitored::Scalar<u_int8_t>("NOfTRTHighThresholdHitsProbeinENDCAP",0);
246  auto deltaeta1_endcap = Monitored::Scalar<Float_t>("DeltaEta1ProbeinENDCAP",0.0);
247  auto deltaphi2_endcap = Monitored::Scalar<Float_t>("DeltaPhi2ProbeinENDCAP",0.0);
248  auto trackd0_endcap = Monitored::Scalar<Float_t>("Trackd0ProbeinENDCAP",0.0);
249 
250  // CRACK
251 
252  auto et_crack = Monitored::Scalar<Float_t>("EtProbeinCRACK",0.0);
253  auto eta_crack = Monitored::Scalar<Float_t>("EtaProbeinCRACK",0.0);
254  auto phi_crack = Monitored::Scalar<Float_t>("PhiProbeinCRACK",0.0);
255  auto time_crack = Monitored::Scalar<Float_t>("TimeProbeinCRACK",0.0);
256  auto ehad1_crack = Monitored::Scalar<Float_t>("Ehad1ProbeinCRACK",0.0);
257  auto eoverp_crack = Monitored::Scalar<Float_t>("EoverPProbeinCRACK",0.0);
258  auto coreem_crack = Monitored::Scalar<Float_t>("CoreEMProbeinCRACK",0.0);
259  auto f0_crack = Monitored::Scalar<Float_t>("F0ProbeinCRACK",0.0);
260  auto f1_crack = Monitored::Scalar<Float_t>("F1ProbeinCRACK",0.0);
261  auto f2_crack = Monitored::Scalar<Float_t>("F2ProbeinCRACK",0.0);
262  auto f3_crack = Monitored::Scalar<Float_t>("F3ProbeinCRACK",0.0);
263  auto re233e237_crack = Monitored::Scalar<Float_t>("Re233e237ProbeinCRACK",0.0);
264  auto re237e277_crack = Monitored::Scalar<Float_t>("Re237e277ProbeinCRACK",0.0);
265  auto nofblayerhits_crack = Monitored::Scalar<u_int8_t>("NOfBLayerHitsProbeinCRACK",0);
266  auto nofpixelhits_crack = Monitored::Scalar<u_int8_t>("NOfPixelHitsProbeinCRACK",0);
267  auto nofscthits_crack = Monitored::Scalar<u_int8_t>("NOfSCTHitsProbeinCRACK",0);
268  auto noftrthits_crack = Monitored::Scalar<u_int8_t>("NOfTRTHitsProbeinCRACK",0);
269  auto noftrthighthresholdhits_crack = Monitored::Scalar<u_int8_t>("NOfTRTHighThresholdHitsProbeinCRACK",0);
270  auto deltaeta1_crack = Monitored::Scalar<Float_t>("DeltaEta1ProbeinCRACK",0.0);
271  auto deltaphi2_crack = Monitored::Scalar<Float_t>("DeltaPhi2ProbeinCRACK",0.0);
272  auto trackd0_crack = Monitored::Scalar<Float_t>("Trackd0ProbeinCRACK",0.0);
273 
274 
275  Float_t myeta = el->eta();
276  Float_t myphi = el->phi();
277 
278  auto is_pt_gt_4gev = Monitored::Scalar<bool>("is_pt_gt_4gev",false);
279  is_pt_gt_4gev = myet > 4000. ;
280 
281  auto is_pt_gt_4gev_barrel = Monitored::Scalar<bool>("is_pt_gt_4gevBARREL",false);
282  is_pt_gt_4gev_barrel = myet > 4000. ;
283 
284  auto is_pt_gt_4gev_endcap = Monitored::Scalar<bool>("is_pt_gt_4gevENDCAP",false);
285  is_pt_gt_4gev_endcap = myet > 4000. ;
286 
287  auto is_pt_gt_4gev_crack = Monitored::Scalar<bool>("is_pt_gt_4gevCRACK",false);
288  is_pt_gt_4gev_crack = myet > 4000. ;
289 
290  // Isolation Energy
291 
292  el->isolationValue(myptcone20,xAOD::Iso::ptcone20);
293  ptcone20 = myptcone20;
294 
295  // Shower shape variable details
296  Float_t myehad1 = 0.0;
297  Float_t myecore = 0.0;
298  Float_t myf0 = 0.0;
299  Float_t myf1 = 0.0;
300  Float_t myf2 = 0.0;
301  Float_t myf3 = 0.0;
302  Float_t e233 = 0.0;
303  Float_t e237 = 0.0;
304  Float_t e277 = 0.0;
305  Float_t myre233e237 = 0.0;
306  Float_t myre237e277 = 0.0;
307 
308  el->showerShapeValue(myehad1, xAOD::EgammaParameters::ehad1);
309  el->showerShapeValue(myecore, xAOD::EgammaParameters::ecore);
310 
311  el->showerShapeValue(e237, xAOD::EgammaParameters::e237);
312  el->showerShapeValue(e233, xAOD::EgammaParameters::e233);
313  el->showerShapeValue(e277, xAOD::EgammaParameters::e277);
314 
315  if (e237!=0) myre233e237 = e233 / e237;
316  if (e277!=0) myre237e277 = e237 / e277;
317 
318  // Cluster track match details
319  Float_t mydeltaeta1 = -999.0;
320  el->trackCaloMatchValue(mydeltaeta1, xAOD::EgammaParameters::deltaEta1);
321  Float_t mydeltaphi2 = -999.0;
322  el->trackCaloMatchValue(mydeltaphi2, xAOD::EgammaParameters::deltaPhi2);
323 
324  Float_t myeoverp = -999.0;
325  Float_t mytrackd0 = -999.0;
326 
327  // associated track details
328  const xAOD::TrackParticle *t = el->trackParticle();
329  double trackp = 0;
330  u_int8_t mynofblayerhits=-1;
331  u_int8_t mynofpixelhits=-1;
332  u_int8_t mynofscthits=-1;
333  u_int8_t mynoftrthits=-1;
334  u_int8_t mynoftrthighthresholdhits=-1;
335 
336  if (t) {
337  trackp = t->pt()*cosh(t->eta());
338  // retrieve track summary information
339  t->summaryValue(mynofblayerhits,xAOD::numberOfInnermostPixelLayerHits);
340  t->summaryValue(mynofpixelhits,xAOD::numberOfPixelHits);
341  t->summaryValue(mynofscthits,xAOD::numberOfSCTHits);
342  t->summaryValue(mynoftrthits,xAOD::numberOfTRTHits);
343  t->summaryValue(mynoftrthighthresholdhits,xAOD::numberOfTRTHighThresholdHits);
344  mytrackd0 = t->d0();
345  }
346  else
347  ATH_MSG_DEBUG("Error attempting to retrieve associated track");
348 
349  // Associated cluster details
350 
351  Float_t mytime=0.;
352  const xAOD::CaloCluster *aCluster = el->caloCluster();
353  if (aCluster) {
354  mytime = aCluster->time();
355  time = mytime ;
356  // Shower shape variable details
357  double ec = aCluster->et()*cosh(aCluster->eta());
358  if (ec!=0) myf0 = aCluster->energyBE(0)/ec;
359  if (ec!=0) myf1 = aCluster->energyBE(1)/ec;
360  if (ec!=0) myf2 = aCluster->energyBE(2)/ec;
361  if (ec!=0) myf3 = aCluster->energyBE(3)/ec;
362 
363  if(trackp !=0) myeoverp = aCluster->e()/trackp;
364 
365  //ATH_MSG_WARNING("Test eoverp : " << myeoverp);
366  }
367 
368  // Fill per region histograms
369  auto region = GetRegion(myeta);
370  switch(region){
371  case BARREL :
372 
373  nofblayerhits_barrel = mynofblayerhits ; nofpixelhits_barrel = mynofpixelhits ; nofscthits_barrel = mynofscthits ;
374  noftrthits_barrel = mynoftrthits ; noftrthighthresholdhits_barrel = mynoftrthighthresholdhits;
375  deltaeta1_barrel = mydeltaeta1; deltaphi2_barrel = mydeltaphi2; trackd0_barrel = mytrackd0;
376  eoverp_barrel = myeoverp;
377  et_barrel = myet ; eta_barrel = myeta ; phi_barrel = myphi ;
378  time_barrel = mytime; ehad1_barrel = myehad1; coreem_barrel = myecore;
379  f0_barrel = myf0; f1_barrel = myf1; f2_barrel = myf2; f3_barrel = myf3; re233e237_barrel = myre233e237; re237e277_barrel = myre237e277;
380  fill("MonitorTnP",nofblayerhits_barrel, nofpixelhits_barrel, nofscthits_barrel, noftrthits_barrel, noftrthighthresholdhits_barrel,
381  deltaeta1_barrel, deltaphi2_barrel,trackd0_barrel,eoverp_barrel,
382  et_barrel,eta_barrel,phi_barrel, time_barrel, ehad1_barrel,coreem_barrel, f0_barrel,f1_barrel,f2_barrel, f3_barrel,
383  re233e237_barrel,re237e277_barrel,is_pt_gt_4gev_barrel);
384  break;
385 
386  case ENDCAP :
387 
388  nofblayerhits_endcap = mynofblayerhits; nofpixelhits_endcap = mynofpixelhits ; nofscthits_endcap = mynofscthits ;
389  noftrthits_endcap = mynoftrthits ; noftrthighthresholdhits_endcap = mynoftrthighthresholdhits;
390  deltaeta1_endcap = mydeltaeta1; deltaphi2_endcap = mydeltaphi2; trackd0_endcap = mytrackd0;
391  eoverp_endcap = myeoverp;
392  et_endcap = myet ; eta_endcap = myeta ; phi_endcap = myphi ;
393  time_endcap = mytime; ehad1_endcap = myehad1; coreem_endcap = myecore;
394  f0_endcap = myf0; f1_endcap = myf1; f2_endcap = myf2; f3_endcap = myf3; re233e237_endcap = myre233e237; re237e277_endcap = myre237e277;
395  fill("MonitorTnP",nofblayerhits_endcap,nofpixelhits_endcap,nofscthits_endcap,noftrthits_endcap,noftrthighthresholdhits_endcap,
396  deltaeta1_endcap, deltaphi2_endcap,trackd0_endcap,eoverp_endcap,et_endcap,eta_endcap,phi_endcap,
397  time_endcap, ehad1_endcap,coreem_endcap,
398  f0_endcap,f1_endcap,f2_endcap,f3_endcap,re233e237_endcap,re237e277_endcap,is_pt_gt_4gev_endcap);
399  break;
400 
401  case CRACK :
402  nofblayerhits_crack = mynofblayerhits; nofpixelhits_crack = mynofpixelhits ; nofscthits_crack = mynofscthits ;
403  noftrthits_crack = mynoftrthits ; noftrthighthresholdhits_crack = mynoftrthighthresholdhits;
404  deltaeta1_crack = mydeltaeta1; deltaphi2_crack = mydeltaphi2; trackd0_crack = mytrackd0;
405  eoverp_crack = myeoverp;
406  et_crack = myet ; eta_crack = myeta ; phi_crack = myphi ;
407  time_crack = mytime; ehad1_crack = myehad1; coreem_crack = myecore;
408  f0_crack = myf0; f1_crack = myf1; f2_crack = myf2; f3_crack = myf3; re233e237_crack = myre233e237; re237e277_crack = myre237e277;
409  fill("MonitorTnP",nofblayerhits_crack, nofpixelhits_crack,nofscthits_crack,noftrthits_crack,noftrthighthresholdhits_crack,
410  deltaeta1_crack, deltaphi2_crack,trackd0_crack,eoverp_crack,et_crack,eta_crack,phi_crack,
411  time_crack, ehad1_crack,coreem_crack,f0_crack,f1_crack,f2_crack,f3_crack,re233e237_crack,re237e277_crack,is_pt_gt_4gev_crack);
412  break;
413  default :
414  //ATH_MSG_WARNING("found an electron outside the |eta| > 2.47 acceptance");
415  break;
416  }
417 
418  et = myet ; eta = myeta ; phi = myphi ; time = mytime ;
419  ptcone20 = myptcone20; topoetcone40 = mytopoetcone40 ;
420  fill("MonitorTnP",et,eta,phi,time,is_pt_gt_4gev,
421  ptcone20,topoetcone40,lbNProbeCandidates,is_TightID,is_Iso,is_IsoandTight);
422 
423  return StatusCode::SUCCESS;
424 }
xAOD::EgammaParameters::ehad1
@ ehad1
E leakage into 1st sampling of had calo (CaloSampling::HEC0 + CaloSampling::TileBar0 + CaloSampling::...
Definition: EgammaEnums.h:48
xAOD::EgammaParameters::e233
@ e233
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x3 (in cell units e...
Definition: EgammaEnums.h:68
MonitorTnPAlgorithm::fillElectronProbe
StatusCode fillElectronProbe(const xAOD::Electron *el, const bool isleading, const EventContext &ctx) const
Definition: MonitorTnPAlgorithm.cxx:154
xAOD::CaloCluster_v1::time
flt_t time() const
Access cluster time.
et
Extra patterns decribing particle interation process.
xAOD::Electron_v1::charge
float charge() const
Obtain the charge of the object.
MonitorTnPAlgorithm::fillHistograms
StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: MonitorTnPAlgorithm.cxx:22
MonitorTnPAlgorithm::GetRegion
Regions GetRegion(Float_t eta) const
Definition: MonitorTnPAlgorithm.h:44
MonitorTnPAlgorithm::m_MassLowerCut
Gaudi::Property< Float_t > m_MassLowerCut
Definition: MonitorTnPAlgorithm.h:41
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
MonitorTnPAlgorithm::MonitorTnPAlgorithm
MonitorTnPAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: MonitorTnPAlgorithm.cxx:10
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
xAOD::EgammaParameters::ecore
@ ecore
core energy in em calo E(core) = E0(3x3) + E1(15x2) + E2(5x5) + E3(3x5)
Definition: EgammaEnums.h:152
xAOD::Iso::ptcone20
@ ptcone20
Track isolation.
Definition: IsolationType.h:40
xAOD::CaloCluster_v1::et
double et() const
Definition: CaloCluster_v1.h:856
xAOD::Egamma_v1::p4
virtual FourMom_t p4() const override final
The full 4-momentum of the particle as a TLoretzVector.
Definition: Egamma_v1.cxx:98
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:275
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
dqt_zlumi_pandas.mass
mass
Definition: dqt_zlumi_pandas.py:170
xAOD::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
Definition: TrackingPrimitives.h:278
xAOD::EventInfo_v1::Error
@ Error
The sub-detector issued an error.
Definition: EventInfo_v1.h:349
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
MonitorTnPAlgorithm::BARREL
@ BARREL
Definition: MonitorTnPAlgorithm.h:29
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
MonitorTnPAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: MonitorTnPAlgorithm.cxx:14
xAOD::CaloCluster_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: CaloCluster_v1.cxx:251
Monitored
Generic monitoring tool for athena components.
Definition: GenericMonitoringTool.h:30
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MonitorTnPAlgorithm.h
xAOD::Egamma_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
Definition: Egamma_v1.cxx:75
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
MonitorTnPAlgorithm::CRACK
@ CRACK
Definition: MonitorTnPAlgorithm.h:29
AthMonitorAlgorithm::GetEventInfo
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
Definition: AthMonitorAlgorithm.cxx:107
xAOD::EventInfo_v1::EventFlagErrorState
EventFlagErrorState
States that a given sub-detector could be in.
Definition: EventInfo_v1.h:346
MonitorTnPAlgorithm::m_ElectronIsolationKey
SG::ReadDecorHandleKeyArray< xAOD::ElectronContainer > m_ElectronIsolationKey
Definition: MonitorTnPAlgorithm.h:34
MonitorTnPAlgorithm::ENDCAP
@ ENDCAP
Definition: MonitorTnPAlgorithm.h:29
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
xAOD::EgammaParameters::deltaPhi2
@ deltaPhi2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
Definition: EgammaEnums.h:204
xAOD::Electron_v1
Definition: Electron_v1.h:34
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
MonitorTnPAlgorithm::m_ParticleContainerKey
SG::ReadHandleKey< xAOD::ElectronContainer > m_ParticleContainerKey
Definition: MonitorTnPAlgorithm.h:33
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::CaloCluster_v1::energyBE
float energyBE(const unsigned layer) const
Get the energy in one layer of the EM Calo.
Definition: CaloCluster_v1.cxx:630
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
xAOD::EgammaParameters::e277
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
Definition: EgammaEnums.h:80
xAOD::Egamma_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: Egamma_v1.cxx:70
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
xAOD::EgammaParameters::e237
@ e237
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x7
Definition: EgammaEnums.h:77
xAOD::Iso::topoetcone40
@ topoetcone40
Definition: IsolationType.h:50
python.CaloScaleNoiseConfig.default
default
Definition: CaloScaleNoiseConfig.py:79
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
xAOD::EgammaParameters::deltaEta1
@ deltaEta1
difference between the cluster eta (first sampling) and the eta of the track extrapolated to the firs...
Definition: EgammaEnums.h:184
MonitorTnPAlgorithm::m_ElectronEtCut
Gaudi::Property< Float_t > m_ElectronEtCut
Definition: MonitorTnPAlgorithm.h:40
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
xAOD::Egamma_v1::passSelection
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...
MonitorTnPAlgorithm::m_RecoName
Gaudi::Property< std::string > m_RecoName
Definition: MonitorTnPAlgorithm.h:36
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:237
MonitorTnPAlgorithm::m_MassUpperCut
Gaudi::Property< Float_t > m_MassUpperCut
Definition: MonitorTnPAlgorithm.h:42