ATLAS Offline Software
Loading...
Searching...
No Matches
CaloCalibClusterDecoratorToolDM Class Reference

Decorate clusters with dead-material truth-energy contributions. More...

#include <CaloCalibClusterDecoratorToolDM.h>

Inheritance diagram for CaloCalibClusterDecoratorToolDM:
Collaboration diagram for CaloCalibClusterDecoratorToolDM:

Public Types

using CalibHitIPhiIEtaRange
using CellInfoSet_t = CaloCalibClusterMomentsMaker2::CellInfoSet_t
using ClusInfo_t = CaloCalibClusterMomentsMaker2::ClusInfo_t
using ClusList = CaloCalibClusterMomentsMaker2::ClusList

Public Member Functions

 CaloCalibClusterDecoratorToolDM (const std::string &type, const std::string &name, const IInterface *parent)
virtual StatusCode execute (const EventContext &ctx, xAOD::CaloClusterContainer *theClusColl) const override
 Execute on an entire collection of clusters.
virtual StatusCode initialize () override
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
 DeclareInterfaceID (CaloClusterCollectionProcessor, 1, 0)

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

enum  keys_dm_energy_sharing { kMatchDmOff , kMatchDmLoose , kMatchDmMedium , kMatchDmTight }
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

template<class AddDeadMaterialEnergy>
void accumulateDeadMaterialEnergy (const std::vector< const CaloCalibrationHitContainer * > &v_dmcchc, const xAOD::CaloClusterContainer &theClusColl, const ClusInfo_t &clusInfoVec, const ClusList &clusList, bool useParticleID, AddDeadMaterialEnergy &&addDeadMaterialEnergy) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::WriteDecorHandleKey< xAOD::CaloClusterContainerm_caloClusterWriteDecorHandleKeyNLeadingTruthParticlesDM
Gaudi::Property< unsigned int > m_numTruthParticles
SG::ReadHandleKeyArray< CaloCalibrationHitContainerm_CalibrationHitContainerNames
SG::ReadHandleKeyArray< CaloCalibrationHitContainerm_DMCalibrationHitContainerNames
const CaloCell_IDm_calo_id {nullptr}
const CaloDmDescrManagerm_caloDmDescrManager {nullptr}
int m_n_phi_out {127}
int m_n_eta_out {127}
double m_out_phi_max {M_PI}
double m_out_eta_max {6.0}
double m_rmaxOut [3] {1.0, 0.5, 0.3}
std::array< std::vector< std::vector< CalibHitIPhiIEtaRange > >, 3 > m_i_phi_eta
Gaudi::Property< int > m_MatchDmType
Gaudi::Property< bool > m_useParticleID
Gaudi::Property< float > m_energyMin
Gaudi::Property< float > m_energyMinCalib
Gaudi::Property< float > m_apars_alpha
Gaudi::Property< float > m_apars_r0
std::atomic< bool > m_foundAllContainers {false}
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Decorate clusters with dead-material truth-energy contributions.

The tool mirrors the ENG_CALIB_DEAD_TOT dead-material sharing logic from CaloCalibClusterMomentsMaker2, but keeps the assigned energy separated by truth-particle uniqueID/barcode. The final decoration is therefore a sorted vector of (truth ID, dead-material calibration-hit energy) pairs per cluster.

Definition at line 36 of file CaloCalibClusterDecoratorToolDM.h.

Member Typedef Documentation

◆ CalibHitIPhiIEtaRange

◆ CellInfoSet_t

◆ ClusInfo_t

◆ ClusList

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ keys_dm_energy_sharing

Constructor & Destructor Documentation

◆ CaloCalibClusterDecoratorToolDM()

CaloCalibClusterDecoratorToolDM::CaloCalibClusterDecoratorToolDM ( const std::string & type,
const std::string & name,
const IInterface * parent )

Definition at line 41 of file CaloCalibClusterDecoratorToolDM.cxx.

45 : AthAlgTool(type, name, parent)
46{
47 declareInterface<CaloClusterCollectionProcessor>(this);
48
49 for (int im = 0; im < 3; ++im) {
50 m_i_phi_eta[im].resize(m_n_eta_out);
51 }
52}
AthAlgTool()
Default constructor:
std::array< std::vector< std::vector< CalibHitIPhiIEtaRange > >, 3 > m_i_phi_eta

Member Function Documentation

◆ accumulateDeadMaterialEnergy()

