ATLAS Offline Software
Public Types | Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
CaloSwGap_g3 Class Reference

#include <CaloSwGap_g3.h>

Inheritance diagram for CaloSwGap_g3:
Collaboration diagram for CaloSwGap_g3:

Public Types

typedef ToolWithConstants base_class
 Shorthand for derived classes. More...
 
using Context = CaloUtils::ToolConstantsContext
 Convenient alias for the Context type. More...
 
using Constant = ToolConstant< T >
 Alias for the Constant type. More...
 

Public Member Functions

virtual StatusCode initialize () override
 Standard Gaudi initialize method. More...
 
virtual void makeCorrection (const Context &myctx, xAOD::CaloCluster *cluster) const override
 
virtual StatusCode setCaloCellContainerName (const std::string &name) override
 Change the name of the CaloCellContainer used by this tool. More...
 
virtual void setsample (xAOD::CaloCluster *cluster, CaloSampling::CaloSample sampling, float em, float etam, float phim, float emax, float etamax, float phimax, float etas, float phis) const
 
virtual void setenergy (xAOD::CaloCluster *cluster, float energy) const
 
StatusCode execute (const EventContext &ctx, xAOD::CaloCluster *cluster) const override
 
virtual StatusCode execute (const EventContext &ctx, xAOD::CaloCluster *cluster) const=0
 Execute on a single cluster. More...
 
virtual StatusCode execute (xAOD::CaloCluster *cluster) final
 Execute on a single cluster. More...
 
virtual StatusCode execute (const EventContext &ctx, xAOD::CaloClusterContainer *collection) const
 Execute on an entire collection of clusters. More...
 
Context context (const EventContext &ctx) const
 Create a Context object. More...
 
virtual void writeConstants (std::ostream &stream, const std::string &name, const EventContext &ctx) const
 Dump method (for debugging) More...
 
virtual StatusCode mergeConstants (CaloRec::ToolConstants &out, const EventContext &ctx) const override
 Merge our constants into out with the proper prefix. More...
 
virtual int toolVersion () const
 Return the version number for this tool. More...
 
virtual const std::string & toolType () const
 Return the name of the type of this tool. More...
 

Protected Attributes

SG::ReadCondHandleKey< CaloDetDescrManagerm_caloMgrKey {this,"CaloDetDescrManager", "CaloDetDescrManager"}
 

Private Member Functions

 CaloSwGap_g3 ()=delete
 

Private Attributes

Constant< float > m_etamin_crack { this, "etamin_crack", "" }
 
Constant< float > m_etamax_crack { this, "etamax_crack", "" }
 
Constant< CxxUtils::Array< 1 > > m_scint_weight { this, "scint_weight", "" }
 
Constant< CxxUtils::Array< 1 > > m_correction { this, "correction", "" }
 
SG::ReadHandleKey< CaloCellContainerm_cells_name { this, "cells_name", "AllCalo", "" }
 Property: The name of the container in which to look to find tile cells. More...
 
SG::ReadCondHandleKey< CaloRec::ToolConstantsm_DBHandle
 Handle to a ToolConstants conditions object. More...
 
StringProperty m_prefix
 Prefix for finding our constants within the ToolConstants object. More...
 
ToolWithConstantsImpl m_impl
 Internal implementation object. More...
 
Constant< int > m_order
 Used to fix the ordering of tools when we're initializing from COOL based on a hierarchical tag. More...
 
Constant< bool > m_isdummy
 If true, then this is a dummy tool that should not be executed. More...
 

Detailed Description

Definition at line 34 of file CaloSwGap_g3.h.

Member Typedef Documentation

◆ base_class

typedef ToolWithConstants CaloUtils::ToolWithConstants< CaloClusterProcessor >::base_class
inherited

Shorthand for derived classes.

Definition at line 443 of file ToolWithConstants.h.

◆ Constant

using CaloUtils::ToolWithConstants< CaloClusterProcessor >::Constant = ToolConstant<T>
inherited

Alias for the Constant type.

Definition at line 456 of file ToolWithConstants.h.

◆ Context

Convenient alias for the Context type.

Definition at line 451 of file ToolWithConstants.h.

Constructor & Destructor Documentation

◆ CaloSwGap_g3()

CaloSwGap_g3::CaloSwGap_g3 ( )
privatedelete

Member Function Documentation

◆ context()

Context CaloUtils::ToolWithConstants< CaloClusterProcessor >::context ( const EventContext &  ctx) const
inherited

