ATLAS Offline Software
Loading...
Searching...
No Matches
Ringer::CaloStripsRingsBuilder Class Reference

#include <CaloStripsRingsBuilder.h>

Inheritance diagram for Ringer::CaloStripsRingsBuilder:
Collaboration diagram for Ringer::CaloStripsRingsBuilder:

Public Member Functions

std::size_t nRingSets () const override
const SG::WriteHandleKey< xAOD::CaloRingsContainer > & crContName () const override
const SG::WriteHandleKey< xAOD::RingSetContainer > & rsContName () const 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
RawCaloStripsBuilder ctors and dtors:
 CaloStripsRingsBuilder (const std::string &type, const std::string &name, const IInterface *parent)
 Default constructor.
 ~CaloStripsRingsBuilder ()
 Destructor.
virtual StatusCode initialize () override
 Tool main methods:
virtual StatusCode finalize () override
 finalize method
virtual StatusCode preExecute (xAOD::CaloRingsContainer *crCont, xAOD::RingSetContainer *rsCont, const std::size_t nReserve=0) override
 method for working on containers
virtual StatusCode execute (const xAOD::IParticle &particle, ElementLink< xAOD::CaloRingsContainer > &clRingsLink) override
 build CaloRings for IParticle
virtual StatusCode execute (const xAOD::CaloCluster &cluster, ElementLink< xAOD::CaloRingsContainer > &clRingsLink) override
 build CaloRings for CaloCluster
const xAOD::RingSetConf::RawConfCollectionrawConf () override
 Extra methods:
bool useShowerShapeBarycenter () override
 Retrieve whether it was set used shower shape barycenter.

Static Public Member Functions

static const InterfaceID & interfaceID ()
 AlgTool interface methods.

Protected Member Functions

virtual StatusCode buildRingSet (const xAOD::RingSetConf::RawConf &rawConf, const AtlasGeoPoint &seed, xAOD::RingSet *rs) override
 main method where the strips are build
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.

Protected Attributes

std::size_t m_axis
 Tool props (python configurables):
bool m_doEtaAxesDivision
 This can be set True to divide in two the eta axes.
bool m_doPhiAxesDivision
 This can be set True to divide in two the phi axes.
bool m_doTransverseEnergy = false
SG::WriteHandleKey< xAOD::CaloRingsContainerm_crContName
 Tool props (python configurables):
SG::WriteHandleKey< xAOD::RingSetContainerm_rsContName
 Name of RingSetContainer on Event StoreGate.
SG::ReadHandleKey< CaloCellContainerm_cellsContName
 Name of CaloCellContainer.
Gaudi::Property< std::vector< float > > m_etaWidth
 Width of the ring in eta.
Gaudi::Property< std::vector< float > > m_phiWidth
 Width of the ring in phi.
Gaudi::Property< float > m_cellMaxDEtaDist
 Maximum cell distance in eta to seed.
Gaudi::Property< float > m_cellMaxDPhiDist
 Maximum cell distance in phi to seed.
Gaudi::Property< std::vector< unsigned int > > m_nRings
 Number of rings in a ringset.
Gaudi::Property< float > m_minEnergy
 Minimum particle energy to build rings (GeV).
Gaudi::Property< std::vector< int > > m_layers
 Calorimeter layers in each ringset.
Gaudi::Property< std::vector< unsigned int > > m_nLayers
 Number of calorimeter layers in each ringset.
Gaudi::Property< bool > m_useShowShapeBarycenter
 Switch to use shower barycenter seed for each RingSets.
SG::ReadCondHandleKey< CaloDetDescrManagerm_caloMgrKey {this, "CaloDetDescrManager", "CaloDetDescrManager"}

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>
template<typename T>
StatusCode executeTemp (const T &input, ElementLink< xAOD::CaloRingsContainer > &crEL)
 Tool private methods:

Private Attributes

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
xAOD::RingSetContainerm_rsCont
 Tool props (non configurables):
xAOD::CaloRingsContainerm_crCont
 Create and hold CaloRingsContainer for each event.
xAOD::RingSetConf::RawConfCollection m_rsRawConfCol
 holds each RingSet configuration (filled at initialize)
