File indexing completed on 2025-04-19 09:09:43
0001 #ifndef AHADIC_Decays_Cluster_Splitter_H
0002 #define AHADIC_Decays_Cluster_Splitter_H
0003
0004 #include "AHADIC++/Tools/Splitter_Base.H"
0005
0006 namespace AHADIC {
0007 class Cluster_Splitter : public Splitter_Base {
0008 private:
0009 int m_mode, m_defmode, m_beammode;
0010 double m_alpha[4], m_beta[4], m_gamma[4];
0011 double m_a[2], m_b[2], m_c[2], m_kt02;
0012
0013 double m_R2[2], m_mean[2], m_sigma[2], m_m2min[2], m_masses;
0014
0015 Cluster * p_out[2];
0016 ATOOLS::Vec4D m_cms, m_mom[2], m_newmom[2];
0017 ATOOLS::Flavour m_fl[2];
0018 double m_mass2[2];
0019
0020 bool m_output;
0021
0022 bool MakeLongitudinalMomenta();
0023 bool MakeLongitudinalMomentaZ();
0024 bool MakeLongitudinalMomentaZSimple();
0025 bool MakeLongitudinalMomentaMass();
0026 bool MakeLongitudinalMomentaMassSimple();
0027 double DeltaM(const size_t & cl);
0028 void FixCoefficients();
0029 void CalculateLimits();
0030 bool FillParticlesInLists();
0031 size_t MakeAndCheckClusters();
0032 void MakeNewMomenta(size_t shuffle);
0033 void FillHadronAndDeleteCluster(size_t i);
0034 void UpdateAndFillCluster(size_t i);
0035 bool RecalculateZs();
0036 bool CheckKinematics() { return true; }
0037 Cluster * MakeCluster(size_t i);
0038 public:
0039 Cluster_Splitter(std::list<Cluster *> * cluster_list,
0040 Soft_Cluster_Handler * softclusters);
0041 void Init(const bool & isgluon=false);
0042 double WeightFunction(const double & z,
0043 const double & zmin,const double & zmax,
0044 const unsigned int & cnt);
0045 void SetOutput(const bool & out) { m_output = out; }
0046 };
0047 }
0048
0049 #endif