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

#include <GetLCDeadMaterialTree.h>

Inheritance diagram for GetLCDeadMaterialTree:
Collaboration diagram for GetLCDeadMaterialTree:

Public Member Functions

 GetLCDeadMaterialTree (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~GetLCDeadMaterialTree ()
 
virtual StatusCode initialize ()
 
virtual StatusCode execute ()
 
virtual StatusCode finalize ()
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. 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 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
 

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 std::pair< std::string, xAOD::CaloCluster::MomentTypemoment_name_pair
 
typedef std::vector< moment_name_pairmoment_name_vector
 
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...
 

Private Attributes

std::string m_HadDMCoeffInitFile
 Name of text file with initial parameters for coefficients calculation. More...
 
TTree * m_outputTree
 Output tree. More...
 
std::string m_outputFileName
 Name of the output file to save tree in. More...
 
TFile * m_outputFile
 Output file to save tree in. More...
 
SG::ReadHandleKey< xAOD::CaloClusterContainerm_clusterCollName
 Name of the uncalibrated CaloClusterContainer to use. More...
 
SG::ReadHandleKey< xAOD::CaloClusterContainerm_clusterCollNameCalib
 Name of the calibrated CaloClusterContainer to use. More...
 
CaloLocalHadCoeffm_HadDMCoeff
 Collection of dead material correction coeffitients. More...
 
CaloHadDMCoeffDatam_data
 data to save into the tree More...
 
bool m_doSaveCalibClusInfo
 save additional cluster info from calibrated collections More...
 
double m_energyMin
 
std::vector< xAOD::CaloCluster::MomentTypem_momentForDMArea
 
const CaloCell_IDm_calo_id
 
DataObjIDColl m_extendedExtraObjects
 
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 33 of file GetLCDeadMaterialTree.h.

Member Typedef Documentation

◆ moment_name_pair

Definition at line 94 of file GetLCDeadMaterialTree.h.

◆ moment_name_vector

Definition at line 95 of file GetLCDeadMaterialTree.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ GetLCDeadMaterialTree()

GetLCDeadMaterialTree::GetLCDeadMaterialTree ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 58 of file GetLCDeadMaterialTree.cxx.

60  : AthAlgorithm(name, pSvcLocator),
61  m_HadDMCoeffInitFile("CaloHadDMCoeff_init_v2.txt"),
62  m_outputTree(nullptr),
63  m_outputFileName("DeadMaterialTree.root"),
64  m_outputFile(nullptr),
65  m_clusterCollName("CaloTopoClusters"),
66  m_HadDMCoeff(nullptr),
67  m_data(nullptr),
68  m_doSaveCalibClusInfo(false),
69  m_energyMin(200*MeV),
70  m_calo_id(nullptr)
71 {
72 
73  // dead material zone description
74  declareProperty("HadDMCoeffInitFile",m_HadDMCoeffInitFile);
75 
76  // Name of output file to save histograms in
77  declareProperty("OutputFileName",m_outputFileName);
78 
79  // Name of ClusterContainer (uncalibrated) to use
80  declareProperty("ClusterCollectionName",m_clusterCollName);
81 
82  // Name of ClusterContainer (calibrated) to use
83  declareProperty("ClusterCollectionNameCalib",m_clusterCollNameCalib);
84 
85  // to save additional info from the collection with calibrated clusters
86  declareProperty("doSaveCalibClusInfo", m_doSaveCalibClusInfo);
87 
88 }

◆ ~GetLCDeadMaterialTree()

GetLCDeadMaterialTree::~GetLCDeadMaterialTree ( )
virtual

Definition at line 95 of file GetLCDeadMaterialTree.cxx.

96 {
97  if( m_HadDMCoeff ) delete m_HadDMCoeff;
98 }

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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< Algorithm > >::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; }

◆ execute()

StatusCode GetLCDeadMaterialTree::execute ( )
virtual

Definition at line 190 of file GetLCDeadMaterialTree.cxx.

