|
ATLAS Offline Software
|
This class calculates the LHED (Layer of Highest Energy Density) in a cluster or group of clusters.
More...
#include <eflowLayerIntegrator.h>
This class calculates the LHED (Layer of Highest Energy Density) in a cluster or group of clusters.
This is calculated using an integral over the eta-phi enegry density in each calorimeter layer using 2D Gaussian Weights, and makes use of eflowCellIntegrator to do the integral over each calorimeter cell.
Definition at line 35 of file eflowLayerIntegrator.h.
◆ eflowLayerIntegrator() [1/2]
eflowLayerIntegrator::eflowLayerIntegrator |
( |
double |
stdDev, |
|
|
double |
error, |
|
|
double |
rMaxOverStdDev, |
|
|
bool |
isHLLHC = false |
|
) |
| |
Definition at line 32 of file eflowLayerIntegrator.cxx.
33 m_rMax(rMaxOverStdDev * stdDev),
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]);
◆ eflowLayerIntegrator() [2/2]
◆ ~eflowLayerIntegrator()
eflowLayerIntegrator::~eflowLayerIntegrator |
( |
| ) |
|
|
default |
◆ addToAllClustersIntegral()
void eflowLayerIntegrator::addToAllClustersIntegral |
( |
const std::vector< double > & |
clusterIntegral | ) |
|
|
private |
Definition at line 116 of file eflowLayerIntegrator.cxx.
120 std::cerr <<
" eflowLayerIntegrator ERROR: cluster integral sizes do not match" << std::endl;
◆ getFirstIntLayer()
Definition at line 230 of file eflowLayerIntegrator.cxx.
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;
◆ measureCell()
Definition at line 193 of file eflowLayerIntegrator.cxx.
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;
◆ measureCluster() [1/2]
◆ measureCluster() [2/2]
◆ measureNewClus() [1/4]
◆ measureNewClus() [2/4]
◆ measureNewClus() [3/4]
◆ measureNewClus() [4/4]
◆ operator=()
◆ resetAllClustersIntegralForNewTrack()
Definition at line 99 of file eflowLayerIntegrator.cxx.
106 if ( fabs(em2Eta) > 2.5 ) em2Eta = 2.49;
110 if ( fabs(em2Eta) > 4.0 ) { em2Eta = 3.99; }
◆ m_allClustersIntegral
std::vector<double> eflowLayerIntegrator::m_allClustersIntegral |
|
private |
◆ m_caloModel
◆ m_densityConversion
◆ m_integrator
◆ m_integratorLookup
◆ m_isHLLHC
bool eflowLayerIntegrator::m_isHLLHC |
|
private |
◆ m_nUnitCellPerWindowOverCellEtaPhiArea
std::vector<double> eflowLayerIntegrator::m_nUnitCellPerWindowOverCellEtaPhiArea |
|
private |
◆ m_rMax
double eflowLayerIntegrator::m_rMax |
|
private |
◆ m_singleClusterIntegral
std::vector<double> eflowLayerIntegrator::m_singleClusterIntegral |
|
private |
The documentation for this class was generated from the following files:
float deta() const
cell deta
This class extends the information about a xAOD::CaloCluster.
void addToAllClustersIntegral(const std::vector< double > &clusterIntegral)
static double defaultPhi()
eflowRecTrack * getTrack()
std::unique_ptr< eflowCellIntegrator< 1 > > m_integratorLookup
const double * calcDepthArray(double eta, double filler=0.0)
const std::vector< double > & getClusterIntegral() const
const std::vector< double > & getCaloDepthArray() const
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
std::vector< double > m_singleClusterIntegral
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.
CaloCell_ID::CaloSample getSampling() const
cell sampling
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