ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
G4Atlas
G4AtlasTests
src
CalibHitValidate.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
//-----------------------------------------------------------------------
6
//
7
// Description: see CalibHitValidate.h
8
//
9
// Environment:
10
// Software developed for the ATLAS Detector at CERN LHC
11
//
12
//-----------------------------------------------------------------------
13
14
#include "
CalibHitValidate.h
"
15
16
#include "
CaloSimEvent/CaloCalibrationHit.h
"
17
#include "
CaloSimEvent/CaloCalibrationHitContainer.h
"
18
19
#include "
GeneratorObjects/McEventCollection.h
"
20
21
//###############################################################################
22
23
CalibHitValidate::CalibHitValidate
(
const
std::string& name,
24
ISvcLocator* pSvcLocator)
25
:
AthAlgorithm
(name, pSvcLocator)
26
{
27
28
declareProperty
(
"CalibrationHitContainerNames"
,
m_CalibrationHitContainerNames
);
29
declareProperty
(
"DMCalibrationHitContainerNames"
,
m_DMCalibrationHitContainerNames
);
30
}
31
32
33
//###############################################################################
34
35
StatusCode
CalibHitValidate::initialize
()
36
{
37
ATH_MSG_VERBOSE
(
"Initializing "
<< name() );
38
39
return
StatusCode::SUCCESS;
40
}
41
42
//###############################################################################
43
44
StatusCode
CalibHitValidate::execute
(
const
EventContext&
/*ctx*/
)
45
{
46
// get truth containers
47
const
McEventCollection
* truthEvent=0;
48
StatusCode sc0 =
evtStore
()->retrieve(truthEvent,
"TruthEvent"
);
49
if
(sc0.isFailure()||!truthEvent){
50
ATH_MSG_ERROR
(
"No McEventCollection found"
);
51
return
StatusCode::FAILURE;
52
}
53
auto
gen = *
HepMC::begin
(*truthEvent->
at
(0));
54
55
std::vector<std::string>::iterator containerNameIter;
56
57
std::vector<double> hitEnergies;
58
59
double
totalEnergyAllContainers=0.;
60
61
// calibration hit containers
62
const
CaloCalibrationHitContainer
* cchc;
63
std::vector<const CaloCalibrationHitContainer *> v_cchc;
64
for
(containerNameIter=
m_CalibrationHitContainerNames
.begin();containerNameIter!=
m_CalibrationHitContainerNames
.end();++containerNameIter) {
65
66
67
double
totEnergy=0.;
68
69
if
(
evtStore
()->
contains<CaloCalibrationHitContainer>
(*containerNameIter)) {
70
StatusCode
sc
=
evtStore
()->retrieve(cchc,*containerNameIter);
71
if
(
sc
.isFailure() ) {
72
ATH_MSG_ERROR
(
"Cannot retrieve calibration hit container "
<< *containerNameIter );
73
return
StatusCode::FAILURE;
74
}
75
76
//loop over cells in calibration container
77
CaloCalibrationHitContainer::const_iterator
chIter = cchc->
begin
();
78
CaloCalibrationHitContainer::const_iterator
chIterE = cchc->
end
();
79
80
for
(;chIter!=chIterE;++chIter)
81
totEnergy+=(*chIter)->energyTotal();
82
}
83
84
ATH_MSG_INFO
(
"container name: "
<<*containerNameIter<<
", energy="
<<totEnergy);
85
86
totalEnergyAllContainers += totEnergy;
87
88
hitEnergies.push_back(totEnergy);
89
}
90
91
// dark material calibration hit containers
92
93
std::vector<double> hitEnergiesDM;
94
95
std::vector<const CaloCalibrationHitContainer *> v_dmcchc;
96
for
(containerNameIter=
m_DMCalibrationHitContainerNames
.begin();containerNameIter!=
m_DMCalibrationHitContainerNames
.end();++containerNameIter) {
97
98
99
double
totEnergy=0.;
100
if
(
evtStore
()->
contains<CaloCalibrationHitContainer>
(*containerNameIter)) {
101
StatusCode
sc
=
evtStore
()->retrieve(cchc,*containerNameIter);
102
if
(
sc
.isFailure() ) {
103
ATH_MSG_ERROR
(
"Cannot retrieve DM calibration hit container "
<< *containerNameIter );
104
return
StatusCode::FAILURE;
105
}
106
107
//loop over cells in calibration container
108
CaloCalibrationHitContainer::const_iterator
chIter = cchc->
begin
();
109
CaloCalibrationHitContainer::const_iterator
chIterE = cchc->
end
();
110
111
for
(;chIter!=chIterE;++chIter)
112
totEnergy+=(*chIter)->energyTotal();
113
}
114
115
ATH_MSG_INFO
(
"DM container name: "
<<*containerNameIter<<
", energy="
<<totEnergy);
116
117
totalEnergyAllContainers += totEnergy;
118
119
hitEnergiesDM.push_back(totEnergy);
120
}
121
122
ATH_MSG_INFO
(
"total energy in hits: "
<<totalEnergyAllContainers<<
", in primary particle: "
<<gen->momentum().e());
123
124
return
StatusCode::SUCCESS;
125
}
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition
AthMsgStreamMacros.h:28
CalibHitValidate.h
CaloCalibrationHitContainer.h
CaloCalibrationHit.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
McEventCollection.h
AthAlgorithm::AthAlgorithm
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Definition
AthAlgorithm.cxx:10
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthCommonAlgorithm< Gaudi::Algorithm >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
Definition
AthCommonDataStore.h:85
AthenaHitsVector::end
const_iterator end() const
Definition
AthenaHitsVector.h:191
AthenaHitsVector::begin
const_iterator begin() const
Definition
AthenaHitsVector.h:187
AthenaHitsVector< CaloCalibrationHit >::const_iterator
boost::transform_iterator< make_const, typename CONT::const_iterator > const_iterator
Definition
AthenaHitsVector.h:105
CalibHitValidate::CalibHitValidate
CalibHitValidate(const std::string &name, ISvcLocator *pSvcLocator)
Definition
CalibHitValidate.cxx:23
CalibHitValidate::m_CalibrationHitContainerNames
std::vector< std::string > m_CalibrationHitContainerNames
vector of calibration hit container names to use.
Definition
CalibHitValidate.h:36
CalibHitValidate::initialize
virtual StatusCode initialize() override
Definition
CalibHitValidate.cxx:35
CalibHitValidate::execute
virtual StatusCode execute(const EventContext &ctx) override
Execute method.
Definition
CalibHitValidate.cxx:44
CalibHitValidate::m_DMCalibrationHitContainerNames
std::vector< std::string > m_DMCalibrationHitContainerNames
vector of dead material calibration hit container names to use.
Definition
CalibHitValidate.h:43
CaloCalibrationHitContainer
Definition
CaloCalibrationHitContainer.h:25
DataVector::at
const T * at(size_type n) const
Access an element, as an rvalue.
McEventCollection
This defines the McEventCollection, which is really just an ObjectVector of McEvent objectsFile: Gene...
Definition
McEventCollection.h:31
contains
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
Definition
hcg.cxx:116
HepMC::begin
std::vector< HepMC3::GenParticlePtr >::const_iterator begin(HepMC3::GenEvent &e)
Definition
GenEvent.h:355
Generated on
for ATLAS Offline Software by
1.17.0