Back to home page

EIC code displayed by LXR

 
 

    


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

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 EVT_BTOKD3P
0022 #define EVT_BTOKD3P
0023 
0024 class EvtParticle;
0025 #include "EvtGenBase/EvtComplex.hh"
0026 #include "EvtGenBase/EvtDecayAmp.hh"
0027 
0028 // Decay model that does the decay B+ -> K+ D , D -> 3 psudoscalars.
0029 //
0030 // The B- daughters specified in the decay file should be K-, D0, D0,
0031 // where the first D0 is produced via b->c decay and the second via b->u.
0032 // In reality, only one D daughter exists, so the first two
0033 // daughters must be defined to decay to the same final state using
0034 // the EvtPto3P model, but with CP-conjugate amplitudes.
0035 //
0036 // For a given point in the Pto3P Dalitz plot,
0037 // the total amplitude is \propto [A1 + A2 r exp(i(phase))], where
0038 //
0039 // A1 & A2 are the amplitudes of the D0 and D0bar to decay into that
0040 // Dalitz plot point,
0041 //
0042 // r is the (positive) ratio between the A(B->B0bar K) and A(B->D0 K)
0043 // B decay amplitudes,
0044 //
0045 // phase is the total phase difference (weak phase + strong phase) between
0046 // A(B->D0bar K) and A(B->B0 K).
0047 //
0048 // Note that this model knows nothing about your convention for the
0049 // sign of the phase, so when specifying the decay of a B- you need to
0050 // change the order of D0 and D0bar and change the total phase so that
0051 // the sign of the weak phase flips with respect to the parameters of B+.
0052 
0053 class EvtBtoKD3P : public EvtDecayAmp {
0054   public:
0055     EvtDecayBase* clone() override;
0056 
0057     // Initialize model
0058     void init() override;
0059     void initProbMax() override;
0060     void decay( EvtParticle* p ) override;
0061 
0062     // we really have two daughters, although three are listed in the .dec file:
0063     int nRealDaughters() override { return 2; }
0064 
0065     std::string getName() override;
0066 
0067   protected:
0068     // parameters:
0069     double _r;
0070     EvtComplex _exp;
0071 
0072     // other:
0073     const EvtDecayBase* _model1 = nullptr;
0074     const EvtDecayBase* _model2 = nullptr;
0075     bool _decayedOnce = false;
0076 };
0077 
0078 #endif