ATLAS Offline Software
ZDCHitAnalysis.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "ZDCHitAnalysis.h"
6 
7 
10 #include "StoreGate/ReadHandle.h"
11 
13  ATH_MSG_DEBUG( "Initializing ZDCHitAnalysis" );
14 
18 
19  for(int side : {0,1}){
20  for(int module = 0; module < 5; module++){
21  std::string name = Form("%s%d", (side==1) ? "a" : "c", module);
22  m_h_zdc_photons[side][module] = new TH1I( ("m_edep_module_" + name).c_str(), ("edep_module_" + name).c_str(), 100, 0, 20000);
24  }
25  }
26 
27  for(int side : {0,1}){
28  for(int module = 0; module < 5; module++){
29  std::string name = Form("%s%d", (side==1) ? "a" : "c", module);
30  m_h_zdc_calibTot[side][module] = new TH1D( ("m_calibTot_module_" + name).c_str(), ("calibTot_module_" + name).c_str(), 100, 1e-2, 1e7);
31  m_h_zdc_calibEM[side][module] = new TH1D( ("m_calibEM_module_" + name).c_str(), ("calibEM_module_" + name).c_str(), 100, 1e-2, 1e7);
32  m_h_zdc_calibNonEM[side][module] = new TH1D( ("m_calibNonEM_module_" + name).c_str(), ("calibNonEM_module_" + name).c_str(), 100, 1e-2, 1e7);
33 
37  }
38  }
39 
41  m_tree = new TTree("ZDC","ZDC");
42  std::string fullNtupleName = "/" + m_ntupleFileName + "/";
43  ATH_CHECK(histSvc()->regTree(fullNtupleName,m_tree));
44 
45  m_tree->Branch("fiber_side", &m_zdc_fiber_side);
46  m_tree->Branch("fiber_mod", &m_zdc_fiber_mod);
47  m_tree->Branch("fiber_channel", &m_zdc_fiber_channel);
48  m_tree->Branch("fiber_nphotons", &m_zdc_fiber_photons);
49 
50  m_tree->Branch("calib_side", &m_zdc_calib_side);
51  m_tree->Branch("calib_mod", &m_zdc_calib_mod);
52  m_tree->Branch("calib_channel", &m_zdc_calib_channel);
53  m_tree->Branch("calib_total", &m_zdc_calib_Total);
54  m_tree->Branch("calib_em", &m_zdc_calib_EM);
55  m_tree->Branch("calib_nonem", &m_zdc_calib_NonEM);
56 
57 
58  return StatusCode::SUCCESS;
59 }
60 
61 
63  ATH_MSG_DEBUG( "In ZDCHitAnalysis::execute()" );
64 
65  m_zdc_fiber_side->clear();
66  m_zdc_fiber_mod->clear();
67  m_zdc_fiber_channel->clear();
68  m_zdc_fiber_photons->clear();
69 
70  double photons_fiber = -1;
71  int side_fiber = -1;
72  int mod_fiber = -1;
73  int channel_fiber = -1;
74 
76  const EventContext& ctx{Gaudi::Hive::currentContext()};
77  const ZDC_SimFiberHit_Collection* fiberiter{nullptr};
78  ATH_CHECK(SG::get(fiberiter, m_readKey, ctx));
79  for (fiberhi=(*fiberiter).begin(); fiberhi != (*fiberiter).end(); ++fiberhi) {
80  ZDC_SimFiberHit ghit(*fiberhi);
81  Identifier id = ghit.getID();
82  photons_fiber = ghit.getNPhotons();
83  side_fiber = (m_ZdcID->side(id)==-1) ? 0 : 1;
84  mod_fiber = m_ZdcID->module(id);
85  channel_fiber = m_ZdcID->channel(id);
86 
87  m_h_zdc_photons[side_fiber][mod_fiber]->Fill(photons_fiber);
88 
89  m_zdc_fiber_side->push_back(side_fiber);
90  m_zdc_fiber_mod->push_back(mod_fiber);
91  m_zdc_fiber_channel->push_back(channel_fiber);
92  m_zdc_fiber_photons->push_back(photons_fiber);
93  }
94 
95 
96  m_zdc_calib_side->clear();
97  m_zdc_calib_mod->clear();
98  m_zdc_calib_channel->clear();
99  m_zdc_calib_Total->clear();
100  m_zdc_calib_EM->clear();
101  m_zdc_calib_NonEM->clear();
102 
103  int side_calib = -1;
104  int mod_calib = -1;
105  int channel_calib = -1;
106  float calib_eTot = -999.;
107  float calib_eEM = -999.;
108  float calib_eNonEM = -999.;
109 
110  const CaloCalibrationHitContainer* calibiter{nullptr};
111  ATH_CHECK(SG::get(calibiter, m_readCalibKey, ctx));
112  for (auto hit : *calibiter) {
113  Identifier id = hit->cellID();
114  side_calib = (m_ZdcID->side(id)==-1) ? 0 : 1;
115  mod_calib = m_ZdcID->module(id);
116  channel_calib = m_ZdcID->channel(id);
117  calib_eTot = hit->energyTotal();
118  calib_eEM = hit->energyEM();
119  calib_eNonEM = hit->energyNonEM();
120 
121  m_h_zdc_calibTot[side_calib][mod_calib]->Fill(calib_eTot);
122  m_h_zdc_calibEM[side_calib][mod_calib]->Fill(calib_eEM);
123  m_h_zdc_calibNonEM[side_calib][mod_calib]->Fill(calib_eNonEM);
124 
125  m_zdc_calib_side->push_back(side_calib);
126  m_zdc_calib_mod->push_back(mod_calib);
127  m_zdc_calib_channel->push_back(channel_calib);
128  m_zdc_calib_Total->push_back(calib_eTot);
129  m_zdc_calib_EM->push_back(calib_eEM);
130  m_zdc_calib_NonEM->push_back(calib_eNonEM);
131  }
132 
133  if (m_tree) m_tree->Fill();
134 
135  return StatusCode::SUCCESS;
136 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
AthHistogramAlgorithm::histSvc
const ServiceHandle< ITHistSvc > & histSvc() const
The standard THistSvc (for writing histograms and TTrees and more to a root file) Returns (kind of) a...
Definition: AthHistogramAlgorithm.h:113
ZDC_SimFiberHit::getNPhotons
int getNPhotons() const
Definition: ZDC_SimFiberHit.h:46
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
CaloCalibrationHitContainer
Definition: CaloCalibrationHitContainer.h:25
ZDCHitAnalysis::m_h_zdc_calibTot
TH1_Array m_h_zdc_calibTot
Definition: ZDCHitAnalysis.h:32
CaloCalibrationHit.h
ZDCHitAnalysis::m_zdc_calib_Total
std::vector< float > * m_zdc_calib_Total
Definition: ZDCHitAnalysis.h:44
ZDCHitAnalysis::m_ntupleFileName
Gaudi::Property< std::string > m_ntupleFileName
Definition: ZDCHitAnalysis.h:50
ZDCHitAnalysis::m_zdc_calib_NonEM
std::vector< float > * m_zdc_calib_NonEM
Definition: ZDCHitAnalysis.h:46
ZdcID::module
int module(const Identifier &id) const
Definition: ZdcID.h:163
ZDCHitAnalysis::m_zdc_fiber_channel
std::vector< int > * m_zdc_fiber_channel
Definition: ZDCHitAnalysis.h:38
ZDCHitAnalysis::m_h_zdc_photons
TH1_Array m_h_zdc_photons
Definition: ZDCHitAnalysis.h:31
ZDC_SimFiberHit_ConstIterator
ZDC_SimFiberHit_Collection::const_iterator ZDC_SimFiberHit_ConstIterator
Definition: ZDC_SimFiberHit_Collection.h:24
ZDCHitAnalysis::initialize
virtual StatusCode initialize() override
Definition: ZDCHitAnalysis.cxx:12
ZDCHitAnalysis::execute
virtual StatusCode execute() override
Definition: ZDCHitAnalysis.cxx:62
ZDCHitAnalysis::m_ZdcID
ZdcID * m_ZdcID
Definition: ZDCHitAnalysis.h:54
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
TRT::Hit::side
@ side
Definition: HitInfo.h:83
python.PyAthena.module
module
Definition: PyAthena.py:131
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition: ReadCondHandle.h:287
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ZDCHitAnalysis::m_zdc_calib_EM
std::vector< float > * m_zdc_calib_EM
Definition: ZDCHitAnalysis.h:45
ZDCHitAnalysis::m_h_zdc_calibNonEM
TH1_Array m_h_zdc_calibNonEM
Definition: ZDCHitAnalysis.h:34
ZDCHitAnalysis::m_zdc_fiber_side
std::vector< int > * m_zdc_fiber_side
Definition: ZDCHitAnalysis.h:36
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ZDCHitAnalysis::m_h_zdc_calibEM
TH1_Array m_h_zdc_calibEM
Definition: ZDCHitAnalysis.h:33
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
ZDC_SimFiberHit.h
ZDCHitAnalysis::m_readCalibKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_readCalibKey
Definition: ZDCHitAnalysis.h:53
ZDCHitAnalysis.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ZDCHitAnalysis::m_zdc_fiber_photons
std::vector< int > * m_zdc_fiber_photons
Definition: ZDCHitAnalysis.h:39
ZDCHitAnalysis::m_zdc_calib_channel
std::vector< int > * m_zdc_calib_channel
Definition: ZDCHitAnalysis.h:43
ZDCHitAnalysis::m_zdc_calib_mod
std::vector< int > * m_zdc_calib_mod
Definition: ZDCHitAnalysis.h:42
ZdcID::side
int side(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: ZdcID.h:157
ZDCHitAnalysis::m_zdc_calib_side
std::vector< int > * m_zdc_calib_side
Definition: ZDCHitAnalysis.h:41
ZDCHitAnalysis::m_readKey
SG::ReadHandleKey< ZDC_SimFiberHit_Collection > m_readKey
Definition: ZDCHitAnalysis.h:52
ZDC_SimFiberHit::getID
Identifier getID() const
Definition: ZDC_SimFiberHit.h:44
ZDC_SimFiberHit
Definition: ZDC_SimFiberHit.h:11
ReadHandle.h
Handle class for reading from StoreGate.
ZDC_SimFiberHit_Collection
Definition: ZDC_SimFiberHit_Collection.h:16
ZDCHitAnalysis::m_path
Gaudi::Property< std::string > m_path
Definition: ZDCHitAnalysis.h:49
ZDCHitAnalysis::m_zdc_fiber_mod
std::vector< int > * m_zdc_fiber_mod
Definition: ZDCHitAnalysis.h:37
ZDCHitAnalysis::m_tree
TTree * m_tree
Definition: ZDCHitAnalysis.h:48
ZdcID::channel
int channel(const Identifier &id) const
Definition: ZdcID.h:175
Identifier
Definition: IdentifierFieldParser.cxx:14