ATLAS Offline Software
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
Rec::ParticleCaloCellAssociationTool Class Reference

#include <ParticleCaloCellAssociationTool.h>

Inheritance diagram for Rec::ParticleCaloCellAssociationTool:
Collaboration diagram for Rec::ParticleCaloCellAssociationTool:

Public Types

typedef std::unordered_map< size_t, std::unique_ptr< ParticleCellAssociation > > Cache
 Method to get the ParticleCellAssociation for a given Particle. More...
 

Public Member Functions

 ParticleCaloCellAssociationTool (const std::string &, const std::string &, const IInterface *)
 
virtual ~ParticleCaloCellAssociationTool () override
 
virtual StatusCode initialize () override final
 
virtual StatusCode finalize () override final
 
virtual std::unique_ptr< ParticleCellAssociationparticleCellAssociation (const xAOD::IParticle &particle, float dr, const CaloCellContainer *container=nullptr, const CaloExtensionCollection *extensionCache=nullptr) const override final
 Method to get the ParticleCellAssociation for a given Particle. More...
 
virtual ParticleCellAssociationparticleCellAssociation (const xAOD::IParticle &particle, float dr, IParticleCaloCellAssociationTool::Cache &cache, const CaloCellContainer *container=nullptr, const CaloExtensionCollection *extensionCache=nullptr) const override final
 Method to get the ParticleCellAssociation for a given Particle. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

void getCellIntersections (const Trk::CaloExtension &caloExtension, const std::vector< const CaloCell * > &cells, ParticleCellAssociation::CellIntersections &cellIntersections) const
 
void associateCells (const CaloCellContainer &container, const Trk::CaloExtension &caloExtension, float dr, std::vector< const CaloCell * > &cells) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

ToolHandle< Trk::IParticleCaloExtensionToolm_caloExtensionTool
 
SG::ReadHandleKey< CaloCellContainerm_cellContainerName
 
Gaudi::Property< double > m_coneSize { this, "ConeSize", 0.2 }
 
SG::ReadCondHandleKey< CaloDetDescrManagerm_caloMgrKey {this,"CaloDetDescrManager", "CaloDetDescrManager"}
 
Trk::CaloCellSelectorLayerdR m_defaultSelector
 
PathLengthUtils m_pathLenUtil
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 32 of file ParticleCaloCellAssociationTool.h.

Member Typedef Documentation

◆ Cache

typedef std::unordered_map<size_t,std::unique_ptr< ParticleCellAssociation > > Rec::IParticleCaloCellAssociationTool::Cache
inherited

Method to get the ParticleCellAssociation for a given Particle.

Parameters
particleinput particle
drcone size used for the association @ param cache cache for keeping previous results
containercell container to be used if provided
extensionCacheA calo extension cache to be used if provided
Returns
ParticleCellAssociation* (plain ptr cache has ownership)

An alg looping over a single collection of IParticles
re-using them multiple times can use a local cache of the form std::unordered_map<size_t,std::unique_ptr<ParticleCellAssociation >>. where the key is the value of IParticle::index()

This method adds the ParticleCellAssociation to the cache look-up table which retains ownership.

Definition at line 56 of file IParticleCaloCellAssociationTool.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ ParticleCaloCellAssociationTool()

Rec::ParticleCaloCellAssociationTool::ParticleCaloCellAssociationTool ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 22 of file ParticleCaloCellAssociationTool.cxx.

26  : AthAlgTool(t, n, p)
27  , m_defaultSelector(0.4)
28 {
29  declareInterface<IParticleCaloCellAssociationTool>(this);
30 }

◆ ~ParticleCaloCellAssociationTool()

Rec::ParticleCaloCellAssociationTool::~ParticleCaloCellAssociationTool ( )
overridevirtualdefault

Member Function Documentation

◆ associateCells()

void Rec::ParticleCaloCellAssociationTool::associateCells ( const CaloCellContainer container,
const Trk::CaloExtension caloExtension,
float  dr,
std::vector< const CaloCell * > &  cells 
) const
private

Definition at line 424 of file ParticleCaloCellAssociationTool.cxx.

