ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Calorimeter
CaloUtils
CaloUtils
CaloLayerCalculator.h
Go to the documentation of this file.
1
// This file's extension implies that it's C, but it's really -*- C++ -*-.
2
3
/*
4
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5
*/
6
7
// $Id: CaloLayerCalculator.h,v 1.1 2006-03-20 17:42:26 ssnyder Exp $
62
63
#ifndef CALOUTILS_CALOLAYERCALCULATOR_H
64
#define CALOUTILS_CALOLAYERCALCULATOR_H
65
66
#include "
CaloDetDescr/CaloDetDescrManager.h
"
67
#include "CaloGeoHelpers/CaloSampling.h"
68
#include "
CaloGeoHelpers/CaloPhiRange.h
"
69
#include "
CaloEvent/CaloClusterCellLink.h
"
70
#include "
Navigation/NavigableIterator.h
"
71
72
#include "GaudiKernel/StatusCode.h"
73
#include <string>
74
75
#include "
xAODCaloEvent/CaloCluster.h
"
76
#include "
xAODCaloEvent/CaloClusterKineHelper.h
"
77
78
class
CaloCellContainer
;
79
class
CaloCell
;
80
81
class
CaloLayerCalculator
82
{
83
public
:
86
92
CaloLayerCalculator
();
93
94
115
template
<
typename
Iterator>
116
void
fill
(
Iterator
beg,
117
Iterator
end,
118
double
eta
,
119
double
phi
,
120
double
deta,
121
double
dphi,
122
CaloSampling::CaloSample
sampling,
123
xAOD::CaloCluster
* tofill = 0);
124
125
144
StatusCode
fill
(
const
CaloDetDescrManager
& mgr,
145
const
CaloCellContainer
* cell_container,
146
double
eta
,
147
double
phi
,
148
double
deta,
149
double
dphi,
150
CaloSampling::CaloSample
sampling,
151
xAOD::CaloCluster
* tofill = 0);
152
153
155
157
162
double
etam
()
const
;
163
164
169
double
phim
()
const
;
170
171
176
double
etas
()
const
;
177
178
183
double
phis
()
const
;
184
185
190
double
em
()
const
;
191
192
198
double
etamax
()
const
;
199
200
206
double
phimax
()
const
;
207
208
213
double
emax
()
const
;
214
218
double
phimr
()
const
{
return
m_phimr
; }
219
double
etamr
()
const
{
return
m_etamr
; }
220
double
phirmax
()
const
{
return
m_phirmax
; }
221
double
etarmax
()
const
{
return
m_etarmax
; }
222
224
private
:
227
229
void
reset
();
230
232
void
resetOnNegativeEnergy
();
233
235
void
resetOnNegativeEnergy
(
double
eta
,
double
phi
);
236
237
240
template
<
typename
Iterator>
241
static
double
get_weight
(
Iterator
it);
242
245
double
get_weight
(
CaloClusterCellLink::const_iterator
it);
246
249
double
get_weight
(
CaloClusterCellLink::iterator
it);
250
253
template
<
typename
CONT,
typename
RPAR,
typename
COLL>
254
double
get_weight
(
NavigableIterator<CONT,RPAR,COLL>
it);
255
256
258
double
m_etam
= 0.0;
// Mean @f$\eta@f$.
259
double
m_phim
= 0.0;
// Mean @f$\phi@f$.
260
double
m_etas
= 0.0;
// RMS @f$\eta@f$.
261
double
m_phis
= 0.0;
// RMS @f$\phi@f$.
262
double
m_em
= 0.0;
// Total energy.
263
double
m_etamax
= 0.0;
// @f$\eta@f$ center of maximum-energy cell.
264
double
m_phimax
= 0.0;
// @f$\phi@f$ center of maximum-energy cell.
265
double
m_emax
= 0.0;
// Energy of maximum-energy cell.
266
267
// Added to cluster in the calorimeter frame
268
double
m_etamr
= 0.0;
// Mean @f$\eta@f$ with raw quantity
269
double
m_phimr
= 0.0;
// Mean @f$\phi@f$ with raw quantity
270
double
m_etarmax
= 0.0;
// @f$\eta_raw@f$ center of maximum-energy cell.
271
double
m_phirmax
= 0.0;
// @f$\phi_raw@f$ center of maximum-energy cell.
272
273
285
struct
Helper
286
{
300
Helper
(
CaloLayerCalculator
& calc,
301
double
eta
,
302
double
phi
,
303
double
deta,
304
double
dphi,
305
CaloSampling::CaloSample
sampling,
306
xAOD::CaloCluster
* tofill,
307
const
CaloCellContainer
* cell_container);
308
309
315
void
cell
(
const
CaloCell
*
cell
,
double
weight);
316
317
323
~Helper
();
324
325
327
CaloLayerCalculator
&
m_calc
;
328
double
m_eta
;
329
double
m_phi
;
330
double
m_deta
;
331
double
m_dphi
;
332
CaloSampling::CaloSample
m_sampling
;
333
xAOD::CaloCluster
*
m_tofill
;
334
const
CaloCellContainer
*
m_cell_container
;
335
337
double
m_s00
;
// energy sum.
338
double
m_s10
;
// eta-weighted energy sum.
339
double
m_s20
;
// eta^2-weighted energy sum.
340
double
m_s01
;
// phi-weighted energy sum.
341
double
m_s02
;
// phi^2-weighted energy sum.
342
343
// Added to cluster in the calorimeter frame
344
double
m_s10r
;
// eta_raw-weighted energy sum.
345
double
m_s01r
;
// phi_raw-weighted energy sum.
346
};
347
friend
struct
Helper
;
349
};
350
351
375
template
<
typename
Iterator>
376
void
CaloLayerCalculator::fill
(
Iterator
beg,
377
Iterator
end,
378
double
eta
,
379
double
phi
,
380
double
deta,
381
double
dphi,
382
CaloSampling::CaloSample
sampling,
383
xAOD::CaloCluster
* tofill
/*= 0*/
)
384
{
385
reset
();
386
const
CaloCellContainer
* cell_container=0;
387
if
(tofill) cell_container=tofill->
getCellLinks
()->
getCellContainer
();
388
if
(beg != end) {
389
Helper
h
(*
this
,
eta
,
phi
, deta, dphi, sampling, tofill, cell_container);
390
for
(; beg != end; ++beg)
391
h
.cell (*beg,
get_weight
(beg));
392
}
393
}
394
395
400
inline
401
double
CaloLayerCalculator::etam
()
const
402
{
403
return
m_etam
;
404
}
405
406
411
inline
412
double
CaloLayerCalculator::phim
()
const
413
{
414
return
m_phim
;
415
}
416
417
422
inline
423
double
CaloLayerCalculator::etas
()
const
424
{
425
return
m_etas
;
426
}
427
428
433
inline
434
double
CaloLayerCalculator::phis
()
const
435
{
436
return
m_phis
;
437
}
438
439
444
inline
445
double
CaloLayerCalculator::em
()
const
446
{
447
return
m_em
;
448
}
449
450
456
inline
457
double
CaloLayerCalculator::etamax
()
const
458
{
459
return
m_etamax
;
460
}
461
462
468
inline
469
double
CaloLayerCalculator::phimax
()
const
470
{
471
return
m_phimax
;
472
}
473
474
479
inline
480
double
CaloLayerCalculator::emax
()
const
481
{
482
return
m_emax
;
483
}
484
485
488
template
<
typename
Iterator>
489
inline
490
double
CaloLayerCalculator::get_weight
(
Iterator
/*it*/
)
491
{
492
return
1;
493
}
494
495
498
template
<
typename
CONT,
typename
RPAR,
typename
COLL>
499
inline
500
double
CaloLayerCalculator::get_weight
(
NavigableIterator<CONT,RPAR,COLL>
it)
501
{
502
return
it.getParameter();
503
}
504
505
inline
506
double
CaloLayerCalculator::get_weight
(
CaloClusterCellLink::const_iterator
it)
507
{
508
return
it.weight();
509
}
510
511
512
inline
513
double
CaloLayerCalculator::get_weight
(
CaloClusterCellLink::iterator
it)
514
{
515
return
it.weight();
516
}
517
518
519
#endif
// not CALOUTILS_CALOLAYERCALCULATOR_H
520
eta
Scalar eta() const
pseudorapidity method
Definition
AmgMatrixBasePlugin.h:83
phi
Scalar phi() const
phi method
Definition
AmgMatrixBasePlugin.h:67
CaloClusterCellLink.h
CaloClusterKineHelper.h
CaloDetDescrManager.h
Definition of CaloDetDescrManager.
CaloPhiRange.h
CaloPhiRange class declaration.
CaloCluster.h
NavigableIterator.h
h
Header file for AthHistogramAlgorithm.
CaloCellContainer
Container class for CaloCell.
Definition
CaloCellContainer.h:55
CaloCell
Data object for each calorimeter readout cell.
Definition
CaloCell.h:57
CaloClusterCellLink::const_iterator
const_iterator to loop over cells belonging to a cluster
Definition
CaloClusterCellLink.h:57
CaloClusterCellLink::iterator
Definition
CaloClusterCellLink.h:126
CaloClusterCellLink::getCellContainer
const CaloCellContainer * getCellContainer() const
Method to access underlying cell container.
Definition
CaloClusterCellLink.h:212
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition
CaloDetDescrManager.h:469
CaloLayerCalculator::etam
double etam() const
Data access.
Definition
CaloLayerCalculator.h:401
CaloLayerCalculator::etamax
double etamax() const
Get maximum value.
Definition
CaloLayerCalculator.h:457
CaloLayerCalculator::get_weight
static double get_weight(Iterator it)
Get the weight from a cell iterator.
Definition
CaloLayerCalculator.h:490
CaloLayerCalculator::m_emax
double m_emax
Definition
CaloLayerCalculator.h:265
CaloLayerCalculator::phirmax
double phirmax() const
Definition
CaloLayerCalculator.h:220
CaloLayerCalculator::m_etarmax
double m_etarmax
Definition
CaloLayerCalculator.h:270
CaloLayerCalculator::m_phim
double m_phim
Definition
CaloLayerCalculator.h:259
CaloLayerCalculator::m_phimax
double m_phimax
Definition
CaloLayerCalculator.h:264
CaloLayerCalculator::fill
void fill(Iterator beg, Iterator end, double eta, double phi, double deta, double dphi, CaloSampling::CaloSample sampling, xAOD::CaloCluster *tofill=0)
Calculate layer variables from cells in a list.
Definition
CaloLayerCalculator.h:376
CaloLayerCalculator::m_em
double m_em
Definition
CaloLayerCalculator.h:262
CaloLayerCalculator::phis
double phis() const
Get the RMS size.
Definition
CaloLayerCalculator.h:434
CaloLayerCalculator::etas
double etas() const
Get the RMS size.
Definition
CaloLayerCalculator.h:423
CaloLayerCalculator::CaloLayerCalculator
CaloLayerCalculator()
Initialization.
Definition
CaloLayerCalculator.cxx:23
CaloLayerCalculator::etamr
double etamr() const
Definition
CaloLayerCalculator.h:219
CaloLayerCalculator::Helper
friend struct Helper
Definition
CaloLayerCalculator.h:347
CaloLayerCalculator::phimax
double phimax() const
Get maximum value.
Definition
CaloLayerCalculator.h:469
CaloLayerCalculator::m_etam
double m_etam
Layer variables.
Definition
CaloLayerCalculator.h:258
CaloLayerCalculator::m_etas
double m_etas
Definition
CaloLayerCalculator.h:260
CaloLayerCalculator::m_etamax
double m_etamax
Definition
CaloLayerCalculator.h:263
CaloLayerCalculator::emax
double emax() const
Get the maximum energy.
Definition
CaloLayerCalculator.h:480
CaloLayerCalculator::etarmax
double etarmax() const
Definition
CaloLayerCalculator.h:221
CaloLayerCalculator::resetOnNegativeEnergy
void resetOnNegativeEnergy()
Reset output variables, but not m_em, allowing samplings to be negative.
Definition
CaloLayerCalculator.cxx:98
CaloLayerCalculator::m_phimr
double m_phimr
Definition
CaloLayerCalculator.h:269
CaloLayerCalculator::m_phis
double m_phis
Definition
CaloLayerCalculator.h:261
CaloLayerCalculator::em
double em() const
Get the total energy.
Definition
CaloLayerCalculator.h:445
CaloLayerCalculator::m_etamr
double m_etamr
Definition
CaloLayerCalculator.h:268
CaloLayerCalculator::m_phirmax
double m_phirmax
Definition
CaloLayerCalculator.h:271
CaloLayerCalculator::reset
void reset()
Internals.
Definition
CaloLayerCalculator.cxx:76
CaloLayerCalculator::phimr
double phimr() const
Similar as phim, etam, phimax, etamax, but with raw quantities.
Definition
CaloLayerCalculator.h:218
CaloLayerCalculator::phim
double phim() const
Get the mean layer value.
Definition
CaloLayerCalculator.h:412
CaloSampling::CaloSample
CaloSample
Definition
Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
Iterator
NavigableIterator
Definition
NavigableIterator.h:24
xAOD::CaloCluster_v1::getCellLinks
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version).
Definition
CaloCluster_v1.cxx:829
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition
Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
CaloLayerCalculator::Helper
Helper class for layer variable calculation.
Definition
CaloLayerCalculator.h:286
CaloLayerCalculator::Helper::m_cell_container
const CaloCellContainer * m_cell_container
Definition
CaloLayerCalculator.h:334
CaloLayerCalculator::Helper::m_sampling
CaloSampling::CaloSample m_sampling
Definition
CaloLayerCalculator.h:332
CaloLayerCalculator::Helper::cell
void cell(const CaloCell *cell, double weight)
Accumulate results for another cell.
Definition
CaloLayerCalculator.cxx:190
CaloLayerCalculator::Helper::m_eta
double m_eta
Definition
CaloLayerCalculator.h:328
CaloLayerCalculator::Helper::m_dphi
double m_dphi
Definition
CaloLayerCalculator.h:331
CaloLayerCalculator::Helper::m_s02
double m_s02
Definition
CaloLayerCalculator.h:341
CaloLayerCalculator::Helper::m_tofill
xAOD::CaloCluster * m_tofill
Definition
CaloLayerCalculator.h:333
CaloLayerCalculator::Helper::Helper
Helper(CaloLayerCalculator &calc, double eta, double phi, double deta, double dphi, CaloSampling::CaloSample sampling, xAOD::CaloCluster *tofill, const CaloCellContainer *cell_container)
Initialize for doing layer variable calculation.
Definition
CaloLayerCalculator.cxx:154
CaloLayerCalculator::Helper::m_s10r
double m_s10r
Definition
CaloLayerCalculator.h:344
CaloLayerCalculator::Helper::m_s00
double m_s00
Temporary variables used to accumulate the results.
Definition
CaloLayerCalculator.h:337
CaloLayerCalculator::Helper::m_deta
double m_deta
Definition
CaloLayerCalculator.h:330
CaloLayerCalculator::Helper::m_s01r
double m_s01r
Definition
CaloLayerCalculator.h:345
CaloLayerCalculator::Helper::m_s20
double m_s20
Definition
CaloLayerCalculator.h:339
CaloLayerCalculator::Helper::~Helper
~Helper()
Calculate the layer variables from the accumulated cells The variables in the parent CaloLayerCalcula...
Definition
CaloLayerCalculator.cxx:244
CaloLayerCalculator::Helper::m_phi
double m_phi
Definition
CaloLayerCalculator.h:329
CaloLayerCalculator::Helper::m_calc
CaloLayerCalculator & m_calc
These members hold the values passed to the constructor.
Definition
CaloLayerCalculator.h:327
CaloLayerCalculator::Helper::m_s01
double m_s01
Definition
CaloLayerCalculator.h:340
CaloLayerCalculator::Helper::m_s10
double m_s10
Definition
CaloLayerCalculator.h:338
Generated on
for ATLAS Offline Software by
1.17.0