Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:14:58

0001 #ifndef LIEGE_GEN_LP_GAMMA_LEE_4HE_JPSI_GRID_LOADED
0002 #define LIEGE_GEN_LP_GAMMA_LEE_4HE_JPSI_GRID_LOADED
0003 
0004 #include <TGraph2D.h>
0005 #include <memory>
0006 #include <lager/core/generator.hh>
0007 #include <lager/core/particle.hh>
0008 #include <lager/gen/lA/generator.hh>
0009 #include <lager/gen/lA_event.hh>
0010 
0011 namespace lager {
0012 namespace lA {
0013 
0014 // =============================================================================
0015 // lA::lee_4He_jpsi_grid
0016 //
0017 // gamma + p -> VM + X process
0018 //
0019 // Uses the following expressions (cf. lager/physics/vm.hh)
0020 //  * R (sigma_L/sigma_T):
0021 //        R_vm_martynov(...)
0022 //  * Dipole FF for sigma_gamma -> sigma_t:
0023 //        dipole_ff_vm_hermes(...)
0024 //  * t-channel cross section:
0025 //        dsigma_dexp_bt_brodsky(...)
0026 // =============================================================================
0027 class lee_4He_jpsi_grid : public lA::generator {
0028 public:
0029   using base_type = lA::generator;
0030 
0031   lee_4He_jpsi_grid(const configuration& cf, const string_path& path,
0032                     std::shared_ptr<TRandom> r);
0033   virtual lA_event generate(const lA_data&);
0034   virtual double max_cross_section() const { return max_; }
0035   virtual double phase_space() const { return max_t_range_.width(); }
0036 
0037 private:
0038   double calc_max_xsec(const configuration& cf) const;
0039   interval<double> calc_max_t_range(const configuration& cf) const;
0040 
0041   // cross section component evaluation
0042   double dsigma_dt(const double W2, const double t, const double Mt) const;
0043   double R(const double Q2) const;
0044   double dipole(const double Q2) const;
0045 
0046   // jacobian for d/dexp_bt -> d/dt
0047   double jacobian(const double t) const;
0048 
0049   // threshold squared for these particular particles (correctly handels the
0050   // case of particles with non-zero width)
0051   double threshold2(const particle& vm, const particle& recoil) const;
0052 
0053   // utility function
0054   lA_event make_event(const lA_data& initial, const double t,
0055                             particle vm1, particle X1, const double xs,
0056                             const double R);
0057 
0058   // recoil and vm particle info
0059   const particle recoil_;
0060   const particle vm_;
0061 
0062   // cross section settings
0063   std::unique_ptr<TGraph2D> grid_;
0064   const double R_vm_c_;   // c-parameter for R
0065   const double R_vm_n_;   // n-parameter for R
0066   const double dipole_n_; // n-parameter for dipole factor
0067 
0068   // t-range and cross setion maxima
0069   const interval<double> max_t_range_;
0070   const double max_;
0071 };
0072 
0073 } // namespace lA
0074 } // namespace lager
0075 
0076 #endif