58 explicit Params(TRandom3&);
108 return std::max(1.,
width - par.pedestal) / par.energy_gain;
113 auto time_over_thresh = 0.0;
114 if (height > par.min_energy)
116 time_over_thresh = height * par.energy_gain + par.pedestal;
120 time_over_thresh = height * par.energy_gain * (par.pedestal + 1);
122 return time_over_thresh;
142 bool has_cal_output =
false);
177 [[nodiscard]] auto
smear_energy(
double) const ->
double;
178 [[nodiscard]] auto
smear_time(
double) const ->
double;
180 [[nodiscard]] auto
calculate_ToT(
double energy) const ->
double;
181 template <typename Peak>
184 template <typename Peak>
ChannelCalSignal CalSignal
std::vector< CalSignal > CalSignals
static auto GetDefaultRandomGen() -> TRandom3 &
auto smear_energy(double) const -> double
void SetPar(const Tamex::Params &par)
void SetPileUpStrategy(PeakPileUpStrategy strategy)
auto GetPar() const -> const Tamex::Params &
auto smear_time(double) const -> double
static void do_peak_pileup(std::vector< Peak > &peaks)
void construct_cal_signals(CalSignals &cal_signals) const override
auto calculate_ToT(double energy) const -> double
void pre_construct() override
auto GetPMTPeaks() const -> const std::vector< PMTPeak > &
void construct_hits(Hits &hits) override
std::vector< FQTPeak > fqt_peaks_
auto to_unsat_energy(double) const -> double
auto CreateHit(const FQTPeak &peak) const -> Hit
PeakPileUpStrategy pileup_strategy_
void extra_reset() override
static void peak_pileup_in_time_window(std::vector< FQTPeak > &peaks, double time_window)
auto GetFQTPeaks() const -> const std::vector< FQTPeak > &
R3B::Neuland::Cal2HitPar * neuland_hit_par_
void add_signal(Signal) override
void fqt_peak_pileup(std::vector< FQTPeak > &peaks)
auto GetCal2HitPar() -> auto *
Channel(Side side, PeakPileUpStrategy strategy=PeakPileUpStrategy::width)
auto check_paddle_id_in_hit_par() const -> bool
void set_hit_module_par(int PaddleId)
static void peak_pileup_with_distance(std::vector< FQTPeak > &peaks, double distance)
void apply_threshold(std::vector< Peak > &)
auto CreateCalSignal(const FQTPeak &peak) const -> CalSignal
std::vector< PMTPeak > pmt_peaks_
void construct_FQT_peaks(std::vector< FQTPeak > &FQTPeaks, std::vector< PMTPeak > &pmtPeaks)
Channel(Side, PeakPileUpStrategy strategy, TRandom3 &)
FQTPeak(const PMTPeak &pmtPeak, Channel *channel)
double trailing_edge_time_
auto GetLETime() const -> double
auto operator==(const FQTPeak &other) const -> bool
auto operator<(const FQTPeak &other) const -> bool
static auto Energy2ToT(double height, const Params &par) -> double
auto operator-(double time) const -> double
auto GetToT() const -> double
auto operator-(const FQTPeak &other) const -> double
auto operator>(const FQTPeak &other) const -> bool
void operator+=(const FQTPeak &other)
static auto ToT2Energy(double width, const Params &par) -> double
auto GetTETime() const -> double
auto GetEnergy() const -> double
void AddEnergy(double energy)
double leading_edge_time_
auto operator+=(const PMTPeak &other) -> PMTPeak &
static constexpr double peakWidth
auto operator<(const PMTPeak &rhs) const -> bool
auto operator==(const PMTPeak &rhs) const -> bool
auto GetHeight() const -> double
auto GetLETime() const -> double
double energy_res_rel
Gaus(e, fEResRel * e) [].
double time_res
time + Gaus(0., fTimeRes) [ns]
double pileup_time_window
[ns]
double energy_gain
Energy gain.
double min_energy
minimal energy of a FQT peak [MeV]
double saturation_coefficient
Saturation coefficient of PMTs.
double pedestal
Energy offset parameter [ns].
bool experimental_data_is_corrected_for_saturation
Flag if saturation effect enabled.
std::reference_wrapper< TRandom3 > rnd_gen
Reference to shared random generator.
double pileup_distance
[ns]