Create a Context object.

This can then be passed to Constant::operator().

◆ execute() [1/4]

StatusCode CaloClusterCorrection::execute ( const EventContext &  ctx,
xAOD::CaloCluster cluster 
) const
overrideinherited

Definition at line 53 of file CaloClusterCorrection.cxx.

55 {
56  this->makeCorrection (context(ctx), cluster);
57 
58 #if 0
59  ATH_MSG_DEBUG( " ...... e, et " << cluster->e() << " " << cluster->et() << endmsg);
60  ATH_MSG_DEBUG( " ...... eta, etaBE, etaSmp " << cluster->eta() << " " << cluster->etaBE(2)
61  << " " << cluster->etaSample(CaloSampling::EMB1)
62  << " " << cluster->etaSample(CaloSampling::EMB2)
63  << " " << cluster->etaSample(CaloSampling::EMB3) << endmsg);
64  ATH_MSG_DEBUG( " ...... phi, phiBE, phiSmp " << cluster->phi() << " " << cluster->phiBE(2)
65  << " " << cluster->phiSample(CaloSampling::EMB1)
66  << " " << cluster->phiSample(CaloSampling::EMB2)
67  << " " << cluster->phiSample(CaloSampling::EMB3) << endmsg);
68 #endif
69 
70  return StatusCode::SUCCESS;
71 }

◆ execute() [2/4]

virtual StatusCode CaloClusterProcessor::execute
inherited

Execute on a single cluster.

Parameters
clusterThe cluster to process.
ctxThe event context.

◆ execute() [3/4]

StatusCode CaloClusterProcessor::execute
inherited

Execute on an entire collection of clusters.

Parameters
collectionThe container of clusters.

This will iterate over all the clusters in collection and call execute on each one individually.

Parameters
collectionThe container of clusters.
ctxThe event context.

This will iterate over all the clusters in collection and call execute on each one individually.

Definition at line 73 of file CaloClusterProcessor.cxx.

59 {
60  xAOD::CaloClusterContainer::iterator beg = collection->begin();
61  xAOD::CaloClusterContainer::iterator end = collection->end();
62  for (; beg != end; ++beg) {
63  CHECK( execute (ctx, *beg) );
64  }
65  return StatusCode::SUCCESS;
66 }

◆ execute() [4/4]

StatusCode CaloClusterProcessor::execute
finalinherited

Execute on a single cluster.

Parameters
clusterThe cluster to process. (deprecated)

Definition at line 63 of file CaloClusterProcessor.cxx.

44 {
45  return execute (Gaudi::Hive::currentContext(), cluster);
46 }

◆ initialize()

StatusCode CaloSwGap_g3::initialize ( )
overridevirtual

Standard Gaudi initialize method.

Reimplemented from CaloClusterCorrection.

Definition at line 54 of file CaloSwGap_g3.cxx.

55 {
58  return StatusCode::SUCCESS;
59 }

◆ makeCorrection()

void CaloSwGap_g3::makeCorrection ( const Context myctx,
xAOD::CaloCluster cluster 
) const
overridevirtual

Implements CaloClusterCorrection.

Definition at line 62 of file CaloSwGap_g3.cxx.

64 {
65  float eta = cluster->eta();
66  float phi = cluster->phi();
67 
68  float aeta = fabs(eta);
69 
70  const float etamin_crack = m_etamin_crack (myctx);
71  const float etamax_crack = m_etamax_crack (myctx);
72  if (aeta < etamin_crack || aeta > etamax_crack)
73  return; // no correction required
74 
75  const CxxUtils::Array<1> scint_weight = m_scint_weight (myctx);
77  assert (scint_weight.size() == correction.size());
78  if (correction.size() == 0) return;
79 
81 
82  double eh_scint = 0;
83  if(cc.isValid())
84  {
86  cc->beginConstCalo(CaloCell_ID::TILE);
88  cc->endConstCalo(CaloCell_ID::TILE);
89 
90  for ( ; f_cell!=l_cell; ++f_cell)
91  {
92  const CaloCell* cell = (*f_cell) ;
93 
94  int inum = cell->caloDDE()->getSampling();
95 
96  if (CaloSampling::TileGap3 == inum ) {
97  double phic = cell->phi();
98  double etac = cell->eta();
99  if (phic-phi < -pi) phic = phic + twopi;
100  if (phic-phi > pi) phic = phic - twopi;
101  if (etac >= eta-deta && etac <= eta+deta) {
102  if (phic >= phi-dphi && phic <= phi+dphi) {
103  eh_scint += cell->e();
104  }
105  }
106  }
107  }
108  }
109 
110  // make the correction
111  double granularity = (etamax_crack - etamin_crack)/correction.size();
112  int ind = static_cast<int> ((aeta - etamin_crack)/granularity);
113 
114 // Scintillator energy calibration
115  eh_scint = eh_scint * scint_weight[ind];
116 
117 //Correct for normalization factor total cluster energy and samplings energies
118  double energy = (cluster->e())*correction[ind];
119  setenergy(cluster,energy);
120 
121 // Add the scintillator energy to the cluster and correct the total energy
122  energy += eh_scint * correction[ind];
123  cluster->setE(energy);
124 }