429 {
430  const Trk::TrackParameters* pars = caloExtension.caloEntryLayerIntersection();
431  if (!pars) {
432  ATH_MSG_DEBUG("associateCells() - NO TrackParameters found in "
433  "caloExtension.caloEntryLayerIntersection()");
434  return;
435  }
436 
437  double eta = pars->position().eta();
438  double phi = pars->position().phi();
439 
440  // Use Calorimeter list for CPU reasons
442  const CaloDetDescrManager* caloMgr=*caloMgrHandle;
443  CaloCellList myList(caloMgr,&container);
444  myList.select(eta, phi, dr);
445  cells.reserve(myList.ncells());
446  cells.insert(cells.end(), myList.begin(), myList.end());
447  ATH_MSG_DEBUG("associated cells " << cells.size() << " using cone " << dr);
448 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ 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 Rec::ParticleCaloCellAssociationTool::finalize ( )
finaloverridevirtual

Definition at line 51 of file ParticleCaloCellAssociationTool.cxx.

52 {
53  return StatusCode::SUCCESS;
54 }

◆ getCellIntersections()

void Rec::ParticleCaloCellAssociationTool::getCellIntersections ( const Trk::CaloExtension caloExtension,
const std::vector< const CaloCell * > &  cells,
ParticleCellAssociation::CellIntersections cellIntersections 
) const
private

Definition at line 143 of file ParticleCaloCellAssociationTool.cxx.

147 {
148  // use 3D pathlength in cells
149 
150  bool use3D = true;
151 
152  cellIntersections.reserve(extension.caloLayerIntersections().size() * 1.3);
153 
156  ATH_MSG_DEBUG("EntryExitLayerMap " << entryExitLayerMap.size());
157 
161 
162  ATH_MSG_DEBUG("Getting cells intersections using cells " << cells.size());
163  for (const auto* cell : cells) {
164  // get sampling and look up entry/exit points
165  CaloSampling::CaloSample sample = cell->caloDDE()->getSampling();
166 
167  auto pos = entryExitLayerMap.find(sample);
168  if (pos == entryExitLayerMap.end())
169  continue;
170  //
171  // pos2 and weight2 are introduced because the PreSamplerB has sometimes a
172  // very small size
173  // PresamplerB and EMB1 are merged
174  //
175  auto pos2 = pos;
178  if (pos2 == entryExitLayerMap.end()) {
179  pos2 = pos;
180  }
181  }
183  double path = 0.;
184 
185  double drFix = cell->caloDDE()->dr();
186  double dzFix = cell->caloDDE()->dz();
187  // double dphi = cell->caloDDE()->dphi();
188 
189  int isample = cell->caloDDE()->getSampling();
190  bool barrel = false;
191  if (cell->caloDDE()->getSubCalo() == CaloCell_ID::TILE)
192  barrel = true;
195  barrel = true;
196 
197  double drTG = fabs((pos->second.first - pos2->second.second).perp());
198  double dzTG = fabs((pos->second.first - pos2->second.second).z());
199 
200  if (barrel)
201  ATH_MSG_VERBOSE(" barrel cell sampling "
202  << cell->caloDDE()->getSampling() << " dr "
203  << cell->caloDDE()->dr() << " drTG " << drTG);
204  if (!barrel)
205  ATH_MSG_VERBOSE(" endcap cell sampling "
206  << cell->caloDDE()->getSampling() << " dz "
207  << cell->caloDDE()->dz() << " dzTG " << dzTG);
208 
209  if (drFix == 0.) {
210  // recalculate the r values from the other cells
211  // BUG/FEATURE: extract dr from cell container for sampling 4 5 6 7 needed
212  // EME BUG/FEATURE: extract dr from cell container for sampling 8 9 10 11
213  // needed HEC
214  if (cell->caloDDE()->deta() > 0) {
215  double theta = atan2(cell->caloDDE()->r(), cell->z());
216  double dtheta =
217  2 * cell->caloDDE()->deta() * sin(theta / 2.) * cos(theta / 2);
218  if (theta + dtheta < M_PI) {
219  double dr =
220  fabs(cell->z() * tan(theta + dtheta) - cell->z() * tan(theta));
221  drFix = fabs(dr);
222  double detaCheck =
223  -log(tan((theta + dtheta) / 2.)) + log(tan((theta) / 2.));
224  ATH_MSG_VERBOSE(" FIX cell sampling "
225  << cell->caloDDE()->getSampling() << " deta "
226  << cell->caloDDE()->deta() << " detaCheck "
227  << detaCheck << " drFix " << drFix);
228  } else {
229  ATH_MSG_WARNING(" FIXR cell sampling failed: theta "
230  << theta << " dtheta " << dtheta << " sum/pi "
231  << (theta + dtheta) * M_1_PI << " deta "
232  << cell->caloDDE()->deta());
233  }
234  // ATH_MSG_VERBOSE(" FIX cell sampling deta " << deta << "
235  // dtheta " << dtheta << " scale " << scale << " theta " <<
236  // theta );
237  } else {
238  double drMin = 100000.;
239  int dscut = 1;
240  if (!barrel)
241  dscut = 0;
242  const CaloCell* cellFound = nullptr;
243  for (const auto* celln : cells) {
244  if (cell == celln)
245  continue;
246  if (cell->caloDDE()->getSubCalo() == celln->caloDDE()->getSubCalo()) {
247  int dsample = isample - celln->caloDDE()->getSampling();
248  if (abs(dsample) == dscut) {
249  double drNew = fabs(cell->caloDDE()->r() - celln->caloDDE()->r());
250  if (drNew < 1)
251  continue;
252  if (drNew < drMin) {
253  drMin = drNew;
254  cellFound = celln;
255  }
256  }
257  }
258  }
259  drFix = drMin;
260  ATH_MSG_VERBOSE(" Problem cell sampling "
261  << cell->caloDDE()->getSampling() << " x "
262  << cell->caloDDE()->x() << " y " << cell->caloDDE()->y()
263  << " z " << cell->caloDDE()->z() << " dr "
264  << cell->caloDDE()->dr() << " drFix " << drFix
265  << " drTG " << drTG);
266  if (cellFound)
267  ATH_MSG_VERBOSE(" cellFound sampling "
268  << cellFound->caloDDE()->getSampling() << " x "
269  << cellFound->caloDDE()->x() << " y "
270  << cellFound->caloDDE()->y() << " z "
271  << cellFound->caloDDE()->z() << " dr "
272  << cellFound->caloDDE()->dr() << " dscut " << dscut
273  << " drFix " << drFix);
274  }
275  }
276 
277  if (dzFix == 0.) {
278  // recalculate z values from the other cells
279  // BUG/FEATURE: extract dz from cell container for sampling 0 1 2 3 needed
280  // EMB
281  if (cell->caloDDE()->deta() > 0) {
282  double theta = atan2(cell->caloDDE()->r(), cell->z());
283  double dtheta =
284  2 * cell->caloDDE()->deta() * sin(theta / 2.) * cos(theta / 2);
285  if (theta + dtheta < M_PI) {
286  double dz = fabs(cell->caloDDE()->r() / tan(theta + dtheta) -
287  cell->caloDDE()->r() / tan(theta));
288  dzFix = dz;
289  } else {
290  ATH_MSG_WARNING(" FIXZ cell sampling failed: theta "
291  << theta << " dtheta " << dtheta << " sum/pi "
292  << (theta + dtheta) * M_1_PI << " deta "
293  << cell->caloDDE()->deta());
294  }
295  double detaCheck =
296  -log(tan((theta + dtheta) / 2.)) + log(tan((theta) / 2.));
297  ATH_MSG_VERBOSE(" Fix cell sampling "
298  << cell->caloDDE()->getSampling() << " deta "
299  << cell->caloDDE()->deta() << " detaCheck "
300  << detaCheck << " dtheta " << dtheta << " dzFix "
301  << dzFix);
302  } else {
303  double dzMin = 100000.;
304  int dscut = 1;
305  if (barrel)
306  dscut = 0;
307  const CaloCell* cellFound = nullptr;
308  for (const auto* celln : cells) {
309  if (cell == celln)
310  continue;
311  if (cell->caloDDE()->getSubCalo() == celln->caloDDE()->getSubCalo()) {
312  int isample2 = celln->caloDDE()->getSampling();
313  if (abs(isample - isample2) == dscut) {
314  double dzNew = fabs(cell->caloDDE()->z() - celln->caloDDE()->z());
315  if (dzNew < 1)
316  continue;
317  if (dzNew < dzMin) {
318  dzMin = dzNew;
319  cellFound = celln;
320  }
321  }
322  }
323  }
324  dzFix = dzMin;
325  ATH_MSG_VERBOSE(" Problem cell sampling "
326  << cell->caloDDE()->getSampling() << " x "
327  << cell->caloDDE()->x() << " y " << cell->caloDDE()->y()
328  << " z " << cell->caloDDE()->z() << " dz "
329  << cell->caloDDE()->dz() << " dzFix " << dzFix
330  << " dzTG " << dzTG);
331  if (cellFound)
332  ATH_MSG_VERBOSE(" cellFound sampling "
333  << cellFound->caloDDE()->getSampling() << " x "
334  << cellFound->caloDDE()->x() << " y "
335  << cellFound->caloDDE()->y() << " z "
336  << cellFound->caloDDE()->z() << " dz "
337  << cellFound->caloDDE()->dz() << " dscut " << dscut
338  << " dzFix " << dzFix);
339  }
340  }
341  //
342  // always use fixed values that correspond to the Calorimeter Tracking
343  // Geometry these are different from the CaloCell values
344  //
345 
346  if (cell->energy() > 50.)
347  ATH_MSG_DEBUG(" cell sampling and size "
348  << cell->caloDDE()->getSampling() << " cell energy "
349  << cell->energy() << " dzFix " << dzFix << " dzTG " << dzTG
350  << " drFix " << drFix << " drTG " << drTG << " barrel "
351  << barrel);
352 
353  if (!barrel)
354  dzFix = dzTG;
355  if (barrel)
356  drFix = drTG;
357 
358  if (use3D) {
359  // m_pathLenUtil.pathInsideCell( *cell, entryExitLayerMap);
360  double pathInMM = PathLengthUtils::get3DPathLength(
361  *cell, pos->second.first, pos2->second.second, drFix, dzFix);
362  double totpath = (pos->second.first - pos2->second.second).mag();
363  path = totpath != 0 ? pathInMM / totpath : 0.;
364  if (path > 0 || cell->energy() > 50.) {
365  ATH_MSG_DEBUG(" cell sampling and size "
366  << cell->caloDDE()->getSampling() << " cell energy "
367  << cell->energy() << " drFix " << drFix << " dzFix "
368  << dzFix << " path " << path << " length TG " << totpath);
369  ATH_MSG_DEBUG(" cell dr " << cell->caloDDE()->dr() << " cell dz "
370  << cell->caloDDE()->dz() << " deta "
371  << cell->caloDDE()->deta());
372  }
373  }
374 
376  double path2 = 0.;
377 
378  if (!use3D)
379  path2 = pathInsideCell(*cell, pos->second.first, pos2->second.second);
380 
381  if (path2 <= 0. && path <= 0.)
382  continue;
383 
384  // auto entrancePair = entryExitLayerMap.find(entranceID);
385  auto eLossPair = eLossLayerMap.find(sample);
386  double eLoss = 0.;
387  //
388  // Just store total expected eloss
389  //
390  if (eLossPair != eLossLayerMap.end()) {
391  eLoss = eLossPair->second;
393  auto eLossPair2 = eLossLayerMap.find(CaloSampling::EMB1);
394  if (eLossPair2 != eLossLayerMap.end()) {
395  eLoss = 0.5 * (eLossPair->second) + 0.5 * (eLossPair2->second);
396  }
397  } else if (sample == CaloSampling::EMB1) {
398  auto eLossPair2 = eLossLayerMap.find(CaloSampling::PreSamplerB);
399  if (eLossPair2 != eLossLayerMap.end()) {
400  eLoss = 0.5 * (eLossPair->second) + 0.5 * (eLossPair2->second);
401  }
402  }
403  } // IF
404 
405  ATH_MSG_DEBUG(" PATH3D = "
406  << path << " PATH2D = " << path2 << " eLoss " << eLoss
407  << " cell energy " << (cell)->energy() << " radius "
408  << cell->caloDDE()->r() << " phi " << cell->caloDDE()->phi()
409  << " dr " << cell->caloDDE()->dr() << " dphi "
410  << cell->caloDDE()->dphi() << " x " << cell->caloDDE()->x()
411  << " y " << cell->caloDDE()->y() << " z "
412  << cell->caloDDE()->z() << " dx " << cell->caloDDE()->dx()
413  << " dy " << cell->caloDDE()->dy() << " dz "
414  << cell->caloDDE()->dz() << " volume "
415  << cell->caloDDE()->volume());
416 
417  cellIntersections.emplace_back(
418  cell, new ParticleCellIntersection(*cell, eLoss, use3D ? path : path2));
419  }
420  ATH_MSG_DEBUG(" added cell intersections " << cellIntersections.size());
421 }

