File indexing completed on 2025-04-19 09:10:13
0001 #ifndef RECONNECTIONS_Main_Reconnect_By_Singlet_H
0002 #define RECONNECTIONS_Main_Reconnect_By_Singlet_H
0003
0004 #include "RECONNECTIONS/Main/Reconnection_Base.H"
0005 #include "RECONNECTIONS/Main/Reconnection_Weights.H"
0006
0007 namespace RECONNECTIONS {
0008 class Reconnect_By_Singlet : public Reconnection_Base {
0009 private:
0010 Reconnection_Weights m_weights;
0011 int m_Pmode;
0012 double m_Q02, m_etaQ, m_R02, m_etaR, m_reshuffle, m_restring;
0013 std::list<ATOOLS::Part_List *> m_singlets;
0014
0015 void SetParameters();
0016 void MakeSinglets();
0017 void FlattenSinglets();
0018 ATOOLS::Particle * FindStart();
0019 ATOOLS::Particle * FindNext(const size_t & col);
0020 void ReshuffleSinglets();
0021 bool ReshuffleSinglet(ATOOLS::Part_List * singlet);
0022 void ReconnectSinglets();
0023 void SpliceSinglets(ATOOLS::Part_List * sing1,ATOOLS::Part_List * sing2,
0024 ATOOLS::Part_Iterator & pit1,ATOOLS::Part_Iterator & pit2);
0025 void AftermathOfSlicing(ATOOLS::Particle * part11,ATOOLS::Particle * part12,
0026 ATOOLS::Particle * part21,ATOOLS::Particle * part22);
0027 double MomDistance(ATOOLS::Particle * trip,ATOOLS::Particle * anti);
0028 double PosDistance(ATOOLS::Particle * trip,ATOOLS::Particle * anti);
0029 double ColDistance(ATOOLS::Particle * trip,ATOOLS::Particle * anti);
0030 public:
0031 Reconnect_By_Singlet();
0032 ~Reconnect_By_Singlet();
0033
0034 int operator()(ATOOLS::Blob_List *const blobs);
0035 void Reset();
0036 double Distance(ATOOLS::Particle * trip,ATOOLS::Particle * anti);
0037 };
0038 }
0039 #endif