◆ mergeConstants()

virtual StatusCode CaloUtils::ToolWithConstants< CaloClusterProcessor >::mergeConstants ( CaloRec::ToolConstants out,
const EventContext &  ctx 
) const
overridevirtualinherited

Merge our constants into out with the proper prefix.

Parameters
[out]outObject to receive our constants.
ctxEvent context.

◆ setCaloCellContainerName()

StatusCode CaloSwGap_g3::setCaloCellContainerName ( const std::string &  name)
overridevirtual

Change the name of the CaloCellContainer used by this tool.

Parameters
nameThe new container name.

Implements ISetCaloCellContainerName.

Definition at line 132 of file CaloSwGap_g3.cxx.

134 {
135  return this->setProperty (StringProperty ("cells_name", name));
136 }

◆ setenergy()

void CaloClusterCorrection::setenergy ( xAOD::CaloCluster cluster,
float  energy 
) const
virtualinherited

Definition at line 94 of file CaloClusterCorrection.cxx.

95 {
96  if (cluster->e() == 0) {
97  if (energy != 0)
98  REPORT_MESSAGE (MSG::WARNING)
99  << "Attempt to rescale zero-energy cluster to energy " << energy
100  << " ignored.";
101  return;
102  }
103 
104  float correction = energy/cluster->e();
105  cluster->setE(energy);
106 
107  // also correct individual sampling energies:
108 
109  for (int iSample=CaloSampling::PreSamplerB;
110  iSample < CaloSampling::Unknown;
111  ++iSample)
112  {
113  CaloSampling::CaloSample sampling=static_cast<CaloSampling::CaloSample>(iSample);
114  if (cluster->hasSampling (sampling)) {
115  double e = cluster->eSample(sampling);
116  cluster->setEnergy(sampling,e*correction) ;
117  }
118  }
119 }

◆ setsample()

void CaloClusterCorrection::setsample ( xAOD::CaloCluster cluster,
CaloSampling::CaloSample  sampling,
float  em,
float  etam,
float  phim,
float  emax,
float  etamax,
float  phimax,
float  etas,
float  phis 
) const
virtualinherited

Definition at line 74 of file CaloClusterCorrection.cxx.

79 {
80  cluster->setEnergy(sampling, em);
81  cluster->setEta(sampling, etam);
82  cluster->setPhi(sampling, phim);
83 
84  cluster->setEmax(sampling,emax);
85  cluster->setEtamax(sampling,etamax);
86  cluster->setPhimax(sampling,phimax);
87 
88  cluster->setEtasize(sampling, etas);
89  cluster->setPhisize(sampling, phis);
90 }

◆ toolType()

virtual const std::string& CaloUtils::ToolWithConstants< CaloClusterProcessor >::toolType ( ) const
virtualinherited

Return the name of the type of this tool.

A saved set of constants includes both the C++ class name and a version number. Normally, the class name is taken from the Gaudi type() method, but that may be changed by overriding this method. This can be used, for example, when there are tools with distinct C++ classes but which are yet similar enough to combine together.

◆ toolVersion()

virtual int CaloUtils::ToolWithConstants< CaloClusterProcessor >::toolVersion ( ) const
virtualinherited

Return the version number for this tool.

A saved set of constants includes both the C++ class name and a version number. The idea is that the version number can be bumped whenever there's a backwards-incompatible change; this gives some protection against trying to use an old version of a tool with an incompatible newer set of constants.

If you want a tool to have a version number, override this method. Otherwise, it will default to a version number of 0.

◆ writeConstants()