AtlasGeoPoint m_lastValidSeed
 last valid RingSet seed
size_t m_nRingSets
 hold the number of RingSets we are building for each CaloRings
static const CaloPhiRange m_phiHelper
 used for phi wrap-around
StatusCode getRingSetSeed (const xAOD::RingSetConf::RawConf &conf, const xAOD::CaloCluster &cluster, AtlasGeoPoint &seed)
 Fill RingSet seed for CaloCluster.
static StatusCode getRingSetSeed (const xAOD::RingSetConf::RawConf &, const xAOD::IParticle &part, AtlasGeoPoint &seed)
 Fill RingSet seed for IParticle.

Detailed Description

Definition at line 14 of file CaloStripsRingsBuilder.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ CaloStripsRingsBuilder()

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

Default constructor.

Definition at line 26 of file CaloStripsRingsBuilder.cxx.

29 : CaloRingsBuilder(type,name,parent)
30{
31
32 declareInterface<ICaloRingsBuilder>(this);
33 declareProperty("Axis", m_axis=0, "Which axis to use when building the strips");
34 declareProperty("doEtaAxesDivision", m_doEtaAxesDivision = false, "Eta Axes can be divide in two.");
35 declareProperty("doPhiAxesDivision", m_doPhiAxesDivision = false, "Phi Axes can be divide in two.");
36}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
CaloRingsBuilder(const std::string &type, const std::string &name, const IInterface *parent)
Default constructor.
bool m_doPhiAxesDivision
This can be set True to divide in two the phi axes.
std::size_t m_axis
Tool props (python configurables):
bool m_doEtaAxesDivision
This can be set True to divide in two the eta axes.

◆ ~CaloStripsRingsBuilder()

Ringer::CaloStripsRingsBuilder::~CaloStripsRingsBuilder ( )
default

Destructor.

Member Function Documentation

◆ buildRingSet()

StatusCode Ringer::CaloStripsRingsBuilder::buildRingSet ( const xAOD::RingSetConf::RawConf & rawConf,
const AtlasGeoPoint & seed,
xAOD::RingSet * rs )
overrideprotectedvirtual

main method where the strips are build

NOTE: Please note that RingSets are the strip sets

Reimplemented from Ringer::CaloRingsBuilder.

Definition at line 95 of file CaloStripsRingsBuilder.cxx.

99{
100 const auto nStrips = rawConf.nRings;
101 int midPoint = nStrips/2;
102
103 SG::ReadHandle<CaloCellContainer> cellsCont(m_cellsContName);
104 if(!cellsCont.isValid()) {
105 ATH_MSG_FATAL("Failed to retrieve "<< m_cellsContName.key());
106 return StatusCode::FAILURE;
107 }
108
109 SG::ReadCondHandle<CaloDetDescrManager> caloMgrHandle{m_caloMgrKey};
110 const CaloDetDescrManager* caloMgr=*caloMgrHandle;
111 CaloCellList cells(caloMgr, cellsCont.ptr() );
112
113 std::function<double(const CaloCell*)> calcDelta;
114 if (m_axis){
115 calcDelta = [&rawConf, &seed](const CaloCell* cell){
116 return CaloPhiRange::diff(seed.phi(), cell->phi())/rawConf.phiWidth;
117 };
118 } else {
119 calcDelta = [&rawConf, &seed](const CaloCell* cell){
120 return (seed.eta() - cell->eta())/rawConf.etaWidth;
121 };
122 }
123 // loop over cells
124 for ( const int layer : rawConf.layers) {
125 cells.select(seed.eta(), seed.phi(), m_cellMaxDEtaDist, m_cellMaxDPhiDist, layer );
126 for ( const CaloCell *cell : cells ) {
127 float deltaPhi = CaloPhiRange::diff(cell->phi(), seed.phi());
128 bool phiPositive = deltaPhi > 0;
129 const auto delta = calcDelta( cell );
130 int idx =copysign(static_cast<int>(std::floor( delta + .5)),delta);
131 unsigned int stripIdx(0);
132
133 if(!phiPositive){
134 stripIdx = midPoint - (idx*2);
135 if (stripIdx>100000){stripIdx = 0;}
136 }else{
137 stripIdx = midPoint - (idx*2 + 1);
138 if (stripIdx>100000){stripIdx = 0;}
139 }
140 if ( stripIdx < nStrips ){
142 rs->at(stripIdx) += cell->energy()/std::cosh(cell->eta());
143 }else{
144 rs->at(stripIdx) += cell->energy();
145 }
146 }
147 }
148 }
149 return StatusCode::SUCCESS;
150}
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
#define ATH_MSG_FATAL(x)
static Double_t rs
static double diff(double phi1, double phi2)
simple phi1 - phi2 calculation, but result is fixed to respect range.
Gaudi::Property< float > m_cellMaxDEtaDist
Maximum cell distance in eta to seed.
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
SG::ReadHandleKey< CaloCellContainer > m_cellsContName
Name of CaloCellContainer.
Gaudi::Property< float > m_cellMaxDPhiDist
Maximum cell distance in phi to seed.
virtual const xAOD::RingSetConf::RawConfCollection & rawConf()=0
Extra methods:
int nStrips(const MuonGM::TgcReadoutElement &readoutEle, int layer)

