File indexing completed on 2025-04-19 09:10:14
0001 #ifndef SHERPA_SoftPhysics_Singlet_Sorter_H
0002 #define SHERPA_SoftPhysics_Singlet_Sorter_H
0003
0004 #include "ATOOLS/Phys/Particle_List.H"
0005 #include "ATOOLS/Phys/Blob_List.H"
0006 #include "ATOOLS/Phys/Momenta_Stretcher.H"
0007 #include "ATOOLS/Org/CXXFLAGS.H"
0008 #include "ATOOLS/Org/Return_Value.H"
0009 #include "ATOOLS/Org/Terminator_Objects.H"
0010 #include <vector>
0011
0012 namespace SHERPA {
0013 class Singlet_Sorter {
0014 private :
0015 std::list<ATOOLS::Particle *> m_hadrons;
0016 ATOOLS::Part_List * p_partlist;
0017 std::list<ATOOLS::Part_List * > m_partlists;
0018 ATOOLS:: Momenta_Stretcher m_stretcher;
0019
0020 bool HarvestParticles(ATOOLS::Blob_List *);
0021 bool FillParticleLists(ATOOLS::Blob * blob);
0022 void DealWithHadrons(ATOOLS::Blob_List * bloblist);
0023 bool DecomposeIntoSinglets();
0024 bool NextSinglet(ATOOLS::Part_List & sorted,const bool trip);
0025 ATOOLS::Particle * FindNext(const size_t col);
0026 public:
0027 Singlet_Sorter();
0028 ~Singlet_Sorter();
0029 ATOOLS::Return_Value::code operator()(ATOOLS::Blob_List *);
0030 ATOOLS::Blob * MakeBlob();
0031 void ResetPartLists();
0032 };
0033 }
0034
0035 #endif