191 {
192  //bool useLink = true;
193 
194  /* ********************************************
195  access to cluster container
196  ******************************************** */
198 
199  /* ********************************************
200  reading primary particle
201  ******************************************** */
202  const McEventCollection* truthEvent=nullptr;
203  ATH_CHECK( evtStore()->retrieve(truthEvent, "TruthEvent") );
204 #ifdef HEPMC3
205  const HepMC::ConstGenParticlePtr& gen = truthEvent->at(0)->particles().front();
206 #else
207  HepMC::GenEvent::particle_const_iterator pit = truthEvent->at(0)->particles_begin();
208  const HepMC::GenParticle * gen = *pit;
209 #endif
210 
211  double mc_eta = gen->momentum().pseudoRapidity();
212  double mc_phi = gen->momentum().phi();
213 
214  m_data->clear();
215 
216  m_data->m_mc_pdg = gen->pdg_id();
217  m_data->m_mc_ener = gen->momentum().e();
218  m_data->m_mc_eta = mc_eta;
219  m_data->m_mc_phi = mc_phi;
220 
221  int nClus = pClusColl->size();
222  m_data->m_ncls = nClus;
223  m_data->m_cls_ener->resize(nClus, 0.0);
224  m_data->m_cls_ener_unw->resize(nClus, 0.0);
225  m_data->m_cls_lambda->resize(nClus, 0.0);
226  m_data->m_cls_eta->resize(nClus, 0.0);
227  m_data->m_cls_phi->resize(nClus, 0.0);
228  //m_data->m_cls_emfrac->resize(nClus, 0.0);
229  m_data->m_cls_smpener->resize(nClus);
230  m_data->m_cls_smpener_unw->resize(nClus);
231  //m_data->m_cls_ibin->resize(nClus);
232  m_data->m_cls_eprep->resize(nClus);
233  m_data->m_cls_dmener->resize(nClus);
235  for(int i_cls=0; i_cls<nClus; i_cls++){
236  //(*m_cls_ibin)[i_cls].resize(m_narea, -1);
237  (*m_data->m_cls_smpener)[i_cls].resize(CaloSampling::Unknown, 0.0);
238  (*m_data->m_cls_smpener_unw)[i_cls].resize(CaloSampling::Unknown, 0.0);
239  (*m_data->m_cls_eprep)[i_cls].resize(m_data->m_narea, 0.0);
240  (*m_data->m_cls_dmener)[i_cls].resize(m_data->m_narea, 0.0);
241  }
242  m_data->m_cls_engcalib->resize(nClus, 0.0);
243  m_data->m_cls_recostat->resize(nClus, 0);
244  m_data->m_cls_pi0prob->resize(nClus, 0.0);
245  m_data->m_cls_isol->resize(nClus, 0.0);
246  m_data->m_cls_oocener->resize(nClus, 0.0);
247  m_data->m_cls_calib_emfrac->resize(nClus, 0.0);
248  m_data->m_cls_engcalibpres->resize(nClus, 0.0);
249 
250  xAOD::CaloClusterContainer::const_iterator clusIter = pClusColl->begin();
251  xAOD::CaloClusterContainer::const_iterator clusIterEnd = pClusColl->end();
252  unsigned int iClus = 0;
253  for( ;clusIter!=clusIterEnd;++clusIter,++iClus) {
254  const xAOD::CaloCluster * theCluster = (*clusIter);
255 
256  (*m_data->m_cls_ener)[iClus] = theCluster->e();
257  // cluster energy in samplings
258  for(int i_smp=0; i_smp<(int)CaloSampling::Unknown; i_smp++){
259  (*m_data->m_cls_smpener)[iClus][i_smp] = theCluster->eSample((CaloSampling::CaloSample)i_smp);
260  }
261 
262  // calibration energy of clusters
263  double mx_calib_tot=0;
264  if( !theCluster->retrieveMoment( xAOD::CaloCluster::ENG_CALIB_TOT, mx_calib_tot) ) {
265  ATH_MSG_ERROR( "Moment ENG_CALIB_TOT is absent" );
266  return StatusCode::FAILURE;
267  }
268  m_data->m_engClusSumCalib += mx_calib_tot;
269  (*m_data->m_cls_engcalib)[iClus] = mx_calib_tot;
270 
271  double mx_calib_emb0=0, mx_calib_eme0=0, mx_calib_tileg3=0;
272  if( !theCluster->retrieveMoment(xAOD::CaloCluster::ENG_CALIB_EMB0, mx_calib_emb0)
273  || !theCluster->retrieveMoment(xAOD::CaloCluster::ENG_CALIB_EME0, mx_calib_eme0)
274  || !theCluster->retrieveMoment(xAOD::CaloCluster::ENG_CALIB_TILEG3, mx_calib_tileg3)){
275  ATH_MSG_ERROR( "One of the moment ENG_CALIB_EMB0, ENG_CALIB_EME0, ENG_CALIB_TILEG3 is absent" );
276  return StatusCode::FAILURE;
277  }else{
278  (*m_data->m_cls_engcalibpres)[iClus] = (mx_calib_emb0+mx_calib_eme0+mx_calib_tileg3);
279  }
280 
283  if(pClusColl->size() != pClusCollCalib->size()) {
284  ATH_MSG_WARNING( "Different size of calibrated and uncalibrated cluster collection "
285  << pClusColl->size() << " " << pClusCollCalib->size() );
286  return StatusCode::SUCCESS;
287  }
288 
289  const xAOD::CaloCluster * theClusterCalib = pClusCollCalib->at(iClus);
290 
291  // reco status
292  const CaloRecoStatus& recoStatus = theClusterCalib->recoStatus();
293 
294  (*m_data->m_cls_recostat)[iClus] = recoStatus.getStatusWord();
295 
296  // classification pi0 probability (available on calibrated cluster)
297  double pi0Prob = 0;
298  if( !theClusterCalib->retrieveMoment( xAOD::CaloCluster::EM_PROBABILITY, pi0Prob) ) {
299  //ATH_MSG_ERROR( "Moment ENG_CALIB_TOT is absent" );
300  pi0Prob = -1.0;
301  } else {
302  if ( pi0Prob < 0 ) pi0Prob = 0;
303  if ( pi0Prob > 1 ) pi0Prob = 1;
304  }
305  (*m_data->m_cls_pi0prob)[iClus] = pi0Prob;
306  } // m_doSaveCalibClusInfo
307 
308  // cluster isolation moment and out of cluster energy
309  double mx_isol;
310  if ( !theCluster->retrieveMoment(xAOD::CaloCluster::ISOLATION, mx_isol)) {
311  ATH_MSG_ERROR( "Moment ISOLATION is absent" );
312  return StatusCode::FAILURE;
313  }else{
314  (*m_data->m_cls_isol)[iClus] = mx_isol;
315  }
316 
317  double mx_calib_oocL;
318  if ( !theCluster->retrieveMoment(xAOD::CaloCluster::ENG_CALIB_OUT_L, mx_calib_oocL)) {
319  ATH_MSG_ERROR( "Moment ENG_CALIB_OUT_L is absent" );
320  return StatusCode::FAILURE;
321  }else{
322  (*m_data->m_cls_oocener)[iClus] = mx_calib_oocL;
323  }
324 
325  double mx_calib_emfrac;
326  if ( !theCluster->retrieveMoment(xAOD::CaloCluster::ENG_CALIB_FRAC_EM, mx_calib_emfrac)) {
327  ATH_MSG_WARNING( "Moment ENG_CALIB_FRAC_EM is absent" );
328  return StatusCode::FAILURE;
329  }else{
330  (*m_data->m_cls_calib_emfrac)[iClus] = mx_calib_emfrac;
331  }
332 
333 
334  // calculation of cluster energy and energy in samplings without accounting
335  // cells weights
336  xAOD::CaloCluster::const_cell_iterator cellIter = theCluster->cell_begin();
337  xAOD::CaloCluster::const_cell_iterator cellIterEnd = theCluster->cell_end();
338  for(; cellIter != cellIterEnd; cellIter++ ){
339  const CaloCell* pCell = (*cellIter);
340  Identifier myId = pCell->ID();
342  (*m_data->m_cls_ener_unw)[iClus] += pCell->e();
343  (*m_data->m_cls_smpener_unw)[iClus][(int)nsmp] += pCell->e();
344  }
345 
346  double clusEner = (*m_data->m_cls_ener_unw)[iClus];
347  double clusLambda=0;
348  if (!theCluster->retrieveMoment(xAOD::CaloCluster::CENTER_LAMBDA,clusLambda)) {
349  ATH_MSG_WARNING( "Moment CENTER_LAMBDA is absent" );
350  return StatusCode::FAILURE;
351  }
352  (*m_data->m_cls_lambda)[iClus] = clusLambda;
353  (*m_data->m_cls_eta)[iClus] = theCluster->eta();
354  (*m_data->m_cls_phi)[iClus] = theCluster->phi();
355  if(clusEner > m_energyMin ) {
356  //clusEner = log10(clusEner);
357  //if(clusEner > 6.3) clusEner = 6.2999;
358  //clusLambda = log10(clusLambda);
359  //if(clusLambda > 4.0) clusLambda = 3.9999;
360  //double clusEta=fabs(theCluster->eta());
361 
362  for(int i_dma=0; i_dma<m_data->m_narea; i_dma++){
363  //(*m_cls_ibin)[iClus][i_dma] = m_HadDMCoeff->getBin(i_dma, (float)clusEmFrac, (float)clusEner, (float)clusLambda, (float)clusEta);
364  double dmVal=0;
365  if (!theCluster->retrieveMoment( m_momentForDMArea[i_dma],dmVal)) {
366  ATH_MSG_WARNING( "Moment "<< m_momentForDMArea[i_dma] << " is absent" );
367  return StatusCode::FAILURE;
368  }
369  (*m_data->m_cls_dmener)[iClus][i_dma] = dmVal;
370 
371  // now we have to calculate cluster quantities which we will use later for
372  // reconstruction of given dead material calibration moment
373  double eprep = 0.0;
374  double x(0), y(0);
375  switch ( m_momentForDMArea[i_dma] ) {
378  if(x > 0.0) {
379  eprep = x;
380  }
381  break;
385  if(x>0.0 && y>0.0) {
386  eprep = sqrt(x*y);
387  }
388  break;
391  if(x > 0.0) {
392  eprep = x;
393  }
394  break;
397  if( x > 0.0 ) {
398  eprep = x;
399  }
400  break;
404  if(x>0.0 && y>0.0) {
405  eprep = sqrt(x*y);
406  }
407  break;
409  eprep = (*m_data->m_cls_ener_unw)[iClus];
410  break;
412  eprep = (*m_data->m_cls_ener_unw)[iClus];
413  break;
415  eprep = (*m_data->m_cls_ener_unw)[iClus];
416  break;
417  default:
418  ATH_MSG_ERROR( "No such moment registered " << m_momentForDMArea[i_dma] );
419  return StatusCode::FAILURE;
420  break;
421  }
422  (*m_data->m_cls_eprep)[iClus][i_dma] = eprep;
423 
424  } // loop over dm areas
425 
426  } // good cluster
427  } // loop over clusters
428 
429  // now we have to process special case, when we have DM energy, say, in front of the
430  // calorimeter but there is no signal in presampler itself. When we have to add this
431  // DM energy into 'unclassified' area
432  for(int i_cls=0; i_cls<m_data->m_ncls; i_cls++){
433  double edm_uncorrected = 0.0;
434  for(int i_dma=0; i_dma<m_data->m_narea; i_dma++){
436  if( (*m_data->m_cls_eprep)[i_cls][i_dma] <= 0.0 &&
442  {
443  edm_uncorrected += (*m_data->m_cls_dmener)[i_cls][i_dma];
444  (*m_data->m_cls_dmener)[i_cls][i_dma] = 0.0;
445  }
446  } // i_dma
447  // now let's put this energy into unclassified area
448  for(int i_dma=0; i_dma<m_data->m_narea; i_dma++){
450  (*m_data->m_cls_dmener)[i_cls][i_dma] += edm_uncorrected;
451  }
452  } // i_dma
453  } // i_cls
454 
455  m_outputTree->Fill();
456 
457  return StatusCode::SUCCESS;
458 }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51 {
52  // If we didn't find any symlinks to add, just return the collection
53  // from the base class. Otherwise, return the extended collection.
54  if (!m_extendedExtraObjects.empty()) {
56  }
57  return Algorithm::extraOutputDeps();
58 }

