Back to home page

EIC code displayed by LXR

 
 

    


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

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 __EVTD0MIXDALITZ_HH__
0022 #define __EVTD0MIXDALITZ_HH__
0023 
0024 #include "EvtGenBase/EvtComplex.hh"
0025 #include "EvtGenBase/EvtCyclic3.hh"
0026 #include "EvtGenBase/EvtDalitzPoint.hh"
0027 #include "EvtGenBase/EvtDalitzReso.hh"
0028 #include "EvtGenBase/EvtDecayAmp.hh"
0029 #include "EvtGenBase/EvtId.hh"
0030 #include "EvtGenBase/EvtPDL.hh"
0031 #include "EvtGenBase/EvtSpinType.hh"
0032 
0033 // Description:
0034 //   The D0mixDalitz model, with many resonances and mixing implemented.
0035 
0036 class EvtD0mixDalitz : public EvtDecayAmp {
0037   private:
0038     int _d1;
0039     int _d2;
0040     int _d3;
0041 
0042     // Mixing parameters.
0043     double _x;
0044     double _y;
0045 
0046     // q/p CP violation in the mixing.
0047     EvtComplex _qp;
0048 
0049     // Checker of the decay mode.
0050     bool _isKsPiPi;
0051     bool _isRBWmodel;
0052 
0053     // Useful constants.
0054     static const EvtSpinType::spintype& _SCALAR;
0055     static const EvtSpinType::spintype& _VECTOR;
0056     static const EvtSpinType::spintype& _TENSOR;
0057 
0058     static const EvtDalitzReso::CouplingType& _EtaPic;
0059     static const EvtDalitzReso::CouplingType& _PicPicKK;
0060 
0061     static const EvtDalitzReso::NumType& _RBW;
0062     static const EvtDalitzReso::NumType& _GS;
0063     static const EvtDalitzReso::NumType& _KMAT;
0064 
0065     static const EvtCyclic3::Pair& _AB;
0066     static const EvtCyclic3::Pair& _AC;
0067     static const EvtCyclic3::Pair& _BC;
0068 
0069     // Values to be read or computed based on values in the evt.pdl file.
0070     // IDs of the relevant particles.
0071     EvtId _D0;
0072     EvtId _D0B;
0073     EvtId _KM;
0074     EvtId _KP;
0075     EvtId _K0;
0076     EvtId _K0B;
0077     EvtId _KL;
0078     EvtId _KS;
0079     EvtId _PIM;
0080     EvtId _PIP;
0081 
0082     // Masses of the relevant particles.
0083     double _mD0;
0084     double _mKs;
0085     double _mPi;
0086     double _mK;
0087 
0088     // Life time and decay rate.
0089     double _ctau;
0090     double _gamma;
0091 
0092     // Some useful integrals over the Dalitz plot.
0093     EvtComplex _iChi;
0094     EvtComplex _iChi2;
0095 
0096     void readPDGValues();
0097     EvtComplex dalitzKsPiPi( const EvtDalitzPoint& point );
0098     EvtComplex dalitzKsKK( const EvtDalitzPoint& point );
0099 
0100     // Time evolution functions for hamiltonian eigenstates.
0101     //    Negative exponential part removed.
0102     EvtComplex h1( const double& ct ) const;
0103     EvtComplex h2( const double& ct ) const;
0104 
0105     void reportInvalidAndExit() const
0106     {
0107         EvtGenReport( EVTGEN_ERROR, "EvtD0mixDalitz" )
0108             << "EvtD0mixDalitz: Invalid mode." << std::endl;
0109         exit( 1 );
0110     }
0111 
0112   public:
0113     EvtD0mixDalitz() :
0114         _d1( 0 ),
0115         _d2( 0 ),
0116         _d3( 0 ),
0117         _x( 0. ),
0118         _y( 0. ),
0119         _qp( 1. ),
0120         _isKsPiPi( false ),
0121         _isRBWmodel( true )
0122     {
0123     }
0124 
0125     // One-line inline functions.
0126     std::string getName() override { return "D0MIXDALITZ"; }
0127     EvtDecayBase* clone() override { return new EvtD0mixDalitz; }
0128     void initProbMax() override { setProbMax( 5200. ); }
0129 
0130     void init() override;
0131     void decay( EvtParticle* p ) override;
0132 };
0133 
0134 #endif