5#ifndef ISF_FASTCALOSIMEVENT_TFCSSimulationState_h
6#define ISF_FASTCALOSIMEVENT_TFCSSimulationState_h
13#include <unordered_map>
17#undef FCS_USE_HASH_SORTED_CELLMAP
18#ifdef FCS_USE_HASH_SORTED_CELLMAP
19#include "CaloDetDescr/CaloDetDescrElement.h"
29constexpr std::uint32_t
operator""_FCShash(
char const *s, std::size_t
count);
43 double E(
int sample)
const {
return m_E[sample]; };
48 void set_E(
int sample,
double Esample) {
m_E[sample] = Esample; };
53 void add_E(
int sample,
double Esample) {
54 m_E[sample] += Esample;
58#ifdef FCS_USE_HASH_SORTED_CELLMAP
62 return a->calo_hash() < b->calo_hash();
67 typedef std::map<const CaloDetDescrElement *, float, hashesCmp>
Cellmap_t;
69 typedef std::map<const CaloDetDescrElement *, float>
Cellmap_t;
76 void Print(Option_t *option =
"")
const;
89 void *get_gpu_rand() {
return m_gpu_rand; };
90 void set_gpu_rand(
void *rand) { m_gpu_rand =
rand; };
91 void *get_geold() {
return m_geold; };
92 void set_geold(
void *geold) { m_geold = geold; };
131 operator bool()
const {
return b; };
132 operator char()
const {
return c; };
133 operator int()
const {
return i; };
134 operator float()
const {
return f; };
135 operator double()
const {
return d; };
136 operator void *()
const {
return p; };
140 template <
class T>
void set(T val);
151 static std::uint32_t
getAuxIndex(
const std::string &s);
177 std::set<const TFCSParametrizationBase *>
211constexpr std::uint32_t
operator""_FCShash(
char const *s, std::size_t
count) {
This class groups all DetDescr information related to a CaloCell.
double Efrac(int sample) const
static constexpr std::uint32_t fnv1a_32(char const *s, std::size_t count)
void Print(Option_t *option="") const
static std::uint32_t getAuxIndex(const std::string &s)
double E(int sample) const
const Cellmap_t & cells() const
void set_E(int sample, double Esample)
void AddAuxInfoCleanup(const TFCSParametrizationBase *para)
bool hasAuxInfo(std::uint32_t index) const
std::set< const TFCSParametrizationBase * > m_AuxInfoCleanup
Do not persistify.
std::unordered_map< std::uint32_t, AuxInfo_t > m_AuxInfo
TFCSSimulationState(CLHEP::HepRandomEngine *randomEngine=nullptr)
const T getAuxInfo(std::uint32_t index) const
double m_Efrac[CaloCell_ID_FCS::MaxSample]
void add_E(int sample, double Esample)
void deposit(const CaloDetDescrElement *cellele, float E)
void set_Efrac(int sample, double Efracsample)
void setAuxInfo(std::uint32_t index, const T &val)
double m_E[CaloCell_ID_FCS::MaxSample]
std::map< const CaloDetDescrElement *, float > Cellmap_t
CLHEP::HepRandomEngine * m_randomEngine
CLHEP::HepRandomEngine * randomEngine()
void setRandomEngine(CLHEP::HepRandomEngine *engine)
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string