◆ initialize()

StatusCode Rec::ParticleCaloCellAssociationTool::initialize ( )
finaloverridevirtual

Definition at line 35 of file ParticleCaloCellAssociationTool.cxx.

36 {
37  /* Retrieve track extrapolator from ToolService */
38  ATH_CHECK(m_caloExtensionTool.retrieve());
39 
41 
42  if (!m_cellContainerName.key().empty()) {
44  }
45 
47  return StatusCode::SUCCESS;
48 }

◆ 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 & Rec::IParticleCaloCellAssociationTool::interfaceID ( )
inlinestaticinherited

Definition at line 65 of file IParticleCaloCellAssociationTool.h.

65  {
66  return IID_IParticleCaloCellAssociationTool;
67 }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

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

◆ particleCellAssociation() [1/2]

std::unique_ptr< ParticleCellAssociation > Rec::ParticleCaloCellAssociationTool::particleCellAssociation ( const xAOD::IParticle particle,
float  dr,
const CaloCellContainer container = nullptr,
const CaloExtensionCollection extensionCache = nullptr 
) const
finaloverridevirtual

Method to get the ParticleCellAssociation for a given Particle.

Parameters
particleinput particle
drcone size used for the association
containercell container to be used if provided
Returns
std::unique_ptr<ParticleCellAssociation>

