Back to home page

EIC code displayed by LXR

 
 

    


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

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_PROC_DECAY_LA_LOADED
0021 #define LAGER_PROC_DECAY_LA_LOADED
0022 
0023 #include <lager/core/particle.hh>
0024 #include <lager/gen/lA_event.hh>
0025 #include <lager/physics/decay.hh>
0026 #include <lager/proc/decay/decay.hh>
0027 
0028 namespace lager {
0029 namespace decay {
0030 // =============================================================================
0031 // DECAY ALL UNSTABLE PARTICLES IN A GAMMA_P EVENT
0032 //
0033 // also handles chained decays
0034 //
0035 // Supported channels:
0036 //  * Pc according to Wang
0037 //  * e+e- decay of VMs
0038 //
0039 // Note: adds event weight to account for branching ratios when not simulating
0040 // the full decay width
0041 // =============================================================================
0042 class radiative_decay_vm {
0043 public:
0044   radiative_decay_vm();
0045   void process(lA_event& e, const int vm_index);
0046 };
0047 
0048 class lA : public decay<lA_event> {
0049 public:
0050   using base_type = decay<lA_event>;
0051   lA(const configuration&, const string_path&, std::shared_ptr<TRandom> r);
0052   virtual void process(lA_event& e) const;
0053 
0054 private:
0055   void quarkonium_schc(lA_event& e, const int index) const;
0056   void quarkonium_radcor_only(lA_event& e, const int index) const;
0057   void pentaquark_qpq(lA_event& e, const int index) const;
0058 
0059   const particle vm_decay_lplus_;
0060   const particle vm_decay_lminus_;
0061   const double vm_decay_br_;
0062   std::unique_ptr<radiative_decay_vm> radiative_decay_;
0063 };
0064 
0065 } // namespace decay
0066 } // namespace lager
0067 
0068 #endif