virtual void CaloUtils::ToolWithConstants< CaloClusterProcessor >::writeConstants ( std::ostream &  stream,
const std::string &  name,
const EventContext &  ctx 
) const
virtualinherited

Dump method (for debugging)

Parameters
streamOstream to which to write.
nameName to go in output
ctxEvent context.

Member Data Documentation

◆ m_caloMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> CaloClusterCorrection::m_caloMgrKey {this,"CaloDetDescrManager", "CaloDetDescrManager"}
protectedinherited

Definition at line 119 of file CaloClusterCorrection.h.

◆ m_cells_name

SG::ReadHandleKey<CaloCellContainer> CaloSwGap_g3::m_cells_name { this, "cells_name", "AllCalo", "" }
private

Property: The name of the container in which to look to find tile cells.

Definition at line 83 of file CaloSwGap_g3.h.

◆ m_correction

Constant<CxxUtils::Array<1> > CaloSwGap_g3::m_correction { this, "correction", "" }
private

Definition at line 80 of file CaloSwGap_g3.h.

◆ m_DBHandle

Handle to a ToolConstants conditions object.

Definition at line 527 of file ToolWithConstants.h.

◆ m_etamax_crack

Constant<float> CaloSwGap_g3::m_etamax_crack { this, "etamax_crack", "" }
private

Definition at line 78 of file CaloSwGap_g3.h.

◆ m_etamin_crack

Constant<float> CaloSwGap_g3::m_etamin_crack { this, "etamin_crack", "" }
private

Definition at line 77 of file CaloSwGap_g3.h.

◆ m_impl

ToolWithConstantsImpl CaloUtils::ToolWithConstants< CaloClusterProcessor >::m_impl
privateinherited

Internal implementation object.

Definition at line 535 of file ToolWithConstants.h.

◆ m_isdummy

Constant<bool> CaloUtils::ToolWithConstants< CaloClusterProcessor >::m_isdummy
privateinherited

If true, then this is a dummy tool that should not be executed.

This is used for the case of reading from COOL using hierarchical tags: we need to have such tags associated with some object in each folder, regardless of whether or not the correction from that folder is actually used. [Every folder that IOVDbSvc knows about at configuration time needs to have a valid object for the configured tag, else IOVDbSvc will raise a fatal error. But we don't know at configuration time which folders we're actually going to need, so we gotta configure all of them.]

Definition at line 553 of file ToolWithConstants.h.

◆ m_order

Constant<int> CaloUtils::ToolWithConstants< CaloClusterProcessor >::m_order
privateinherited

Used to fix the ordering of tools when we're initializing from COOL based on a hierarchical tag.

Tools should be executed in order of increasing m_order.

Definition at line 540 of file ToolWithConstants.h.

◆ m_prefix

StringProperty CaloUtils::ToolWithConstants< CaloClusterProcessor >::m_prefix
privateinherited

Prefix for finding our constants within the ToolConstants object.

Definition at line 531 of file ToolWithConstants.h.

◆ m_scint_weight

Constant<CxxUtils::Array<1> > CaloSwGap_g3::m_scint_weight { this, "scint_weight", "" }
private

Definition at line 79 of file CaloSwGap_g3.h.