Implements Rec::IParticleCaloCellAssociationTool.

Definition at line 57 of file ParticleCaloCellAssociationTool.cxx.

62 {
63  ATH_MSG_DEBUG(" particleCellAssociation: ptr " << &particle << " dr " << dr);
64  // get the extrapolation into the calo
65  std::unique_ptr<const Trk::CaloExtension> caloExtensionUPtr;
66  const Trk::CaloExtension* caloExtension = nullptr;
67  if (extensionCache)
68  caloExtension =
69  m_caloExtensionTool->caloExtension(particle, *extensionCache);
70  else {
71  caloExtensionUPtr = m_caloExtensionTool->caloExtension(
72  Gaudi::Hive::currentContext(), particle);
73  caloExtension = caloExtensionUPtr.get();
74  }
75  if (!caloExtension) {
76  ATH_MSG_DEBUG("Failed to get calo extension");
77  return nullptr;
78  }
79  if (caloExtension->caloLayerIntersections().empty()) {
81  "Received a caloExtension object without track extrapolation");
82  return nullptr;
83  }
84  // retrieve the cell container if not provided, return false it retrieval
85  // failed
86  if (!container) {
87  if (m_cellContainerName.key().empty()) {
88  ATH_MSG_DEBUG("Failed to get calo cell container");
89  return nullptr;
90  }
92  container = &(*cccHdl);
93  }
94  std::vector<const CaloCell*> cells;
95  // update cone size in case it is smaller than the default
96  if (dr < m_coneSize) {
97  dr = m_coneSize;
98  }
99  associateCells(*container, *caloExtension, dr, cells);
100 
101  // get cell intersections
103  getCellIntersections(*caloExtension, cells, cellIntersections);
104  if (!caloExtensionUPtr)
105  // Have to manually copy the calo extension object. Clearly the class
106  // wants to be shared through a shared_ptr but this clearly is not an
107  // option
108  caloExtensionUPtr = std::make_unique<Trk::CaloExtension>(
109  caloExtension->caloEntryLayerIntersection()
110  ? caloExtension->caloEntryLayerIntersection()->clone()
111  : nullptr,
112  caloExtension->muonEntryLayerIntersection()
113  ? caloExtension->muonEntryLayerIntersection()->clone()
114  : nullptr,
115  std::vector<Trk::CurvilinearParameters>(
116  caloExtension->caloLayerIntersections()));
117  return std::make_unique<ParticleCellAssociation>(caloExtensionUPtr.release(),
118  std::move(cells),
119  dr,
120  std::move(cellIntersections),
121  container);
122 }