◆ crContName()

const SG::WriteHandleKey< xAOD::CaloRingsContainer > & Ringer::CaloRingsBuilder::crContName ( ) const
inlineoverridevirtualinherited

Implements Ringer::ICaloRingsBuilder.

Definition at line 109 of file CaloRingsBuilder.h.

109{ return m_crContName; }
SG::WriteHandleKey< xAOD::CaloRingsContainer > m_crContName
Tool props (python configurables):

◆ 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 }

◆ 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() [1/2]

StatusCode Ringer::CaloRingsBuilder::execute ( const xAOD::CaloCluster & cluster,
ElementLink< xAOD::CaloRingsContainer > & clRingsLink )
overridevirtualinherited

build CaloRings for CaloCluster

Implements Ringer::ICaloRingsBuilder.

Reimplemented in Ringer::CaloCornerRingsBuilder.

Definition at line 159 of file CaloRingsBuilder.cxx.

161 {
162 double et(0.);
163 const double eta2 = std::fabs(cluster.etaBE(2));
164 const double energy = cluster.e();
165 if (eta2 < 999.)
166 {
167 const double cosheta = std::cosh(eta2);
168 et = (cosheta != 0.) ? energy / cosheta : 0.;
169 }
170 if (et > m_minEnergy)
171 {
172 return executeTemp(cluster, clRings);
173 }
174 else
175 {
176 ATH_MSG_DEBUG("Skipping cluster with low energy (" << et << " MeV) .");
177 return StatusCode::SUCCESS;
178 }
179 }
#define ATH_MSG_DEBUG(x)
float et(const xAOD::jFexSRJetRoI *j)
Gaudi::Property< float > m_minEnergy
Minimum particle energy to build rings (GeV).
StatusCode executeTemp(const T &input, ElementLink< xAOD::CaloRingsContainer > &crEL)
Tool private methods:
virtual double e() const
The total energy of the particle.
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.

◆ execute() [2/2]

StatusCode Ringer::CaloRingsBuilder::execute ( const xAOD::IParticle & particle,
ElementLink< xAOD::CaloRingsContainer > & clRingsLink )
overridevirtualinherited

build CaloRings for IParticle

Implements Ringer::ICaloRingsBuilder.

Reimplemented in Ringer::CaloCornerRingsBuilder.

Definition at line 182 of file CaloRingsBuilder.cxx.

185 {
186 double et = particle.pt();
187 if (et > m_minEnergy)
188 {
189 return executeTemp(particle, clRings);
190 }
191 else
192 {
193 ATH_MSG_DEBUG("Skipping particle with low energy (" << et << " MeV) .");
194 return StatusCode::SUCCESS;
195 }
196 }
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses

◆ executeTemp()

template<typename T>
StatusCode Ringer::CaloRingsBuilder::executeTemp ( const T & input,
ElementLink< xAOD::CaloRingsContainer > & crEL )
privateinherited

Tool private methods:

