18#include <RtypesCore.h>
34 ,
fRnd(new TRandom3())
104 const auto hit = *hit_it;
107 light += hit.intensity;
128 Double_t energy =
GetQDC();
132 energy = energy / (1. +
par.fSaturationCoefficient * energy);
134 energy =
par.fRnd->Gaus(energy,
par.fEResRel * energy);
136 if (
par.fExperimentalDataIsCorrectedForSaturation)
138 energy = energy / (1. -
par.fSaturationCoefficient * energy);
147 Double_t currentHeightOfLightPulse = 0.;
148 Double_t previousTime = 0.;
156 currentHeightOfLightPulse *= exp(-
DEFAULT_LAMBDA * (hit.time - previousTime));
157 previousTime = hit.time;
160 currentHeightOfLightPulse += hit.intensity;
189 signals.push_back(signal);
AbstractChannel(R3B::Side side, bool has_cal_output=false)
auto GetSide() const -> R3B::Side
static constexpr double DEFAULT_ATTENUATION
static constexpr double HALF_BAR_LENGTH
Validated< std::vector< Signal >::const_iterator > cachedFirstHitOverThresh
auto BuildTDC() -> double
Validated< double > cachedQDC
auto GetEnergy() -> double
auto BuildEnergy() -> double
const TacQuila::Params & par
void extra_reset() override
auto HasFired() -> bool override
Validated< double > cachedTDC
auto BuildQDC() -> double
void construct_hits(Hits &signals) override
std::vector< Signal > fPMTHits
void add_signal(Signal newHit) override
static constexpr double DEFAULT_LAMBDA
Validated< double > cachedEnergy
auto FindThresholdExceedingHit() const -> std::vector< Signal >::const_iterator
Channel(const Channel &)=delete
const Params TACQUILA_DEFAULT_PARAM
double time
Time value of the channel signal.
double intensity
Intensity of the channel signal.
Bool_t fExperimentalDataIsCorrectedForSaturation
std::shared_ptr< TRandom3 > fRnd
double fSaturationCoefficient