◆ particleCellAssociation() [2/2]

ParticleCellAssociation * Rec::ParticleCaloCellAssociationTool::particleCellAssociation ( const xAOD::IParticle particle,
float  dr,
IParticleCaloCellAssociationTool::Cache cache,
const CaloCellContainer container = nullptr,
const CaloExtensionCollection extensionCache = nullptr 
) const
finaloverridevirtual

Method to get the ParticleCellAssociation for a given Particle.

Parameters
particleinput particle
drcone size used for the association @ param cache cache for keeping previous results
containercell container to be used if provided
Returns
ParticleCellAssociation* (plain ptr cache has ownership)

An alg looping over a single collection of IParticles re-using them multiple times can use a local cache of the form std::unordered_map<size_t,std::unique_ptr<ParticleCellAssociation >>. where the key is the value of IParticle::index()

This method adds the ParticleCellAssociation to the cache look-up table which retains ownership.

Implements Rec::IParticleCaloCellAssociationTool.

Definition at line 125 of file ParticleCaloCellAssociationTool.cxx.

131 {
132  /*if not there , default ctor for unique_ptr (nullptr)*/
133  std::unique_ptr<ParticleCellAssociation>& association =
134  cache[particle.index()];
135  if (association == nullptr) {
136  association =
137  particleCellAssociation(particle, dr, container, extensionCache);
138  }
139  return association.get();
140 }

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
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 DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_caloExtensionTool