unique execute method for integrating interface code.

Definition at line 202 of file CaloRingsBuilder.cxx.

205 {
206
207 ATH_MSG_DEBUG("Entering " << name() << " execute.");
208
209 // Create structure to hold rings:
210 xAOD::CaloRings *clRings = new xAOD::CaloRings();
211
212 // Add the CaloRings to the container:
213 m_crCont->push_back(clRings);
214
215 // Set elementLink reference to created CaloRings:
216 clRingsLink.toContainedElement(*m_crCont, clRings);
217
218 // If not using shower barycenter, we need to reset last valid seed to avoid
219 // any possible issue:
221 {
222 m_lastValidSeed = AtlasGeoPoint(input.eta(), input.phi());
223 }
224
225 // Build this CaloRings RingSets:
226 for (const auto &rawConf : m_rsRawConfCol)
227 {
228 // Create new RingSet and add it to the container:
229 m_rsCont->push_back(std::make_unique<xAOD::RingSet>(rawConf.nRings));
230 xAOD::RingSet *rs = m_rsCont->back();
231
232 // Get RingSet seed:
233 AtlasGeoPoint seed;
234 CHECK(getRingSetSeed(rawConf, input, seed));
235
236 // Build it:
237 CHECK(buildRingSet(rawConf, seed, rs));
238
239 // Get the ElementLink and add it to our RingSet holder:
241 clRings->addRingSetEL(rsEL);
242 }
243
244 // Print CaloRings with DEBUG level:
245 if (msgLevel() <= MSG::DEBUG)
246 {
247 std::ostringstream str;
248 clRings->print(str);
249 ATH_MSG_DEBUG(str.str());
250 }
251
252 return StatusCode::SUCCESS;
253 }
#define CHECK(...)
Evaluate an expression and check for errors.
virtual StatusCode buildRingSet(const xAOD::RingSetConf::RawConf &rawConf, const AtlasGeoPoint &seed, xAOD::RingSet *rs)
Tool protected methods:
const xAOD::RingSetConf::RawConfCollection & rawConf() override
Extra methods:
xAOD::RingSetConf::RawConfCollection m_rsRawConfCol
holds each RingSet configuration (filled at initialize)
StatusCode getRingSetSeed(const xAOD::RingSetConf::RawConf &conf, const xAOD::CaloCluster &cluster, AtlasGeoPoint &seed)
Fill RingSet seed for CaloCluster.
xAOD::RingSetContainer * m_rsCont
Tool props (non configurables):
xAOD::CaloRingsContainer * m_crCont
Create and hold CaloRingsContainer for each event.
AtlasGeoPoint m_lastValidSeed
last valid RingSet seed
Gaudi::Property< bool > m_useShowShapeBarycenter
Switch to use shower barycenter seed for each RingSets.
void print(std::ostream &stream) const
Print-out methods:
void addRingSetEL(const ElementLink< RingSetContainer_v1 > &rsEL)
Add ElementLink to holden vector.
RingSet_v1 RingSet
Definition of the current "RingSet version".
Definition RingSet.h:15
CaloRings_v1 CaloRings
Definition of the current "CaloRings version".

◆ 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

◆ finalize()

StatusCode Ringer::CaloStripsRingsBuilder::finalize ( )
overridevirtual

finalize method

Reimplemented from Ringer::CaloRingsBuilder.

Definition at line 89 of file CaloStripsRingsBuilder.cxx.

90{
91 return StatusCode::SUCCESS;
92}

◆ getRingSetSeed() [1/2]

StatusCode Ringer::CaloRingsBuilder::getRingSetSeed ( const xAOD::RingSetConf::RawConf & ,
const xAOD::IParticle & part,
AtlasGeoPoint & seed )
staticprotectedinherited

Fill RingSet seed for IParticle.

Definition at line 303 of file CaloRingsBuilder.cxx.

307 {
308
309 seed.setEta(part.eta());
310 seed.setPhi(part.phi());
311
312 return StatusCode::SUCCESS;
313 }

◆ getRingSetSeed() [2/2]

