ATLAS Offline Software
ZDCHitAnalysis.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "ZDCHitAnalysis.h"
6 
11 
12 #include "TH1.h"
13 #include "TString.h"
14 
15 #include <algorithm>
16 #include <math.h>
17 #include <functional>
18 #include <iostream>
19 #include <stdio.h>
20 
21 ZDCHitAnalysis::ZDCHitAnalysis(const std::string& name, ISvcLocator* pSvcLocator)
22  : AthAlgorithm(name, pSvcLocator)
23  , m_zdc_fiber_side(0)
24  , m_zdc_fiber_mod(0)
25  , m_zdc_fiber_channel(0)
26  , m_zdc_fiber_photons(0)
27  , m_zdc_calib_side(0)
28  , m_zdc_calib_mod(0)
29  , m_zdc_calib_channel(0)
30  , m_zdc_calib_Total(0)
31  , m_zdc_calib_EM(0)
32  , m_zdc_calib_NonEM(0)
33  , m_tree(0)
34  , m_ntupleFileName("/ZDCHitAnalysis/")
35  , m_path("/ZDCHitAnalysis/")
36  , m_thistSvc("THistSvc", name)
37  , m_ZdcID(nullptr)
38 {
39  declareProperty("NtupleFileName", m_ntupleFileName);
40  declareProperty("HistPath", m_path);
41 }
42 
44  ATH_MSG_DEBUG( "Initializing ZDCHitAnalysis" );
45 
46  if (detStore()->retrieve( m_ZdcID ).isFailure() ) {
47  msg(MSG::ERROR) << "execute: Could not retrieve ZdcID object from the detector store" << endmsg;
48  return StatusCode::FAILURE;
49 }
50 
51  // Grab the Ntuple and histogramming service for the tree
52  CHECK(m_thistSvc.retrieve());
53 
54  for(int side : {0,1}){
55  for(int module = 0; module < 5; module++){
56  std::string name = Form("%s%d", (side==1) ? "a" : "c", module);
57  m_h_zdc_photons[side][module] = new TH1I( ("m_edep_module_" + name).c_str(), ("edep_module_" + name).c_str(), 100, 0, 20000);
59  }
60  }
61 
62  for(int side : {0,1}){
63  for(int module = 0; module < 5; module++){
64  std::string name = Form("%s%d", (side==1) ? "a" : "c", module);
65  m_h_zdc_calibTot[side][module] = new TH1D( ("m_calibTot_module_" + name).c_str(), ("calibTot_module_" + name).c_str(), 100, 1e-2, 1e7);
66  m_h_zdc_calibEM[side][module] = new TH1D( ("m_calibEM_module_" + name).c_str(), ("calibEM_module_" + name).c_str(), 100, 1e-2, 1e7);
67  m_h_zdc_calibNonEM[side][module] = new TH1D( ("m_calibNonEM_module_" + name).c_str(), ("calibNonEM_module_" + name).c_str(), 100, 1e-2, 1e7);
68 
72  }
73  }
74 
76  m_tree = new TTree("ZDC","ZDC");
77  std::string fullNtupleName = "/" + m_ntupleFileName + "/";
78  CHECK(m_thistSvc->regTree(fullNtupleName,m_tree));
79 
80  if (m_tree) {
81  m_tree->Branch("fiber_side", &m_zdc_fiber_side);
82  m_tree->Branch("fiber_mod", &m_zdc_fiber_mod);
83  m_tree->Branch("fiber_channel", &m_zdc_fiber_channel);
84  m_tree->Branch("fiber_nphotons", &m_zdc_fiber_photons);
85 
86  m_tree->Branch("calib_side", &m_zdc_calib_side);
87  m_tree->Branch("calib_mod", &m_zdc_calib_mod);
88  m_tree->Branch("calib_channel", &m_zdc_calib_channel);
89  m_tree->Branch("calib_total", &m_zdc_calib_Total);
90  m_tree->Branch("calib_em", &m_zdc_calib_EM);
91  m_tree->Branch("calib_nonem", &m_zdc_calib_NonEM);
92 
93  }
94  else {
95  ATH_MSG_ERROR("No tree found!");
96  }
97 
98  return StatusCode::SUCCESS;
99 }
100 
101 
103  ATH_MSG_DEBUG( "In ZDCHitAnalysis::execute()" );
104 
105  m_zdc_fiber_side->clear();
106  m_zdc_fiber_mod->clear();
107  m_zdc_fiber_channel->clear();
108  m_zdc_fiber_photons->clear();
109 
110  double photons_fiber = -1;
111  int side_fiber = -1;
112  int mod_fiber = -1;
113  int channel_fiber = -1;
114 
116  const ZDC_SimFiberHit_Collection* fiberiter;
117  CHECK(evtStore()->retrieve(fiberiter,"ZDC_SimFiberHit_Collection"));
118  for (fiberhi=(*fiberiter).begin(); fiberhi != (*fiberiter).end(); ++fiberhi) {
119  ZDC_SimFiberHit ghit(*fiberhi);
120  Identifier id = ghit.getID();
121  photons_fiber = ghit.getNPhotons();
122  side_fiber = (m_ZdcID->side(id)==-1) ? 0 : 1;
123  mod_fiber = m_ZdcID->module(id);
124  channel_fiber = m_ZdcID->channel(id);
125 
126  m_h_zdc_photons[side_fiber][mod_fiber]->Fill(photons_fiber);
127 
128  m_zdc_fiber_side->push_back(side_fiber);
129  m_zdc_fiber_mod->push_back(mod_fiber);
130  m_zdc_fiber_channel->push_back(channel_fiber);
131  m_zdc_fiber_photons->push_back(photons_fiber);
132  }
133 
134 
135  m_zdc_calib_side->clear();
136  m_zdc_calib_mod->clear();
137  m_zdc_calib_channel->clear();
138  m_zdc_calib_Total->clear();
139  m_zdc_calib_EM->clear();
140  m_zdc_calib_NonEM->clear();
141 
142  int side_calib = -1;
143  int mod_calib = -1;
144  int channel_calib = -1;
145  float calib_eTot = -999.;
146  float calib_eEM = -999.;
147  float calib_eNonEM = -999.;
148 
149  const CaloCalibrationHitContainer* calibiter;
150  CHECK(evtStore()->retrieve(calibiter,"ZDC_CalibrationHit"));
151  for (auto hit : *calibiter) {
152  Identifier id = hit->cellID();
153  side_calib = (m_ZdcID->side(id)==-1) ? 0 : 1;
154  mod_calib = m_ZdcID->module(id);
155  channel_calib = m_ZdcID->channel(id);
156  calib_eTot = hit->energyTotal();
157  calib_eEM = hit->energyEM();
158  calib_eNonEM = hit->energyNonEM();
159 
160  m_h_zdc_calibTot[side_calib][mod_calib]->Fill(calib_eTot);
161  m_h_zdc_calibEM[side_calib][mod_calib]->Fill(calib_eEM);
162  m_h_zdc_calibNonEM[side_calib][mod_calib]->Fill(calib_eNonEM);
163 
164  m_zdc_calib_side->push_back(side_calib);
165  m_zdc_calib_mod->push_back(mod_calib);
166  m_zdc_calib_channel->push_back(channel_calib);
167  m_zdc_calib_Total->push_back(calib_eTot);
168  m_zdc_calib_EM->push_back(calib_eEM);
169  m_zdc_calib_NonEM->push_back(calib_eNonEM);
170  }
171 
172  if (m_tree) m_tree->Fill();
173 
174  return StatusCode::SUCCESS;
175 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ZDC_SimFiberHit::getNPhotons
int getNPhotons() const
Definition: ZDC_SimFiberHit.h:46
CaloCalibrationHitContainer
Definition: CaloCalibrationHitContainer.h:25
CaloCalibrationHit.h
ZDCHitAnalysis::m_zdc_calib_Total
std::vector< float > * m_zdc_calib_Total
Definition: ZDCHitAnalysis.h:49
ZDCHitAnalysis::m_ntupleFileName
std::string m_ntupleFileName
Definition: ZDCHitAnalysis.h:54
TH1I
Definition: rootspy.cxx:332
ZDCHitAnalysis::m_zdc_calib_NonEM
std::vector< float > * m_zdc_calib_NonEM
Definition: ZDCHitAnalysis.h:51
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
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:43
ZDCHitAnalysis::m_h_zdc_photons
TH1 * m_h_zdc_photons[2][5]
Some variables.
Definition: ZDCHitAnalysis.h:36
TH1D
Definition: rootspy.cxx:342
ZDCHitAnalysis::initialize
virtual StatusCode initialize()
Definition: ZDCHitAnalysis.cxx:43
ZDCHitAnalysis::ZDCHitAnalysis
ZDCHitAnalysis(const std::string &name, ISvcLocator *pSvcLocator)
Definition: ZDCHitAnalysis.cxx:21
ZDC_SimFiberHit_ConstIterator
ZDC_SimFiberHit_Collection::const_iterator ZDC_SimFiberHit_ConstIterator
Definition: ZDC_SimFiberHit_Collection.h:24
CaloCalibrationHitContainer.h
ZDCHitAnalysis::m_ZdcID
ZdcID * m_ZdcID
Definition: ZDCHitAnalysis.h:57
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:134
ZDCHitAnalysis::m_h_zdc_calibTot
TH1 * m_h_zdc_calibTot[2][5]
Definition: ZDCHitAnalysis.h:37
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ZDCHitAnalysis::m_h_zdc_calibNonEM
TH1 * m_h_zdc_calibNonEM[2][5]
Definition: ZDCHitAnalysis.h:39
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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:50
m_path
std::string m_path
the path being used
Definition: OutputStreamData.cxx:88
ZDCHitAnalysis::m_path
std::string m_path
Definition: ZDCHitAnalysis.h:55
ZDCHitAnalysis::m_zdc_fiber_side
std::vector< int > * m_zdc_fiber_side
Definition: ZDCHitAnalysis.h:41
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
TH1::Fill
int Fill(double)
Definition: rootspy.cxx:285
ZDCHitAnalysis::m_thistSvc
ServiceHandle< ITHistSvc > m_thistSvc
Definition: ZDCHitAnalysis.h:56
AthAlgorithm
Definition: AthAlgorithm.h:47
ZDC_SimFiberHit.h
ZDCHitAnalysis::m_h_zdc_calibEM
TH1 * m_h_zdc_calibEM[2][5]
Definition: ZDCHitAnalysis.h:38
ZDC_SimFiberHit_Collection.h
ZDCHitAnalysis.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ZDCHitAnalysis::m_zdc_fiber_photons
std::vector< int > * m_zdc_fiber_photons
Definition: ZDCHitAnalysis.h:44
ZDCHitAnalysis::m_zdc_calib_channel
std::vector< int > * m_zdc_calib_channel
Definition: ZDCHitAnalysis.h:48
ZDCHitAnalysis::m_zdc_calib_mod
std::vector< int > * m_zdc_calib_mod
Definition: ZDCHitAnalysis.h:47
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
ZdcID::side
int side(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: ZdcID.h:157
AthCommonMsg< Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
ZDCHitAnalysis::m_zdc_calib_side
std::vector< int > * m_zdc_calib_side
Definition: ZDCHitAnalysis.h:46
ZDC_SimFiberHit::getID
Identifier getID() const
Definition: ZDC_SimFiberHit.h:44
ZDC_SimFiberHit
Definition: ZDC_SimFiberHit.h:11
ZDC_SimFiberHit_Collection
Definition: ZDC_SimFiberHit_Collection.h:16
ZDCHitAnalysis::m_zdc_fiber_mod
std::vector< int > * m_zdc_fiber_mod
Definition: ZDCHitAnalysis.h:42
ZDCHitAnalysis::execute
virtual StatusCode execute()
Definition: ZDCHitAnalysis.cxx:102
ZDCHitAnalysis::m_tree
TTree * m_tree
Definition: ZDCHitAnalysis.h:53
ZdcID::channel
int channel(const Identifier &id) const
Definition: ZdcID.h:175