template<class AddDeadMaterialEnergy>
void CaloCalibClusterDecoratorToolDM::accumulateDeadMaterialEnergy ( const std::vector< const CaloCalibrationHitContainer * > & v_dmcchc,
const xAOD::CaloClusterContainer & theClusColl,
const ClusInfo_t & clusInfoVec,
const ClusList & clusList,
bool useParticleID,
AddDeadMaterialEnergy && addDeadMaterialEnergy ) const
inlineprivate

Definition at line 131 of file CaloCalibClusterDecoratorToolDM.h.

138 {
139 for (const CaloCalibrationHitContainer* dmcchc : v_dmcchc) {
140 for (const CaloCalibrationHit* hit : *dmcchc) {
141 const Identifier myId = hit->cellID();
142 if (!m_calo_id->is_lar_dm(myId) && !m_calo_id->is_tile_dm(myId)) {
143 continue;
144 }
145
146 const CaloDmDescrElement* myCDDE = m_caloDmDescrManager->get_element(myId);
147 if (!myCDDE) {
148 continue;
149 }
150
152 if (useParticleID) {
154 }
155
156 const int jeO = static_cast<int>(std::floor(m_n_eta_out * (myCDDE->eta() / m_out_eta_max)));
157 if (jeO < -m_n_eta_out || jeO >= m_n_eta_out) {
158 continue;
159 }
160
161 int jpO = static_cast<int>(std::floor(m_n_phi_out * (myCDDE->phi() / m_out_phi_max)));
162 if (jpO < -m_n_phi_out) {
163 jpO += 2 * m_n_phi_out;
164 }
165 if (jpO >= m_n_phi_out) {
166 jpO -= 2 * m_n_phi_out;
167 }
168
169 const int nDmArea = m_caloDmDescrManager->get_dm_area(myId);
170 const CaloDmRegion* dmRegion = m_caloDmDescrManager->get_dm_region(myId);
171 if (!dmRegion) {
172 continue;
173 }
174
175 std::vector<int> hitClusIndex;
176 std::vector<double> hitClusEffEnergy;
177 hitClusIndex.reserve(theClusColl.size());
178 hitClusEffEnergy.reserve(theClusColl.size());
179 double hitClusNorm = 0.0;
180
181 const std::vector<int>& matchingClusters =
182 clusList[(jpO + m_n_phi_out) * (2 * m_n_eta_out + 1) + jeO + m_n_eta_out];
183
184 for (int iClus : matchingClusters) {
185 const xAOD::CaloCluster* theCluster = theClusColl.at(iClus);
186 const auto& clusInfo = clusInfoVec[iClus];
187 auto pos = clusInfo.engCalibParticle.find(uniqueID);
188 if (pos == clusInfo.engCalibParticle.end()) {
189 continue;
190 }
191
192 const double engClusTruthUniqueIDCalib = pos->second.engTot;
193 if (engClusTruthUniqueIDCalib <= m_energyMinCalib || theCluster->e() <= m_energyMin) {
194 continue;
195 }
196
197 double sum_smp_energy = 0.0;
198 for (unsigned int i_smp = 0; i_smp < dmRegion->m_CaloSampleNeighbours.size(); ++i_smp) {
199 const CaloSampling::CaloSample nsmp =
200 static_cast<CaloSampling::CaloSample>(dmRegion->m_CaloSampleNeighbours[i_smp]);
201 if ((dmRegion->m_CaloSampleEtaMin[i_smp] - 0.5) <= theCluster->eta() &&
202 theCluster->eta() <= (dmRegion->m_CaloSampleEtaMax[i_smp] + 0.5)) {
203 sum_smp_energy += pos->second.engSmp[nsmp];
204 }
205 }
206 if (sum_smp_energy <= 0.0) {
207 continue;
208 }
209
210 double phi_diff = myCDDE->phi() - theCluster->phi();
211 if (phi_diff <= -M_PI) {
212 phi_diff += 2. * M_PI;
213 }
214 else if (phi_diff > M_PI) {
215 phi_diff -= 2. * M_PI;
216 }
217 const double eta_diff = myCDDE->eta() - theCluster->eta();
218 const float distance = std::sqrt(eta_diff * eta_diff + phi_diff * phi_diff);
219 const double effEner = std::pow(sum_smp_energy, m_apars_alpha.value()) * std::exp(-distance / m_apars_r0.value());
220
221 hitClusIndex.push_back(iClus);
222 hitClusEffEnergy.push_back(effEner);
223 hitClusNorm += effEner;
224 }
225
226 if (hitClusNorm <= 0.0) {
227 continue;
228 }
229
230 const double inv_hitClusNorm = 1.0 / hitClusNorm;
231 for (std::size_t i = 0; i < hitClusIndex.size(); ++i) {
232 const int iClus = hitClusIndex[i];
233 const double dm_weight = hitClusEffEnergy[i] * inv_hitClusNorm;
234 addDeadMaterialEnergy(iClus, uniqueID, nDmArea, hit->energyTotal() * dm_weight);
235 }
236 }
237 }
238 }
#define M_PI
CaloCalibrationHitContainer
std::vector< short > m_CaloSampleNeighbours
std::vector< float > m_CaloSampleEtaMin
std::vector< float > m_CaloSampleEtaMax
const T * at(size_type n) const
Access an element, as an rvalue.
size_type size() const noexcept
Returns the number of elements in the collection.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
int uniqueID(const T &p)
constexpr int UNDEFINED_ID
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ DeclareInterfaceID()