StatusCode Ringer::CaloRingsBuilder::getRingSetSeed ( const xAOD::RingSetConf::RawConf & conf,
const xAOD::CaloCluster & cluster,
AtlasGeoPoint & seed )
protectedinherited

Fill RingSet seed for CaloCluster.

Definition at line 256 of file CaloRingsBuilder.cxx.

260 {
262 {
263
264 seed.setEta(cluster.eta());
265 seed.setPhi(cluster.phi());
266
267 return StatusCode::SUCCESS;
268 }
269 else
270 {
271
272 bool foundValid = false, foundMultipleValid = false;
273
274 for (const auto layer : rawConf.layers)
275 {
276
277 AtlasGeoPoint seedCandidate(
278 cluster.etaSample(layer),
279 cluster.phiSample(layer));
280
281 ATH_MSG_DEBUG("This layer (" << CaloSampling::getSamplingName(layer) << ") seedCandidate is: (" << seedCandidate.eta() << "," << seedCandidate.phi() << ")");
282
283 if (seedCandidate.isValid())
284 {
285 m_lastValidSeed = seedCandidate;
286 if (foundValid)
287 foundMultipleValid = true;
288 foundValid = true;
289 }
290 }
291
292 // If we get here, set it to the last valid seed:
294 if (foundMultipleValid)
295 {
296 ATH_MSG_WARNING("Found multiple valid seeds. Set to last valid candidate.");
297 }
298 return StatusCode::SUCCESS;
299 }
300 }
#define ATH_MSG_WARNING(x)
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.
float phiSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
float etaSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.

◆ initialize()

StatusCode Ringer::CaloStripsRingsBuilder::initialize ( )
overridevirtual

Tool main methods:

initialize method

Reimplemented from Ringer::CaloRingsBuilder.

Definition at line 42 of file CaloStripsRingsBuilder.cxx.

43{
44 ATH_MSG_WARNING("Initializing " << name() );
45 m_nRingSets = m_nRings.size();
46 auto itr = m_layers.begin();
47
48 for (size_t rsConfIdx = 0; rsConfIdx < m_nRingSets; ++rsConfIdx) {
49
50 const auto rsNLayers = m_nLayers[rsConfIdx];
51 auto end_itr = itr + rsNLayers;
52
53 const auto& caloSampleItr = reinterpret_cast< std::vector<CaloSampling::CaloSample>::iterator& >(itr);
54 const auto& caloSampleEndItr = reinterpret_cast< std::vector<CaloSampling::CaloSample>::iterator& >(end_itr);
55
56 std::vector<CaloSampling::CaloSample> rsLayers( caloSampleItr , caloSampleEndItr);
57 itr += rsNLayers;
58
59 const auto rawConf = xAOD::RingSetConf::RawConf(
60 m_nRings[rsConfIdx],
61 rsLayers,
62 m_etaWidth[rsConfIdx], m_phiWidth[rsConfIdx],
66 );
67 m_rsRawConfCol.push_back(std::move(rawConf));
68 }
69
70 try {
72 } catch ( const std::runtime_error &e) {
73 ATH_MSG_ERROR("Could not add collection bounderies due to: " << e.what() );
74 ATH_MSG_ERROR("RawConfCollection is: ");
75 std::ostringstream str;
77 ATH_MSG_ERROR(str.str());
78 return StatusCode::FAILURE;
79 }
80
81 ATH_CHECK( m_crContName.initialize() );
82 ATH_CHECK( m_rsContName.initialize() );
83 ATH_CHECK( m_cellsContName.initialize() );
84 ATH_CHECK( m_caloMgrKey.initialize() );
85 return StatusCode::SUCCESS;
86}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
SG::WriteHandleKey< xAOD::RingSetContainer > m_rsContName
Name of RingSetContainer on Event StoreGate.
size_t m_nRingSets
hold the number of RingSets we are building for each CaloRings
Gaudi::Property< std::vector< float > > m_etaWidth
Width of the ring in eta.
Gaudi::Property< std::vector< unsigned int > > m_nLayers
Number of calorimeter layers in each ringset.
Gaudi::Property< std::vector< float > > m_phiWidth
Width of the ring in phi.
Gaudi::Property< std::vector< unsigned int > > m_nRings
Number of rings in a ringset.
Gaudi::Property< std::vector< int > > m_layers
Calorimeter layers in each ringset.
static Ringer::CalJointLayer whichLayer(const std::vector< CaloSampling::CaloSample > &layers)
static void print(const RawConf &raw, std::ostream &stream)
Prints rawConf.
static Ringer::CalJointSection whichSection(const std::vector< CaloSampling::CaloSample > &layers)
static void addRawConfColBounderies(RawConfCollection &clRingsConf)
Add to RawConfCollection its JointLayer/JointSection bounderies.

