Back to home page

EIC code displayed by LXR

 
 

    


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

0001 // lAger: General Purpose l/A-event Generator
0002 // Copyright (C) 2016-2021 Sylvester Joosten <sjoosten@anl.gov>
0003 // 
0004 // This file is part of lAger.
0005 // 
0006 // lAger is free software: you can redistribute it and/or modify
0007 // it under the terms of the GNU General Public License as published by
0008 // the Free Shoftware Foundation, either version 3 of the License, or
0009 // (at your option) any later version.
0010 // 
0011 // lAger is distributed in the hope that it will be useful,
0012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
0013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014 // GNU General Public License for more details.
0015 // 
0016 // You should have received a copy of the GNU General Public License
0017 // along with lAger.  If not, see <https://www.gnu.org/licenses/>.
0018 // 
0019 
0020 #ifndef LAGER_GEN_LA_RESONANCE_QPQ_LOADED
0021 #define LAGER_GEN_LA_RESONANCE_QPQ_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 // lA::resonance_qpq
0033 //
0034 // gamma + p -> quarkonium pentaquark resonance process
0035 //
0036 // Uses the following expressions (cf. lager/physics/vm.hh)
0037 // (assuming the photo-production happens through a given quarkonium pole)
0038 //  * R (sigma_L/sigma_T):
0039 //        R_martynov(...)
0040 //  * Dipole FF for sigma_gamma -> sigma_t:
0041 //        dipole_ff__hermes(...)
0042 //  * photo-production cross section:
0043 //        simple resonance (BW)
0044 // =============================================================================
0045 class resonance_qpq : public lA::generator {
0046 public:
0047   using base_type = lA::generator;
0048   resonance_qpq(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 { return 1.; }
0053 
0054 private:
0055   double calc_max_xsec(const configuration& cf) const;
0056   interval<double> calc_W2_range(const double n_sigma) const;
0057   double calc_normalization() const;
0058 
0059   // cross section component evaluation
0060   double sigma(const double W2) const;
0061   double R(const double Q2) const;
0062   double dipole(const double Q2) const;
0063 
0064   // recoil and  particle info
0065   const particle vm_pole_;          // relevant VM pole
0066   const particle qpq_;              // quarkonium pentaquark assumption
0067 
0068   // cross section settings
0069   const double mass_;      // resonance mass in GeV
0070   const double width_;     // Width of the resonance
0071   const double amplitude_; // peak cross section amplitude
0072   const double norm_;      // normalization for the BW (to have peak amplitude_)
0073   const double coupling_;  // coupling through the quarkonium pole
0074   const double R_vm_c_;    // c-parameter for R
0075   const double R_vm_n_;    // n-parameter for R
0076   const double dipole_n_;  // n-parameter for dipole factor
0077 
0078   const interval<double> W2_range_; // mass squared range around the pole mass
0079 
0080 
0081   const double max_;
0082 };
0083 
0084 } // namespace lA
0085 } // namespace lager
0086 
0087 #endif