Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:13

0001 #ifndef REMNANTS_Tools_Kinematics_Generator_H
0002 #define REMNANTS_Tools_Kinematics_Generator_H
0003 
0004 #include "REMNANTS/Main/Remnant_Base.H"
0005 #include "REMNANTS/Tools/Primordial_KPerp.H"
0006 #include "ATOOLS/Phys/Blob_List.H"
0007 #include "ATOOLS/Phys/Momenta_Stretcher.H"
0008 
0009 namespace REMNANTS {
0010   struct kin_type {
0011     enum code {
0012       none   = 0,
0013       intact = 1,
0014       coll   = 2,
0015       DIS1   = 4,
0016       DIS2   = 5,
0017       hh     = 8
0018     };
0019   };
0020   class Remnant_Handler;
0021   
0022   class Kinematics_Generator {
0023   private:
0024     Remnant_Handler   * p_rhandler;
0025     Remnant_Base      * p_remnants[2];
0026     ATOOLS::Part_List * p_extracted[2], * p_spectators[2];
0027     ATOOLS::Blob      * p_softblob;
0028     
0029     kin_type::code  m_kintype;
0030     
0031     Primordial_KPerp          m_kperpGenerator; 
0032     ATOOLS::Momenta_Stretcher m_stretcher;
0033 
0034     ATOOLS::Poincare          m_oldcmsboost, m_newcmsboost, m_rotate;
0035     std::set<ATOOLS::Blob *>  m_boostedblobs;
0036 
0037     double                 m_mass_sum;
0038     ATOOLS::Vec4D          m_inmom[2], m_checkmom[2];
0039     ATOOLS::ParticleMomMap m_ktmap[2], m_shuffledmap;
0040     
0041     unsigned long int m_warns, m_errors;
0042 
0043     void SetKinType(Remnant_Handler * const rhandler);
0044     bool CollinearKinematics();
0045     bool TransverseKinematics();
0046     bool TransverseKinematicsHH();
0047     bool TransverseKinematicsDIS(const size_t & beam);
0048     bool AdjustShowerInitiators();
0049     bool BoostConnectedBlob(ATOOLS::Blob * blob,size_t & catcher);
0050     bool AdjustRemnants();
0051     bool AdjustFinalStateDIS(const size_t & beam);
0052     
0053     bool CheckHH();
0054     bool CheckScatter(ATOOLS::Particle * p[2]);
0055     bool CheckRemnants();
0056     bool CheckDIS(const size_t & beam);
0057     const ATOOLS::Vec4D ExtractColourfulFS(const size_t & beam,
0058                        std::vector<ATOOLS::Vec4D> & moms,
0059                        std::vector<double> & masses,
0060                        std::vector<ATOOLS::Particle *> & parts);
0061     const ATOOLS::Vec4D ExtractSpectators(const size_t & beam,
0062                       std::vector<ATOOLS::Vec4D> & moms,
0063                       std::vector<double> & masses,
0064                       std::vector<ATOOLS::Particle *> & parts);
0065     
0066     void InitKTMaps();
0067     const ATOOLS::Vec4D & ShuffledMomentum(ATOOLS::Particle *const part);
0068   public:
0069     Kinematics_Generator();
0070     ~Kinematics_Generator();
0071 
0072     void Initialize(Remnant_Handler * const rhandler);
0073     ATOOLS::Blob * MakeSoftBlob();
0074     bool FillBlobs(ATOOLS::Blob_List *const bloblist);
0075       
0076     inline Primordial_KPerp * GetKPerp() { return &m_kperpGenerator; }
0077     void Reset();
0078   };
0079 }
0080 
0081 #endif