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