|
ATLAS Offline Software
|
Go to the documentation of this file.
27 #include "CaloDetDescr/CaloDetDescrElement.h"
33 m_rMax(rMaxOverStdDev * stdDev),
35 m_allClustersIntegral(
eflowCalo::nRegions, 0.0),
36 m_nUnitCellPerWindowOverCellEtaPhiArea(
eflowCalo::nRegions),
42 double emX0PerUnitLengthToTheMinus3 =
pow(
database.getEmX0PerUnitLength(), -3.0);
43 double hadX0PerUnitLengthToTheMinus3 =
pow(
database.getHadX0PerUnitLength(), -3.0);
47 emX0PerUnitLengthToTheMinus3 :
48 hadX0PerUnitLengthToTheMinus3;
55 double nUnitCellsPerWindow =
M_PI * stdDev * stdDev / (
database.getEtaUnit() *
database.getPhiUnit());
56 std::vector<double> cellEtaWidth =
database.getCellEtaWidth();
57 std::vector<double> cellPhiWidth =
database.getCellPhiWidth();
60 nUnitCellsPerWindow / (cellEtaWidth[
i] * cellPhiWidth[
i]);
65 : m_rMax (originalEflowLayerIntegrator.m_rMax),
66 m_isHLLHC (originalEflowLayerIntegrator.m_isHLLHC),
67 m_allClustersIntegral (originalEflowLayerIntegrator.m_allClustersIntegral),
68 m_nUnitCellPerWindowOverCellEtaPhiArea (originalEflowLayerIntegrator.m_nUnitCellPerWindowOverCellEtaPhiArea),
79 if (
this == &originalEflowLayerIntegrator)
return *
this;
106 if ( fabs(em2Eta) > 2.5 ) em2Eta = 2.49;
110 if ( fabs(em2Eta) > 4.0 ) { em2Eta = 3.99; }
120 std::cerr <<
" eflowLayerIntegrator ERROR: cluster integral sizes do not match" << std::endl;
142 const EventContext& ctx = Gaudi::Hive::currentContext();
184 for (; itCell != itCellEnd; ++itCell) {
195 if (!caloDetDescrElement)
return;
199 if ( caloDetDescrElement->
volume() < 1
e-6 )
return;
204 const double extrapTrackEta = trackCalo.
getEta(
layer);
205 const double extrapTrackPhi = trackCalo.
getPhi(
layer);
211 const double etaWidth = caloDetDescrElement->
deta();
214 const double dEta =
cell->eta() - extrapTrackEta;
237 double maxGradient = -10.0;
246 const double dx = depthArray[depthLayer+1] - xPrev;
247 const double dy = convertedDensity - yPrev;
248 xPrev = depthArray[depthLayer+1];
249 yPrev = convertedDensity;
250 const double gradient =
dy /
dx;
252 if (gradient > maxGradient) {
253 maxGradient = gradient;
float deta() const
cell deta
This class extends the information about a xAOD::CaloCluster.
void addToAllClustersIntegral(const std::vector< double > &clusterIntegral)
static double defaultPhi()
Class that controls the 2D integration.
eflowLayerIntegrator(double stdDev, double error, double rMaxOverStdDev, bool isHLLHC=false)
eflowRecTrack * getTrack()
std::unique_ptr< eflowCellIntegrator< 1 > > m_integratorLookup
const double * calcDepthArray(double eta, double filler=0.0)
This class calculates the LHED (Layer of Highest Energy Density) in a cluster or group of clusters.
const std::vector< double > & getClusterIntegral() const
This class stores a map of calorimeter layers and track parameters (the result of the track extrapola...
const std::vector< double > & getCaloDepthArray() const
This defines the eflowCalo enum, which is used to label calorimeter layers in a simplified scheme whi...
double m_densityConversion[eflowCalo::nRegions]
etaRange
Filling Eta range.
void setCaloDepthArray(const double *depthArray)
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
const_iterator begin() const
const begin method
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
const double * getDepthArray() const
std::vector< double > m_nUnitCellPerWindowOverCellEtaPhiArea
Stores pointers to an eflowRecTrack and an eflowRecCluster.
std::vector< double > m_singleClusterIntegral
void measureNewClus(const xAOD::CaloCluster *clus, const eflowTrackCaloPoints &trackCalo)
This class extends the information about a xAOD::Track.
static J1STLAYER translateCalo(eflowCaloENUM layer)
Bookkeeping of cells that make up a cluster Simplified replacement for CaloCellLink,...
void resetAllClustersIntegralForNewTrack(const eflowTrackCaloPoints &trackCalo)
bool haveLayer(eflowCalo::LAYER layer) const
Description of a calorimeter cluster.
void measureCell(const CaloCell *cell, const eflowTrackCaloPoints &trackCalo)
double getPhi(eflowCalo::LAYER layer) const
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
double getFCAL0eta() const
xAOD::CaloCluster * getCluster()
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
eflowRecCluster * getCluster()
static eflowTrackClusterLink * getInstance(eflowRecTrack *track, eflowRecCluster *cluster, const EventContext &ctx=Gaudi::Hive::currentContext())
float volume() const
cell volume
static const int nRegions
const_iterator end() const
const end method
const eflowTrackCaloPoints & getTrackCaloPoints() const
eflowDepthCalculator m_caloModel
float dphi() const
cell dphi
Stores calorimeter cell eta and phi widths, a X0 per unit length in the EM and HAD calorimeters.
Data object for each calorimeter readout cell.
CaloCell_ID::CaloSample getSampling() const
cell sampling
eflowFirstIntENUM getFirstIntLayer() const
eflowLayerIntegrator & operator=(const eflowLayerIntegrator &originalEflowLayerIntegrator)
void setClusterIntegral(const std::vector< double > &clusterIntegral)
static double defaultEta()
std::vector< double > m_allClustersIntegral
phiRange
Filling Phi ranges.
std::unique_ptr< eflowCellIntegrator< 0 > > m_integrator
double getEta(eflowCalo::LAYER layer) const
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
constexpr int pow(int base, int exp) noexcept
const_iterator to loop over cells belonging to a cluster
static LAYER translateSampl(CaloCell_ID::CaloSample sampl)
void measureCluster(eflowTrackClusterLink *trackClusterLink)
static DEPTHLAYER depthIndex(eflowCaloENUM layer)
eflowCalo::LAYER eflowCaloENUM