◆ 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.

◆ interfaceID()

const InterfaceID & ICaloRingsBuilder::interfaceID ( )
inlinestaticinherited

AlgTool interface methods.

Definition at line 83 of file ICaloRingsBuilder.h.

84{
86}
static const InterfaceID IID_ICaloRingsBuilder("ICaloRingsBuilder", 1, 0)

◆ 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 }

◆ nRingSets()

std::size_t Ringer::CaloRingsBuilder::nRingSets ( ) const
inlineoverridevirtualinherited

Implements Ringer::ICaloRingsBuilder.

Definition at line 107 of file CaloRingsBuilder.h.

107{ return m_nRingSets; }

◆ 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.

◆ preExecute()

StatusCode Ringer::CaloRingsBuilder::preExecute ( xAOD::CaloRingsContainer * crCont,
xAOD::RingSetContainer * rsCont,
const std::size_t nReserve = 0 )
overridevirtualinherited

method for working on containers

Implements Ringer::ICaloRingsBuilder.

Definition at line 133 of file CaloRingsBuilder.cxx.

134 {
135 if (crCont && rsCont)
136 {
137 m_crCont = crCont;
138 m_rsCont = rsCont;
139 }
140 else
141 {
142 ATH_MSG_ERROR("Attempted to set CaloRingsContainer and/or RingSetContainer to invalid pointers");
143 return StatusCode::FAILURE;
144 }
145 // Reserve container space if required:
146 if (nReserve)
147 {
148 // Reserve one CaloRings per particle
149 m_crCont->reserve(nReserve);
150 // We need to reserve more space for the RingSet container, there will be
151 // the number of RawConfig available in our raw configuration collection.
152 m_rsCont->reserve(nReserve * m_nRingSets);
153 }
154
155 return StatusCode::SUCCESS;
156 }

◆ rawConf()

const xAOD::RingSetConf::RawConfCollection & Ringer::CaloRingsBuilder::rawConf ( )
inlineoverridevirtualinherited

Extra methods:

Retrieve RawConfiguration Collection

Implements Ringer::ICaloRingsBuilder.

Definition at line 94 of file CaloRingsBuilder.h.

95 {
96 return m_rsRawConfCol;
97 };

◆ 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 }

◆ rsContName()

const SG::WriteHandleKey< xAOD::RingSetContainer > & Ringer::CaloRingsBuilder::rsContName ( ) const
inlineoverridevirtualinherited

Implements Ringer::ICaloRingsBuilder.

Definition at line 110 of file CaloRingsBuilder.h.

110{ return m_rsContName; }

◆ 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

◆ useShowerShapeBarycenter()

bool Ringer::CaloRingsBuilder::useShowerShapeBarycenter ( )
inlineoverridevirtualinherited

Retrieve whether it was set used shower shape barycenter.

Implements Ringer::ICaloRingsBuilder.

Definition at line 101 of file CaloRingsBuilder.h.

102 {
104 };

Member Data Documentation

◆ m_axis

std::size_t Ringer::CaloStripsRingsBuilder::m_axis
protected

Tool props (python configurables):

the axis to build the strips

Definition at line 64 of file CaloStripsRingsBuilder.h.

◆ m_caloMgrKey

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

Definition at line 258 of file CaloRingsBuilder.h.

258{this, "CaloDetDescrManager", "CaloDetDescrManager"};

◆ m_cellMaxDEtaDist

Gaudi::Property<float> Ringer::CaloRingsBuilder::m_cellMaxDEtaDist
protectedinherited
Initial value:
{
this,
"CellMaxDEtaDist", 0,
"Maximum cell distance to the seed in eta."}

