ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
ISF
ISF_FastCaloSim
ISF_FastCaloSimEvent
src
TFCSSimulationState.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
#include "CLHEP/Random/RandomEngine.h"
6
7
#include "
ISF_FastCaloSimEvent/TFCSSimulationState.h
"
8
#include "
ISF_FastCaloSimEvent/TFCSParametrizationBase.h
"
9
#include <iostream>
10
#include <cstring>
11
12
//=============================================
13
//======= TFCSSimulationState =========
14
//=============================================
15
16
TFCSSimulationState::TFCSSimulationState
(CLHEP::HepRandomEngine *
randomEngine
)
17
:
m_randomEngine
(
randomEngine
) {
18
clear
();
19
}
20
21
void
TFCSSimulationState::clear
() {
22
set_SF
(1);
23
m_Ebin
= -1;
24
m_Etot
= 0;
25
for
(
int
i = 0; i <
CaloCell_ID_FCS::MaxSample
; ++i) {
26
m_E
[i] = 0;
27
m_Efrac
[i] = 0;
28
}
29
}
30
31
void
TFCSSimulationState::deposit
(
const
CaloDetDescrElement
*cellele,
float
E
) {
32
auto
mele =
m_cells
.find(cellele);
33
if
(mele ==
m_cells
.end()) {
34
m_cells
.emplace(cellele, 0);
35
mele =
m_cells
.find(cellele);
36
}
37
m_cells
[cellele] +=
E
;
38
}
39
40
void
TFCSSimulationState::Print
(Option_t *)
const
{
41
ATH_MSG_INFO
(
"Ebin="
<<
m_Ebin
<<
" E="
<<
E
()
42
<<
" #cells="
<<
m_cells
.size());
43
for
(
int
i = 0; i <
CaloCell_ID_FCS::MaxSample
; ++i)
44
if
(
E
(i) != 0) {
45
ATH_MSG_INFO
(
" E"
<< i <<
"("
<<
CaloSampling::getSamplingName
(i)
46
<<
")="
<<
E
(i) <<
" E"
<< i <<
"/E="
<<
Efrac
(i));
47
}
48
if
(!
m_AuxInfo
.empty()) {
49
ATH_MSG_INFO
(
" AuxInfo has "
<<
m_AuxInfo
.size() <<
" elements"
);
50
for
(
const
auto
&
a
:
m_AuxInfo
) {
51
ATH_MSG_INFO
(
" "
<<
a
.first <<
" : "
52
// Dont print as char/bool.
53
// Accessing as a bool is likely to undefined
54
// behavior (which triggers a warning from
55
// the sanitizer). As a char, it may not
56
// be printable.
57
//<< "bool=" << a.second.b
58
//<< " char=" << a.second.c
59
<<
" int="
<<
a
.second.i
60
<<
" float="
<<
a
.second.f <<
" double="
<<
a
.second.d
61
<<
" void*="
<<
a
.second.p);
62
}
63
}
64
}
65
66
std::uint32_t
TFCSSimulationState::getAuxIndex
(
const
std::string &s) {
67
return
TFCSSimulationState::fnv1a_32
(s.c_str(), s.size());
68
}
69
70
std::uint32_t
TFCSSimulationState::getAuxIndex
(
const
char
*s) {
71
return
TFCSSimulationState::fnv1a_32
(s, std::strlen(s));
72
}
73
74
void
TFCSSimulationState::AddAuxInfoCleanup
(
75
const
TFCSParametrizationBase
*para) {
76
m_AuxInfoCleanup
.insert(para);
77
}
78
79
void
TFCSSimulationState::DoAuxInfoCleanup
() {
80
for
(
const
auto
*para :
m_AuxInfoCleanup
) {
81
para->CleanAuxInfo(*
this
);
82
}
83
}
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
TFCSParametrizationBase.h
TFCSSimulationState.h
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell.
Definition
Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
CaloSampling::getSamplingName
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.
Definition
Calorimeter/CaloGeoHelpers/Root/CaloSampling.cxx:18
TFCSParametrizationBase
Definition
TFCSParametrizationBase.h:46
TFCSSimulationState::Efrac
double Efrac(int sample) const
Definition
TFCSSimulationState.h:44
TFCSSimulationState::fnv1a_32
static constexpr std::uint32_t fnv1a_32(char const *s, std::size_t count)
Definition
TFCSSimulationState.h:146
TFCSSimulationState::Print
void Print(Option_t *option="") const
Definition
TFCSSimulationState.cxx:40
TFCSSimulationState::set_SF
void set_SF(double mysf)
Definition
TFCSSimulationState.h:81
TFCSSimulationState::getAuxIndex
static std::uint32_t getAuxIndex(const std::string &s)
Definition
TFCSSimulationState.cxx:66
TFCSSimulationState::AddAuxInfoCleanup
void AddAuxInfoCleanup(const TFCSParametrizationBase *para)
Definition
TFCSSimulationState.cxx:74
TFCSSimulationState::DoAuxInfoCleanup
void DoAuxInfoCleanup()
Definition
TFCSSimulationState.cxx:79
TFCSSimulationState::m_cells
Cellmap_t m_cells
Definition
TFCSSimulationState.h:111
TFCSSimulationState::m_AuxInfoCleanup
std::set< const TFCSParametrizationBase * > m_AuxInfoCleanup
Do not persistify.
Definition
TFCSSimulationState.h:178
TFCSSimulationState::clear
void clear()
Definition
TFCSSimulationState.cxx:21
TFCSSimulationState::m_AuxInfo
std::unordered_map< std::uint32_t, AuxInfo_t > m_AuxInfo
Definition
TFCSSimulationState.h:176
TFCSSimulationState::m_Ebin
int m_Ebin
Definition
TFCSSimulationState.h:105
TFCSSimulationState::TFCSSimulationState
TFCSSimulationState(CLHEP::HepRandomEngine *randomEngine=nullptr)
Definition
TFCSSimulationState.cxx:16
TFCSSimulationState::m_Efrac
double m_Efrac[CaloCell_ID_FCS::MaxSample]
Definition
TFCSSimulationState.h:109
TFCSSimulationState::m_Etot
double m_Etot
Definition
TFCSSimulationState.h:106
TFCSSimulationState::deposit
void deposit(const CaloDetDescrElement *cellele, float E)
Definition
TFCSSimulationState.cxx:31
TFCSSimulationState::m_E
double m_E[CaloCell_ID_FCS::MaxSample]
Definition
TFCSSimulationState.h:108
TFCSSimulationState::m_randomEngine
CLHEP::HepRandomEngine * m_randomEngine
Definition
TFCSSimulationState.h:103
TFCSSimulationState::randomEngine
CLHEP::HepRandomEngine * randomEngine()
Definition
TFCSSimulationState.h:36
TFCSSimulationState::E
double E() const
Definition
TFCSSimulationState.h:42
CaloCell_ID_FCS::MaxSample
@ MaxSample
Definition
FastCaloSim_CaloCell_ID.h:47
Generated on
for ATLAS Offline Software by
1.17.0