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 #ifndef LAGER_GEN_LA_OLEKSII_JPSI_BH_LOADED
0021 #define LAGER_GEN_LA_OLEKSII_JPSI_BH_LOADED
0022
0023 #include <lager/core/generator.hh>
0024 #include <lager/core/particle.hh>
0025 #include <lager/gen/lA/generator.hh>
0026 #include <lager/gen/lA_event.hh>
0027
0028 namespace lager {
0029 namespace lA {
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 class oleksii_jpsi_bh : public lA::generator {
0045 public:
0046 using base_type = lA::generator;
0047
0048 oleksii_jpsi_bh(const configuration& cf, const string_path& path,
0049 std::shared_ptr<TRandom> r);
0050 virtual lA_event generate(const lA_data&);
0051 virtual double max_cross_section() const { return max_; }
0052 virtual double phase_space() const {
0053
0054
0055 return (exp(1.13 * max_t_range_.max) - exp(1.13 * max_t_range_.min)) *
0056 (Mll_range_.max * Mll_range_.max - Mll_range_.min * Mll_range_.min) *
0057 TMath::TwoPi() * 2.;
0058 }
0059
0060 private:
0061 interval<double> calc_max_t_range(const configuration& cf) const;
0062
0063
0064
0065 double threshold2(const particle& vm, const particle& recoil) const;
0066
0067
0068 lA_event make_event(const lA_data& initial, const double t,
0069 particle vm1, particle X1, const double xs,
0070 const double thetaCM_el,
0071 const double phiCM_el) const;
0072
0073
0074 const particle recoil_;
0075 const particle vm_;
0076
0077
0078 const interval<double> max_t_range_;
0079 const interval<double> Mll_range_;
0080 const double max_;
0081
0082
0083 const double T_0_;
0084
0085
0086 const interval<double> p_range_;
0087 const interval<double> theta_range_;
0088 };
0089
0090 }
0091 }
0092
0093 #endif