CaloClusterCollectionProcessor::DeclareInterfaceID ( CaloClusterCollectionProcessor ,
1 ,
0  )
inherited

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode CaloCalibClusterDecoratorToolDM::execute ( const EventContext & ctx,
xAOD::CaloClusterContainer * collection ) const
overridevirtual

Execute on an entire collection of clusters.

Parameters
collectionThe container of clusters. param ctx The event context.

Implements CaloClusterCollectionProcessor.

Definition at line 74 of file CaloCalibClusterDecoratorToolDM.cxx.

77{
78 SG::WriteDecorHandle<xAOD::CaloClusterContainer,
79 std::vector<std::pair<int, double> > >
80 caloClusterWriteDecorHandleNLeadingTruthParticlesDM(
82
83 bool foundAllContainers(true);
84 std::vector<const CaloCalibrationHitContainer*> v_cchc;
85 std::vector<const CaloCalibrationHitContainer*> v_dmcchc;
86
87 for (const SG::ReadHandleKey<CaloCalibrationHitContainer>& key :
89 SG::ReadHandle<CaloCalibrationHitContainer> cchc(key, ctx);
90 if (!cchc.isValid()) {
92 ATH_MSG_ERROR("SG does not contain calibration hit container " << key.key());
93 }
94 foundAllContainers = false;
95 }
96 else {
97 v_cchc.push_back(cchc.cptr());
98 }
99 }
100
101 for (const SG::ReadHandleKey<CaloCalibrationHitContainer>& key :
103 SG::ReadHandle<CaloCalibrationHitContainer> dmcchc(key, ctx);
104 if (!dmcchc.isValid()) {
106 ATH_MSG_ERROR("SG does not contain DM calibration hit container " << key.key());
107 }
108 foundAllContainers = false;
109 }
110 else {
111 v_dmcchc.push_back(dmcchc.cptr());
112 }
113 }
114
115 if (!m_foundAllContainers && foundAllContainers) {
117 }
118
119 if (!foundAllContainers) {
120 return StatusCode::SUCCESS;
121 }
122
123 ClusInfo_t clusInfoVec(theClusColl->size());
124
125 CellInfoSet_t cellInfo;
127
128 unsigned int nHitsTotal = 0;
129 unsigned int nHitsWithoutParticleUID = 0;
131 v_cchc,
132 cellInfo,
133 *m_calo_id,
134 clusInfoVec,
135 nHitsTotal,
136 nHitsWithoutParticleUID,
138 [this]() {
139 ATH_MSG_ERROR("Invalid uniqueID detected - this sample cannot be properly analysed.");
140 });
141
142 bool useParticleID = m_useParticleID;
143 if (m_useParticleID && (nHitsTotal == nHitsWithoutParticleUID)) {
144 ATH_MSG_INFO("Calibration hits do not have ParticleUID, ids of particle-caused hits are always 0. Continuing without ParticleID machinery.");
145 useParticleID = false;
146 }
147
148 std::array<ClusList, 3> clusLists;
149 const std::array<bool, 3> doClusterLists{{
153
154 for (unsigned int ii = 0; ii < 3; ++ii) {
155 if (doClusterLists[ii]) {
156 clusLists[ii].resize((2 * m_n_phi_out + 1) * (2 * m_n_eta_out + 1));
157 }
158 }
159
160 std::array<ClusList*, 3> clusListPtrs{{&clusLists[0], &clusLists[1], &clusLists[2]}};
162 *theClusColl,
163 clusInfoVec,
169 doClusterLists,
170 clusListPtrs);
171
172 const ClusList* pClusList = nullptr;
174 pClusList = &clusLists[0];
175 }
176 else if (m_MatchDmType == kMatchDmMedium) {
177 pClusList = &clusLists[1];
178 }
179 else if (m_MatchDmType == kMatchDmTight) {
180 pClusList = &clusLists[2];
181 }
182
183 std::vector<std::unordered_map<int, double> > engCalibDeadByTruth(theClusColl->size());
184
185 if (pClusList != nullptr) {
187 v_dmcchc,
188 *theClusColl,
189 clusInfoVec,
190 *pClusList,
191 useParticleID,
192 [&engCalibDeadByTruth](int iClus, int uniqueID, int /*nDmArea*/, double energy) {
193 engCalibDeadByTruth[iClus][uniqueID] += energy;
194 });
195 }
196
197 // Match ENG_CALIB_DEAD_TOT semantics: add the in-cluster dead-like samplings
198 // that MomentsMaker2 adds on top of the assigned DMA_ALL dead-material energy.
199 for (std::size_t iClus = 0; iClus < clusInfoVec.size(); ++iClus) {
200 const auto& particleMap = clusInfoVec[iClus].engCalibParticle;
201 for (const auto& [uniqueID, calibEnergy] : particleMap) {
202 const double inClusterDeadEnergy =
203 calibEnergy.engSmp[CaloSampling::PreSamplerB]
204 + calibEnergy.engSmp[CaloSampling::PreSamplerE]
205 + calibEnergy.engSmp[CaloSampling::TileGap3];
206 if (inClusterDeadEnergy != 0.0) {
207 engCalibDeadByTruth[iClus][uniqueID] += inClusterDeadEnergy;
208 }
209 }
210 }
211
212 int clusIdx = -1;
213 for (const xAOD::CaloCluster* thisCaloCluster : *theClusColl) {
214 ++clusIdx;
215 const std::unordered_map<int, double>& truthMap = engCalibDeadByTruth[clusIdx];
216 if (!truthMap.empty()) {
217 caloClusterWriteDecorHandleNLeadingTruthParticlesDM(*thisCaloCluster) =
218 makeSortedTruthPairs(truthMap, m_numTruthParticles);
219 }
220 }
221
222 return StatusCode::SUCCESS;
223}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
SG::ReadHandleKeyArray< CaloCalibrationHitContainer > m_DMCalibrationHitContainerNames
SG::WriteDecorHandleKey< xAOD::CaloClusterContainer > m_caloClusterWriteDecorHandleKeyNLeadingTruthParticlesDM
CaloCalibClusterMomentsMaker2::ClusList ClusList
SG::ReadHandleKeyArray< CaloCalibrationHitContainer > m_CalibrationHitContainerNames
Gaudi::Property< unsigned int > m_numTruthParticles
CaloCalibClusterMomentsMaker2::CellInfoSet_t CellInfoSet_t
CaloCalibClusterMomentsMaker2::ClusInfo_t ClusInfo_t
void accumulateDeadMaterialEnergy(const std::vector< const CaloCalibrationHitContainer * > &v_dmcchc, const xAOD::CaloClusterContainer &theClusColl, const ClusInfo_t &clusInfoVec, const ClusList &clusList, bool useParticleID, AddDeadMaterialEnergy &&addDeadMaterialEnergy) const
static void accumulateClusterCalibHits(const std::vector< const CaloCalibrationHitContainer * > &v_cchc, const CellInfoSet_t &cellInfo, const CaloCell_ID &calo_id, ClusInfo_t &clusInfoVec, unsigned int &nHitsTotal, unsigned int &nHitsWithoutParticleUID, bool useParticleID, InvalidUniqueIdHandler &&invalidUniqueIdHandler)
Accumulate calibration-hit energy inside clusters.
static void buildOutOfClusterClusterLists(const xAOD::CaloClusterContainer &theClusColl, const ClusInfo_t &clusInfoVec, int n_phi_out, int n_eta_out, double out_phi_max, double out_eta_max, const std::array< std::vector< std::vector< CalibHitIPhiIEtaRange > >, 3 > &i_phi_eta, const std::array< bool, 3 > &doOutOfCluster, const std::array< ClusList *, 3 > &clusLists)
Build lookup lists of clusters for out-of-cluster energy sharing.
static void buildCellInfoMap(const xAOD::CaloClusterContainer &theClusColl, CellInfoSet_t &cellInfo)
Build a map of calorimeter cells contributing to clusters.
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ initialize()

