Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef SHRIMPS_Beam_Remnants_Hadron_Dissociation_H
0002 #define SHRIMPS_Beam_Remnants_Hadron_Dissociation_H
0003 
0004 #include "SHRiMPS/Beam_Remnants/Continued_PDF.H"
0005 #include "SHRiMPS/Eikonals/Form_Factors.H"
0006 #include "ATOOLS/Phys/Blob_List.H"
0007 #include "ATOOLS/Org/Return_Value.H"
0008 #include "ATOOLS/Org/CXXFLAGS.H"
0009 #include <set>
0010 #include <map>
0011 
0012 namespace SHRIMPS {
0013 
0014   class Hadron_Dissociation {
0015   private:
0016     Continued_PDF * p_pdf;
0017     Form_Factor   * p_ff;
0018     ATOOLS::Flavour m_beamflav;
0019     ATOOLS::Vec4D   m_beamvec, m_outmom;
0020     int             m_beam, m_dir;
0021     double          m_xmin, m_QT2max, m_expo;
0022 
0023     ATOOLS::Blob                             * p_blob, * p_softblob;
0024     std::list<ATOOLS::Flavour>                 m_beamflavs;
0025     std::set<int>                              m_beamcols[2];
0026     ATOOLS::Flavour                            m_quark, m_diquark;
0027     std::map<ATOOLS::Particle *,ATOOLS::Vec4D> m_qtmap;
0028 
0029     bool CheckResiduals();
0030     void AddBeamBlob(ATOOLS::Blob_List * blobs,const double & B);
0031     void HarvestCollision(ATOOLS::Blob_List * blobs);
0032     bool CompensateFlavours();
0033     bool AddFlavourCompensator(const ATOOLS::Flavour & flav);
0034     bool AddColourCompensator(const ATOOLS::Flavour & flav);
0035     bool SelectCompensatorMomentum(ATOOLS::Particle * part);
0036     bool SelectCompensatorTripletColours(ATOOLS::Particle * part);
0037     bool CompensateColours();
0038     void CleanColours();
0039     void AddSpectatorPartons();
0040     void FixConstituentFlavours();
0041     void CalculateParallelMomenta(ATOOLS::Vec4D & qmom,ATOOLS::Vec4D & dimom);
0042     void SelectTrialTransverseMomenta();
0043   public:
0044     Hadron_Dissociation() {};
0045     Hadron_Dissociation(const int & beam,
0046             const ATOOLS::Vec4D & inmom,const ATOOLS::Flavour & flav,
0047             Continued_PDF * pdf);
0048     ~Hadron_Dissociation();
0049 
0050     void Reset();
0051     bool FillBeamBlob(ATOOLS::Blob_List * blobs, const double & B=0.);
0052     inline void SetSoftBlob(ATOOLS::Blob * blob=NULL) { p_softblob = blob; }
0053     inline void SetFormFactor(Form_Factor * ff)       { p_ff = ff; }
0054     inline Continued_PDF * GetPDF() const { return p_pdf; }
0055     inline ATOOLS::Blob  * GetSoftBlob()  { return p_softblob; }
0056    };
0057 }
0058 #endif