◆ finalize()

StatusCode GetLCDeadMaterialTree::finalize ( )
virtual

Definition at line 175 of file GetLCDeadMaterialTree.cxx.

176 {
177  ATH_MSG_INFO( "Writing out tree" );
178  m_outputFile->cd();
179  m_outputTree->Write();
180  m_outputFile->Close();
181 
182  return StatusCode::SUCCESS;
183 }

◆ initialize()

StatusCode GetLCDeadMaterialTree::initialize ( )
virtual

Definition at line 105 of file GetLCDeadMaterialTree.cxx.

106 {
107  ATH_CHECK(detStore()->retrieve(m_calo_id, "CaloCell_ID"));
108 
109  /* ********************************************
110  set list of valid moments
111  ******************************************** */
112  moment_name_vector validNames;
113  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_EMB0"),xAOD::CaloCluster::ENG_CALIB_DEAD_EMB0));
114  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_TILE0"),xAOD::CaloCluster::ENG_CALIB_DEAD_TILE0));
115  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_TILEG3"),xAOD::CaloCluster::ENG_CALIB_DEAD_TILEG3));
116  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_EME0"),xAOD::CaloCluster::ENG_CALIB_DEAD_EME0));
117  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_HEC0"),xAOD::CaloCluster::ENG_CALIB_DEAD_HEC0));
118  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_FCAL"),xAOD::CaloCluster::ENG_CALIB_DEAD_FCAL));
119  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_LEAKAGE"),xAOD::CaloCluster::ENG_CALIB_DEAD_LEAKAGE));
120  validNames.push_back(moment_name_pair(std::string("ENG_CALIB_DEAD_UNCLASS"),xAOD::CaloCluster::ENG_CALIB_DEAD_UNCLASS));
121 
122  /* ********************************************
123  initial coefficients
124  ******************************************** */
125  CaloLocalHadCoeffHelper dmHelper;
126  std::string fileName = PathResolver::find_file (m_HadDMCoeffInitFile, "DATAPATH");
127  m_HadDMCoeff = dmHelper.InitDataFromFile(fileName.c_str());
128  if( !m_HadDMCoeff ) {
129  ATH_MSG_FATAL( " Error while initializing default dead material coefficients " );
130  return StatusCode::FAILURE;
131  }
132  // how we have to set correspondance between dead material areas and calibration moments
134  for(int i_dm=0; i_dm<m_HadDMCoeff->getSizeAreaSet(); i_dm++){
135  bool isValid(false);
136  for (const moment_name_pair& vname : validNames) {
137  if ( m_HadDMCoeff->getArea(i_dm)->getTitle() == vname.first ) {
138  m_momentForDMArea[i_dm] = vname.second;
139  isValid = true;
140  break;
141  }
142  }
143  if ( !isValid) {
144  ATH_MSG_FATAL( " Unknown moment name '" << m_HadDMCoeff->getArea(i_dm)->getTitle() << "' in the m_HadDMCoeff!" );
145  return StatusCode::FAILURE;
146  }
147  }
148 
149  /* ********************************************
150  output file&tree
151  ******************************************** */
152  m_data = new CaloHadDMCoeffData(nullptr);
153 
154  m_outputFile = new TFile(m_outputFileName.c_str(),"RECREATE");
155  m_outputFile->cd();
156 
157  m_outputTree = m_data->MakeTree("DeadMaterialTree");
158 
160  if (m_doSaveCalibClusInfo) {
162  }
163  else {
165  }
166 
167  return StatusCode::SUCCESS;
168 }

