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

Implementation of the ICaloDepthTool interface.Given a Track direction, checks if it is in the Calorimeter acceptance and provides various radii to be compared/used in the extrapolation. More...

#include <CaloDepthTool.h>

Inheritance diagram for CaloDepthTool:
Collaboration diagram for CaloDepthTool:

Public Types

enum  DepthChoice {
  DepthChoice::egparam, DepthChoice::cscopt, DepthChoice::cscopt2, DepthChoice::TBparam,
  DepthChoice::entrance, DepthChoice::middle, DepthChoice::flat
}
 

Public Member Functions

 CaloDepthTool (const std::string &type, const std::string &name, const IInterface *parent)
 Standard constructor. More...
 
virtual ~CaloDepthTool ()
 Destructor. More...
 
virtual StatusCode initialize () override
 Tool Initialize. More...
 
virtual StatusCode finalize () override
 Tool Finalize. More...
 
double radius (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD) const
 get radius More...
 
double radius (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD) const
 get radius 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 ()
 Query interface. More...
 
static double deta (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const CaloDetDescrManager *caloDD)
 How far are you (in eta) from a given sample or - if you are in - how far are you from the edge ? More...
 
static double deta (const CaloCell_ID::CaloSample sample, const double eta, const CaloDetDescrManager *caloDD)
 How far are you (in eta) from a given sample or - if you are in - how far are you from the edge ? More...
 
