Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:20:02

0001 
0002 /***********************************************************************
0003 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors       *
0004 *                                                                      *
0005 * This file is part of EvtGen.                                         *
0006 *                                                                      *
0007 * EvtGen is free software: you can redistribute it and/or modify       *
0008 * it under the terms of the GNU General Public License as published by *
0009 * the Free Software Foundation, either version 3 of the License, or    *
0010 * (at your option) any later version.                                  *
0011 *                                                                      *
0012 * EvtGen is distributed in the hope that it will be useful,            *
0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
0015 * GNU General Public License for more details.                         *
0016 *                                                                      *
0017 * You should have received a copy of the GNU General Public License    *
0018 * along with EvtGen.  If not, see <https://www.gnu.org/licenses/>.     *
0019 ***********************************************************************/
0020 
0021 #ifndef EVTINCOHERENTMIXING_HH
0022 #define EVTINCOHERENTMIXING_HH 1
0023 
0024 // Include files
0025 
0026 #include "EvtGenBase/EvtParticle.hh"
0027 
0028 /** @class EvtIncoherentMixing EvtIncoherentMixing.hh EvtGenBase/EvtIncoherentMixing.hh
0029  *  Class to contain the parameters of the incoherent B0 and B0S mixing
0030  *
0031  *  @author Patrick Robbe
0032  *  @date   2003-10-09
0033  */
0034 class EvtIncoherentMixing {
0035   public:
0036     /// Standard constructor
0037     EvtIncoherentMixing();
0038 
0039     ~EvtIncoherentMixing();    ///< Destructor
0040 
0041     // activate or desactivate the Bs mixing
0042     static void setB0Mixing();
0043     static void unsetB0Mixing();
0044 
0045     // activate or desactivate the B0 mixing
0046     static void setBsMixing();
0047     static void unsetBsMixing();
0048 
0049     // is mixing activated ?
0050     static bool doB0Mixing();
0051     static bool doBsMixing();
0052 
0053     // set values for the mixing
0054     static void setdGammad( double value );
0055     static void setdeltamd( double value );
0056     static void setdGammas( double value );
0057     static void setdeltams( double value );
0058 
0059     // get parameters for mixing
0060     static double getdGammad();
0061     static double getdeltamd();
0062     static double getdGammas();
0063     static double getdeltams();
0064 
0065     // Functions to obtain time and type of the mixing ( 1 mix, 0 unmix )
0066     static void incoherentB0Mix( const EvtId id, double& t, int& mix );
0067     static void incoherentBsMix( const EvtId id, double& t, int& mix );
0068 
0069     // Functions to check if a B has mixed (comes from a B)
0070     static bool isB0Mixed( EvtParticle* );
0071     static bool isBsMixed( EvtParticle* );
0072 
0073     // Functions for CP models
0074     // returns for particle p the decay time t , the flavour of the tag
0075     // side (B0, anti-B0, B_s0, anti-B_s0). The flavour of p can flip
0076     // with probability probB
0077     static void OtherB( EvtParticle* p, double& t, EvtId& otherb, double probB );
0078     static void OtherB( EvtParticle* p, double& t, EvtId& otherb );
0079 
0080     static bool flipIsEnabled();
0081     static void enableFlip();
0082     static void disableFlip();
0083 
0084   protected:
0085   private:
0086     static bool _doB0Mixing;
0087     static bool _doBsMixing;
0088     static double _dGammad;
0089     static double _deltamd;
0090     static double _dGammas;
0091     static double _deltams;
0092     static bool _enableFlip;
0093 };
0094 #endif    // EVTGENBASE_EVTINCOHERENTMIXING_HH