Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef SHERPA_SoftPhysics_Hadron_Decay_Handler_H
0002 #define SHERPA_SoftPhysics_Hadron_Decay_Handler_H
0003 
0004 #include <set>
0005 #include <iterator>
0006 
0007 #include "ATOOLS/Org/Return_Value.H"
0008 #include "ATOOLS/Phys/Flavour.H"
0009 #include "ATOOLS/Math/Vector.H"
0010 #include "ATOOLS/Org/CXXFLAGS.H"
0011 #include "SHERPA/Single_Events/Decay_Handler_Base.H"
0012 
0013 
0014 namespace ATOOLS { 
0015   class Blob;
0016   class Blob_List;
0017 }
0018 
0019 namespace HADRONS {
0020   class Mixing_Handler;
0021 }
0022 
0023 namespace SHERPA {
0024 
0025   class Hadron_Decay_Handler : public Decay_Handler_Base {
0026     HADRONS::Mixing_Handler* p_mixinghandler;
0027 
0028     long int bs, bs_cs_semilep, bs_ccss, bs_ccds, bs_cuds;
0029     long int bs_cs_semilep_rej, bs_ccss_rej, bs_ccds_rej, bs_cuds_rej;
0030 
0031   public :
0032     Hadron_Decay_Handler();
0033     ~Hadron_Decay_Handler();
0034 
0035     /*!
0036       \brief Chooses the appropriate decay handler for <var>inpart</var>
0037       to create the decay blob for inpart. The decay blob is only a stub
0038       so far without kinematics and without outparticles.
0039       */
0040     void CreateDecayBlob(ATOOLS::Particle* part);
0041     
0042     void TreatInitialBlob(ATOOLS::Blob* blob,
0043                           METOOLS::Amplitude2_Tensor* amps,
0044                           const ATOOLS::Particle_Vector& origparts);
0045     METOOLS::Amplitude2_Tensor*
0046     FillOnshellDecay(ATOOLS::Blob* blob, METOOLS::Spin_Density* sigma);
0047     METOOLS::Decay_Matrix*
0048     FillDecayTree(ATOOLS::Blob * blob, METOOLS::Spin_Density* s0);
0049 
0050     /*!
0051       \brief If a fragmentation blob is encountered, it is checked whether it stems from a
0052       partonic hadron decay. If it does, and it produced an exclusive decay channel
0053       of that decaying hadron, it is rejected and redone, as to not spoil that
0054       hadron's branching ratio.
0055       */
0056     bool RejectExclusiveChannelsFromFragmentation(ATOOLS::Blob*);
0057     /*!
0058       \brief Calculates the position of the blob in the lab frame according
0059       to its inparticle's decay time and momentum.
0060       */
0061     void SetPosition(ATOOLS::Blob* blob);
0062 
0063     inline double Mass(const ATOOLS::Flavour &fl) const { return fl.HadMass(); }
0064   };
0065 
0066 }
0067 
0068 #endif