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