Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef AHADIC_Formations_Singlet_Checker_H
0002 #define AHADIC_Formations_Singlet_Checker_H
0003 
0004 #include "AHADIC++/Formation/Trivial_Splitter.H"
0005 #include "AHADIC++/Tools/Singlet_Tools.H"
0006 #include "AHADIC++/Tools/Soft_Cluster_Handler.H"
0007 #include <list>
0008 #include <map>
0009 
0010 namespace AHADIC {
0011   class Singlet_Checker : public Singlet_Tools {
0012   private:
0013     std::list<Singlet *>                    * p_singlets;
0014     std::list<std::list<Singlet *>::iterator> m_badones;
0015 
0016     using Transition = std::pair<Singlet*, ATOOLS::Flavour>;
0017     std::vector<Transition> m_transitions;
0018     std::list<Proto_Particle *>             * p_hadrons;
0019     
0020     Soft_Cluster_Handler * p_softclusters;
0021     Trivial_Splitter       m_splitter;
0022     
0023     Proto_Particle * p_part1, * p_part2;
0024     double           m_minSmass2;
0025     bool             m_isring;
0026     
0027     ATOOLS::Vec4D    m_singletmom;
0028     double           m_targetmass;
0029     Singlet        * p_recoiler;
0030 
0031     long int         m_direct_transitions, m_errors;
0032     
0033     bool CheckSinglet();
0034     bool FusePartonsInLowMassSinglet();
0035     bool DealWithProblematicSinglets();
0036     void SortProblematicSinglets();
0037     bool FindOtherSingletToTransit();
0038     bool FindRecoilerForTransit();
0039     bool TestRecoiler();
0040     bool TransitProblematicSinglets();
0041     bool TransitProblematicSingletWithRecoiler();
0042     bool BoostRecoilerInNewSystem(const ATOOLS::Vec4D & newmom);
0043     void ForcedDecays();
0044     bool ForcedDecayOfTwoPartonSinglet();
0045     bool ExtractAndCheckFlavours();
0046     bool TwoGluonSingletToHadrons();
0047     bool TwoQuarkSingletToHadrons();
0048     void AddOrUpdateTransition(Singlet*, ATOOLS::Flavour& hadron);
0049  public:
0050     Singlet_Checker(std::list<Singlet *> * p_singlets,
0051             Soft_Cluster_Handler * softclusters);
0052     ~Singlet_Checker();
0053     void Init();
0054     void Reset();
0055     
0056     bool operator()();
0057   };
0058 }
0059 
0060 #endif