User will overwrite this function. Histogram booking is no longer done in C++. This function is called in execute once the filters are all passed.
23 {
24 using namespace Monitored;
25
26
27
31 return StatusCode::SUCCESS;
32 }
33
34
35
36
39
40
41
43
44
45 auto lbNCandidates = Monitored::Scalar<u_int16_t>("LBEvoN",0);
46
47
48 auto np = Monitored::Scalar<int>(
"N",0.0);
49 auto et = Monitored::Scalar<Float_t>(
"Et",0.0);
50 auto eta = Monitored::Scalar<Float_t>(
"Eta",0.0);
51 auto phi = Monitored::Scalar<Float_t>(
"Phi",0.0);
52 auto is_pt_gt_2_5gev = Monitored::Scalar<bool>("is_pt_gt_2_5gev",false);
53 auto is_pt_gt_2_5gev_barrel = Monitored::Scalar<bool>("is_pt_gt_2_5gevBARREL",false);
54 auto is_pt_gt_2_5gev_endcap = Monitored::Scalar<bool>("is_pt_gt_2_5gevENDCAP",false);
55 auto is_pt_gt_2_5gev_crack = Monitored::Scalar<bool>("is_pt_gt_2_5gevCRACK",false);
56
57 auto is_pt_gt_4gev = Monitored::Scalar<bool>("is_pt_gt_4gev",false);
58 auto is_pt_gt_4gev_barrel = Monitored::Scalar<bool>("is_pt_gt_4gevBARREL",false);
59 auto is_pt_gt_4gev_endcap = Monitored::Scalar<bool>("is_pt_gt_4gevENDCAP",false);
60 auto is_pt_gt_4gev_crack = Monitored::Scalar<bool>("is_pt_gt_4gevCRACK",false);
61
62 auto is_pt_gt_20gev = Monitored::Scalar<bool>("is_pt_gt_20gev",false);
63 auto is_pt_gt_20gev_crack = Monitored::Scalar<bool>("is_pt_gt_20gevCRACK",false);
64 auto is_pt_gt_20gev_barrel = Monitored::Scalar<bool>("is_pt_gt_20gevBARREL",false);
65 auto is_pt_gt_20gev_endcap = Monitored::Scalar<bool>("is_pt_gt_20gevENDCAP",false);
66
67 auto time = Monitored::Scalar<Float_t>(
"Time",0.0);
68 auto topoetcone40 = Monitored::Scalar<Float_t>(
"TopoEtCone40",0.0);
69 auto ptcone20 = Monitored::Scalar<Float_t>(
"PtCone20",0.0);
70
71
72
73
74 auto et_barrel = Monitored::Scalar<Float_t>("EtinBARREL",0.0);
75 auto eta_barrel = Monitored::Scalar<Float_t>("EtainBARREL",0.0);
76 auto phi_barrel = Monitored::Scalar<Float_t>("PhiinBARREL",0.0);
77 auto time_barrel = Monitored::Scalar<Float_t>("TimeinBARREL",0.0);
78 auto ehad1_barrel = Monitored::Scalar<Float_t>("Ehad1inBARREL",0.0);
79 auto eoverp_barrel = Monitored::Scalar<Float_t>("EoverPinBARREL",0.0);
80 auto coreem_barrel = Monitored::Scalar<Float_t>("CoreEMinBARREL",0.0);
81 auto f0_barrel = Monitored::Scalar<Float_t>("F0inBARREL",0.0);
82 auto f1_barrel = Monitored::Scalar<Float_t>("F1inBARREL",0.0);
83 auto f2_barrel = Monitored::Scalar<Float_t>("F2inBARREL",0.0);
84 auto f3_barrel = Monitored::Scalar<Float_t>("F3inBARREL",0.0);
85 auto re233e237_barrel = Monitored::Scalar<Float_t>("Re233e237inBARREL",0.0);
86 auto re237e277_barrel = Monitored::Scalar<Float_t>("Re237e277inBARREL",0.0);
87
88
89 auto et_endcap = Monitored::Scalar<Float_t>("EtinENDCAP",0.0);
90 auto eta_endcap = Monitored::Scalar<Float_t>("EtainENDCAP",0.0);
91 auto phi_endcap = Monitored::Scalar<Float_t>("PhiinENDCAP",0.0);
92 auto time_endcap = Monitored::Scalar<Float_t>("TimeinENDCAP",0.0);
93 auto ehad1_endcap = Monitored::Scalar<Float_t>("Ehad1inENDCAP",0.0);
94 auto eoverp_endcap = Monitored::Scalar<Float_t>("EoverPinENDCAP",0.0);
95 auto coreem_endcap = Monitored::Scalar<Float_t>("CoreEMinENDCAP",0.0);
96 auto f0_endcap = Monitored::Scalar<Float_t>("F0inENDCAP",0.0);
97 auto f1_endcap = Monitored::Scalar<Float_t>("F1inENDCAP",0.0);
98 auto f2_endcap = Monitored::Scalar<Float_t>("F2inENDCAP",0.0);
99 auto f3_endcap = Monitored::Scalar<Float_t>("F3inENDCAP",0.0);
100 auto re233e237_endcap = Monitored::Scalar<Float_t>("Re233e237inENDCAP",0.0);
101 auto re237e277_endcap = Monitored::Scalar<Float_t>("Re237e277inENDCAP",0.0);
102
103
104 auto np_crack = Monitored::Scalar<int>("NinCRACK",0.0);
105 auto et_crack = Monitored::Scalar<Float_t>("EtinCRACK",0.0);
106 auto eta_crack = Monitored::Scalar<Float_t>("EtainCRACK",0.0);
107 auto phi_crack = Monitored::Scalar<Float_t>("PhiinCRACK",0.0);
108 auto time_crack = Monitored::Scalar<Float_t>("TimeinCRACK",0.0);
109 auto ehad1_crack = Monitored::Scalar<Float_t>("Ehad1inCRACK",0.0);
110 auto eoverp_crack = Monitored::Scalar<Float_t>("EoverPinCRACK",0.0);
111 auto coreem_crack = Monitored::Scalar<Float_t>("CoreEMinCRACK",0.0);
112 auto f0_crack = Monitored::Scalar<Float_t>("F0inCRACK",0.0);
113 auto f1_crack = Monitored::Scalar<Float_t>("F1inCRACK",0.0);
114 auto f2_crack = Monitored::Scalar<Float_t>("F2inCRACK",0.0);
115 auto f3_crack = Monitored::Scalar<Float_t>("F3inCRACK",0.0);
116 auto re233e237_crack = Monitored::Scalar<Float_t>("Re233e237inCRACK",0.0);
117 auto re237e277_crack = Monitored::Scalar<Float_t>("Re237e277inCRACK",0.0);
118
119
120
121 auto npconv = Monitored::Scalar<int>("NConv",0.0);
122 auto etconv = Monitored::Scalar<Float_t>("EtConv",0.0);
123 auto etaconv = Monitored::Scalar<Float_t>("EtaConv",0.0);
124 auto phiconv = Monitored::Scalar<Float_t>("PhiConv",0.0);
125
126 auto npunconv = Monitored::Scalar<int>("NUnconv",0.0);
127 auto etunconv = Monitored::Scalar<Float_t>("EtUnconv",0.0);
128 auto etaunconv = Monitored::Scalar<Float_t>("EtaUnconv",0.0);
129 auto phiunconv = Monitored::Scalar<Float_t>("PhiUnconv",0.0);
130
131 auto lb = Monitored::Scalar<u_int16_t>(
"LB",0);
132
133 auto is_pt_gt_2_5gevandconv = Monitored::Scalar<bool>("is_pt_gt_2_5gevandconv",false);
134 auto is_pt_gt_2_5gevandunconv = Monitored::Scalar<bool>("is_pt_gt_2_5gevandunconv",false);
135
136 auto is_pt_gt_4gevandconv = Monitored::Scalar<bool>("is_pt_gt_4gevandconv",false);
137 auto is_pt_gt_4gevandunconv = Monitored::Scalar<bool>("is_pt_gt_4gevandunconv",false);
138
139 auto is_pt_gt_20gevandconv = Monitored::Scalar<bool>("is_pt_gt_20gevandconv",false);
140 auto is_pt_gt_20gevandunconv = Monitored::Scalar<bool>("is_pt_gt_20gevandunconv",false);
141
142 auto lbevonphotonsunconv = Monitored::Scalar<u_int16_t>("LBEvoNPhotonsUnconv",0);
143 auto lbevonphotonsconv = Monitored::Scalar<u_int16_t>("LBEvoNPhotonsConv",0);
144
145
146
147
148
149 auto rconv_barrel = Monitored::Scalar<Float_t>("RConvinBARREL",0.0);
150 auto convtype_barrel = Monitored::Scalar<xAOD::EgammaParameters::ConversionType>("ConvTypeinBARREL",nullptr);
151 auto contrkmatch1_barrel = Monitored::Scalar<u_int8_t>("ConvTrkMatch1inBARREL",0);
152 auto contrkmatch2_barrel = Monitored::Scalar<u_int8_t>("ConvTrkMatch2inBARREL",0);
153
154
155 auto rconv_endcap = Monitored::Scalar<Float_t>("RConvinENDCAP",0.0);
156 auto convtype_endcap = Monitored::Scalar<xAOD::EgammaParameters::ConversionType>("ConvTypeinENDCAP",nullptr);
157 auto contrkmatch1_endcap = Monitored::Scalar<u_int8_t>("ConvTrkMatch1inENDCAP",0);
158 auto contrkmatch2_endcap = Monitored::Scalar<u_int8_t>("ConvTrkMatch2inENDCAP",0);
159
160
161 auto rconv_crack = Monitored::Scalar<Float_t>("RConvinCRACK",0.0);
162 auto convtype_crack = Monitored::Scalar<xAOD::EgammaParameters::ConversionType>("ConvTypeinCRACK",nullptr);
163 auto contrkmatch1_crack = Monitored::Scalar<u_int8_t>("ConvTrkMatch1inCRACK",0);
164 auto contrkmatch2_crack = Monitored::Scalar<u_int8_t>("ConvTrkMatch2inCRACK",0);
165
166
167
168 u_int16_t mynp=0;
169 u_int16_t mynpconv = 0;
170 u_int16_t mynpunconv = 0;
171
172 Float_t myet = 0.;
173 Float_t myeta = 0.;
174 Float_t myphi = 0.;
175
176 for (const auto *const p_iter : *photons) {
177
178 bool isGood;
179 if (! p_iter->passSelection(isGood,
m_RecoName)) {
181 break;
182 }
183
184 if(isGood) {
185 mynp++;
186 Float_t myetaloc = p_iter->eta();
189
190 switch(regionloc){
192 break;
194 break;
196 break;
198 ATH_MSG_DEBUG(
"Found a photon out the acceptance region : " << regionloc);
199 break;
200 }
201 }
202 else continue;
203
204 myet = p_iter->pt();
205 myeta = p_iter->eta();
206 myphi = p_iter->phi();
207 et = myet ;
eta = myeta ;
phi = myphi ;
208
209 bool myis_pt_gt_2_5gev = myet > 2500. ;
210 bool myis_pt_gt_4gev = myet > 4000. ;
211 bool myis_pt_gt_20gev = myet > 20000. ;
212
213 is_pt_gt_2_5gev = myis_pt_gt_2_5gev ;
214 is_pt_gt_4gev = myis_pt_gt_4gev ;
215 is_pt_gt_20gev = myis_pt_gt_20gev ;
216
217 is_pt_gt_4gev_barrel = myis_pt_gt_4gev ;
218 is_pt_gt_4gev_endcap = myis_pt_gt_4gev ;
219 is_pt_gt_4gev_crack = myis_pt_gt_4gev ;
220
221 is_pt_gt_2_5gev_barrel = myis_pt_gt_2_5gev ;
222 is_pt_gt_2_5gev_endcap = myis_pt_gt_2_5gev ;
223 is_pt_gt_2_5gev_crack = myis_pt_gt_2_5gev ;
224
225 is_pt_gt_20gev_barrel = myis_pt_gt_20gev ;
226 is_pt_gt_20gev_endcap = myis_pt_gt_20gev ;
227 is_pt_gt_20gev_crack = myis_pt_gt_20gev ;
228
229
230 Float_t mytopoetcone40 = -999.;
233
234 Float_t myptcone20 = -999.;
237
238 Float_t mytime=0.0;
239
240
241 Float_t myehad1 = 0.0;
242 Float_t myecore = 0.0;
243 Float_t myf0 = 0.0;
244 Float_t myf1 = 0.0;
245 Float_t myf2 = 0.0;
246 Float_t myf3 = 0.0;
250 Float_t myre233e237 = 0.0;
251 Float_t myre237e277 = 0.0;
252
255
259
260 if (e237!=0) myre233e237 =
e233 /
e237;
261 if (e277!=0) myre237e277 =
e237 /
e277;
262
263
265 if (aCluster) {
266 mytime = aCluster->
time();
268
269 double ec = aCluster->
et()*cosh(aCluster->
eta());
270 if (ec!=0) myf0 = aCluster->
energyBE(0)/ec;
271 if (ec!=0) myf1 = aCluster->
energyBE(1)/ec;
272 if (ec!=0) myf2 = aCluster->
energyBE(2)/ec;
273 if (ec!=0) myf3 = aCluster->
energyBE(3)/ec;
274
275 }
276
277
278
279
282
283 if (isUnconverted) {
284 mynpunconv++;
285 etconv = -1.;
286 etaconv = -6.;
287 phiconv = -6.;
288 etunconv = myet;
289 etaunconv = myeta;
290 phiunconv = myphi;
291 }
292 else {
293 mynpconv++;
294 etunconv = -1.;
295 etaunconv = -6.;
296 phiunconv = -6.;
297 etconv = myet;
298 etaconv = myeta;
299 phiconv = myphi;
300 }
301
302 is_pt_gt_2_5gevandconv = myis_pt_gt_2_5gev && !isUnconverted ;
303 is_pt_gt_2_5gevandunconv = myis_pt_gt_2_5gev && isUnconverted ;
304
305 is_pt_gt_4gevandconv = myis_pt_gt_4gev && !isUnconverted ;
306 is_pt_gt_4gevandunconv = myis_pt_gt_4gev && isUnconverted ;
307
308 is_pt_gt_20gevandconv = myis_pt_gt_20gev && !isUnconverted ;
309 is_pt_gt_20gevandunconv = myis_pt_gt_20gev && isUnconverted ;
310
312 lbevonphotonsconv = mylb;
313 lbevonphotonsunconv = mylb;
314
315 Float_t myrconv = 0.0;
317
318 Float_t mycontrkmatch1 = 0.0;
320 Float_t mycontrkmatch2 = 0.0;
322
323
325 switch(region){
327 et_barrel = myet ; eta_barrel = myeta ; phi_barrel = myphi ;
328 time_barrel = mytime; ehad1_barrel = myehad1; coreem_barrel = myecore;
329 f0_barrel = myf0; f1_barrel = myf1; f2_barrel = myf2; f3_barrel = myf3; re233e237_barrel = myre233e237; re237e277_barrel = myre237e277;
330 rconv_barrel = myrconv ; convtype_barrel = myconvtype ; contrkmatch1_barrel = mycontrkmatch1 ; contrkmatch2_barrel = mycontrkmatch2 ;
331 fill(
"MonitorPhoton", et_barrel,eta_barrel,phi_barrel, time_barrel, ehad1_barrel,coreem_barrel,
332 f0_barrel,f1_barrel,f2_barrel, f3_barrel,re233e237_barrel,re237e277_barrel,
333 rconv_barrel,convtype_barrel,contrkmatch1_barrel,contrkmatch2_barrel,is_pt_gt_4gev_barrel,is_pt_gt_2_5gev_barrel,is_pt_gt_20gev_barrel);
334 break;
335
337 et_endcap = myet ; eta_endcap = myeta ; phi_endcap = myphi ;
338 time_endcap = mytime; ehad1_endcap = myehad1; coreem_endcap = myecore;
339 f0_endcap = myf0; f1_endcap = myf1; f2_endcap = myf2; f3_endcap = myf3; re233e237_endcap = myre233e237; re237e277_endcap = myre237e277;
340 rconv_endcap = myrconv ; convtype_endcap = myconvtype ; contrkmatch1_endcap = mycontrkmatch1 ; contrkmatch2_endcap = mycontrkmatch2 ;
341 fill(
"MonitorPhoton",et_endcap,eta_endcap,phi_endcap,
342 time_endcap, ehad1_endcap,coreem_endcap,
343 f0_endcap,f1_endcap,f2_endcap,f3_endcap,re233e237_endcap,re237e277_endcap,
344 rconv_endcap,convtype_endcap,contrkmatch1_endcap,contrkmatch2_endcap,is_pt_gt_4gev_endcap,is_pt_gt_2_5gev_endcap,is_pt_gt_20gev_endcap);
345 break;
346
348 et_crack = myet ; eta_crack = myeta ; phi_crack = myphi ;
349 time_crack = mytime; ehad1_crack = myehad1; coreem_crack = myecore;
350 f0_crack = myf0; f1_crack = myf1; f2_crack = myf2; f3_crack = myf3; re233e237_crack = myre233e237; re237e277_crack = myre237e277;
351 rconv_crack = myrconv ; convtype_crack = myconvtype ; contrkmatch1_crack = mycontrkmatch1 ; contrkmatch2_crack = mycontrkmatch2 ;
352 fill(
"MonitorPhoton",et_crack,eta_crack,phi_crack,time_crack, ehad1_crack,coreem_crack,
353 f0_crack,f1_crack,f2_crack,f3_crack,re233e237_crack,re237e277_crack,
354 rconv_crack,convtype_crack,contrkmatch1_crack,contrkmatch2_crack,is_pt_gt_4gev_crack,is_pt_gt_2_5gev_crack,is_pt_gt_20gev_crack);
355 break;
356
358 ATH_MSG_DEBUG(
"found an photon outside the |eta| > 2.47 acceptance");
359 break;
360 }
361
362
363 lb = mylb; lbevonphotonsunconv = mylb ; lbevonphotonsconv = mylb; lbNCandidates = mylb;
364 fill(
"MonitorPhoton",
365 lbevonphotonsconv,lbevonphotonsunconv,
lb,lbNCandidates,
366 et,
eta,
phi,time,ptcone20,topoetcone40,
367 etconv,etaconv,phiconv,
368 etunconv,etaunconv,phiunconv,
369 is_pt_gt_4gev,is_pt_gt_20gev,is_pt_gt_2_5gev,
370 is_pt_gt_2_5gevandconv,is_pt_gt_2_5gevandunconv,
371 is_pt_gt_4gevandconv,is_pt_gt_4gevandunconv,
372 is_pt_gt_20gevandconv,is_pt_gt_20gevandunconv);
373 }
374
376 npconv = mynpconv;
377 npunconv = mynpunconv;
378
379 fill(
"MonitorPhoton",np,npconv,npunconv);
380
381 return StatusCode::SUCCESS;
382}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
float et(const xAOD::jFexSRJetRoI *j)
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
Gaudi::Property< std::string > m_RecoName
Regions GetRegion(Float_t eta) const
SG::ReadHandleKey< xAOD::PhotonContainer > m_ParticleContainerKey
flt_t time() const
Access cluster time.
virtual double eta() const
The pseudorapidity ( ) of the particle.
float energyBE(const unsigned layer) const
Get the energy in one layer of the EM Calo.
@ LAr
The LAr calorimeter.
EventFlagErrorState
States that a given sub-detector could be in.
@ Error
The sub-detector issued an error.
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.
time(flags, cells_name, *args, **kw)
xAOD::EgammaParameters::ConversionType conversionType(const xAOD::Photon *ph)
return the photon conversion type (see EgammaEnums)
float conversionRadius(const xAOD::Vertex *vx)
return the conversion radius or 9999.
@ convMatchDeltaPhi1
difference between the cluster phi and the phi of the first track of the vertex extrapolated to the s...
@ convMatchDeltaPhi2
difference between the cluster phi and the phi of the second track of the vertex extrapolated to the ...
@ unconverted
unconverted photon
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
@ e237
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x7
@ ecore
core energy in em calo E(core) = E0(3x3) + E1(15x2) + E2(5x5) + E3(3x5)
@ ehad1
E leakage into 1st sampling of had calo (CaloSampling::HEC0 + CaloSampling::TileBar0 + CaloSampling::...
@ e233
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x3 (in cell units e...
@ ptcone20
Track isolation.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.