Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef HADRONS_Main_Mixing_Handler_H
0002 #define HADRONS_Main_Mixing_Handler_H
0003 
0004 #include "ATOOLS/Phys/Flavour.H"
0005 #include "ATOOLS/Org/Scoped_Settings.H"
0006 #include <map>
0007 
0008 namespace ATOOLS {
0009   class Blob;
0010   class Particle;
0011 }
0012 
0013 namespace HADRONS {
0014   class Hadron_Decay_Table;
0015   class Hadron_Decay_Channel;
0016 
0017   /** 
0018    * Provides the physics needed to deal with mixing phenomena. This includes
0019    *  - explicit mixing in the event record
0020    *  - CP rate asymmetries in a decay channel
0021    */
0022   class Mixing_Handler {
0023     private:
0024     std::map<ATOOLS::Flavour, bool> m_mixing_switch, m_interference_switch;
0025 
0026     /** 
0027      * Determines the time relevant for mixing of that particle. Usually this
0028      * is simply the decay time, but in coherent production it is the time
0029      * difference between the two coherently produced particles.
0030      * 
0031      * @param decayer Decaying particle
0032      * @param checkforpartstatus How to look for coherent sister particle
0033      * 
0034      * @return Mixing time.
0035      */
0036       double DetermineMixingTime(ATOOLS::Particle* decayer,
0037                                  bool checkforpartstatus) const;
0038 
0039     public:
0040     Mixing_Handler(ATOOLS::Scoped_Settings s);
0041       ~Mixing_Handler();
0042 
0043     /** 
0044      * Determine whether an explicit mixing event of the decayer happens
0045      * and if yes, return the created mixing blob.
0046      * 
0047      * @param decayer Decaying particle
0048      * 
0049      * @return true if mixing happened, false if not.
0050      */
0051     bool PerformMixing(ATOOLS::Particle* decayer) const;
0052 
0053     /** 
0054      * Sets the CP asymmetries for a certain particle's decay table taking
0055      * into account the interference between mixing and decay of a particle.
0056      * 
0057      * @param decayer Decaying particle
0058      * @param table Hadron_Decay_Table to adjust for these asymmetries
0059      * 
0060      * @return true if decay table needed adjustment, false if not
0061      */
0062     Hadron_Decay_Channel* Select(ATOOLS::Particle* decayer,
0063                                  Hadron_Decay_Table& table) const;
0064   };
0065 }
0066 
0067 #endif