Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:15

0001 #ifndef SHRIMPS_Main_Inelastic_Event_Generator_H
0002 #define SHRIMPS_Main_Inelastic_Event_Generator_H
0003 
0004 #include "SHRiMPS/Event_Generation/Event_Generator_Base.H"
0005 #include "SHRiMPS/Cross_Sections/Sigma_Inelastic.H"
0006 #include "SHRiMPS/Ladders/Primary_Ladders.H"
0007 #include "SHRiMPS/Beam_Remnants/Colour_Generator.H"
0008 #include "SHRiMPS/Event_Generation/Collinear_Emission_Generator.H"
0009 #include "ATOOLS/Org/CXXFLAGS.H"
0010 #include "ATOOLS/Math/Histogram.H"
0011 #include <map>
0012 
0013 namespace SHRIMPS {
0014   class Cluster_Algorithm;
0015 
0016   class Inelastic_Event_Generator : public Event_Generator_Base {
0017   private:
0018     Sigma_Inelastic * p_sigma;
0019     Primary_Ladders   m_primaries;
0020     bool m_mustinit;
0021     int  m_test;
0022     
0023     std::map<Omega_ik *,double>                 m_xsecs; 
0024     std::map<Omega_ik *,std::vector<double> * > m_Bgrids; 
0025     double m_sigma, m_B;
0026     int    m_Nladders, m_Nprim, m_Ngen;
0027 
0028     Cluster_Algorithm * p_cluster;
0029 
0030     Collinear_Emission_Generator * p_collemgen;
0031         
0032     bool SelectEikonal();
0033     bool SelectB();
0034     ATOOLS::Blob * MakePrimaryScatterBlob();
0035   public:
0036     Inelastic_Event_Generator(Sigma_Inelastic * sigma,const int & test);
0037     ~Inelastic_Event_Generator();
0038 
0039     void Reset();
0040     void Initialise(Remnant_Handler * remnants,Cluster_Algorithm * cluster);
0041     int InitEvent(ATOOLS::Blob_List * blobs);
0042     ATOOLS::Blob * GenerateEvent();
0043 
0044 
0045     inline Colour_Generator * GetColourGenerator()  {
0046       return m_primaries.GetColourGenerator();
0047     }
0048     inline void   SetCluster(Cluster_Algorithm * cluster) {
0049     }
0050     inline void SetMaxEnergies(const double & E1,const double & E2) {
0051       m_primaries.SetMaxEnergies(E1,E2);
0052     }
0053     inline double XSec(Omega_ik * eikonal=NULL) {
0054       if (eikonal!=NULL) return m_xsecs[eikonal];
0055       return m_sigma;
0056     }
0057     inline const double B()      const { return m_B; }
0058     inline const double Yhat()   const { return m_primaries.Yhat(); }
0059     inline const double Ymax()   const { return m_primaries.Ymax(); }
0060     inline const double KT2min() const { return m_primaries.KT2min(); }
0061     void Test(const std::string & dirname);
0062   };
0063 }
0064 #endif