StatusCode CaloCalibClusterDecoratorToolDM::initialize ( )
overridevirtual

Definition at line 54 of file CaloCalibClusterDecoratorToolDM.cxx.

55{
57 ATH_CHECK(detStore()->retrieve(m_calo_id, "CaloCell_ID"));
59
67
70
71 return StatusCode::SUCCESS;
72}
#define ATH_CHECK
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
static void initializeOutOfClusterDistanceTables(int n_phi_out, int n_eta_out, double out_phi_max, double out_eta_max, const double(&rmaxOut)[3], std::array< std::vector< std::vector< CalibHitIPhiIEtaRange > >, 3 > &i_phi_eta)
Precompute eta/phi lookup tables for quick out-of-cluster hit association to clusters.
static const CaloDmDescrManager * instance()

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_apars_alpha

Gaudi::Property<float> CaloCalibClusterDecoratorToolDM::m_apars_alpha
private
Initial value:
{
this,
"AparsAlpha",
0.5,
"Power-law exponent for dead-material sharing effective energy"}

Definition at line 118 of file CaloCalibClusterDecoratorToolDM.h.

118 {
119 this,
120 "AparsAlpha",
121 0.5,
122 "Power-law exponent for dead-material sharing effective energy"};

◆ m_apars_r0

Gaudi::Property<float> CaloCalibClusterDecoratorToolDM::m_apars_r0
private
Initial value:
{
this,
"AparsR0",
0.2,
"Distance scale for dead-material sharing effective energy"}