Maximum cell distance in eta to seed.

Definition at line 187 of file CaloRingsBuilder.h.

187 {
188 this,
189 "CellMaxDEtaDist", 0,
190 "Maximum cell distance to the seed in eta."};

◆ m_cellMaxDPhiDist

Gaudi::Property<float> Ringer::CaloRingsBuilder::m_cellMaxDPhiDist
protectedinherited
Initial value:
{
this,
"CellMaxDPhiDist", 0,
"Maximum cell distance to the seed in phi."}

Maximum cell distance in phi to seed.

Definition at line 194 of file CaloRingsBuilder.h.

194 {
195 this,
196 "CellMaxDPhiDist", 0,
197 "Maximum cell distance to the seed in phi."};

◆ m_cellsContName

SG::ReadHandleKey<CaloCellContainer> Ringer::CaloRingsBuilder::m_cellsContName
protectedinherited
Initial value:
{
this,
"CellsContainerName",
"AllCalo",
"Key to obtain the cell container"}

Name of CaloCellContainer.

Definition at line 162 of file CaloRingsBuilder.h.

162 {
163 this,
164 "CellsContainerName",
165 "AllCalo",
166 "Key to obtain the cell container"};

◆ m_crCont

xAOD::CaloRingsContainer* Ringer::CaloRingsBuilder::m_crCont
protectedinherited

Create and hold CaloRingsContainer for each event.

Definition at line 271 of file CaloRingsBuilder.h.

◆ m_crContName

SG::WriteHandleKey<xAOD::CaloRingsContainer> Ringer::CaloRingsBuilder::m_crContName
protectedinherited
Initial value:
{
this,
"CaloRingsContainerName",
"CaloRings",
"Name of the CaloRings container"}

Tool props (python configurables):

Name of CaloRingsContainer on Event StoreGate

electron collection input name

Definition at line 144 of file CaloRingsBuilder.h.

144 {
145 this,
146 "CaloRingsContainerName",
147 "CaloRings",
148 "Name of the CaloRings container"};

◆ 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_doEtaAxesDivision

bool Ringer::CaloStripsRingsBuilder::m_doEtaAxesDivision
protected

This can be set True to divide in two the eta axes.

Definition at line 71 of file CaloStripsRingsBuilder.h.

◆ m_doPhiAxesDivision

bool Ringer::CaloStripsRingsBuilder::m_doPhiAxesDivision
protected

This can be set True to divide in two the phi axes.

Definition at line 75 of file CaloStripsRingsBuilder.h.

◆ m_doTransverseEnergy

bool Ringer::CaloStripsRingsBuilder::m_doTransverseEnergy = false
protected

Definition at line 77 of file CaloStripsRingsBuilder.h.

◆ m_etaWidth

Gaudi::Property<std::vector<float> > Ringer::CaloRingsBuilder::m_etaWidth
protectedinherited
Initial value:
{
this,
"EtaWidth",
{},
"Each RingSet ring eta width."}

Width of the ring in eta.

Definition at line 171 of file CaloRingsBuilder.h.

171 {
172 this,
173 "EtaWidth",
174 {},
175 "Each RingSet ring eta width."};

◆ 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_lastValidSeed

AtlasGeoPoint Ringer::CaloRingsBuilder::m_lastValidSeed
protectedinherited

last valid RingSet seed

Propagate other layer centroids in case a layer centroid is not valid.

Definition at line 281 of file CaloRingsBuilder.h.

◆ m_layers

Gaudi::Property<std::vector<int > > Ringer::CaloRingsBuilder::m_layers
protectedinherited
Initial value:
{
this,
"Layers",
{},
"Concatenated list of layers which will be used "
"to build the RingSets"}

Calorimeter layers in each ringset.

This property should be read as: std::vector<CaloSampling::CaloSample> m_layersRings;

Definition at line 222 of file CaloRingsBuilder.h.

222 {
223 this,
224 "Layers",
225 {},
226 "Concatenated list of layers which will be used "
227 "to build the RingSets"};

