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