Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef REMNANTS_Tools_Beam_Decorrelator_H
0002 #define REMNANTS_Tools_Beam_Decorrelator_H
0003 
0004 #include "REMNANTS/Main/Remnant_Base.H"
0005 #include "REMNANTS/Tools/Primordial_KPerp.H"
0006 #include "ATOOLS/Phys/Blob_List.H"
0007 #include "ATOOLS/Math/Vector.H"
0008 #include "ATOOLS/Math/Poincare.H"
0009 #include <list>
0010 
0011 namespace REMNANTS {
0012   static ATOOLS::Vec4D s_AxisP(1.,0.,0.,1.);
0013   static ATOOLS::Vec4D s_AxisM(1.,0.,0.,-1.);
0014   
0015   class Remnant_Handler;
0016   class Beam_Decorrelator {
0017   private:
0018     bool               m_on;
0019     double             m_expo, m_xiP, m_invxiP, m_maxeta, m_mass2, m_deltaM;
0020     Remnant_Handler  * p_rhandler;
0021     Primordial_KPerp * p_kperpGenerator; 
0022 
0023     ATOOLS::Blob     * p_softblob;
0024     ATOOLS::Particle * p_beam, * p_spect;
0025     std::list<ATOOLS::Particle * > m_softgluons;
0026 
0027     ATOOLS::Vec4D      m_pbeam, m_pspect, m_ktvec;
0028     ATOOLS::Poincare   m_boost, m_rotat;
0029     double             m_Q2, m_Q, m_mbeam, m_mbeam2, m_mspect, m_mspect2;
0030     double             m_minMbeam, m_minMbeam2, m_minMspect, m_minMspect2;
0031     double             m_x, m_kt2;
0032     
0033     bool MustEmit(ATOOLS::Particle * pi, ATOOLS::Particle * pj);
0034     bool SoftEmission();
0035     void InitSoftEmission();
0036     bool DefineKinematics(ATOOLS::Vec4D & pi,ATOOLS::Vec4D & pj,ATOOLS::Vec4D & pk);
0037     bool MakeKinematics(ATOOLS::Vec4D & pi,ATOOLS::Vec4D & pj,ATOOLS::Vec4D & pk);
0038     bool FillSoftEmission(ATOOLS::Vec4D & pi,ATOOLS::Vec4D & pj,ATOOLS::Vec4D & pk);
0039   public:
0040     Beam_Decorrelator();
0041     ~Beam_Decorrelator();
0042 
0043     void Initialize(Remnant_Handler * const rhandler);
0044     bool operator()(ATOOLS::Blob * softblob);
0045     void Reset();
0046   };
0047 }
0048 
0049 #endif