ATLAS Offline Software
Simulation
ISF
ISF_FastCaloSim
ISF_FastCaloSimEvent
src
TFCSLateralShapeParametrizationFixedHitChain.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 "
ISF_FastCaloSimEvent/TFCSLateralShapeParametrizationFixedHitChain.h
"
6
7
#include "CLHEP/Random/RandGaussZiggurat.h"
8
#include "
ISF_FastCaloSimEvent/TFCSSimulationState.h
"
9
#include "TMath.h"
10
11
//=============================================
12
//======= TFCSLateralShapeParametrizationFixedHitChain =========
13
//=============================================
14
15
TFCSLateralShapeParametrizationFixedHitChain::
16
TFCSLateralShapeParametrizationFixedHitChain
(
const
char
*
name
,
17
const
char
*
title
)
18
:
TFCSLateralShapeParametrizationHitChain
(
name
,
title
) {}
19
20
TFCSLateralShapeParametrizationFixedHitChain::
21
TFCSLateralShapeParametrizationFixedHitChain
(
22
TFCSLateralShapeParametrizationHitBase
*hitsim)
23
:
TFCSLateralShapeParametrizationHitChain
(hitsim) {}
24
25
bool
TFCSLateralShapeParametrizationFixedHitChain::check_all_hits_simulated
(
26
TFCSLateralShapeParametrizationHitBase::Hit
&hit,
27
TFCSSimulationState
&simulstate,
const
TFCSTruthState
*truth,
28
const
TFCSExtrapolationState
*
extrapol
,
bool
success)
const
{
29
30
(void)success;
// unused parameter
31
(void)truth;
// unused parameter
32
(void)
extrapol
;
// unused parameter
33
34
int
nhit_signed = simulstate.
getAuxInfo
<
int
>(
"FCSHitChainNHits"
_FCShash);
35
36
if
(nhit_signed < 0) {
37
ATH_MSG_ERROR
(
38
"The number of hits to simulate is not defined - aborting simulation!"
);
39
return
true
;
40
}
41
42
unsigned
int
nhit =
static_cast<
unsigned
int
>
(nhit_signed);
43
44
long
unsigned
int
current_hit = hit.
idx
();
45
46
// Take care of layer energy updating.
47
// Needed for the phi modulation!
48
bool
done = current_hit >= nhit;
49
if
(!done) {
50
double
sumEhit = 0;
51
if
(simulstate.
hasAuxInfo
(
"FCSFixedHitChainEnergySum"
_FCShash) &&
52
hit.
idx
() > 0) {
53
sumEhit =
54
simulstate.
getAuxInfo
<
double
>(
"FCSFixedHitChainEnergySum"
_FCShash);
55
}
56
57
sumEhit += hit.
E
();
58
simulstate.
setAuxInfo
<
double
>(
"FCSFixedHitChainEnergySum"
_FCShash, sumEhit);
59
}
else
{
60
61
if
(!simulstate.
hasAuxInfo
(
"FCSFixedHitChainEnergySum"
_FCShash)) {
62
simulstate.
setAuxInfo
<
double
>(
"FCSFixedHitChainEnergySum"
_FCShash, 0.);
63
}
64
65
double
old_energy = simulstate.
E
(
calosample
());
66
double
new_energy =
67
simulstate.
getAuxInfo
<
double
>(
"FCSFixedHitChainEnergySum"
_FCShash);
68
69
double
energy_difference = new_energy - old_energy;
70
71
simulstate.
set_E
(simulstate.
E
() + energy_difference);
72
simulstate.
set_E
(
calosample
(), new_energy);
73
74
if
(simulstate.
E
() >
std::numeric_limits<double>::epsilon
()) {
75
simulstate.
set_Efrac
(
calosample
(), new_energy / simulstate.
E
());
76
}
77
simulstate.
setAuxInfo
<
double
>(
"FCSFixedHitChainEnergySum"
_FCShash, 0.);
78
}
79
80
return
done;
81
}
TFCSSimulationState::getAuxInfo
const T getAuxInfo(std::uint32_t index) const
Definition:
TFCSSimulationState.h:161
TFCSLateralShapeParametrizationHitChain
Definition:
TFCSLateralShapeParametrizationHitChain.h:15
TFCSLateralShapeParametrizationFixedHitChain::TFCSLateralShapeParametrizationFixedHitChain
TFCSLateralShapeParametrizationFixedHitChain(const char *name=nullptr, const char *title=nullptr)
Definition:
TFCSLateralShapeParametrizationFixedHitChain.cxx:16
CaloClusterMLCalib::epsilon
constexpr float epsilon
Definition:
CaloClusterMLGaussianMixture.h:16
TFCSExtrapolationState
Definition:
TFCSExtrapolationState.h:13
TFCSLateralShapeParametrizationHitBase::Hit
Definition:
TFCSLateralShapeParametrizationHitBase.h:42
RunActsMaterialValidation.extrapol
extrapol
Definition:
RunActsMaterialValidation.py:91
TFCSLateralShapeParametrizationHitBase
Definition:
TFCSLateralShapeParametrizationHitBase.h:13
TFCSLateralShapeParametrizationHitBase::Hit::E
float & E()
Definition:
TFCSLateralShapeParametrizationHitBase.h:90
TFCSLateralShapeParametrizationFixedHitChain::check_all_hits_simulated
virtual bool check_all_hits_simulated(TFCSLateralShapeParametrizationHitBase::Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol, bool success) const override
Definition:
TFCSLateralShapeParametrizationFixedHitChain.cxx:25
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition:
AthMsgStreamMacros.h:33
covarianceTool.title
title
Definition:
covarianceTool.py:542
TFCSSimulationState::hasAuxInfo
bool hasAuxInfo(std::uint32_t index) const
Definition:
TFCSSimulationState.h:155
TFCSLateralShapeParametrizationHitBase::Hit::idx
long unsigned int & idx()
Definition:
TFCSLateralShapeParametrizationHitBase.h:92
name
std::string name
Definition:
Control/AthContainers/Root/debug.cxx:240
TFCSSimulationState::setAuxInfo
void setAuxInfo(std::uint32_t index, const T &val)
Definition:
TFCSSimulationState.h:168
TFCSSimulationState::set_E
void set_E(int sample, double Esample)
Definition:
TFCSSimulationState.h:48
TFCSLateralShapeParametrization::calosample
int calosample() const
Definition:
TFCSLateralShapeParametrization.h:34
TFCSLateralShapeParametrizationFixedHitChain.h
TFCSSimulationState::E
double E() const
Definition:
TFCSSimulationState.h:42
TFCSSimulationState.h
TFCSTruthState
Definition:
TFCSTruthState.h:13
TFCSSimulationState
Definition:
TFCSSimulationState.h:32
TFCSSimulationState::set_Efrac
void set_Efrac(int sample, double Efracsample)
Definition:
TFCSSimulationState.h:49
Generated on Wed Nov 26 2025 21:18:21 for ATLAS Offline Software by
1.8.18