ToolHandle<Trk::IParticleCaloExtensionTool> Rec::ParticleCaloCellAssociationTool::m_caloExtensionTool
private
Initial value:
{
this,
"ParticleCaloExtensionTool",
""
}

Definition at line 94 of file ParticleCaloCellAssociationTool.h.

◆ m_caloMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> Rec::ParticleCaloCellAssociationTool::m_caloMgrKey {this,"CaloDetDescrManager", "CaloDetDescrManager"}
private

Definition at line 106 of file ParticleCaloCellAssociationTool.h.

◆ m_cellContainerName

SG::ReadHandleKey<CaloCellContainer> Rec::ParticleCaloCellAssociationTool::m_cellContainerName
private
Initial value:
{ this,
"CaloCellContainer",
"AllCalo" }

Definition at line 100 of file ParticleCaloCellAssociationTool.h.

◆ m_coneSize

Gaudi::Property<double> Rec::ParticleCaloCellAssociationTool::m_coneSize { this, "ConeSize", 0.2 }
private

Definition at line 104 of file ParticleCaloCellAssociationTool.h.

◆ m_defaultSelector

Trk::CaloCellSelectorLayerdR Rec::ParticleCaloCellAssociationTool::m_defaultSelector
private

Definition at line 108 of file ParticleCaloCellAssociationTool.h.

◆ 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_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_pathLenUtil

PathLengthUtils Rec::ParticleCaloCellAssociationTool::m_pathLenUtil
private

Definition at line 110 of file ParticleCaloCellAssociationTool.h.

◆ 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:
make_hlt_rep.pars
pars
Definition: make_hlt_rep.py:90
RunTileCalibRec.cells
cells
Definition: RunTileCalibRec.py:271
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
CaloCellList
Definition: CaloCellList.h:40
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
athena.path
path
python interpreter configuration --------------------------------------—
Definition: athena.py:126
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
CaloExtensionHelpers::ScalarLayerMap
std::map< CaloSampling::CaloSample, double > ScalarLayerMap
Definition: CaloExtensionHelpers.h:22
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
CaloDetDescrElement::y
float y() const
cell y
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:365
Trk::CaloExtension
Tracking class to hold the extrapolation from a particle from the ID to the muon system (or the other...
Definition: CaloExtension.h:18
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:71
CaloDetDescrElement::dr
float dr() const
cell dr
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:360
M_PI
#define M_PI
Definition: ActiveFraction.h:11
CaloExtensionHelpers::entryExitLayerMap
void entryExitLayerMap(const Trk::CaloExtension &extension, EntryExitLayerMap &result, const LayersToSelect *selection=nullptr)
Definition: CaloExtensionHelpers.h:192
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
Trk::CaloExtension::caloEntryLayerIntersection
const TrackParameters * caloEntryLayerIntersection() const
access to intersection with the calorimeter entry layer return NULL if the intersection failed
Definition: CaloExtension.h:64
ReadBchFromCool.barrel
barrel
Definition: ReadBchFromCool.py:405
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
Trk::CaloExtension::muonEntryLayerIntersection
const TrackParameters * muonEntryLayerIntersection() const
access to intersection with the muon entry layer return NULL if the intersection failed
Definition: CaloExtension.h:70
pathInsideCell
double pathInsideCell(const CaloCell &cell, const Amg::Vector3D &entry, const Amg::Vector3D &exit)
Return the % of the path crossed inside the cell, given the parameters for the extrapolation at entra...
Definition: CaloCellHelpers.h:84
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Rec::ParticleCaloCellAssociationTool::m_defaultSelector
Trk::CaloCellSelectorLayerdR m_defaultSelector
Definition: ParticleCaloCellAssociationTool.h:108
CaloDetDescrElement::dz
float dz() const
cell dz
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:379
Rec::ParticleCaloCellAssociationTool::m_caloMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
Definition: ParticleCaloCellAssociationTool.h:106
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
beamspotman.n
n
Definition: beamspotman.py:731
Rec::ParticleCaloCellAssociationTool::m_coneSize
Gaudi::Property< double > m_coneSize
Definition: ParticleCaloCellAssociationTool.h:104
Rec::ParticleCaloCellAssociationTool::m_caloExtensionTool
ToolHandle< Trk::IParticleCaloExtensionTool > m_caloExtensionTool
Definition: ParticleCaloCellAssociationTool.h:94
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloCell::caloDDE
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition: CaloCell.h:305
Rec::ParticleCaloCellAssociationTool::associateCells
void associateCells(const CaloCellContainer &container, const Trk::CaloExtension &caloExtension, float dr, std::vector< const CaloCell * > &cells) const
Definition: ParticleCaloCellAssociationTool.cxx:424
Rec::ParticleCaloCellAssociationTool::particleCellAssociation
virtual std::unique_ptr< ParticleCellAssociation > particleCellAssociation(const xAOD::IParticle &particle, float dr, const CaloCellContainer *container=nullptr, const CaloExtensionCollection *extensionCache=nullptr) const override final
Method to get the ParticleCellAssociation for a given Particle.
Definition: ParticleCaloCellAssociationTool.cxx:57
Trk::association
@ association
Definition: TrackingGeometry.h:46
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloCell_Base_ID::TILE
@ TILE
Definition: CaloCell_Base_ID.h:46
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
Trk::ParametersBase
Definition: ParametersBase.h:55
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
CaloExtensionHelpers::EntryExitLayerMap
std::map< CaloSampling::CaloSample, std::pair< Amg::Vector3D, Amg::Vector3D > > EntryExitLayerMap
Definition: CaloExtensionHelpers.h:21
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
CaloExtensionHelpers::pathLenLayerMap
void pathLenLayerMap(const Trk::CaloExtension &extension, ScalarLayerMap &result)
Definition: CaloExtensionHelpers.h:205
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
PathLengthUtils::get3DPathLength
static double get3DPathLength(const CaloCell &cell, const Amg::Vector3D &entry, const Amg::Vector3D &exit, double drFix, double dzFix)
Definition: PathLengthUtils.cxx:18
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
CaloExtensionHelpers::eLossLayerMap
void eLossLayerMap(const Trk::CaloExtension &extension, ScalarLayerMap &result)
Definition: CaloExtensionHelpers.h:216
Rec::ParticleCaloCellAssociationTool::getCellIntersections
void getCellIntersections(const Trk::CaloExtension &caloExtension, const std::vector< const CaloCell * > &cells, ParticleCellAssociation::CellIntersections &cellIntersections) const
Definition: ParticleCaloCellAssociationTool.cxx:143
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
CaloDetDescrElement::x
float x() const
cell x
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:363
a
TList * a
Definition: liststreamerinfos.cxx:10
h
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
CaloDetDescrElement::getSampling
CaloCell_ID::CaloSample getSampling() const
cell sampling
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:395
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
CaloDetDescrElement::z
float z() const
cell z
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:367
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
Rec::ParticleCaloCellAssociationTool::m_cellContainerName
SG::ReadHandleKey< CaloCellContainer > m_cellContainerName
Definition: ParticleCaloCellAssociationTool.h:100
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
Trk::CaloCellSelectorLayerdR::setConeSize
void setConeSize(double coneSize)
Definition: CaloCellSelectorLayerdR.h:31
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
Rec::ParticleCellAssociation::CellIntersections
std::vector< std::pair< const CaloCell *, ParticleCellIntersection * > > CellIntersections
typedef for vector of cell intersections
Definition: ParticleCellAssociation.h:22
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Trk::CaloExtension::caloLayerIntersections
const std::vector< CurvilinearParameters > & caloLayerIntersections() const
access to the intersections with the calorimeter layers.
Definition: CaloExtension.h:76
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
mag
Scalar mag() const
mag method
Definition: AmgMatrixBasePlugin.h:25
fitman.k
k
Definition: fitman.py:528
Trk::ParametersBase::clone
virtual ParametersBase< DIM, T > * clone() const override=0
clone method for polymorphic deep copy