◆ inputHandles()

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

Return this algorithm's input handles.

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

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

MsgStream& AthCommonMsg< Algorithm >::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< Algorithm >::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< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

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

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, PyAthena::Alg, and AthHistogramAlgorithm.

Definition at line 66 of file AthAlgorithm.cxx.

66  {
68 
69  if (sc.isFailure()) {
70  return sc;
71  }
72  ServiceHandle<ICondSvc> cs("CondSvc",name());
73  for (auto h : outputHandles()) {
74  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75  // do this inside the loop so we don't create the CondSvc until needed
76  if ( cs.retrieve().isFailure() ) {
77  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78  return StatusCode::SUCCESS;
79  }
80  if (cs->regHandle(this,*h).isFailure()) {
81  sc = StatusCode::FAILURE;
82  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83  << " with CondSvc");
84  }
85  }
86  }
87  return sc;
88 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::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< Algorithm > >::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* GetLCDeadMaterialTree::m_calo_id
private

Definition at line 98 of file GetLCDeadMaterialTree.h.

◆ m_clusterCollName

SG::ReadHandleKey<xAOD::CaloClusterContainer> GetLCDeadMaterialTree::m_clusterCollName
private

Name of the uncalibrated CaloClusterContainer to use.

Definition at line 72 of file GetLCDeadMaterialTree.h.

