Back to home page

EIC code displayed by LXR

 
 

    


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