File indexing completed on 2025-04-19 09:10:13
0001 #ifndef REMNANTS_Main_Proton_Remnant_H
0002 #define REMNANTS_Main_Proton_Remnant_H
0003
0004 #include "REMNANTS/Main/Remnant_Base.H"
0005 #include "REMNANTS/Tools/Form_Factor.H"
0006 #include "PDF/Main/PDF_Base.H"
0007 #include <map>
0008
0009 namespace REMNANTS {
0010 class Hadron_Remnant: public Remnant_Base {
0011 private:
0012 PDF::PDF_Base * p_pdf;
0013 const ATOOLS::Flavour_Set * p_partons;
0014 FlavourList m_constituents;
0015
0016 ATOOLS::Particle * p_valence, * p_remnant, * p_recoiler, * p_spectator;
0017
0018 bool m_valence;
0019 double m_alpha, m_gamma, m_beta, m_invb, m_LambdaQCD;
0020
0021 void ConstructConstituentFlavours();
0022
0023 bool IsValence(ATOOLS::Particle * part);
0024 void MakeSpectator(ATOOLS::Particle * parton);
0025 void CompensateColours();
0026 void SquashFlavourSinglets();
0027 void SquashColourSinglets();
0028 bool ReplaceInBlob(ATOOLS::Blob * shower,const bool & check,
0029 const size_t & pos,size_t col[2]);
0030 bool MakeRemnants();
0031 bool MakeLongitudinalMomenta(ATOOLS::ParticleMomMap *ktmap,
0032 const bool & copy=true);
0033 double SelectZ(const ATOOLS::Flavour &flav, double restmom, double remnant_masses) const;
0034 ATOOLS::Particle * MakeParticle(const ATOOLS::Flavour & flav);
0035 ATOOLS::Flavour RemnantFlavour(const ATOOLS::Flavour & flav);
0036 void Output();
0037 public:
0038 Hadron_Remnant(PDF::PDF_Base * pdf,const unsigned int & beam,
0039 const unsigned int & tag=0);
0040 ~Hadron_Remnant() = default;
0041
0042 bool FillBlob(ATOOLS::ParticleMomMap *ktmap,const bool & copy=true) final;
0043 bool TestExtract(const ATOOLS::Flavour &flav,const ATOOLS::Vec4D &mom) final;
0044 void Reset(const bool & resc=false,const bool & DIS=false) final;
0045
0046 inline ATOOLS::Particle * GetRecoiler() { return p_recoiler; }
0047 inline ATOOLS::Particle * GetSpectator() { return p_spectator; }
0048 };
0049 }
0050
0051 #endif