◆ m_clusterCollNameCalib

SG::ReadHandleKey<xAOD::CaloClusterContainer> GetLCDeadMaterialTree::m_clusterCollNameCalib
private

Name of the calibrated CaloClusterContainer to use.

Definition at line 76 of file GetLCDeadMaterialTree.h.

◆ m_data

CaloHadDMCoeffData* GetLCDeadMaterialTree::m_data
private

data to save into the tree

Definition at line 84 of file GetLCDeadMaterialTree.h.

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doSaveCalibClusInfo

bool GetLCDeadMaterialTree::m_doSaveCalibClusInfo
private

save additional cluster info from calibrated collections

Definition at line 88 of file GetLCDeadMaterialTree.h.

◆ m_energyMin

double GetLCDeadMaterialTree::m_energyMin
private

Definition at line 91 of file GetLCDeadMaterialTree.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_HadDMCoeff

CaloLocalHadCoeff* GetLCDeadMaterialTree::m_HadDMCoeff
private

Collection of dead material correction coeffitients.

Definition at line 80 of file GetLCDeadMaterialTree.h.

◆ m_HadDMCoeffInitFile

std::string GetLCDeadMaterialTree::m_HadDMCoeffInitFile
private

Name of text file with initial parameters for coefficients calculation.

File contains binning info for cluster's emfrac, log10ener, log10lambda and eta to recover energy losses in specific dead material zones

Definition at line 49 of file GetLCDeadMaterialTree.h.

◆ m_momentForDMArea

std::vector<xAOD::CaloCluster::MomentType> GetLCDeadMaterialTree::m_momentForDMArea
private

Definition at line 96 of file GetLCDeadMaterialTree.h.

◆ m_outputFile

TFile* GetLCDeadMaterialTree::m_outputFile
private

Output file to save tree in.

Internal variable pointing to the output file.

Definition at line 68 of file GetLCDeadMaterialTree.h.

◆ m_outputFileName

