File indexing completed on 2026-09-27 09:14:58
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 #include <lager/core/configuration.hh>
0024 #include <lager/core/interval.hh>
0025 #include <lager/core/logger.hh>
0026
0027 namespace lager::initial {
0028 class realistic_target {
0029 public:
0030 realistic_target(const configuration& cf, const string_path& path);
0031
0032 double total_rl(const double vz) const {
0033 double rl = rl_pre_;
0034 if (target_range_.includes(vz)) {
0035 rl += rl_per_cm_ * (vz - target_range_.min);
0036 } else if (vz >= target_range_.max) {
0037 rl += rl_per_cm_ * target_range_.width();
0038 }
0039 LOG_JUNK2("realistic_target", "Calculated RL for z-vertex position at " +
0040 std::to_string(vz) +
0041 " cm [%]: " + std::to_string(rl * 100.));
0042 return rl;
0043 }
0044 double front() const { return target_range_.min; }
0045 double back() const { return target_range_.max; }
0046 double length() const { return target_range_.width(); }
0047
0048 private:
0049 double calc_rl_pre(const configuration& cf, const string_path& path) const;
0050
0051 const double rl_pre_;
0052 const double rl_per_cm_;
0053 const interval<double> target_range_;
0054 };
0055 }