◆ m_minEnergy

Gaudi::Property<float> Ringer::CaloRingsBuilder::m_minEnergy
protectedinherited
Initial value:
{
this,
"MinPartEnergy", std::numeric_limits<float>::lowest(),
"Minimum particle/cluster energy to build rings (GeV)."}

Minimum particle energy to build rings (GeV).

Definition at line 209 of file CaloRingsBuilder.h.

209 {
210 this,
211 "MinPartEnergy", std::numeric_limits<float>::lowest(),
212 "Minimum particle/cluster energy to build rings (GeV)."};

◆ m_nLayers

Gaudi::Property<std::vector<unsigned int> > Ringer::CaloRingsBuilder::m_nLayers
protectedinherited
Initial value:
{
this,
"RingSetNLayers",
{},
"Each RingSet number of layers from the Layers "
"configurable property to use."}

Number of calorimeter layers in each ringset.

Definition at line 231 of file CaloRingsBuilder.h.

231 {
232 this,
233 "RingSetNLayers",
234 {},
235 "Each RingSet number of layers from the Layers "
236 "configurable property to use."};

◆ m_nRings

Gaudi::Property<std::vector<unsigned int> > Ringer::CaloRingsBuilder::m_nRings
protectedinherited
Initial value:
{
this,
"NRings",
{},
"Each RingSet number of rings."}

Number of rings in a ringset.

Definition at line 201 of file CaloRingsBuilder.h.

201 {
202 this,
203 "NRings",
204 {},
205 "Each RingSet number of rings."};

◆ m_nRingSets

size_t Ringer::CaloRingsBuilder::m_nRingSets
protectedinherited

hold the number of RingSets we are building for each CaloRings

Definition at line 289 of file CaloRingsBuilder.h.

◆ m_phiHelper

const CaloPhiRange Ringer::CaloRingsBuilder::m_phiHelper
staticprotectedinherited

used for phi wrap-around

Definition at line 285 of file CaloRingsBuilder.h.

◆ m_phiWidth

Gaudi::Property<std::vector<float> > Ringer::CaloRingsBuilder::m_phiWidth
protectedinherited
Initial value:
{
this,
"PhiWidth",
{},
"Each RingSet ring phi width."}

Width of the ring in phi.

Definition at line 179 of file CaloRingsBuilder.h.

179 {
180 this,
181 "PhiWidth",
182 {},
183 "Each RingSet ring phi width."};

◆ m_rsCont

xAOD::RingSetContainer* Ringer::CaloRingsBuilder::m_rsCont
protectedinherited

Tool props (non configurables):

Create and hold RingSetContainer for each event

Definition at line 267 of file CaloRingsBuilder.h.

◆ m_rsContName

SG::WriteHandleKey<xAOD::RingSetContainer> Ringer::CaloRingsBuilder::m_rsContName
protectedinherited
Initial value:
{
this,
"RingSetContainerName",
"RingSets",
"Name of the RingSets container"}

Name of RingSetContainer on Event StoreGate.

Definition at line 153 of file CaloRingsBuilder.h.

153 {
154 this,
155 "RingSetContainerName",
156 "RingSets",
157 "Name of the RingSets container"};

◆ m_rsRawConfCol

xAOD::RingSetConf::RawConfCollection Ringer::CaloRingsBuilder::m_rsRawConfCol
protectedinherited

holds each RingSet configuration (filled at initialize)

Definition at line 275 of file CaloRingsBuilder.h.

◆ m_useShowShapeBarycenter

Gaudi::Property<bool> Ringer::CaloRingsBuilder::m_useShowShapeBarycenter
protectedinherited
Initial value:
{
this,
"useShowerShapeBarycenter", false,
"Switch to use shower barycenter for each layer, "
"instead of the cluster center."}

Switch to use shower barycenter seed for each RingSets.

This can be set to false if using cluster information to use the cluster center instead of its layer energy baricenter.

Definition at line 243 of file CaloRingsBuilder.h.

243 {
244 this,
245 "useShowerShapeBarycenter", false,
246 "Switch to use shower barycenter for each layer, "
247 "instead of the cluster center."};

◆ 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: