ATLAS Offline Software
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 $
63 #ifndef CALOUTILS_CALOLAYERCALCULATOR_H
64 #define CALOUTILS_CALOLAYERCALCULATOR_H
65 
67 #include "CaloGeoHelpers/CaloSampling.h"
71 
72 #include "GaudiKernel/StatusCode.h"
73 #include <string>
74 
77 
78 class CaloCellContainer;
79 class CaloCell;
80 
82 {
83 public:
86 
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 
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 
246 
250 
253  template <typename CONT, typename RPAR, typename COLL>
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  {
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 
328  double m_eta;
329  double m_phi;
330  double m_deta;
331  double m_dphi;
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>
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
402 {
403  return m_etam;
404 }
405 
406 
411 inline
413 {
414  return m_phim;
415 }
416 
417 
422 inline
424 {
425  return m_etas;
426 }
427 
428 
433 inline
435 {
436  return m_phis;
437 }
438 
439 
444 inline
446 {
447  return m_em;
448 }
449 
450 
456 inline
458 {
459  return m_etamax;
460 }
461 
462 
468 inline
470 {
471  return m_phimax;
472 }
473 
474 
479 inline
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
501 {
502  return it.getParameter();
503 }
504 
505 inline
507 {
508  return it.weight();
509 }
510 
511 
512 inline
514 {
515  return it.weight();
516 }
517 
518 
519 #endif // not CALOUTILS_CALOLAYERCALCULATOR_H
520 
CaloLayerCalculator::Helper::m_s01r
double m_s01r
Definition: CaloLayerCalculator.h:345
CaloClusterKineHelper.h
CaloLayerCalculator::phimr
double phimr() const
Similar as phim, etam, phimax, etamax, but with raw quantities.
Definition: CaloLayerCalculator.h:218
CaloLayerCalculator::Helper::m_calc
CaloLayerCalculator & m_calc
These members hold the values passed to the constructor.
Definition: CaloLayerCalculator.h:327
CaloLayerCalculator::m_phim
double m_phim
Definition: CaloLayerCalculator.h:259
CaloLayerCalculator::reset
void reset()
Internals.
Definition: CaloLayerCalculator.cxx:76
CaloLayerCalculator::resetOnNegativeEnergy
void resetOnNegativeEnergy()
Reset output variables, but not m_em, allowing samplings to be negative.
Definition: CaloLayerCalculator.cxx:98
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
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_dphi
double m_dphi
Definition: CaloLayerCalculator.h:331
CaloLayerCalculator::phimax
double phimax() const
Get maximum value.
Definition: CaloLayerCalculator.h:469
skel.it
it
Definition: skel.GENtoEVGEN.py:423
CaloLayerCalculator::Helper::m_s10r
double m_s10r
Definition: CaloLayerCalculator.h:344
CaloLayerCalculator::Helper::cell
void cell(const CaloCell *cell, double weight)
Accumulate results for another cell.
Definition: CaloLayerCalculator.cxx:190
CaloLayerCalculator::Helper::m_cell_container
const CaloCellContainer * m_cell_container
Definition: CaloLayerCalculator.h:334
CaloLayerCalculator::Helper::m_tofill
xAOD::CaloCluster * m_tofill
Definition: CaloLayerCalculator.h:333
CaloLayerCalculator::phis
double phis() const
Get the RMS size.
Definition: CaloLayerCalculator.h:434
CaloLayerCalculator::m_etas
double m_etas
Definition: CaloLayerCalculator.h:260
CaloDetDescrManager.h
Definition of CaloDetDescrManager.
CaloLayerCalculator::etarmax
double etarmax() const
Definition: CaloLayerCalculator.h:221
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
NavigableIterator
Definition: NavigableIterator.h:24
CaloLayerCalculator::Helper
Helper class for layer variable calculation.
Definition: CaloLayerCalculator.h:286
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
BchCleanup.mgr
mgr
Definition: BchCleanup.py:294
CaloLayerCalculator::phirmax
double phirmax() const
Definition: CaloLayerCalculator.h:220
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
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
CaloLayerCalculator::etam
double etam() const
Data access.
Definition: CaloLayerCalculator.h:401
CaloLayerCalculator::Helper::m_s01
double m_s01
Definition: CaloLayerCalculator.h:340
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloCluster.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
extractSporadic.h
list h
Definition: extractSporadic.py:97
CaloLayerCalculator::get_weight
static double get_weight(Iterator it)
Get the weight from a cell iterator.
Definition: CaloLayerCalculator.h:490
CaloLayerCalculator::m_etamax
double m_etamax
Definition: CaloLayerCalculator.h:263
CaloLayerCalculator::m_phis
double m_phis
Definition: CaloLayerCalculator.h:261
CaloLayerCalculator::m_etamr
double m_etamr
Definition: CaloLayerCalculator.h:268
CaloLayerCalculator::m_phimax
double m_phimax
Definition: CaloLayerCalculator.h:264
CaloLayerCalculator::Helper::m_phi
double m_phi
Definition: CaloLayerCalculator.h:329
CaloLayerCalculator::m_em
double m_em
Definition: CaloLayerCalculator.h:262
CaloLayerCalculator::CaloLayerCalculator
CaloLayerCalculator()
Initialization.
Definition: CaloLayerCalculator.cxx:23
CaloPhiRange.h
CaloPhiRange class declaration.
CaloLayerCalculator::m_etarmax
double m_etarmax
Definition: CaloLayerCalculator.h:270
CaloLayerCalculator::etas
double etas() const
Get the RMS size.
Definition: CaloLayerCalculator.h:423
CaloLayerCalculator::Helper::m_s02
double m_s02
Definition: CaloLayerCalculator.h:341
xAOD::CaloCluster_v1::getCellLinks
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
Definition: CaloCluster_v1.cxx:905
CaloLayerCalculator::etamr
double etamr() const
Definition: CaloLayerCalculator.h:219
CaloLayerCalculator::etamax
double etamax() const
Get maximum value.
Definition: CaloLayerCalculator.h:457
CaloLayerCalculator::Helper::m_deta
double m_deta
Definition: CaloLayerCalculator.h:330
WriteBchToCool.beg
beg
Definition: WriteBchToCool.py:69
CaloLayerCalculator::Helper::m_s20
double m_s20
Definition: CaloLayerCalculator.h:339
CaloLayerCalculator::Helper::m_sampling
CaloSampling::CaloSample m_sampling
Definition: CaloLayerCalculator.h:332
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
CaloLayerCalculator::m_phirmax
double m_phirmax
Definition: CaloLayerCalculator.h:271
CaloLayerCalculator::m_etam
double m_etam
Layer variables.
Definition: CaloLayerCalculator.h:258
CaloLayerCalculator::Helper::m_s10
double m_s10
Definition: CaloLayerCalculator.h:338
CaloLayerCalculator::emax
double emax() const
Get the maximum energy.
Definition: CaloLayerCalculator.h:480
CaloLayerCalculator::m_emax
double m_emax
Definition: CaloLayerCalculator.h:265
h
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
CaloLayerCalculator
Definition: CaloLayerCalculator.h:82
NavigableIterator.h
CaloLayerCalculator::Helper::m_s00
double m_s00
Temporary variables used to accumulate the results.
Definition: CaloLayerCalculator.h:337
CaloLayerCalculator::Helper::m_eta
double m_eta
Definition: CaloLayerCalculator.h:328
CaloLayerCalculator::phim
double phim() const
Get the mean layer value.
Definition: CaloLayerCalculator.h:412
CaloLayerCalculator::m_phimr
double m_phimr
Definition: CaloLayerCalculator.h:269
beamspotnt.calc
calc
Definition: bin/beamspotnt.py:1252
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::em
double em() const
Get the total energy.
Definition: CaloLayerCalculator.h:445