ATLAS Offline Software
eflowLayerIntegrator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef EFLOWLAYERINTEGRATOR_H
6 #define EFLOWLAYERINTEGRATOR_H
7 
8 /********************************************************************
9 
10 NAME: eflowLayerIntegrator.h
11 PACKAGE: offline/Reconstruction/eflowRec
12 
13 AUTHORS: M.Hodgkinson, R Duxfield (based on R.Duxfields Root package)
14 CREATED: 18th Aug, 2005
15 
16 ********************************************************************/
17 
18 #include <vector>
19 #include "eflowCaloRegions.h"
20 #include "eflowDepthCalculator.h"
21 #include "eflowRec/eflowUtil.h"
23 
24 class CaloCell;
25 class eflowRecCluster;
26 class eflowRecTrack;
29 
30 template <int expType> class eflowCellIntegrator;
31 
36 
37  public:
38 
39  eflowLayerIntegrator(double stdDev, double error, double rMaxOverStdDev, bool isHLLHC = false);
40  eflowLayerIntegrator(const eflowLayerIntegrator& originalEflowLayerIntegrator);
41  eflowLayerIntegrator& operator=(const eflowLayerIntegrator& originalEflowLayerIntegrator);
42 
44 
45  void measureNewClus(const xAOD::CaloCluster* clus, const eflowTrackCaloPoints& trackCalo);
46  void measureNewClus(eflowTrackClusterLink* trackClusterLink);
47  void measureNewClus(const std::vector<eflowRecCluster*>& efRecClusters, eflowRecTrack* track);
48  void measureNewClus(const std::vector<xAOD::CaloCluster*>& clusVec, const eflowTrackCaloPoints& trackCalo);
49 
51 
52  private:
54  void addToAllClustersIntegral(const std::vector<double>& clusterIntegral);
55 
56  void measureCluster(eflowTrackClusterLink* trackClusterLink);
57  void measureCluster(const xAOD::CaloCluster* clus, const eflowTrackCaloPoints& trackCalo);
58  void measureCell(const CaloCell* cell, const eflowTrackCaloPoints& trackCalo);
59 
60  double m_rMax;
61 
62  /* Defines whether we are in HLLHC (Run4) setup or not (Runs 1,2 or 3) */
63  bool m_isHLLHC;
64 
65  std::vector<double> m_allClustersIntegral;
66  std::vector<double> m_singleClusterIntegral;
67 
69 
71 
73 
74  std::unique_ptr<eflowCellIntegrator<0> > m_integrator;
75  std::unique_ptr<eflowCellIntegrator<1> > m_integratorLookup;
76 };
77 
78 #endif
eflowRecCluster
This class extends the information about a xAOD::CaloCluster.
Definition: eflowRecCluster.h:40
eflowCaloRegions.h
eflowLayerIntegrator::addToAllClustersIntegral
void addToAllClustersIntegral(const std::vector< double > &clusterIntegral)
Definition: eflowLayerIntegrator.cxx:116
eflowCellIntegrator
Class that controls the 2D integration.
Definition: eflowCellIntegrator.h:154
eflowLayerIntegrator::eflowLayerIntegrator
eflowLayerIntegrator(double stdDev, double error, double rMaxOverStdDev, bool isHLLHC=false)
Definition: eflowLayerIntegrator.cxx:32
eflowLayerIntegrator::m_integratorLookup
std::unique_ptr< eflowCellIntegrator< 1 > > m_integratorLookup
Definition: eflowLayerIntegrator.h:75
eflowUtil.h
eflowLayerIntegrator
This class calculates the LHED (Layer of Highest Energy Density) in a cluster or group of clusters.
Definition: eflowLayerIntegrator.h:35
eflowTrackCaloPoints
This class stores a map of calorimeter layers and track parameters (the result of the track extrapola...
Definition: eflowTrackCaloPoints.h:30
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
eflowLayerIntegrator::m_densityConversion
double m_densityConversion[eflowCalo::nRegions]
Definition: eflowLayerIntegrator.h:70
eflowLayerIntegrator::m_isHLLHC
bool m_isHLLHC
Definition: eflowLayerIntegrator.h:63
eflowLayerIntegrator::m_nUnitCellPerWindowOverCellEtaPhiArea
std::vector< double > m_nUnitCellPerWindowOverCellEtaPhiArea
Definition: eflowLayerIntegrator.h:72
eflowLayerIntegrator::m_singleClusterIntegral
std::vector< double > m_singleClusterIntegral
Definition: eflowLayerIntegrator.h:66
eflowLayerIntegrator::measureNewClus
void measureNewClus(const xAOD::CaloCluster *clus, const eflowTrackCaloPoints &trackCalo)
Definition: eflowLayerIntegrator.cxx:154
eflowRecTrack
This class extends the information about a xAOD::Track.
Definition: eflowRecTrack.h:45
eflowLayerIntegrator::resetAllClustersIntegralForNewTrack
void resetAllClustersIntegralForNewTrack(const eflowTrackCaloPoints &trackCalo)
Definition: eflowLayerIntegrator.cxx:99
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
eflowLayerIntegrator::measureCell
void measureCell(const CaloCell *cell, const eflowTrackCaloPoints &trackCalo)
Definition: eflowLayerIntegrator.cxx:193
CaloCluster.h
eflowLayerIntegrator::m_rMax
double m_rMax
Definition: eflowLayerIntegrator.h:60
eflowCalo::nRegions
static const int nRegions
Definition: eflowCaloRegions.h:45
eflowDepthCalculator.h
eflowLayerIntegrator::m_caloModel
eflowDepthCalculator m_caloModel
Definition: eflowLayerIntegrator.h:68
eflowLayerIntegrator::~eflowLayerIntegrator
~eflowLayerIntegrator()
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
eflowDepthCalculator
The class calculates the depth of each layer, in interaction lengths, for a given EM2 eta.
Definition: eflowDepthCalculator.h:27
eflowLayerIntegrator::getFirstIntLayer
eflowFirstIntENUM getFirstIntLayer() const
Definition: eflowLayerIntegrator.cxx:230
eflowLayerIntegrator::operator=
eflowLayerIntegrator & operator=(const eflowLayerIntegrator &originalEflowLayerIntegrator)
Definition: eflowLayerIntegrator.cxx:78
eflowLayerIntegrator::m_allClustersIntegral
std::vector< double > m_allClustersIntegral
Definition: eflowLayerIntegrator.h:65
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
eflowLayerIntegrator::m_integrator
std::unique_ptr< eflowCellIntegrator< 0 > > m_integrator
Definition: eflowLayerIntegrator.h:74
error
Definition: IImpactPoint3dEstimator.h:70
eflowLayerIntegrator::measureCluster
void measureCluster(eflowTrackClusterLink *trackClusterLink)
Definition: eflowLayerIntegrator.cxx:160
eflowFirstIntRegions::J1STLAYER
J1STLAYER
Definition: eflowCaloRegions.h:58