static double entrance (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 For a given direction, return the entrance of the given CaloCell_ID::CaloSample. More...
 
static double entrance (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 For a given direction, return the entrance of the given CaloCell_ID::CaloSample. More...
 
static double middle (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 For a given direction, return the middle of the given CaloCell_ID::CaloSample. More...
 
static double middle (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 For a given direction, return the middle of the given CaloCell_ID::CaloSample. More...
 
static double exit (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 For a given direction, return the exit of the given CaloCell_ID::CaloSample. More...
 
static double exit (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 For a given direction, return the exit of the given CaloCell_ID::CaloSample. More...
 
static double flat (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const int side, const CaloDetDescrManager *caloDD)
 If the direction is not specified, returns a "flat" aproximation (truely valid for strips only). More...
 
static double flat (const CaloCell_ID::CaloSample sample, const int side, const CaloDetDescrManager *caloDD)
 If the direction is not specified, returns a "flat" aproximation (truely valid for strips only). More...
 
static double depth (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const int side, const CaloDetDescrManager *caloDD)
 If the direction is not specified, returns a "flat" aproximation (truely valid for strips only). More...
 
static double depth (const CaloCell_ID::CaloSample sample, const int side, const CaloDetDescrManager *caloDD)
 If the direction is not specified, returns a "flat" aproximation (truely valid for strips only). More...
 
static double get_entrance_radius (CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
 will look for the corresponding CaloDetDescrElement and return its entrance radius More...
 
static double get_entrance_z (CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
 will look for the corresponding CaloDetDescrElement and return its entrance z More...
 
static double cscopt2_parametrized (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 Same as cscopt with the outermost EMB2 point excluded. More...
 

Protected Member Functions

 CaloDepthTool ()
 
 CaloDepthTool (const CaloDepthTool &)
 
CaloDepthTooloperator= (const CaloDepthTool &)
 
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

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

Static Private Member Functions

static double egparametrized (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 Methods taken from the old egammaqdepth class : return the parametrised depth used in DC1 and DC2. More...
 
static double egparametrized (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 Methods taken from the old egammaqdepth class : return the parametrised depth used in DC1 and DC2. More...
 
static double TBparametrized (const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 Parametrisation taken from the old egammaqdepth class, but adapted for TestBeam. More...
 
static double TBparametrized (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 Parametrisation taken from the old egammaqdepth class, but adapted for TestBeam. More...
 
static double cscopt_parametrized (const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
 Layers 1 and 2 depths set to give the best eta resolution. More...
 
static double get_middle_radius (CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
 will look for the corresponding CaloDetDescrElement and return its middle radius More...
 
static double get_middle_z (CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
 will look for the corresponding CaloDetDescrElement and return its middle z More...
 
static double get_exit_radius (CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
 will look for the corresponding CaloDetDescrElement and return its middle radius More...
 
static double get_exit_z (CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
 will look for the corresponding CaloDetDescrElement and return its middle z More...
 

Private Attributes

Gaudi::Property< std::string > m_depth_choice { this, "DepthChoice", "", "depth choice" }
 Depth choice related code User passes a string but we convert to an enum at init to avoid string comparisons. More...
 
DepthChoice m_depthChoice = DepthChoice::entrance
 
const CaloCell_IDm_calo_id
 ID Helper. More...
 
CaloPhiRange m_range
 Phi range helper object. More...
 
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

Implementation of the ICaloDepthTool interface.Given a Track direction, checks if it is in the Calorimeter acceptance and provides various radii to be compared/used in the extrapolation.

This tool extends the functionality of the old egammaUtils/egammaqdepth class

In all the methods, radius stands for r in the (cylindric) barrel, for z in the (disk) endcap.

The generic method radius() uses the default choosen by joboption, and if the result is 0 because the eta/phi direction is outside the Sample acceptance, returns the egparametrised depth as backup solution.

Definition at line 45 of file CaloDepthTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ DepthChoice

Enumerator
egparam 
cscopt 
cscopt2 
TBparam 
entrance 
middle 
flat 

Definition at line 238 of file CaloDepthTool.h.

239  {
240  egparam,
241  cscopt,
242  cscopt2,
243  TBparam,
244  entrance,
245  middle,
246  flat
247  };

Constructor & Destructor Documentation

◆ CaloDepthTool() [1/3]

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

Standard constructor.

Definition at line 49 of file CaloDepthTool.cxx.

53  , m_calo_id(nullptr)
54 {
55  declareInterface<CaloDepthTool>(this);
56 }

◆ ~CaloDepthTool()

CaloDepthTool::~CaloDepthTool ( )
virtualdefault

Destructor.

◆ CaloDepthTool() [2/3]

CaloDepthTool::CaloDepthTool ( )
protected

◆ CaloDepthTool() [3/3]

CaloDepthTool::CaloDepthTool ( const CaloDepthTool )
protected

Member Function Documentation

◆ cscopt2_parametrized()

double CaloDepthTool::cscopt2_parametrized ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
static

Same as cscopt with the outermost EMB2 point excluded.

This improves the fit. From CSC12 E=100 GeV photons.

Definition at line 323 of file CaloDepthTool.cxx.

327 {
328  double radius = s_default;
329 
330  float aeta = static_cast<float>(std::abs(eta));
331 
333  radius = 1422.3 * Gaudi::Units::millimeter;
334  } else if (sample == CaloCell_ID::EMB1) {
335  if (aeta < 0.8)
336  radius = (1558.859292 - 4.990838 * aeta - 21.144279 * aeta * aeta) *
338  else
339  radius = (1522.775373 + 27.970192 * aeta - 21.104108 * aeta * aeta) *
341  } else if (sample == CaloCell_ID::EMB2) {
342  radius = (1698.990944 - 49.431767 * aeta - 24.504976 * aeta * aeta) *
344  } else if (sample == CaloCell_ID::EMB3) {
345  if (aeta < 0.8)
346  radius = (1833.88 - 106.25 * aeta) * Gaudi::Units::millimeter;
347  else
348  radius = (2038.40 - 286. * aeta) * Gaudi::Units::millimeter;
349  }
350 
351  else if (sample == CaloCell_ID::PreSamplerE) {
353  if (eta < 0.)
354  radius = -radius;
355  } else if (sample == CaloCell_ID::EME1) {
356  if (aeta < 1.5)
357  radius = (12453.297448 - 5735.787116 * aeta) * Gaudi::Units::millimeter;
358  else
359  radius = 3790.671754 * Gaudi::Units::millimeter;
360  if (eta < 0.)
361  radius = -radius;
362  } else if (sample == CaloCell_ID::EME2) {
363  if (aeta < 1.5)
364  radius = (8027.574119 - 2717.653528 * aeta) * Gaudi::Units::millimeter;
365  else
366  radius = (3473.473909 + 453.941515 * aeta - 119.101945 * aeta * aeta) *
368  if (eta < 0.)
369  radius = -radius;
370  } else if (sample == CaloCell_ID::EME3) {
372  if (eta < 0.)
373  radius = -radius;
374  }
375 
376  // This was not in the egamma parametrization,
377  // but it does not cost much to add it :
378  else {
379  if (eta > 0.)
380  radius = flat(sample, 1, caloDD);
381  else
382  radius = flat(sample, -1, caloDD);
383  }
384 
385  return radius;
386 }

◆ cscopt_parametrized()

double CaloDepthTool::cscopt_parametrized ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

Layers 1 and 2 depths set to give the best eta resolution.

From CSC12 E=100 GeV photons.

Definition at line 253 of file CaloDepthTool.cxx.

257 {
258  double radius = s_default;
259 
260  float aeta = static_cast<float>(std::abs(eta));
261 
263  radius = 1422.3 * Gaudi::Units::millimeter;
264  } else if (sample == CaloCell_ID::EMB1) {
265  if (aeta < 0.8)
266  radius = (1558.859292 - 4.990838 * aeta - 21.144279 * aeta * aeta) *
268  else
269  radius = (1522.775373 + 27.970192 * aeta - 21.104108 * aeta * aeta) *
271  } else if (sample == CaloCell_ID::EMB2) {
272  radius = (1689.621619 + 2.682993 * aeta - 70.165741 * aeta * aeta) *
274  } else if (sample == CaloCell_ID::EMB3) {
275  if (aeta < 0.8)
276  radius = (1833.88 - 106.25 * aeta) * Gaudi::Units::millimeter;
277  else
278  radius = (2038.40 - 286. * aeta) * Gaudi::Units::millimeter;
279  }
280 
281  else if (sample == CaloCell_ID::PreSamplerE) {
283  if (eta < 0.)
284  radius = -radius;
285  } else if (sample == CaloCell_ID::EME1) {
286  if (aeta < 1.5)
287  radius = (12453.297448 - 5735.787116 * aeta) * Gaudi::Units::millimeter;
288  else
289  radius = 3790.671754 * Gaudi::Units::millimeter;
290  if (eta < 0.)
291  radius = -radius;
292  } else if (sample == CaloCell_ID::EME2) {
293  if (aeta < 1.5)
294  radius = (8027.574119 - 2717.653528 * aeta) * Gaudi::Units::millimeter;
295  else
296  radius = (3473.473909 + 453.941515 * aeta - 119.101945 * aeta * aeta) *
298  if (eta < 0.)
299  radius = -radius;
300  } else if (sample == CaloCell_ID::EME3) {
302  if (eta < 0.)
303  radius = -radius;
304  }
305 
306  // This was not in the egamma parametrization,
307  // but it does not cost much to add it :
308  else {
309  if (eta > 0.)
310  radius = flat(sample, 1, caloDD);
311  else
312  radius = flat(sample, -1, caloDD);
313  }
314 
315  return radius;
316 }

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

◆ depth() [1/2]

double CaloDepthTool::depth ( const CaloCell_ID::CaloSample  sample,
const int  side,
const CaloDetDescrManager caloDD 
)
static

If the direction is not specified, returns a "flat" aproximation (truely valid for strips only).

Definition at line 618 of file CaloDepthTool.cxx.

621 {
622  // FIXME : tiles is hardcoded !!!
623  double radius = 1970.;
624 
626  return false;
628  return false;
630  return false;
632  return false;
634  return false;
636  return false;
638  return false;
640  return false;
641 
642  radius = s_default;
643 
644  for (const CaloDetDescriptor* reg : caloDD->calo_descriptors_range()) {
645  if (reg) {
646  if (reg->getSampling(0) == sample && reg->calo_sign() * side > 0) {
647  std::vector<double> depth;
648  reg->get_depth_out(depth);
649  for (unsigned int j = 0; j < depth.size(); j++)
650  if (radius > depth[j])
651  radius = depth[j];
652  }
653  }
654  }
655 
656  return radius;
657 }

◆ depth() [2/2]

double CaloDepthTool::depth ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const int  side,
const CaloDetDescrManager caloDD 
)
static

If the direction is not specified, returns a "flat" aproximation (truely valid for strips only).

Definition at line 605 of file CaloDepthTool.cxx.

610 {
613  subcalo, barrel, sampling_or_module, sample);
614  return depth(sample, side, caloDD);
615 }

◆ deta() [1/2]

double CaloDepthTool::deta ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const CaloDetDescrManager caloDD 
)
static

How far are you (in eta) from a given sample or - if you are in - how far are you from the edge ?

This method will return the distance to the closest edge. If you are outside the sample volume, it will always be a positive number. If you are inside the sample volume, the distance will be multiplied by -1 : i.e.always a negative number.

Definition at line 155 of file CaloDepthTool.cxx.

158 {
159  double deta = 99999.;
160  /*bool result =*/caloDD->is_in(eta, 0., sample, deta);
161  return deta;
162 }

◆ deta() [2/2]

double CaloDepthTool::deta ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const double  eta,
const CaloDetDescrManager caloDD 
)
static

How far are you (in eta) from a given sample or - if you are in - how far are you from the edge ?

This method will return the distance to the closest edge. If you are outside the sample volume, it will always be a positive number. If you are inside the sample volume, the distance will be multiplied by -1 : i.e.always a negative number.

Definition at line 142 of file CaloDepthTool.cxx.

147 {
150  subcalo, barrel, sampling_or_module, sample);
151  return deta(sample, eta, caloDD);
152 }

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

◆ egparametrized() [1/2]

double CaloDepthTool::egparametrized ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

Methods taken from the old egammaqdepth class : return the parametrised depth used in DC1 and DC2.

Only LAREM is foreseen

Definition at line 183 of file CaloDepthTool.cxx.

187 {
188  double radius = s_default;
189 
190  // note that only LAREM was foreseen in egammaqdepth
191  // here we go ... cut and paste the code as is, including hardcoded
192  // parametrisation :-(
193 
194  float aeta = static_cast<float>(std::abs(eta));
195 
197  radius = 1422.3 * Gaudi::Units::millimeter;
198  } else if (sample == CaloCell_ID::EMB1) {
199  if (aeta < 0.8)
200  radius = (1567.8 - 18.975 * aeta - 17.668 * aeta * aeta) *
202  else
203  radius = (1503.2 + 71.716 * aeta - 41.008 * aeta * aeta) *
205  } else if (sample == CaloCell_ID::EMB2) {
206  if (aeta < 0.8)
207  radius = (1697.1 - 15.311 * aeta - 64.153 * aeta * aeta) *
209  else
210  radius = (1739.1 - 75.648 * aeta - 18.501 * aeta * aeta) *
212  } else if (sample == CaloCell_ID::EMB3) {
213  if (aeta < 0.8)
214  radius = (1833.88 - 106.25 * aeta) * Gaudi::Units::millimeter;
215  else
216  radius = (2038.40 - 286. * aeta) * Gaudi::Units::millimeter;
217  }
218 
219  else if (sample == CaloCell_ID::PreSamplerE) {
221  if (eta < 0.)
222  radius = -radius;
223  } else if (sample == CaloCell_ID::EME1) {
225  if (eta < 0.)
226  radius = -radius;
227  } else if (sample == CaloCell_ID::EME2) {
229  if (eta < 0.)
230  radius = -radius;
231  } else if (sample == CaloCell_ID::EME3) {
233  if (eta < 0.)
234  radius = -radius;
235  }
236 
237  // This was not in the egamma parametrization, but it does not cost much to
238  // add it :
239  else {
240  if (eta > 0.)
241  radius = flat(sample, 1, caloDD);
242  else
243  radius = flat(sample, -1, caloDD);
244  }
245 
246  return radius;
247 }

◆ egparametrized() [2/2]

double CaloDepthTool::egparametrized ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

Methods taken from the old egammaqdepth class : return the parametrised depth used in DC1 and DC2.

Only LAREM is foreseen

Definition at line 169 of file CaloDepthTool.cxx.

175 {
178  subcalo, barrel, sampling_or_module, sample);
179  return egparametrized(sample, eta, phi, caloDD);
180 }

◆ entrance() [1/2]

double CaloDepthTool::entrance ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
static

For a given direction, return the entrance of the given CaloCell_ID::CaloSample.

If the direction does not cross any CaloCell, the returned bool will be set to False.

Definition at line 447 of file CaloDepthTool.cxx.

451 {
452  double radius = s_default;
453 
454  // FIXME : the calodetdescr manager misses 1 generic get_entrance method
461  radius = get_entrance_z(sample, eta, phi, caloDD);
462  else
463  radius = get_entrance_radius(sample, eta, phi, caloDD);
464 
465  return radius;
466 }

◆ entrance() [2/2]

double CaloDepthTool::entrance ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
static

For a given direction, return the entrance of the given CaloCell_ID::CaloSample.

If the direction does not cross any CaloCell, the returned bool will be set to False.

Definition at line 433 of file CaloDepthTool.cxx.

439 {
442  subcalo, barrel, sampling_or_module, sample);
443  return entrance(sample, eta, phi, caloDD);
444 }

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

◆ exit() [1/2]

double CaloDepthTool::exit ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
static

For a given direction, return the exit of the given CaloCell_ID::CaloSample.

If the direction does not cross any CaloCell, the returned bool will be set to False.

Definition at line 518 of file CaloDepthTool.cxx.

522 {
523  double radius = s_default;
524 
531  radius = get_exit_z(sample, eta, phi, caloDD);
532  else
533  radius = get_exit_radius(sample, eta, phi, caloDD);
534 
535  return radius;
536 }

◆ exit() [2/2]

double CaloDepthTool::exit ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
static

For a given direction, return the exit of the given CaloCell_ID::CaloSample.

If the direction does not cross any CaloCell, the returned bool will be set to False.

Definition at line 504 of file CaloDepthTool.cxx.

510 {
513  subcalo, barrel, sampling_or_module, sample);
514  return exit(sample, eta, phi, caloDD);
515 }

◆ 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 CaloDepthTool::finalize ( )
overridevirtual

Tool Finalize.

Definition at line 81 of file CaloDepthTool.cxx.

82 {
83  return StatusCode::SUCCESS;
84 }

◆ flat() [1/2]

double CaloDepthTool::flat ( const CaloCell_ID::CaloSample  sample,
const int  side,
const CaloDetDescrManager caloDD 
)
static

If the direction is not specified, returns a "flat" aproximation (truely valid for strips only).

Definition at line 552 of file CaloDepthTool.cxx.

555 {
556  // FIXME : tiles is hardcoded !!!
557  double radius = 2280.;
558 
560  return false;
562  return false;
564  return false;
566  return false;
568  return false;
570  return false;
572  return false;
574  return false;
575 
576  radius = s_default;
577  for (const CaloDetDescriptor* reg : caloDD->calo_descriptors_range()) {
578  if (reg) {
579  if (reg->getSampling(0) == sample && reg->calo_sign() * side > 0) {
580  std::vector<double> depth;
581  reg->get_depth_in(depth);
582  for (unsigned int j = 0; j < depth.size(); j++)
583  if (radius < depth[j])
584  radius = depth[j];
585  }
586  }
587  }
588 
589  // depth in are positive values, so should multiply by -1 for the HEC and FCAL
590  // at eta<0. to get the corresponding z
591 
592  if (side < 0) {
599  radius = -1. * radius;
600  }
601  return radius;
602 }

◆ flat() [2/2]

double CaloDepthTool::flat ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const int  side,
const CaloDetDescrManager caloDD 
)
static

If the direction is not specified, returns a "flat" aproximation (truely valid for strips only).

Definition at line 539 of file CaloDepthTool.cxx.

544 {
547  subcalo, barrel, sampling_or_module, sample);
548  return flat(sample, side, caloDD);
549 }

◆ get_entrance_radius()

double CaloDepthTool::get_entrance_radius ( CaloCell_ID::CaloSample  sample,
double  eta,
double  phi,
const CaloDetDescrManager caloDD 
)
static

will look for the corresponding CaloDetDescrElement and return its entrance radius

Definition at line 660 of file CaloDepthTool.cxx.

664 {
665  const CaloDetDescrElement* elt = caloDD->get_element(sample, eta, phi);
666  if (!elt) {
667  return s_default;
668  }
669 
670  //Only for tile is dR the full radius of the layer - for
671  //other calorimeters it is half the radius
672  if (elt->is_tile()) return (elt->r() - elt->dr()/2);
673  else return (elt->r() - elt->dr());
674 }

◆ get_entrance_z()

double CaloDepthTool::get_entrance_z ( CaloCell_ID::CaloSample  sample,
double  eta,
double  phi,
const CaloDetDescrManager caloDD 
)
static

will look for the corresponding CaloDetDescrElement and return its entrance z

Definition at line 677 of file CaloDepthTool.cxx.

681 {
682  const CaloDetDescrElement* elt = caloDD->get_element(sample, eta, phi);
683  if (!elt) {
684  return s_default;
685  }
686 
687  //Only for tile is dZ the full Z length of the layer - for
688  //other calorimeters it is half of this
689  if (elt->is_tile()) return (elt->z() - (elt->z() < 0 ? -elt->dz()/2 : elt->dz()/2));
690  else return (elt->z() - (elt->z() < 0 ? -elt->dz() : elt->dz()));
691 }

◆ get_exit_radius()

double CaloDepthTool::get_exit_radius ( CaloCell_ID::CaloSample  sample,
double  eta,
double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

will look for the corresponding CaloDetDescrElement and return its middle radius

Definition at line 722 of file CaloDepthTool.cxx.

726 {
727 
728  const CaloDetDescrElement* elt = caloDD->get_element(sample, eta, phi);
729  if (!elt) {
730  return s_default;
731  }
732 
733  //Only for tile is dR the full radius of the layer - for
734  //other calorimeters it is half the radius
735  if (elt->is_tile()) return (elt->r() + elt->dr()/2);
736  else return (elt->r() + elt->dr());
737 }

◆ get_exit_z()

double CaloDepthTool::get_exit_z ( CaloCell_ID::CaloSample  sample,
double  eta,
double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

will look for the corresponding CaloDetDescrElement and return its middle z

Definition at line 740 of file CaloDepthTool.cxx.

744 {
745 
746  const CaloDetDescrElement* elt = caloDD->get_element(sample, eta, phi);
747  if (!elt) {
748  return s_default;
749  }
750 
751  //Only for tile is dZ the full Z length of the layer - for
752  //other calorimeters it is half of this
753  if (elt->is_tile()) return (elt->z() + (elt->z() < 0 ? -elt->dz()/2 : elt->dz()/2));
754  else return (elt->z() + (elt->z() < 0 ? -elt->dz() : elt->dz()));
755 }

◆ get_middle_radius()

double CaloDepthTool::get_middle_radius ( CaloCell_ID::CaloSample  sample,
double  eta,
double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

will look for the corresponding CaloDetDescrElement and return its middle radius

Definition at line 694 of file CaloDepthTool.cxx.

698 {
699 
700  const CaloDetDescrElement* elt = caloDD->get_element(sample, eta, phi);
701  if (!elt) {
702  return s_default;
703  }
704  return elt->r();
705 }

◆ get_middle_z()

double CaloDepthTool::get_middle_z ( CaloCell_ID::CaloSample  sample,
double  eta,
double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

will look for the corresponding CaloDetDescrElement and return its middle z

Definition at line 708 of file CaloDepthTool.cxx.

712 {
713 
714  const CaloDetDescrElement* elt = caloDD->get_element(sample, eta, phi);
715  if (!elt) {
716  return s_default;
717  }
718  return elt->z();
719 }

◆ initialize()

StatusCode CaloDepthTool::initialize ( )
overridevirtual

Tool Initialize.

Definition at line 61 of file CaloDepthTool.cxx.

62 {
63 
64  ATH_CHECK(detStore()->retrieve(m_calo_id, "CaloCell_ID"));
65 
66  if (!m_depth_choice.empty()) {
67 
68  auto it = s_stringToEnum.find(m_depth_choice);
69  if (it != s_stringToEnum.end()) {
70  m_depthChoice = it->second;
71  } else {
72  ATH_MSG_FATAL(" invalid depth choice " << m_depth_choice);
73  return StatusCode::FAILURE;
74  }
75 
76  }
77  return StatusCode::SUCCESS;
78 }

◆ 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 & CaloDepthTool::interfaceID ( )
static

Query interface.

Definition at line 44 of file CaloDepthTool.cxx.

45 {
46  return IID_CaloDepthTool;
47 }

◆ middle() [1/2]

double CaloDepthTool::middle ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
static

For a given direction, return the middle of the given CaloCell_ID::CaloSample.

If the direction does not cross any CaloCell, the returned bool will be set to False.

Definition at line 483 of file CaloDepthTool.cxx.

487 {
488  double radius = s_default;
489 
496  radius = get_middle_z(sample, eta, phi, caloDD);
497  else
498  radius = get_middle_radius(sample, eta, phi, caloDD);
499 
500  return radius;
501 }

◆ middle() [2/2]

double CaloDepthTool::middle ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
static

For a given direction, return the middle of the given CaloCell_ID::CaloSample.

If the direction does not cross any CaloCell, the returned bool will be set to False.

Definition at line 469 of file CaloDepthTool.cxx.

475 {
478  subcalo, barrel, sampling_or_module, sample);
479  return middle(sample, eta, phi, caloDD);
480 }

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

◆ operator=()

CaloDepthTool& CaloDepthTool::operator= ( const CaloDepthTool )
protected

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

◆ radius() [1/2]

double CaloDepthTool::radius ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
) const

get radius

Generic method to be used in client code : the default choosen by joboption, and if the result is 0 because the eta/phi direction is outside the Sample acceptance, returns the egparametrised depth as backup solution.

Definition at line 103 of file CaloDepthTool.cxx.

107 {
108  double radius = s_default;
109 
111  radius = egparametrized(sample, eta, phi, caloDD);
112  } else if (m_depthChoice == DepthChoice::cscopt) {
113  radius = cscopt_parametrized(sample, eta, phi, caloDD);
114  } else if (m_depthChoice == DepthChoice::cscopt2) {
116  } else if (m_depthChoice == DepthChoice::TBparam) {
117  radius = TBparametrized(sample, eta, phi, caloDD);
118  } else if (m_depthChoice == DepthChoice::entrance) {
119  radius = entrance(sample, eta, phi, caloDD);
120  } else if (m_depthChoice == DepthChoice::middle) {
121  radius = middle(sample, eta, phi, caloDD);
122  } else if (m_depthChoice == DepthChoice::flat) {
123  if (eta >= 0) {
124  radius = flat(sample, 1, caloDD);
125  } else {
126  radius = flat(sample, -1, caloDD);
127  }
128  } else {
129  radius = entrance(sample, eta, phi, caloDD);
130  }
131 
132  // outside DD, use parametrised radius as default
133  // it is OK, but choice should be left to the user
134  if (std::abs(radius) < 10.) {
135  radius = egparametrized(sample, eta, phi, caloDD);
136  }
137 
138  return radius;
139 }

◆ radius() [2/2]

double CaloDepthTool::radius ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
) const

get radius

Generic method to be used in client code : the default choosen by joboption, and if the result is 0 because the eta/phi direction is outside the Sample acceptance, returns the egparametrised depth as backup solution.

Definition at line 89 of file CaloDepthTool.cxx.

95 {
98  subcalo, barrel, sampling_or_module, sample);
99  return radius(sample, eta, phi, caloDD);
100 }

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

◆ TBparametrized() [1/2]

double CaloDepthTool::TBparametrized ( const CaloCell_ID::CaloSample  sample,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

Parametrisation taken from the old egammaqdepth class, but adapted for TestBeam.

Only LAREM is foreseen

Definition at line 403 of file CaloDepthTool.cxx.

407 {
408  double radius = s_default;
409 
410  // release 10.0.1 : the analysis is not advanced enough to know what is
411  // needed. right now, use the eg parametrisation everywhere possible, entrance
412  // elsewere.
414  return egparametrized(sample, eta, phi, caloDD);
415  } else if (sample == CaloCell_ID::EMB1) {
416  return egparametrized(sample, eta, phi, caloDD);
417  } else if (sample == CaloCell_ID::EMB2) {
418  return egparametrized(sample, eta, phi, caloDD);
419  } else if (sample == CaloCell_ID::EMB3) {
420  return egparametrized(sample, eta, phi, caloDD);
421  } else {
422  return entrance(sample, eta, phi, caloDD);
423  }
424 
425  return radius;
426 }

◆ TBparametrized() [2/2]

double CaloDepthTool::TBparametrized ( const CaloCell_ID::SUBCALO  subcalo,
const int  sampling_or_module,
const bool  barrel,
const double  eta,
const double  phi,
const CaloDetDescrManager caloDD 
)
staticprivate

Parametrisation taken from the old egammaqdepth class, but adapted for TestBeam.

Only LAREM is foreseen

Definition at line 389 of file CaloDepthTool.cxx.

395 {
398  subcalo, barrel, sampling_or_module, sample);
399  return TBparametrized(sample, eta, phi, caloDD);
400 }

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

const CaloCell_ID* CaloDepthTool::m_calo_id
private

ID Helper.

Definition at line 341 of file CaloDepthTool.h.

◆ m_depth_choice

Gaudi::Property<std::string> CaloDepthTool::m_depth_choice { this, "DepthChoice", "", "depth choice" }
private

Depth choice related code User passes a string but we convert to an enum at init to avoid string comparisons.

Definition at line 336 of file CaloDepthTool.h.

◆ m_depthChoice

DepthChoice CaloDepthTool::m_depthChoice = DepthChoice::entrance
private

Definition at line 338 of file CaloDepthTool.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_range

CaloPhiRange CaloDepthTool::m_range
private

Phi range helper object.

Definition at line 344 of file CaloDepthTool.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:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
CaloCell_ID_FCS::TileExt2
@ TileExt2
Definition: FastCaloSim_CaloCell_ID.h:39
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
CaloDepthTool::m_depth_choice
Gaudi::Property< std::string > m_depth_choice
Depth choice related code User passes a string but we convert to an enum at init to avoid string comp...
Definition: CaloDepthTool.h:336
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CaloCell_ID_FCS::TileExt0
@ TileExt0
Definition: FastCaloSim_CaloCell_ID.h:37
CaloDepthTool::get_entrance_z
static double get_entrance_z(CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
will look for the corresponding CaloDetDescrElement and return its entrance z
Definition: CaloDepthTool.cxx:677
CaloCell_ID_FCS::TileBar1
@ TileBar1
Definition: FastCaloSim_CaloCell_ID.h:32
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
CaloDepthTool::get_middle_z
static double get_middle_z(CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
will look for the corresponding CaloDetDescrElement and return its middle z
Definition: CaloDepthTool.cxx:708
CaloDetDescrManager_Base::get_element
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
Definition: CaloDetDescrManager.cxx:159
CaloDetDescrElement::dr
float dr() const
cell dr
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:360
skel.it
it
Definition: skel.GENtoEVGEN.py:396
CaloDepthTool::m_calo_id
const CaloCell_ID * m_calo_id
ID Helper.
Definition: CaloDepthTool.h:341
CaloCell_ID_FCS::FCAL1
@ FCAL1
Definition: FastCaloSim_CaloCell_ID.h:41
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
CaloDepthTool::DepthChoice::flat
@ flat
CaloCell_ID_FCS::HEC2
@ HEC2
Definition: FastCaloSim_CaloCell_ID.h:29
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
CaloDepthTool::get_entrance_radius
static double get_entrance_radius(CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
will look for the corresponding CaloDetDescrElement and return its entrance radius
Definition: CaloDepthTool.cxx:660
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
CaloDetDescrManager_Base::build_sample
static void build_sample(CaloCell_ID::SUBCALO subCalo, bool barrel, int sampling_or_module, CaloCell_ID::CaloSample &sample)
translate between the 2 ways to label a sub-detector:
Definition: CaloDetDescrManager.cxx:1425
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
CaloDepthTool::DepthChoice::entrance
@ entrance
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
TRT::Hit::side
@ side
Definition: HitInfo.h:83
CaloDepthTool::exit
static double exit(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
For a given direction, return the exit of the given CaloCell_ID::CaloSample.
Definition: CaloDepthTool.cxx:504
CaloDetDescrElement::dz
float dz() const
cell dz
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:379
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
python.SystemOfUnits.millimeter
int millimeter
Definition: SystemOfUnits.py:53
AthCommonDataStore
Definition: AthCommonDataStore.h:52
CaloCell_ID_FCS::HEC1
@ HEC1
Definition: FastCaloSim_CaloCell_ID.h:28
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:113
CaloDepthTool::m_depthChoice
DepthChoice m_depthChoice
Definition: CaloDepthTool.h:338
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
CaloCell_ID_FCS::TileGap2
@ TileGap2
Definition: FastCaloSim_CaloCell_ID.h:35
test_pyathena.parent
parent
Definition: test_pyathena.py:15
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloDepthTool::entrance
static double entrance(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
For a given direction, return the entrance of the given CaloCell_ID::CaloSample.
Definition: CaloDepthTool.cxx:433
CaloDepthTool::DepthChoice::cscopt
@ cscopt
CaloDepthTool::deta
static double deta(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const CaloDetDescrManager *caloDD)
How far are you (in eta) from a given sample or - if you are in - how far are you from the edge ?
Definition: CaloDepthTool.cxx:142
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
CaloDepthTool::egparametrized
static double egparametrized(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
Methods taken from the old egammaqdepth class : return the parametrised depth used in DC1 and DC2.
Definition: CaloDepthTool.cxx:169
CaloCell_ID_FCS::TileGap1
@ TileGap1
Definition: FastCaloSim_CaloCell_ID.h:34
CaloDepthTool::get_middle_radius
static double get_middle_radius(CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
will look for the corresponding CaloDetDescrElement and return its middle radius
Definition: CaloDepthTool.cxx:694
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
CaloDepthTool::flat
static double flat(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const int side, const CaloDetDescrManager *caloDD)
If the direction is not specified, returns a "flat" aproximation (truely valid for strips only).
Definition: CaloDepthTool.cxx:539
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
CaloDetDescrElement::is_tile
bool is_tile() const
cell belongs to Tile
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:442
CaloDepthTool::TBparametrized
static double TBparametrized(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
Parametrisation taken from the old egammaqdepth class, but adapted for TestBeam.
Definition: CaloDepthTool.cxx:389
CaloDepthTool::cscopt2_parametrized
static double cscopt2_parametrized(const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
Same as cscopt with the outermost EMB2 point excluded.
Definition: CaloDepthTool.cxx:323
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
CaloDepthTool::cscopt_parametrized
static double cscopt_parametrized(const CaloCell_ID::CaloSample sample, const double eta, const double phi, const CaloDetDescrManager *caloDD)
Layers 1 and 2 depths set to give the best eta resolution.
Definition: CaloDepthTool.cxx:253
CaloDepthTool::DepthChoice::egparam
@ egparam
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
CaloCell_ID_FCS::TileExt1
@ TileExt1
Definition: FastCaloSim_CaloCell_ID.h:38
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
CaloDepthTool::radius
double radius(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD) const
get radius
Definition: CaloDepthTool.cxx:89
CaloDetDescrManager_Base::is_in
bool is_in(double eta, double phi, CaloCell_ID::CaloSample sample, double &etadist) const
return true if direction eta,phi crosses ANY of the corresponding descriptors
Definition: CaloDetDescrManager.cxx:1348
CaloCell_ID_FCS::HEC0
@ HEC0
Definition: FastCaloSim_CaloCell_ID.h:27
CaloDetDescrManager_Base::calo_descriptors_range
calo_descr_range calo_descriptors_range() const
Range over descriptors.
Definition: CaloDetDescrManager.cxx:535
a
TList * a
Definition: liststreamerinfos.cxx:10
CaloDepthTool::DepthChoice::middle
@ middle
h
CaloDetDescriptor
This is a base class for LAr and Tile Descriptors The primary goal is to speed up loops over all the ...
Definition: CaloDetDescriptor.h:58
CaloDepthTool::get_exit_radius
static double get_exit_radius(CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
will look for the corresponding CaloDetDescrElement and return its middle radius
Definition: CaloDepthTool.cxx:722
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
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
CaloDepthTool::get_exit_z
static double get_exit_z(CaloCell_ID::CaloSample sample, double eta, double phi, const CaloDetDescrManager *caloDD)
will look for the corresponding CaloDetDescrElement and return its middle z
Definition: CaloDepthTool.cxx:740
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DetectorZone::barrel
@ barrel
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
CaloCell_ID_FCS::FCAL2
@ FCAL2
Definition: FastCaloSim_CaloCell_ID.h:42
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
CaloDepthTool::depth
static double depth(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const int side, const CaloDetDescrManager *caloDD)
If the direction is not specified, returns a "flat" aproximation (truely valid for strips only).
Definition: CaloDepthTool.cxx:605
CaloDepthTool::middle
static double middle(const CaloCell_ID::SUBCALO subcalo, const int sampling_or_module, const bool barrel, const double eta, const double phi, const CaloDetDescrManager *caloDD)
For a given direction, return the middle of the given CaloCell_ID::CaloSample.
Definition: CaloDepthTool.cxx:469
CaloDetDescrElement::r
float r() const
cell r
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:348
CaloCell_ID_FCS::HEC3
@ HEC3
Definition: FastCaloSim_CaloCell_ID.h:30
CaloDepthTool::DepthChoice::TBparam
@ TBparam
CaloCell_ID_FCS::FCAL0
@ FCAL0
Definition: FastCaloSim_CaloCell_ID.h:40
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
CaloCell_ID_FCS::TileBar2
@ TileBar2
Definition: FastCaloSim_CaloCell_ID.h:33
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
CaloDepthTool::DepthChoice::cscopt2
@ cscopt2
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
fitman.k
k
Definition: fitman.py:528