Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:09:44

0001 #ifndef AHADIC_Tools_Soft_Cluster_Handler_H
0002 #define AHADIC_Tools_Soft_Cluster_Handler_H
0003 
0004 #include "AHADIC++/Tools/KT_Selector.H"
0005 #include "AHADIC++/Tools/Single_Transitions.H"
0006 #include "AHADIC++/Tools/Double_Transitions.H"
0007 #include "AHADIC++/Tools/Cluster.H"
0008 
0009 namespace AHADIC {
0010   class Soft_Cluster_Handler {
0011   private:
0012     std::list<Proto_Particle *> * p_hadrons; 
0013     Constituents                * p_constituents;
0014     Single_Transitions          * p_singletransitions;
0015     Double_Transitions          * p_doubletransitions;
0016     KT_Selector                   m_ktselector;
0017     double m_dec_threshold,m_trans_threshold, m_chi, m_ktmax, m_ktfac, m_zeta;
0018     double m_piphoton_threshold, m_dipion_threshold, m_open_threshold;
0019 
0020     Cluster    * p_cluster;
0021     double       m_mass2, m_mass;
0022     Flavour_Pair m_flavs;
0023 
0024     bool m_forceddecay, m_direct_transition, m_ktorder;
0025     
0026     ATOOLS::Vec4D   m_moms[2];
0027     ATOOLS::Flavour m_hads[2];
0028 
0029     void   FillFlavours(Cluster * cluster);
0030     int    CheckOutsideRange();
0031     int    Decay();
0032     double PhaseSpace(const double & m2,const double & m3,const bool heavyB);
0033     double DecayWeight();
0034     double RadiationWeight(const bool & withPS=true);
0035     double Annihilation();
0036     bool   FixKinematics();
0037     bool   DiQuarkToQuarks(const ATOOLS::Flavour & di,
0038                ATOOLS::Flavour & q1,ATOOLS::Flavour & q2);
0039     bool   AnnihilateFlavour(const ATOOLS::Flavour & one1,
0040                  const ATOOLS::Flavour & one2,
0041                  const ATOOLS::Flavour & two1,
0042                  const ATOOLS::Flavour & two2);
0043     double DefineHadronsInAnnihilation(const Flavour_Pair & one,
0044                        const Flavour_Pair & two);
0045     bool   TreatSingletCluster();
0046  public:
0047     Soft_Cluster_Handler(std::list<Proto_Particle *> * hadrons);
0048     ~Soft_Cluster_Handler();
0049 
0050     void Init();
0051     void Reset();
0052     bool PromptTransit(Cluster * cluster,ATOOLS::Flavour & had);
0053     bool MustPromptDecay(Cluster * cluster);
0054     bool MustPromptDecay(const ATOOLS::Flavour & fl1,
0055              const ATOOLS::Flavour & fl2,
0056              const double & mass);
0057     int  Treat(Cluster * cluster,bool force=false);
0058     bool TreatTwoGluons(Cluster * cluster);
0059     bool RadiativeDecay(Cluster * cluster);
0060     bool Rescue(Cluster * cluster);
0061 
0062     double TransitionThreshold(const ATOOLS::Flavour & fl1,
0063                    const ATOOLS::Flavour & fl2);
0064     double DecayThreshold(const ATOOLS::Flavour & fl1,
0065               const ATOOLS::Flavour & fl2);
0066     double MinSingleMass(const ATOOLS::Flavour & fl1,
0067              const ATOOLS::Flavour & fl2);
0068     ATOOLS::Flavour LowestTransition(const ATOOLS::Flavour & fl1,
0069                      const ATOOLS::Flavour & fl2);
0070     double MinDoubleMass(const ATOOLS::Flavour & fl1,
0071              const ATOOLS::Flavour & fl2);
0072     ATOOLS::Flavour GetDecHadron(const size_t & i) { return m_hads[i]; }
0073 
0074     std::list<Proto_Particle *> * GetHadrons() const { return p_hadrons; } 
0075   };
0076 }
0077 #endif