7#include "CLHEP/Random/RandGaussZiggurat.h"
34 int nhit_signed = simulstate.
getAuxInfo<
int>(
"FCSHitChainNHits"_FCShash);
36 if (nhit_signed < 0) {
38 "The number of hits to simulate is not defined - aborting simulation!");
42 unsigned int nhit =
static_cast<unsigned int>(nhit_signed);
44 long unsigned int current_hit = hit.
idx();
48 bool done = current_hit >= nhit;
51 if (simulstate.
hasAuxInfo(
"FCSFixedHitChainEnergySum"_FCShash) &&
54 simulstate.
getAuxInfo<
double>(
"FCSFixedHitChainEnergySum"_FCShash);
58 simulstate.
setAuxInfo<
double>(
"FCSFixedHitChainEnergySum"_FCShash, sumEhit);
61 if (!simulstate.
hasAuxInfo(
"FCSFixedHitChainEnergySum"_FCShash)) {
62 simulstate.
setAuxInfo<
double>(
"FCSFixedHitChainEnergySum"_FCShash, 0.);
67 simulstate.
getAuxInfo<
double>(
"FCSFixedHitChainEnergySum"_FCShash);
69 double energy_difference = new_energy - old_energy;
71 simulstate.
set_E(simulstate.
E() + energy_difference);
74 if (simulstate.
E() > std::numeric_limits<double>::epsilon()) {
77 simulstate.
setAuxInfo<
double>(
"FCSFixedHitChainEnergySum"_FCShash, 0.);
TFCSLateralShapeParametrizationFixedHitChain(const char *name=nullptr, const char *title=nullptr)
virtual bool check_all_hits_simulated(TFCSLateralShapeParametrizationHitBase::Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol, bool success) const override
long unsigned int & idx()
TFCSLateralShapeParametrizationHitChain(const char *name=nullptr, const char *title=nullptr)
void set_E(int sample, double Esample)
bool hasAuxInfo(std::uint32_t index) const
const T getAuxInfo(std::uint32_t index) const
void set_Efrac(int sample, double Efracsample)
void setAuxInfo(std::uint32_t index, const T &val)