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
EvtSVVCP.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
26#include "EvtGenBase/EvtId.hh"
27#include "EvtGenBase/EvtPDL.hh"
30
32
33#include <stdlib.h>
34#include <string>
35
36std::string EvtSVVCP::getName() const
37{
38 return "SVV_CP";
39}
40
42{
43 return new EvtSVVCP;
44}
45
47{
48 // check that there are 9 arguments
49 checkNArg( 9 );
50 checkNDaug( 2 );
51
53
56}
57
59{
60 //This is probably not quite right, but it should do as a start...
61 //Anders
62
63 setProbMax( 2 * ( getArg( 3 ) * getArg( 3 ) + getArg( 5 ) * getArg( 5 ) +
64 getArg( 7 ) * getArg( 7 ) ) );
65}
66
68{
69 //added by Lange Jan4,2000
70 static const EvtId B0 = EvtPDL::getId( "B0" );
71 static const EvtId B0B = EvtPDL::getId( "anti-B0" );
72
73 double t;
74 EvtId other_b;
75
76 EvtCPUtil::getInstance()->OtherB( p, t, other_b, 0.5 );
77
78 EvtComplex G0P, G1P, G1M;
79
80 G1P = EvtComplex( getArg( 3 ) * cos( getArg( 4 ) ),
81 getArg( 3 ) * sin( getArg( 4 ) ) );
82 G0P = EvtComplex( getArg( 5 ) * cos( getArg( 6 ) ),
83 getArg( 5 ) * sin( getArg( 6 ) ) );
84 G1M = EvtComplex( getArg( 7 ) * cos( getArg( 8 ) ),
85 getArg( 7 ) * sin( getArg( 8 ) ) );
86
87 EvtComplex lambda_km = EvtComplex( cos( -2 * getArg( 0 ) ),
88 sin( -2 * getArg( 0 ) ) );
89
90 double cdmt = cos( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
91 double sdmt = sin( getArg( 1 ) * t / ( 2 * EvtConst::c ) );
92
93 EvtComplex cG0P, cG1P, cG1M;
94
95 if ( other_b == B0B ) {
96 cG0P = G0P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
97 cG1P = G1P * ( cdmt + lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
98 cG1M = G1M * ( cdmt - lambda_km * EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
99 }
100 if ( other_b == B0 ) {
101 cG0P = G0P * ( cdmt + ( 1.0 / lambda_km ) *
102 EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
103 cG1P = G1P * ( cdmt + ( 1.0 / lambda_km ) *
104 EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
105 cG1M = -G1M * ( cdmt - ( 1.0 / lambda_km ) *
106 EvtComplex( 0.0, getArg( 2 ) * sdmt ) );
107 }
108
109 EvtComplex A0, AP, AM;
110
111 A0 = cG0P / sqrt( 2.0 );
112 AP = ( cG1P + cG1M ) / sqrt( 2.0 );
113 AM = ( cG1P - cG1M ) / sqrt( 2.0 );
114
115 EvtSVVHelAmp::SVVHel( p, m_amp2, getDaug( 0 ), getDaug( 1 ), AP, A0, AM );
116
117 return;
118}
119
120std::string EvtSVVCP::getParamName( int i )
121{
122 switch ( i ) {
123 case 0:
124 return "weakPhase";
125 case 1:
126 return "deltaM";
127 case 2:
128 return "eta";
129 case 3:
130 return "G1Plus";
131 case 4:
132 return "G1PlusPhase";
133 case 5:
134 return "G0Plus";
135 case 6:
136 return "G0PlusPhase";
137 case 7:
138 return "G1Minus";
139 case 8:
140 return "G1MinusPhase";
141 default:
142 return "";
143 }
144}
145
146std::string EvtSVVCP::getParamDefault( int i )
147{
148 switch ( i ) {
149 case 3:
150 return "1.0";
151 case 4:
152 return "0.0";
153 case 5:
154 return "1.0";
155 case 6:
156 return "0.0";
157 case 7:
158 return "1.0";
159 case 8:
160 return "0.0";
161 default:
162 return "";
163 }
164}
static EvtCPUtil * getInstance()
Definition EvtCPUtil.cpp:42
void OtherB(EvtParticle *p, double &t, EvtId &otherb)
static const double c
Definition EvtConst.hh:30
EvtAmp m_amp2
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
EvtDecayBase()=default
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(unsigned int j)
void setProbMax(double prbmx)
EvtId getDaug(int i) const
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283
std::string getName() const override
Definition EvtSVVCP.cpp:36
void decay(EvtParticle *p) override
Definition EvtSVVCP.cpp:67
EvtDecayBase * clone() const override
Definition EvtSVVCP.cpp:41
std::string getParamDefault(int i) override
Definition EvtSVVCP.cpp:146
std::string getParamName(int i) override
Definition EvtSVVCP.cpp:120
void initProbMax() override
Definition EvtSVVCP.cpp:58
void init() override
Definition EvtSVVCP.cpp:46
static void SVVHel(EvtParticle *parent, EvtAmp &amp, EvtId n_v1, EvtId n_v2, const EvtComplex &hp, const EvtComplex &h0, const EvtComplex &hm)