The documentation for this class was generated from the following files:
xAOD::CaloCluster_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: CaloCluster_v1.cxx:256
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
test_pyathena.eta
eta
Definition: test_pyathena.py:10
xAOD::CaloCluster_v1::setPhisize
bool setPhisize(const CaloSample sampling, const float phiSize)
Set the cluster size in for a given sampling.
Definition: CaloCluster_v1.cxx:624
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
CxxUtils::Array::size
unsigned int size(unsigned int dim=0) const
Return the size of the array along one dimension.
CaloClusterCorrection::setenergy
virtual void setenergy(xAOD::CaloCluster *cluster, float energy) const
Definition: CaloClusterCorrection.cxx:94
xAOD::CaloCluster_v1::et
double et() const
Definition: CaloCluster_v1.h:856
CaloSwGap_g3::m_etamax_crack
Constant< float > m_etamax_crack
Definition: CaloSwGap_g3.h:78
xAOD::CaloCluster_v1::phiBE
float phiBE(const unsigned layer) const
Get the phi in one layer of the EM Calo.
Definition: CaloCluster_v1.cxx:680
xAOD::CaloCluster_v1::setEnergy
bool setEnergy(const CaloSample sampling, const float e)
Set energy for a given sampling. Returns false if the sample isn't part of the cluster.
Definition: CaloCluster_v1.cxx:526
CaloSwGap_g3::m_etamin_crack
Constant< float > m_etamin_crack
Definition: CaloSwGap_g3.h:77
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
xAOD::CaloCluster_v1::setEmax
bool setEmax(const CaloSample sampling, const float eMax)
Set the Energy of the cell with the highest energy in a particular sampling.
Definition: CaloCluster_v1.cxx:571
pi
#define pi
Definition: TileMuonFitter.cxx:65
CaloClusterCorrection::initialize
virtual StatusCode initialize() override
Initialize method.
Definition: CaloClusterCorrection.cxx:47
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
xAOD::CaloCluster_v1::etaSample
float etaSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
Definition: CaloCluster_v1.cxx:532
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
tools.zlumi_mc_cf.correction
def correction(mu, runmode, campaign, run=None)
Definition: zlumi_mc_cf.py:4
xAOD::CaloCluster_v1::etaBE
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
Definition: CaloCluster_v1.cxx:644
xAOD::CaloCluster_v1::setE
void setE(flt_t)
Definition: CaloCluster_v1.cxx:375
xAOD::CaloCluster_v1::setPhimax
bool setPhimax(const CaloSample sampling, const float phiMax)
Set the phi of the cell with the highest energy in a particular sampling.
Definition: CaloCluster_v1.cxx:597
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
xAOD::CaloCluster_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: CaloCluster_v1.cxx:251
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloSwGap_g3::m_scint_weight
Constant< CxxUtils::Array< 1 > > m_scint_weight
Definition: CaloSwGap_g3.h:79
CxxUtils::Array< 1 >
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
CaloCell_Base_ID::TILE
@ TILE
Definition: CaloCell_Base_ID.h:46
xAOD::CaloCluster_v1::phiSample
float phiSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
Definition: CaloCluster_v1.cxx:547
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
twopi
constexpr double twopi
Definition: VertexPointEstimator.cxx:16
WriteBchToCool.beg
beg
Definition: WriteBchToCool.py:69
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
CaloUtils::ToolWithConstants< CaloClusterProcessor >::context
Context context(const EventContext &ctx) const
Create a Context object.
REPORT_MESSAGE
#define REPORT_MESSAGE(LVL)
Report a message.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:365
CaloClusterCorrection::makeCorrection
virtual void makeCorrection(const Context &myctx, xAOD::CaloCluster *) const =0
xAOD::CaloCluster_v1::eSample
float eSample(const CaloSample sampling) const
Definition: CaloCluster_v1.cxx:521
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
CaloSwGap_g3::m_correction
Constant< CxxUtils::Array< 1 > > m_correction
Definition: CaloSwGap_g3.h:80
xAOD::CaloCluster_v1::setPhi
bool setPhi(const CaloSample sampling, const float phi)
Set in a given sampling. Returns false if the sample isn't part of the cluster.
Definition: CaloCluster_v1.cxx:556
xAOD::CaloCluster_v1::setEtamax
bool setEtamax(const CaloSample sampling, const float etaMax)
Set the eta of the cell with the highest energy in a particular sampling.
Definition: CaloCluster_v1.cxx:584
xAOD::CaloCluster_v1::setEtasize
bool setEtasize(const CaloSample sampling, const float etaSize)
Set the cluster size in for a given sampling.
Definition: CaloCluster_v1.cxx:611
CaloSwGap_g3::m_cells_name
SG::ReadHandleKey< CaloCellContainer > m_cells_name
Property: The name of the container in which to look to find tile cells.
Definition: CaloSwGap_g3.h:84
xAOD::CaloCluster_v1::setEta
bool setEta(const CaloSample sampling, const float eta)
Set in a given sampling. Returns false if the sample isn't part of the cluster.
Definition: CaloCluster_v1.cxx:541
xAOD::CaloCluster_v1::hasSampling
bool hasSampling(const CaloSample s) const
Checks if certain smapling contributes to cluster.
Definition: CaloCluster_v1.h:890
CaloClusterCorrection::execute
StatusCode execute(const EventContext &ctx, xAOD::CaloCluster *cluster) const override
Definition: CaloClusterCorrection.cxx:53
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
EgEfficiencyCorr_testFixedInput.etas
list etas
Definition: EgEfficiencyCorr_testFixedInput.py:9
checkFileSG.ind
list ind
Definition: checkFileSG.py:118
python.handimod.cc
int cc
Definition: handimod.py:523