std::string GetLCDeadMaterialTree::m_outputFileName
private

Name of the output file to save tree in.

Use this property to set the name of the output file containing the DM data tree.

Definition at line 62 of file GetLCDeadMaterialTree.h.

◆ m_outputTree

TTree* GetLCDeadMaterialTree::m_outputTree
private

Output tree.

Output tree to fill and save.

Definition at line 55 of file GetLCDeadMaterialTree.h.

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::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
CaloHadDMCoeffData::m_mc_ener
Double_t m_mc_ener
Definition: CaloHadDMCoeffData.h:39
GetLCDeadMaterialTree::m_energyMin
double m_energyMin
Definition: GetLCDeadMaterialTree.h:91
xAOD::CaloCluster_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: CaloCluster_v1.cxx:256
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
GetLCDeadMaterialTree::m_clusterCollName
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterCollName
Name of the uncalibrated CaloClusterContainer to use.
Definition: GetLCDeadMaterialTree.h:72
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_UNCLASS
@ ENG_CALIB_DEAD_UNCLASS
Attached Calibration Hit energy in dead material in unclassified areas of the detector.
Definition: CaloCluster_v1.h:246
xAOD::CaloCluster_v1::cell_begin
const_cell_iterator cell_begin() const
Iterator of the underlying CaloClusterCellLink (const version)
Definition: CaloCluster_v1.h:812
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CaloHadDMCoeffData::m_cls_dmener
std::vector< std::vector< double > > * m_cls_dmener
Definition: CaloHadDMCoeffData.h:51
GetLCDeadMaterialTree::m_outputFileName
std::string m_outputFileName
Name of the output file to save tree in.
Definition: GetLCDeadMaterialTree.h:62
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
xAOD::CaloCluster_v1::EM_PROBABILITY
@ EM_PROBABILITY
Classification probability to be em-like.
Definition: CaloCluster_v1.h:173
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
CaloHadDMCoeffData::m_cls_lambda
std::vector< double > * m_cls_lambda
Definition: CaloHadDMCoeffData.h:44
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_LEAKAGE
@ ENG_CALIB_DEAD_LEAKAGE
Attached Calibration Hit energy in dead material behind calorimeters.
Definition: CaloCluster_v1.h:243
CaloHadDMCoeffData::MakeTree
TTree * MakeTree(const char *treename)
Definition: CaloHadDMCoeffData.cxx:207
python.SystemOfUnits.MeV
int MeV
Definition: SystemOfUnits.py:154
GetLCDeadMaterialTree::m_HadDMCoeffInitFile
std::string m_HadDMCoeffInitFile
Name of text file with initial parameters for coefficients calculation.
Definition: GetLCDeadMaterialTree.h:49
xAOD::CaloCluster_v1::ENG_CALIB_TILEG3
@ ENG_CALIB_TILEG3
Calibration Hit energy inside the cluster scintillator.
Definition: CaloCluster_v1.h:222
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
CaloHadDMCoeffData::m_mc_pdg
Int_t m_mc_pdg
Definition: CaloHadDMCoeffData.h:38
xAOD::CaloCluster_v1::CENTER_LAMBDA
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
Definition: CaloCluster_v1.h:136
CaloCell::e
virtual double e() const override final
get energy (data member) (synonym to method energy()
Definition: CaloCell.h:317
xAOD::CaloCluster_v1::ENG_CALIB_EMB0
@ ENG_CALIB_EMB0
Calibration Hit energy inside the cluster barrel presampler.
Definition: CaloCluster_v1.h:218
CaloLocalHadCoeff::getSizeAreaSet
int getSizeAreaSet() const
return number of areas defined for this data set
Definition: CaloLocalHadCoeff.h:248
CaloCell_Base_ID::calo_sample
int calo_sample(const Identifier id) const
returns an int taken from Sampling enum and describing the subCalo to which the Id belongs.
Definition: CaloCell_Base_ID.cxx:141
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
CaloHadDMCoeffData::m_narea
Int_t m_narea
Definition: CaloHadDMCoeffData.h:49
isValid
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Definition: AtlasPID.h:620
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_TILE0
@ ENG_CALIB_DEAD_TILE0
Attached Calibration Hit energy in dead material between EMB3 and TILE0.
Definition: CaloCluster_v1.h:230
x
#define x
GetLCDeadMaterialTree::m_calo_id
const CaloCell_ID * m_calo_id
Definition: GetLCDeadMaterialTree.h:98
CaloHadDMCoeffData::m_cls_phi
std::vector< double > * m_cls_phi
Definition: CaloHadDMCoeffData.h:46
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
CaloHadDMCoeffData::m_cls_eta
std::vector< double > * m_cls_eta
Definition: CaloHadDMCoeffData.h:45
master.gen
gen
Definition: master.py:32
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
CaloHadDMCoeffData::m_cls_ener
std::vector< double > * m_cls_ener
Definition: CaloHadDMCoeffData.h:42
xAOD::CaloCluster_v1::MomentType
MomentType
Enums to identify different moments.
Definition: CaloCluster_v1.h:120
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
CaloLocalHadCoeffHelper::InitDataFromFile
CaloLocalHadCoeff * InitDataFromFile(const char *fname)
Definition: CaloLocalHadCoeffHelper.cxx:59
CaloLocalHadCoeffHelper
Definition: CaloLocalHadCoeffHelper.h:14
GetLCDeadMaterialTree::m_data
CaloHadDMCoeffData * m_data
data to save into the tree
Definition: GetLCDeadMaterialTree.h:84
CaloHadDMCoeffData::m_mc_eta
Double_t m_mc_eta
Definition: CaloHadDMCoeffData.h:40
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
CaloHadDMCoeffData::m_cls_isol
std::vector< double > * m_cls_isol
Definition: CaloHadDMCoeffData.h:56
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
AthCommonDataStore
Definition: AthCommonDataStore.h:52
AthAlgorithm::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthAlgorithm.cxx:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CaloHadDMCoeffData::m_cls_smpener
std::vector< std::vector< double > > * m_cls_smpener
Definition: CaloHadDMCoeffData.h:47
CaloHadDMCoeffData::m_mc_phi
Double_t m_mc_phi
Definition: CaloHadDMCoeffData.h:41
AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
xAOD::CaloCluster_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: CaloCluster_v1.cxx:251
CaloHadDMCoeffData::m_cls_ener_unw
std::vector< double > * m_cls_ener_unw
Definition: CaloHadDMCoeffData.h:43
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
GetLCDeadMaterialTree::moment_name_pair
std::pair< std::string, xAOD::CaloCluster::MomentType > moment_name_pair
Definition: GetLCDeadMaterialTree.h:94
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CaloHadDMCoeffData::m_cls_recostat
std::vector< int > * m_cls_recostat
Definition: CaloHadDMCoeffData.h:54
xAOD::CaloCluster_v1::ENG_CALIB_TOT
@ ENG_CALIB_TOT
Calibration Hit energy inside the cluster.
Definition: CaloCluster_v1.h:195
xAOD::CaloCluster_v1::ENG_CALIB_FRAC_EM
@ ENG_CALIB_FRAC_EM
Calibration Hit energy inside the cluster caused by e/gamma/pi0.
Definition: CaloCluster_v1.h:248
xAOD::CaloCluster_v1::ISOLATION
@ ISOLATION
Energy weighted fraction of non-clustered perimeter cells.
Definition: CaloCluster_v1.h:146
CaloHadDMCoeffData::m_cls_smpener_unw
std::vector< std::vector< double > > * m_cls_smpener_unw
Definition: CaloHadDMCoeffData.h:48
CaloHadDMCoeffData
Data to read from special DeadMaterialTree.
Definition: CaloHadDMCoeffData.h:30
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_FCAL
@ ENG_CALIB_DEAD_FCAL
Attached Calibration Hit energy in dead material before FCAL, between FCAL and HEC.
Definition: CaloCluster_v1.h:241
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::CaloCluster_v1::retrieveMoment
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
Definition: CaloCluster_v1.cxx:738
AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
McEventCollection
This defines the McEventCollection, which is really just an ObjectVector of McEvent objects.
Definition: McEventCollection.h:33
GetLCDeadMaterialTree::m_momentForDMArea
std::vector< xAOD::CaloCluster::MomentType > m_momentForDMArea
Definition: GetLCDeadMaterialTree.h:96
CaloHadDMCoeffData::m_cls_engcalibpres
std::vector< double > * m_cls_engcalibpres
Definition: CaloHadDMCoeffData.h:59
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
HepMC::ConstGenParticlePtr
const GenParticle * ConstGenParticlePtr
Definition: GenParticle.h:38
xAOD::CaloCluster_v1::ENG_CALIB_EME0
@ ENG_CALIB_EME0
Calibration Hit energy inside the cluster endcap presampler.
Definition: CaloCluster_v1.h:220
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
CaloHadDMCoeffData::m_cls_calib_emfrac
std::vector< double > * m_cls_calib_emfrac
Definition: CaloHadDMCoeffData.h:58
xAOD::CaloCluster_v1::recoStatus
CaloRecoStatus & recoStatus()
Accesssor to CaloRecoStatus (non-const)
Definition: CaloCluster_v1.h:840
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
CaloHadDMCoeffData::m_cls_engcalib
std::vector< double > * m_cls_engcalib
Definition: CaloHadDMCoeffData.h:53
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_HEC0
@ ENG_CALIB_DEAD_HEC0
Attached Calibration Hit energy in dead material between EME3 and HEC0.
Definition: CaloCluster_v1.h:238
CaloCell::ID
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition: CaloCell.h:279
GetLCDeadMaterialTree::moment_name_vector
std::vector< moment_name_pair > moment_name_vector
Definition: GetLCDeadMaterialTree.h:95
CaloCell_ID_FCS::HEC0
@ HEC0
Definition: FastCaloSim_CaloCell_ID.h:27
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_TILEG3
@ ENG_CALIB_DEAD_TILEG3
Attached Calibration Hit energy in dead material before scintillator.
Definition: CaloCluster_v1.h:232
AthAlgorithm::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Definition: AthAlgorithm.h:79
xAOD::CaloCluster_v1::eSample
float eSample(const CaloSample sampling) const
Definition: CaloCluster_v1.cxx:521
a
TList * a
Definition: liststreamerinfos.cxx:10
y
#define y
h
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
GetLCDeadMaterialTree::m_outputFile
TFile * m_outputFile
Output file to save tree in.
Definition: GetLCDeadMaterialTree.h:68
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
CaloLocalHadCoeff::LocalHadArea::getTitle
const std::string & getTitle() const
return name
Definition: CaloLocalHadCoeff.h:183
xAOD::CaloCluster_v1::cell_end
const_cell_iterator cell_end() const
Definition: CaloCluster_v1.h:813
CaloHadDMCoeffData::m_cls_eprep
std::vector< std::vector< double > > * m_cls_eprep
Definition: CaloHadDMCoeffData.h:50
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
CaloRecoStatus::getStatusWord
virtual const store_type & getStatusWord() const
retrieve the entire status word
Definition: CaloRecoStatus.h:112
CaloHadDMCoeffData::m_cls_oocener
std::vector< double > * m_cls_oocener
Definition: CaloHadDMCoeffData.h:57
GetLCDeadMaterialTree::m_outputTree
TTree * m_outputTree
Output tree.
Definition: GetLCDeadMaterialTree.h:55
GetLCDeadMaterialTree::m_clusterCollNameCalib
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterCollNameCalib
Name of the calibrated CaloClusterContainer to use.
Definition: GetLCDeadMaterialTree.h:76
AthAlgorithm::AthAlgorithm
AthAlgorithm()
Default constructor:
CaloHadDMCoeffData::m_cls_pi0prob
std::vector< double > * m_cls_pi0prob
Definition: CaloHadDMCoeffData.h:55
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
CaloLocalHadCoeff::getArea
const LocalHadArea * getArea(int n_area) const
return area
Definition: CaloLocalHadCoeff.cxx:201
xAOD::CaloCluster_v1::ENG_CALIB_OUT_L
@ ENG_CALIB_OUT_L
Attached Calibration Hit energy outside clusters but inside the calorimeter with loose matching (Angl...
Definition: CaloCluster_v1.h:196
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_EME0
@ ENG_CALIB_DEAD_EME0
Attached Calibration Hit energy in dead material before EME0, between EME0 and EME1.
Definition: CaloCluster_v1.h:235
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
CaloHadDMCoeffData::clear
void clear()
Definition: CaloHadDMCoeffData.cxx:264
CaloHadDMCoeffData::m_engClusSumCalib
Double_t m_engClusSumCalib
Definition: CaloHadDMCoeffData.h:52
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
GetLCDeadMaterialTree::m_doSaveCalibClusInfo
bool m_doSaveCalibClusInfo
save additional cluster info from calibrated collections
Definition: GetLCDeadMaterialTree.h:88
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
CaloRecoStatus
reconstruction status indicator
Definition: CaloRecoStatus.h:12
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
GetLCDeadMaterialTree::m_HadDMCoeff
CaloLocalHadCoeff * m_HadDMCoeff
Collection of dead material correction coeffitients.
Definition: GetLCDeadMaterialTree.h:80
xAOD::CaloCluster_v1::ENG_CALIB_DEAD_EMB0
@ ENG_CALIB_DEAD_EMB0
Attached Calibration Hit energy in dead material before EMB0, between EMB0 and EMB1.
Definition: CaloCluster_v1.h:227
fitman.k
k
Definition: fitman.py:528
GenParticle
@ GenParticle
Definition: TruthClasses.h:30
CaloHadDMCoeffData::m_ncls
Int_t m_ncls
current Tree number in a TChain
Definition: CaloHadDMCoeffData.h:37
ServiceHandle< ICondSvc >
Identifier
Definition: IdentifierFieldParser.cxx:14