EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtVSSMix.cpp
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4* *
5* This file is part of EvtGen. *
6* *
7* EvtGen is free software: you can redistribute it and/or modify *
8* it under the terms of the GNU General Public License as published by *
9* the Free Software Foundation, either version 3 of the License, or *
10* (at your option) any later version. *
11* *
12* EvtGen is distributed in the hope that it will be useful, *
13* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15* GNU General Public License for more details. *
16* *
17* You should have received a copy of the GNU General Public License *
18* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19***********************************************************************/
20
22
25#include "EvtGenBase/EvtId.hh"
26#include "EvtGenBase/EvtPDL.hh"
30
31#include <stdlib.h>
32#include <string>
33
34std::string EvtVSSMix::getName() const
35{
36 return "VSS_MIX";
37}
38
40{
41 return new EvtVSSMix;
42}
43
45{
46 // check that there are 1 arguments
47 checkNArg( 1 );
48 checkNDaug( 2 );
49
51
54}
55
57{
58 setProbMax( 0.5 );
59}
60
62{
63 //added by Lange Jan4,2000
64 static const EvtId B0 = EvtPDL::getId( "B0" );
65 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
66
68 EvtParticle *s1, *s2;
69 s1 = p->getDaug( 0 );
70 s2 = p->getDaug( 1 );
71 EvtVector4R s1mom = s1->getP4();
72
73 double t1, t2, dm;
74
75 s1->setLifetime();
76 s2->setLifetime();
77
78 t1 = s1->getLifetime();
79 t2 = s2->getLifetime();
80
81 //dm should probably be a parameter to this model.
82
83 dm = getArg( 0 ) / EvtConst::c;
84
85 EvtId d1, d2;
86
87 d1 = s1->getId();
88 d2 = s2->getId();
89
90 double mix_amp = 0.;
91 if ( d1 == B0 && d2 == B0B )
92 mix_amp = cos( 0.5 * dm * ( t1 - t2 ) );
93 if ( d1 == B0B && d2 == B0 )
94 mix_amp = cos( 0.5 * dm * ( t1 - t2 ) );
95 if ( d1 == B0 && d2 == B0 )
96 mix_amp = sin( 0.5 * dm * ( t1 - t2 ) );
97 if ( d1 == B0B && d2 == B0B )
98 mix_amp = sin( 0.5 * dm * ( t1 - t2 ) );
99
100 double norm = 1.0 / s1mom.d3mag();
101
102 vertex( 0, norm * mix_amp * s1mom * ( p->eps( 0 ) ) );
103 vertex( 1, norm * mix_amp * s1mom * ( p->eps( 1 ) ) );
104 vertex( 2, norm * mix_amp * s1mom * ( p->eps( 2 ) ) );
105
106 return;
107}
108
109std::string EvtVSSMix::getParamName( int i )
110{
111 switch ( i ) {
112 case 0:
113 return "deltaM";
114 default:
115 return "";
116 }
117}
static const double c
Definition EvtConst.hh:30
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
EvtDecayBase()=default
int getNDaug() const
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(unsigned int j)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
const EvtId * getDaugs() const
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283
double initializePhaseSpace(size_t numdaughter, const EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtId getId() const
const EvtVector4R & getP4() const
void setLifetime(double tau)
EvtParticle * getDaug(const int i)
double getLifetime() const
virtual EvtVector4C eps(int i) const
std::string getName() const override
Definition EvtVSSMix.cpp:34
std::string getParamName(int i) override
void decay(EvtParticle *p) override
Definition EvtVSSMix.cpp:61
void init() override
Definition EvtVSSMix.cpp:44
void initProbMax() override
Definition EvtVSSMix.cpp:56
EvtDecayBase * clone() const override
Definition EvtVSSMix.cpp:39
double d3mag() const