ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
Tools
HitAnalysis
src
ALFAHitAnalysis.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
ALFAHitAnalysis.h
"
6
7
// Section of includes for Pixel and SCT tests
8
#include "
ALFA_SimEv/ALFA_HitCollection.h
"
9
#include "
StoreGate/ReadHandle.h
"
10
11
12
13
StatusCode
ALFAHitAnalysis::initialize
() {
14
ATH_MSG_DEBUG
(
"Initializing ALFAHitAnalysis"
);
15
16
ATH_CHECK
(
m_readKey
.initialize());
18
std::stringstream s;
19
for
(
unsigned
int
j=0; j<8; j++) {
20
s.str(
""
);
21
s <<
"edep_in_det_no."
<< j+1;
22
float
Emax = 5;
23
if
(j==3) Emax = 150;
24
m_h_E_full_sum_h
[j] =
new
TH1D(s.str().c_str(), s.str().c_str(), 100, 0, Emax);
25
m_h_E_full_sum_h
[j]->StatOverflows();
26
ATH_CHECK
(
histSvc
()->regHist(
m_path
+
m_h_E_full_sum_h
[j]->GetName(),
m_h_E_full_sum_h
[j] ) );
27
28
s.str(
""
);
29
s <<
"edep_per_layer_det_no."
<< j+1;
30
m_h_E_layer_sum_h
[j] =
new
TH1D(s.str().c_str(), s.str().c_str(), 100, 0, 15);
31
m_h_E_layer_sum_h
[j]->StatOverflows();
32
ATH_CHECK
(
histSvc
()->regHist(
m_path
+
m_h_E_layer_sum_h
[j]->GetName(),
m_h_E_layer_sum_h
[j] ) );
33
34
s.str(
""
);
35
s <<
"hit_layer_det_no."
<< j+1;
36
m_h_hit_layer
[j] =
new
TH1D(s.str().c_str(), s.str().c_str(), 50, 0, 50);
37
m_h_hit_layer
[j]->StatOverflows();
38
ATH_CHECK
(
histSvc
()->regHist(
m_path
+
m_h_hit_layer
[j]->GetName(),
m_h_hit_layer
[j] ) );
39
40
s.str(
""
);
41
s <<
"hit_fiber_det_no."
<< j+1;
42
m_h_hit_fiber
[j] =
new
TH1D(s.str().c_str(), s.str().c_str(), 100, 0, 60);
43
m_h_hit_fiber
[j]->StatOverflows();
44
ATH_CHECK
(
histSvc
()->regHist(
m_path
+
m_h_hit_fiber
[j]->GetName(),
m_h_hit_fiber
[j] ) );
45
}
46
47
m_tree
=
new
TTree(
"ALFA"
,
"ALFA"
);
48
std::string fullNtupleName =
"/"
+
m_ntupleFileName
+
"/"
;
49
ATH_CHECK
(
histSvc
()->regTree(fullNtupleName,
m_tree
));
50
51
m_tree
->Branch(
"plate"
, &
m_plate
);
52
m_tree
->Branch(
"station"
, &
m_station
);
53
m_tree
->Branch(
"energy"
, &
m_energy
);
54
m_tree
->Branch(
"fiber"
, &
m_fiber
);
55
56
return
StatusCode::SUCCESS;
57
}
58
59
60
StatusCode
ALFAHitAnalysis::execute
(
const
EventContext& ctx) {
61
ATH_MSG_DEBUG
(
"In ALFAHitAnalysis::execute()"
);
62
63
m_station
->clear();
64
m_plate
->clear();
65
m_fiber
->clear();
66
m_sign
->clear();
67
m_energy
->clear();
68
69
//cleaning
70
int
fiber{}, plate{},
sign
{}, station{};
71
//Local variable E_fiber_sum uses 81920 bytes of stack space
72
//coverity[STACK_USE]
73
double
E_fiber_sum[8][10][64][2]{}, E_full_sum[8]{}, E_layer_sum[8][20]{};
74
ALFA_HitConstIter
iter;
75
const
ALFA_HitCollection
* col_alfa{
nullptr
};
76
ATH_CHECK
(
SG::get
(col_alfa,
m_readKey
, ctx));
77
for
(iter = (*col_alfa).begin(); iter != (*col_alfa).end(); ++iter) {
78
station = (*iter).GetStationNumber();
79
plate = (*iter).GetPlateNumber();
80
fiber = (*iter).GetFiberNumber();
81
sign
= (*iter).GetSignFiber();
82
E_fiber_sum[station-1][plate-1][fiber-1][(1-
sign
)/2] += ((*iter).GetEnergyDeposit());
83
84
m_station
->push_back(station);
85
m_plate
->push_back(plate);
86
m_fiber
->push_back(fiber);
87
m_sign
->push_back(
sign
);
88
m_energy
->push_back((*iter).GetEnergyDeposit());
89
}
// End iteration
90
91
for
(
int
l=0; l<8; l++){
92
for
(
int
i=0; i<10; i++){
93
for
(
int
j=0; j<64; j++){
94
for
(
int
k=0; k<2; k++){
95
E_full_sum[l] += E_fiber_sum[l][i][j][k];
96
E_layer_sum[l][2*i+k] += E_fiber_sum[l][i][j][k];
97
if
(E_fiber_sum[l][i][j][k] > 0.) {
98
m_h_hit_layer
[l]->Fill(2*i+k+1);
99
m_h_hit_fiber
[l]->Fill(j+1);
100
}
101
}
102
}
103
}
104
}
105
for
(
int
l=0; l<8; l++) {
106
m_h_E_full_sum_h
[l]->Fill(E_full_sum[l]);
107
for
(
int
i = 0; i< 20; i++) {
108
m_h_E_layer_sum_h
[l]->Fill(E_layer_sum[l][i]);
109
}
110
}
111
112
if
(
m_tree
)
m_tree
->Fill();
113
114
return
StatusCode::SUCCESS;
115
}
ALFAHitAnalysis.h
ALFA_HitCollection.h
ALFA_HitConstIter
AtlasHitsVector< ALFA_Hit >::const_iterator ALFA_HitConstIter
Definition
ALFA_HitCollection.h:15
ALFA_HitCollection
AtlasHitsVector< ALFA_Hit > ALFA_HitCollection
Definition
ALFA_HitCollection.h:13
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
ReadHandle.h
Handle class for reading from StoreGate.
sign
int sign(int a)
Definition
TRT_StrawNeighbourSvc.h:108
ALFAHitAnalysis::execute
virtual StatusCode execute(const EventContext &ctx)
Execute method.
Definition
ALFAHitAnalysis.cxx:60
ALFAHitAnalysis::m_h_hit_layer
std::array< TH1 *, 8 > m_h_hit_layer
Definition
ALFAHitAnalysis.h:33
ALFAHitAnalysis::m_h_E_full_sum_h
std::array< TH1 *, 8 > m_h_E_full_sum_h
Some variables.
Definition
ALFAHitAnalysis.h:31
ALFAHitAnalysis::m_h_hit_fiber
std::array< TH1 *, 8 > m_h_hit_fiber
Definition
ALFAHitAnalysis.h:34
ALFAHitAnalysis::m_fiber
std::vector< int > * m_fiber
Definition
ALFAHitAnalysis.h:38
ALFAHitAnalysis::m_station
std::vector< int > * m_station
Definition
ALFAHitAnalysis.h:36
ALFAHitAnalysis::m_tree
TTree * m_tree
Definition
ALFAHitAnalysis.h:43
ALFAHitAnalysis::m_ntupleFileName
Gaudi::Property< std::string > m_ntupleFileName
Definition
ALFAHitAnalysis.h:44
ALFAHitAnalysis::m_energy
std::vector< double > * m_energy
Definition
ALFAHitAnalysis.h:40
ALFAHitAnalysis::m_sign
std::vector< int > * m_sign
Definition
ALFAHitAnalysis.h:39
ALFAHitAnalysis::m_plate
std::vector< int > * m_plate
Definition
ALFAHitAnalysis.h:37
ALFAHitAnalysis::m_readKey
SG::ReadHandleKey< ALFA_HitCollection > m_readKey
Definition
ALFAHitAnalysis.h:46
ALFAHitAnalysis::m_path
Gaudi::Property< std::string > m_path
Definition
ALFAHitAnalysis.h:45
ALFAHitAnalysis::m_h_E_layer_sum_h
std::array< TH1 *, 8 > m_h_E_layer_sum_h
Definition
ALFAHitAnalysis.h:32
ALFAHitAnalysis::initialize
virtual StatusCode initialize()
Definition
ALFAHitAnalysis.cxx:13
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
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
Generated on
for ATLAS Offline Software by
1.17.0