File indexing completed on 2025-04-19 09:09:43
0001 #ifndef AHADIC_Formation_Gluon_Splitter_H
0002 #define AHADIC_Formation_Gluon_Splitter_H
0003
0004 #include "AHADIC++/Tools/Splitter_Base.H"
0005
0006
0007 namespace AHADIC {
0008 class Gluon_Splitter : public Splitter_Base {
0009 private:
0010 int m_mode;
0011 double m_alpha, m_arg, m_x, m_y, m_lastmass;
0012 bool m_lastB, m_lastC;
0013
0014 long int m_kin_fails{ 0 };
0015
0016 bool MakeLongitudinalMomenta();
0017 void CalculateLimits();
0018 bool CalculateXY();
0019
0020 bool FillParticlesInLists();
0021 bool CheckKinematics();
0022 bool CheckConstituentKinematics(const ATOOLS::Vec4D & newmom11,
0023 const ATOOLS::Vec4D & newmom12);
0024 Cluster * MakeCluster();
0025 void ReplaceClusterWithHadron(const ATOOLS::Flavour & fl,ATOOLS::Vec4D & mom);
0026 void UpdateSpectator(const ATOOLS::Vec4D & clumom);
0027 public:
0028 Gluon_Splitter(std::list<Cluster *> * cluster_list,
0029 Soft_Cluster_Handler * softclusters) :
0030 Splitter_Base(cluster_list,softclusters) {}
0031 ~Gluon_Splitter();
0032
0033 void Init(const bool & isgluon=true);
0034 double WeightFunction(const double & z,
0035 const double & zmin=0.,const double & zmax=1.,
0036 const unsigned int & cnt=0);
0037 inline void GetLast(double & lastmass, bool & isB, bool & isC) {
0038 lastmass = m_lastmass; isB = m_lastB; isC = m_lastC;
0039 }
0040 };
0041 }
0042
0043 #endif