Definition at line 124 of file CaloCalibClusterDecoratorToolDM.h.

124 {
125 this,
126 "AparsR0",
127 0.2,
128 "Distance scale for dead-material sharing effective energy"};

◆ m_CalibrationHitContainerNames

SG::ReadHandleKeyArray<CaloCalibrationHitContainer> CaloCalibClusterDecoratorToolDM::m_CalibrationHitContainerNames
private
Initial value:
{
this,
"CalibrationHitContainerNames",
{},
"Calibration-hit containers inside the calorimeter volume"}

Definition at line 72 of file CaloCalibClusterDecoratorToolDM.h.

72 {
73 this,
74 "CalibrationHitContainerNames",
75 {},
76 "Calibration-hit containers inside the calorimeter volume"};

◆ m_calo_id

const CaloCell_ID* CaloCalibClusterDecoratorToolDM::m_calo_id {nullptr}
private

Definition at line 84 of file CaloCalibClusterDecoratorToolDM.h.

84{nullptr};

◆ m_caloClusterWriteDecorHandleKeyNLeadingTruthParticlesDM

SG::WriteDecorHandleKey<xAOD::CaloClusterContainer> CaloCalibClusterDecoratorToolDM::m_caloClusterWriteDecorHandleKeyNLeadingTruthParticlesDM
private
Initial value:
{
this,
"CaloClusterWriteDecorHandleKey_NLeadingTruthParticlesDM",
"CaloTopoClustersNew.calclus_NLeadingTruthParticleBarcodeEnergyPairs_DM",
"Dead-material truth-particle barcode/energy decoration"}

Definition at line 60 of file CaloCalibClusterDecoratorToolDM.h.

60 {
61 this,
62 "CaloClusterWriteDecorHandleKey_NLeadingTruthParticlesDM",
63 "CaloTopoClustersNew.calclus_NLeadingTruthParticleBarcodeEnergyPairs_DM",
64 "Dead-material truth-particle barcode/energy decoration"};

◆ m_caloDmDescrManager

const CaloDmDescrManager* CaloCalibClusterDecoratorToolDM::m_caloDmDescrManager {nullptr}
private

Definition at line 85 of file CaloCalibClusterDecoratorToolDM.h.

85{nullptr};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_DMCalibrationHitContainerNames

SG::ReadHandleKeyArray<CaloCalibrationHitContainer> CaloCalibClusterDecoratorToolDM::m_DMCalibrationHitContainerNames
private
Initial value:
{
this,
"DMCalibrationHitContainerNames",
{},
"Dead-material calibration-hit containers"}

Definition at line 78 of file CaloCalibClusterDecoratorToolDM.h.

