ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
Tools
HitAnalysis
src
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
8
#include "
ZDC_SimEvent/ZDC_SimFiberHit.h
"
9
#include "
CaloSimEvent/CaloCalibrationHit.h
"
10
#include "
StoreGate/ReadHandle.h
"
11
12
StatusCode
ZDCHitAnalysis::initialize
() {
13
ATH_MSG_DEBUG
(
"Initializing ZDCHitAnalysis"
);
14
15
ATH_CHECK
(
detStore
()->retrieve(
m_ZdcID
));
16
ATH_CHECK
(
m_readKey
.initialize());
17
ATH_CHECK
(
m_readCalibKey
.initialize());
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);
23
ATH_CHECK
(
histSvc
()->regHist(
m_path
+
m_h_zdc_photons
[side][module]->GetName(),
m_h_zdc_photons
[side][module]));
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
34
ATH_CHECK
(
histSvc
()->regHist(m_path + m_h_zdc_calibTot[side][module]->GetName(), m_h_zdc_calibTot[side][module]));
35
ATH_CHECK
(
histSvc
()->regHist(m_path + m_h_zdc_calibEM[side][module]->GetName(), m_h_zdc_calibEM[side][module]));
36
ATH_CHECK
(
histSvc
()->regHist(m_path + m_h_zdc_calibNonEM[side][module]->GetName(), m_h_zdc_calibNonEM[side][module]));
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
62
StatusCode
ZDCHitAnalysis::execute
(
const
EventContext& ctx) {
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
75
ZDC_SimFiberHit_ConstIterator
fiberhi;
76
const
ZDC_SimFiberHit_Collection
* fiberiter{
nullptr
};
77
ATH_CHECK
(
SG::get
(fiberiter,
m_readKey
, ctx));
78
for
(fiberhi=(*fiberiter).begin(); fiberhi != (*fiberiter).end(); ++fiberhi) {
79
ZDC_SimFiberHit
ghit(*fiberhi);
80
Identifier
id
= ghit.
getID
();
81
photons_fiber = ghit.
getNPhotons
();
82
side_fiber = (
m_ZdcID
->side(
id
)==-1) ? 0 : 1;
83
mod_fiber =
m_ZdcID
->module(
id
);
84
channel_fiber =
m_ZdcID
->channel(
id
);
85
86
m_h_zdc_photons
[side_fiber][mod_fiber]->Fill(photons_fiber);
87
88
m_zdc_fiber_side
->push_back(side_fiber);
89
m_zdc_fiber_mod
->push_back(mod_fiber);
90
m_zdc_fiber_channel
->push_back(channel_fiber);
91
m_zdc_fiber_photons
->push_back(photons_fiber);
92
}
93
94
95
m_zdc_calib_side
->clear();
96
m_zdc_calib_mod
->clear();
97
m_zdc_calib_channel
->clear();
98
m_zdc_calib_Total
->clear();
99
m_zdc_calib_EM
->clear();
100
m_zdc_calib_NonEM
->clear();
101
102
int
side_calib = -1;
103
int
mod_calib = -1;
104
int
channel_calib = -1;
105
float
calib_eTot = -999.;
106
float
calib_eEM = -999.;
107
float
calib_eNonEM = -999.;
108
109
const
CaloCalibrationHitContainer
* calibiter{
nullptr
};
110
ATH_CHECK
(
SG::get
(calibiter,
m_readCalibKey
, ctx));
111
for
(
auto
hit
: *calibiter) {
112
Identifier
id
=
hit
->cellID();
113
side_calib = (
m_ZdcID
->side(
id
)==-1) ? 0 : 1;
114
mod_calib =
m_ZdcID
->module(
id
);
115
channel_calib =
m_ZdcID
->channel(
id
);
116
calib_eTot =
hit
->energyTotal();
117
calib_eEM =
hit
->energyEM();
118
calib_eNonEM =
hit
->energyNonEM();
119
120
m_h_zdc_calibTot
[side_calib][mod_calib]->Fill(calib_eTot);
121
m_h_zdc_calibEM
[side_calib][mod_calib]->Fill(calib_eEM);
122
m_h_zdc_calibNonEM
[side_calib][mod_calib]->Fill(calib_eNonEM);
123
124
m_zdc_calib_side
->push_back(side_calib);
125
m_zdc_calib_mod
->push_back(mod_calib);
126
m_zdc_calib_channel
->push_back(channel_calib);
127
m_zdc_calib_Total
->push_back(calib_eTot);
128
m_zdc_calib_EM
->push_back(calib_eEM);
129
m_zdc_calib_NonEM
->push_back(calib_eNonEM);
130
}
131
132
if
(
m_tree
)
m_tree
->Fill();
133
134
return
StatusCode::SUCCESS;
135
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CaloCalibrationHit.h
hit
bool hit(const Container &ids, int pdgId)
Definition
JetIRCSafeLabelTool.cxx:64
ReadHandle.h
Handle class for reading from StoreGate.
ZDCHitAnalysis.h
ZDC_SimFiberHit.h
ZDC_SimFiberHit_ConstIterator
ZDC_SimFiberHit_Collection::const_iterator ZDC_SimFiberHit_ConstIterator
Definition
ZDC_SimFiberHit_Collection.h:24
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
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
CaloCalibrationHitContainer
Definition
CaloCalibrationHitContainer.h:25
ZDCHitAnalysis::m_path
Gaudi::Property< std::string > m_path
Definition
ZDCHitAnalysis.h:49
ZDCHitAnalysis::m_zdc_fiber_channel
std::vector< int > * m_zdc_fiber_channel
Definition
ZDCHitAnalysis.h:38
ZDCHitAnalysis::m_readKey
SG::ReadHandleKey< ZDC_SimFiberHit_Collection > m_readKey
Definition
ZDCHitAnalysis.h:52
ZDCHitAnalysis::m_zdc_fiber_photons
std::vector< int > * m_zdc_fiber_photons
Definition
ZDCHitAnalysis.h:39
ZDCHitAnalysis::m_h_zdc_photons
TH1_Array m_h_zdc_photons
Definition
ZDCHitAnalysis.h:31
ZDCHitAnalysis::m_zdc_calib_Total
std::vector< float > * m_zdc_calib_Total
Definition
ZDCHitAnalysis.h:44
ZDCHitAnalysis::execute
virtual StatusCode execute(const EventContext &ctx) override
Execute method.
Definition
ZDCHitAnalysis.cxx:62
ZDCHitAnalysis::m_readCalibKey
SG::ReadHandleKey< CaloCalibrationHitContainer > m_readCalibKey
Definition
ZDCHitAnalysis.h:53
ZDCHitAnalysis::m_zdc_calib_channel
std::vector< int > * m_zdc_calib_channel
Definition
ZDCHitAnalysis.h:43
ZDCHitAnalysis::m_tree
TTree * m_tree
Definition
ZDCHitAnalysis.h:48
ZDCHitAnalysis::m_h_zdc_calibEM
TH1_Array m_h_zdc_calibEM
Definition
ZDCHitAnalysis.h:33
ZDCHitAnalysis::m_h_zdc_calibTot
TH1_Array m_h_zdc_calibTot
Definition
ZDCHitAnalysis.h:32
ZDCHitAnalysis::m_ZdcID
ZdcID * m_ZdcID
Definition
ZDCHitAnalysis.h:54
ZDCHitAnalysis::m_zdc_calib_mod
std::vector< int > * m_zdc_calib_mod
Definition
ZDCHitAnalysis.h:42
ZDCHitAnalysis::m_zdc_fiber_mod
std::vector< int > * m_zdc_fiber_mod
Definition
ZDCHitAnalysis.h:37
ZDCHitAnalysis::m_zdc_calib_side
std::vector< int > * m_zdc_calib_side
Definition
ZDCHitAnalysis.h:41
ZDCHitAnalysis::m_zdc_calib_EM
std::vector< float > * m_zdc_calib_EM
Definition
ZDCHitAnalysis.h:45
ZDCHitAnalysis::initialize
virtual StatusCode initialize() override
Definition
ZDCHitAnalysis.cxx:12
ZDCHitAnalysis::m_zdc_fiber_side
std::vector< int > * m_zdc_fiber_side
Definition
ZDCHitAnalysis.h:36
ZDCHitAnalysis::m_h_zdc_calibNonEM
TH1_Array m_h_zdc_calibNonEM
Definition
ZDCHitAnalysis.h:34
ZDCHitAnalysis::m_zdc_calib_NonEM
std::vector< float > * m_zdc_calib_NonEM
Definition
ZDCHitAnalysis.h:46
ZDC_SimFiberHit_Collection
Definition
ZDC_SimFiberHit_Collection.h:16
ZDC_SimFiberHit
Definition
ZDC_SimFiberHit.h:11
ZDC_SimFiberHit::getNPhotons
int getNPhotons() const
Definition
ZDC_SimFiberHit.h:46
ZDC_SimFiberHit::getID
Identifier getID() const
Definition
ZDC_SimFiberHit.h:44
D3PD::m_tree
ID3PD * m_tree
Pointer to the ID3PD object used.
Definition
VectorFillerTool.h:147
Identifier
Definition
IdentifierFieldParser.cxx:14
MuonSegmentReaderConfig.histSvc
histSvc
Definition
MuonSegmentReaderConfig.py:96
SG::get
const T * get(const ReadCondHandleKey< T > &key, const EventContext &ctx)
Convenience function to retrieve an object given a ReadCondHandleKey.
Definition
ReadCondHandle.h:282
TRT::Hit::side
@ side
Definition
HitInfo.h:83
python.PyAthena.module
module
Definition
PyAthena.py:130
Generated on
for ATLAS Offline Software by
1.17.0