File indexing completed on 2025-04-19 09:09:43
0001 #ifndef AHADIC_Formation_Trivial_Splitter_H
0002 #define AHADIC_Formation_Trivial_Splitter_H
0003
0004 #include "AHADIC++/Tools/Singlet_Tools.H"
0005 #include "AHADIC++/Tools/Flavour_Selector.H"
0006 #include "AHADIC++/Tools/KT_Selector.H"
0007 #include "AHADIC++/Tools/Z_Selector.H"
0008 #include "AHADIC++/Tools/Constituents.H"
0009 #include "AHADIC++/Tools/Proto_Particle.H"
0010 #include "ATOOLS/Math/Poincare.H"
0011 #include <list>
0012
0013 namespace AHADIC {
0014 class Trivial_Splitter {
0015 private:
0016 Constituents * p_constituents;
0017 Flavour_Selector m_flavourselector;
0018 KT_Selector m_ktselector;
0019 Z_Selector m_zselector;
0020
0021 double m_kt2max, m_minmass;
0022
0023 std::list<Proto_Particle *> * p_singlet;
0024 Proto_Particle * p_part1, * p_part2;
0025 ATOOLS::Vec4D m_spectmom;
0026 double m_Q2, m_E;
0027 ATOOLS::Poincare m_boost, m_rotat;
0028
0029 ATOOLS::Flavour m_newflav;
0030 double m_popped_mass, m_popped_mass2;
0031 double m_ktmax, m_kt, m_kt2, m_phi, m_beta, m_z;
0032 ATOOLS::Vec4D m_ktvec, m_q1mom, m_q2mom, m_glumom;
0033
0034
0035 bool InitKinematics(bool rescue=false);
0036 void SelectFlavour();
0037 bool FixTrialKinematics();
0038 void FixTransverseMomentum(bool rescue=false);
0039 bool FixBetaAndZ();
0040 bool ConstructMomenta();
0041 bool CheckKinematics();
0042
0043 bool Rescue();
0044 void ConstructRescueMomenta();
0045 public:
0046 Trivial_Splitter();
0047 ~Trivial_Splitter() {}
0048 void Init();
0049
0050 bool operator()(Singlet * singlet);
0051 bool operator()(Proto_Particle * part1, Proto_Particle * part2);
0052
0053 double WeightFunction(const double & z) { return 1.; }
0054 inline const double & MinMass() const { return m_minmass; }
0055 };
0056 }
0057
0058 #endif