|
ATLAS Offline Software
|
Go to the documentation of this file.
60 std::cout <<
"ERROR attempt to fill a cluster from different cell containers\n";
61 return StatusCode::FAILURE;
70 eta,
phi, deta, dphi, sampling, tofill);
72 return StatusCode::SUCCESS;
168 m_sampling (sampling),
170 m_cell_container (cell_container),
193 if (
cell->caloDDE()->getSampling() == m_sampling) {
194 double etac =
cell->eta();
195 double phic =
cell->phi();
196 double etar =
cell->caloDDE()->eta_raw();
197 double phir =
cell->caloDDE()->phi_raw();
205 if (etar >= m_eta-m_deta/2. && etar <= m_eta+m_deta/2.) {
206 if (dphir >= -m_dphi/2. && dphir <= m_dphi/2.) {
211 if (ene > m_calc.m_emax) {
212 m_calc.m_etamax = etac;
213 m_calc.m_phimax = phic;
216 m_calc.m_etarmax = etar;
217 m_calc.m_phirmax = phir;
223 m_s20 += ene*etac*etac;
225 m_s02 += ene*dphic*dphic;
232 m_tofill->addCell(m_cell_container->findIndex(
cell->caloDDE()->calo_hash()),
weight);
261 double s1 = m_s01/m_s00;
263 m_calc.m_phis = m_s02/m_s00 -
s1*
s1;
266 m_calc.m_etam = m_s10/m_s00;
267 m_calc.m_etas = m_s20/m_s00 - m_calc.m_etam*m_calc.m_etam;
270 m_calc.m_etamr = m_s10r/m_s00;
277 if (std::abs (m_calc.m_etamr - m_eta) > m_deta ||
278 std::abs (m_calc.m_etam) > 10 ||
281 m_calc.resetOnNegativeEnergy(m_eta,m_phi);
286 m_calc.resetOnNegativeEnergy(m_eta,m_phi);
295 if (m_calc.m_etas > 0.) m_calc.m_etas = sqrt(m_calc.m_etas);
296 if (m_calc.m_phis > 0.) m_calc.m_phis = sqrt (m_calc.m_phis);
CaloLayerCalculator & m_calc
These members hold the values passed to the constructor.
This class defines the phi convention for Calorimeters.
list_iterator begin() const
void resetOnNegativeEnergy()
Reset output variables, but not m_em, allowing samplings to be negative.
Scalar phi() const
phi method
void select(double eta, double phi, double deta, double dphi)
Scalar eta() const
pseudorapidity method
~Helper()
Calculate the layer variables from the accumulated cells The variables in the parent CaloLayerCalcula...
void cell(const CaloCell *cell, double weight)
Accumulate results for another cell.
list_iterator end() const
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.
Description of a calorimeter cluster.
const CaloCellContainer * getCellContainer() const
Method to access underlying cell container.
::StatusCode StatusCode
StatusCode definition for legacy code.
CaloLayerCalculator()
Initialization.
static double fix(double phi)
const CaloClusterCellLink * getCellLinks() const
Get a pointer to the CaloClusterCellLink object (const version)
Container class for CaloCell.
double m_etam
Layer variables.
This class provides the client interface for accessing the detector description information common to...
Data object for each calorimeter readout cell.
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.
static double diff(double phi1, double phi2)
simple phi1 - phi2 calculation, but result is fixed to respect range.
Calculate total energy, position, etc. for a given layer of a cluster.