78 {
79 this,
80 "DMCalibrationHitContainerNames",
81 {},
82 "Dead-material calibration-hit containers"};

◆ m_energyMin

Gaudi::Property<float> CaloCalibClusterDecoratorToolDM::m_energyMin
private
Initial value:
{
this,
"EnergyMin",
200.0 * CLHEP::MeV,
"Minimum cluster energy used in dead-material sharing"}

Definition at line 106 of file CaloCalibClusterDecoratorToolDM.h.

106 {
107 this,
108 "EnergyMin",
109 200.0 * CLHEP::MeV,
110 "Minimum cluster energy used in dead-material sharing"};

◆ m_energyMinCalib

Gaudi::Property<float> CaloCalibClusterDecoratorToolDM::m_energyMinCalib
private
Initial value:
{
this,
"EnergyMinCalib",
20.0 * CLHEP::MeV,
"Minimum in-cluster calibration energy used in dead-material sharing"}

Definition at line 112 of file CaloCalibClusterDecoratorToolDM.h.

112 {
113 this,
114 "EnergyMinCalib",
115 20.0 * CLHEP::MeV,
116 "Minimum in-cluster calibration energy used in dead-material sharing"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_foundAllContainers

std::atomic<bool> CaloCalibClusterDecoratorToolDM::m_foundAllContainers {false}
mutableprivate

Definition at line 240 of file CaloCalibClusterDecoratorToolDM.h.

240{false};

◆ m_i_phi_eta

std::array<std::vector<std::vector<CalibHitIPhiIEtaRange> >, 3> CaloCalibClusterDecoratorToolDM::m_i_phi_eta
private

Definition at line 92 of file CaloCalibClusterDecoratorToolDM.h.

◆ m_MatchDmType

Gaudi::Property<int> CaloCalibClusterDecoratorToolDM::m_MatchDmType
private
Initial value:
{
this,
"MatchDmType",
"Dead-material matching type: 0=off, 1=loose, 2=medium, 3=tight"}

Definition at line 94 of file CaloCalibClusterDecoratorToolDM.h.

94 {
95 this,
96 "MatchDmType",
98 "Dead-material matching type: 0=off, 1=loose, 2=medium, 3=tight"};

◆ m_n_eta_out

int CaloCalibClusterDecoratorToolDM::m_n_eta_out {127}
private

Definition at line 88 of file CaloCalibClusterDecoratorToolDM.h.

88{127};

◆ m_n_phi_out

int CaloCalibClusterDecoratorToolDM::m_n_phi_out {127}
private

Definition at line 87 of file CaloCalibClusterDecoratorToolDM.h.

87{127};

◆ m_numTruthParticles

Gaudi::Property<unsigned int> CaloCalibClusterDecoratorToolDM::m_numTruthParticles
private
Initial value:
{
this,
"NumTruthParticles",
100,
"Number of truth particles per CaloCluster/PFO for which to store dead-material calibration-hit energy"}

Definition at line 66 of file CaloCalibClusterDecoratorToolDM.h.

66 {
67 this,
68 "NumTruthParticles",
69 100,
70 "Number of truth particles per CaloCluster/PFO for which to store dead-material calibration-hit energy"};

◆ m_out_eta_max

double CaloCalibClusterDecoratorToolDM::m_out_eta_max {6.0}
private

Definition at line 90 of file CaloCalibClusterDecoratorToolDM.h.

90{6.0};

◆ m_out_phi_max

double CaloCalibClusterDecoratorToolDM::m_out_phi_max {M_PI}
private

Definition at line 89 of file CaloCalibClusterDecoratorToolDM.h.

89{M_PI};

◆ m_rmaxOut

double CaloCalibClusterDecoratorToolDM::m_rmaxOut[3] {1.0, 0.5, 0.3}
private

Definition at line 91 of file CaloCalibClusterDecoratorToolDM.h.

91{1.0, 0.5, 0.3};

◆ m_useParticleID

Gaudi::Property<bool> CaloCalibClusterDecoratorToolDM::m_useParticleID
private
Initial value:
{
this,
"UseParticleID",
true,
"Use calibration-hit particle uniqueID for dead-material truth attribution"}

Definition at line 100 of file CaloCalibClusterDecoratorToolDM.h.

100 {
101 this,
102 "UseParticleID",
103 true,
104 "Use calibration-hit particle uniqueID for dead-material truth attribution"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: