BOSS
7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtBTo4piCP.cc
Go to the documentation of this file.
1
//--------------------------------------------------------------------------
2
//
3
// Environment:
4
// This software is part of the EvtGen package developed jointly
5
// for the BaBar and CLEO collaborations. If you use all or part
6
// of it, please give an appropriate acknowledgement.
7
//
8
// Copyright Information: See EvtGen/COPYRIGHT
9
// Copyright (C) 1998 Caltech, UCSB
10
//
11
// Module: EvtBTo4piCP.cc
12
//
13
// Description: Routine to decay B->pi+ pi- pi+ pi-.
14
//
15
// Modification history:
16
//
17
// RYD March 2, 1997 Module created
18
//
19
//------------------------------------------------------------------------
20
//
21
#include "
EvtGenBase/EvtPatches.hh
"
22
#include <stdlib.h>
23
#include "
EvtGenBase/EvtParticle.hh
"
24
#include "
EvtGenBase/EvtGenKine.hh
"
25
#include "
EvtGenBase/EvtCPUtil.hh
"
26
#include "
EvtGenBase/EvtPDL.hh
"
27
#include "
EvtGenBase/EvtReport.hh
"
28
#include "
EvtGenModels/EvtBTo4piCP.hh
"
29
#include "
EvtGenBase/EvtId.hh
"
30
#include "
EvtGenBase/EvtConst.hh
"
31
#include <string>
32
33
EvtBTo4piCP::~EvtBTo4piCP
() {}
34
35
36
EvtComplex
EvtAmpA2
(
const
EvtVector4R
& p4pi1,
const
EvtVector4R
& p4pi2,
37
const
EvtVector4R
& p4pi3,
const
EvtVector4R
& p4pi4){
38
39
//added by Lange Jan4,2000
40
static
EvtId
A2M=
EvtPDL::getId
(
"a_2-"
);
41
static
EvtId
RHO0=
EvtPDL::getId
(
"rho0"
);
42
43
EvtVector4R
p4a2,p4rho,p4b;
44
45
p4rho=p4pi1+p4pi2;
46
47
p4a2=p4rho+p4pi3;
48
49
p4b=p4a2+p4pi4;
50
51
EvtVector4R
p4b_a2,p4rho_a2,p4pi1_a2,p4a2_a2;
52
53
p4b_a2=
boostTo
(p4b,p4a2);
54
p4rho_a2=
boostTo
(p4rho,p4a2);
55
p4pi1_a2=
boostTo
(p4pi1,p4a2);
56
p4a2_a2=
boostTo
(p4a2,p4a2);
57
58
EvtVector4R
p4pi1_rho;
59
60
p4pi1_rho=
boostTo
(p4pi1_a2,p4rho_a2);
61
62
EvtVector4R
vb,vrho,vpi,
t
;
63
64
vb=p4b_a2/p4b_a2.
d3mag
();
65
vrho=p4rho_a2/p4rho_a2.
d3mag
();
66
vpi=p4pi1_rho/p4pi1_rho.
d3mag
();
67
68
t
.set(1.0,0.0,0.0,0.0);
69
70
// EvtComplex amp_a1,amp_a2;
71
EvtComplex
amp_a2;
72
73
// double bwm_a1=EvtPDL::getMeanMass(A1M);
74
// double gamma_a1=EvtPDL::getWidth(A1M);
75
double
bwm_a2=
EvtPDL::getMeanMass
(A2M);
76
double
gamma_a2=
EvtPDL::getWidth
(A2M);
77
double
bwm_rho=
EvtPDL::getMeanMass
(RHO0);
78
double
gamma_rho=
EvtPDL::getWidth
(RHO0);
79
80
amp_a2=(sqrt(gamma_a2/
EvtConst::twoPi
)/
81
((p4a2).mass()-bwm_a2-
EvtComplex
(0.0,0.5*gamma_a2)))*
82
(sqrt(gamma_rho/
EvtConst::twoPi
)/
83
((p4rho).
mass
()-bwm_rho-
EvtComplex
(0.0,0.5*gamma_rho)));
84
85
return
amp_a2*
86
(vb.
get
(1)*vrho.
get
(1)+vb.
get
(2)*vrho.
get
(2)+vb.
get
(3)*vrho.
get
(3))*
87
(
88
vpi.
get
(1)*(vb.
get
(2)*vrho.
get
(3)-vb.
get
(3)*vrho.
get
(2))+
89
vpi.
get
(2)*(vb.
get
(3)*vrho.
get
(1)-vb.
get
(1)*vrho.
get
(3))+
90
vpi.
get
(3)*(vb.
get
(1)*vrho.
get
(2)-vb.
get
(2)*vrho.
get
(1))
91
);
92
93
}
94
95
EvtComplex
EvtAmpA1
(
const
EvtVector4R
& p4pi1,
const
EvtVector4R
& p4pi2,
96
const
EvtVector4R
& p4pi3,
const
EvtVector4R
& p4pi4){
97
98
//added by Lange Jan4,2000
99
static
EvtId
A1M=
EvtPDL::getId
(
"a_1-"
);
100
static
EvtId
RHO0=
EvtPDL::getId
(
"rho0"
);
101
102
EvtVector4R
p4a1,p4rho,p4b;
103
104
p4rho=p4pi1+p4pi2;
105
106
p4a1=p4rho+p4pi3;
107
108
p4b=p4a1+p4pi4;
109
110
EvtVector4R
p4b_a1,p4rho_a1,p4pi1_a1,p4a1_a1;
111
112
p4b_a1=
boostTo
(p4b,p4a1);
113
p4rho_a1=
boostTo
(p4rho,p4a1);
114
p4pi1_a1=
boostTo
(p4pi1,p4a1);
115
p4a1_a1=
boostTo
(p4a1,p4a1);
116
117
EvtVector4R
p4pi1_rho;
118
119
p4pi1_rho=
boostTo
(p4pi1_a1,p4rho_a1);
120
121
EvtVector4R
vb,vrho,vpi,
t
;
122
123
vb=p4b_a1/p4b_a1.
d3mag
();
124
vrho=p4rho_a1/p4rho_a1.
d3mag
();
125
vpi=p4pi1_rho/p4pi1_rho.
d3mag
();
126
127
t
.set(1.0,0.0,0.0,0.0);
128
129
EvtComplex
amp_a1;
130
131
double
bwm_a1=
EvtPDL::getMeanMass
(A1M);
132
double
gamma_a1=
EvtPDL::getWidth
(A1M);
133
// double bwm_a2=EvtPDL::getMeanMass(A2M);
134
// double gamma_a2=EvtPDL::getWidth(A2M);
135
double
bwm_rho=
EvtPDL::getMeanMass
(RHO0);
136
double
gamma_rho=
EvtPDL::getWidth
(RHO0);
137
138
amp_a1=(sqrt(gamma_a1/
EvtConst::twoPi
)/
139
((p4a1).mass()-bwm_a1-
EvtComplex
(0.0,0.5*gamma_a1)))*
140
(sqrt(gamma_rho/
EvtConst::twoPi
)/
141
((p4rho).
mass
()-bwm_rho-
EvtComplex
(0.0,0.5*gamma_rho)));
142
143
return
amp_a1*
144
(vb.
get
(1)*vpi.
get
(1)+vb.
get
(2)*vpi.
get
(2)+vb.
get
(3)*vpi.
get
(3));
145
146
}
147
148
149
void
EvtBTo4piCP::getName
(std::string& model_name){
150
151
model_name=
"BTO4PI_CP"
;
152
153
}
154
155
156
EvtDecayBase
*
EvtBTo4piCP::clone
(){
157
158
return
new
EvtBTo4piCP
;
159
160
}
161
162
void
EvtBTo4piCP::init
(){
163
164
// check that there are 18 arguments
165
checkNArg
(18);
166
checkNDaug
(4);
167
168
checkSpinParent
(
EvtSpinType::SCALAR
);
169
170
checkSpinDaughter
(0,
EvtSpinType::SCALAR
);
171
checkSpinDaughter
(1,
EvtSpinType::SCALAR
);
172
checkSpinDaughter
(2,
EvtSpinType::SCALAR
);
173
checkSpinDaughter
(3,
EvtSpinType::SCALAR
);
174
}
175
176
void
EvtBTo4piCP::decay
(
EvtParticle
*p){
177
178
//added by Lange Jan4,2000
179
static
EvtId
B0=
EvtPDL::getId
(
"B0"
);
180
static
EvtId
B0B=
EvtPDL::getId
(
"anti-B0"
);
181
182
183
double
t
;
184
EvtId
other_b;
185
186
EvtCPUtil::OtherB
(p,
t
,other_b);
187
188
p->
initializePhaseSpace
(
getNDaug
(),
getDaugs
());
189
EvtVector4R
mom1 = p->
getDaug
(0)->
getP4
();
190
EvtVector4R
mom2 = p->
getDaug
(1)->
getP4
();
191
EvtVector4R
mom3 = p->
getDaug
(2)->
getP4
();
192
EvtVector4R
mom4 = p->
getDaug
(3)->
getP4
();
193
194
// double alpha=getArg(0);
195
//double dm=getArg(1);
196
197
EvtComplex
amp;
198
199
EvtComplex
A,Abar;
200
201
202
EvtComplex
A_a1p,Abar_a1p,A_a2p,Abar_a2p;
203
EvtComplex
A_a1m,Abar_a1m,A_a2m,Abar_a2m;
204
205
A_a1p=
EvtComplex
(
getArg
(2)*
cos
(
getArg
(3)),
getArg
(2)*
sin
(
getArg
(3)));
206
Abar_a1p=
EvtComplex
(
getArg
(4)*
cos
(
getArg
(5)),
getArg
(4)*
sin
(
getArg
(5)));
207
208
A_a2p=
EvtComplex
(
getArg
(6)*
cos
(
getArg
(7)),
getArg
(6)*
sin
(
getArg
(7)));
209
Abar_a2p=
EvtComplex
(
getArg
(8)*
cos
(
getArg
(9)),
getArg
(8)*
sin
(
getArg
(9)));
210
211
A_a1m=
EvtComplex
(
getArg
(10)*
cos
(
getArg
(11)),
getArg
(10)*
sin
(
getArg
(11)));
212
Abar_a1m=
EvtComplex
(
getArg
(12)*
cos
(
getArg
(13)),
getArg
(12)*
sin
(
getArg
(13)));
213
214
A_a2m=
EvtComplex
(
getArg
(14)*
cos
(
getArg
(15)),
getArg
(14)*
sin
(
getArg
(15)));
215
Abar_a2m=
EvtComplex
(
getArg
(16)*
cos
(
getArg
(17)),
getArg
(16)*
sin
(
getArg
(17)));
216
217
EvtComplex
a2p_amp=
EvtAmpA2
(mom1,mom2,mom3,mom4)+
218
EvtAmpA2
(mom1,mom4,mom3,mom2)+
219
EvtAmpA2
(mom3,mom2,mom1,mom4)+
220
EvtAmpA2
(mom3,mom4,mom1,mom2);
221
222
EvtComplex
a2m_amp=
EvtAmpA2
(mom2,mom3,mom4,mom1)+
223
EvtAmpA2
(mom2,mom1,mom4,mom3)+
224
EvtAmpA2
(mom4,mom3,mom2,mom1)+
225
EvtAmpA2
(mom4,mom1,mom2,mom3);
226
227
EvtComplex
a1p_amp=
EvtAmpA1
(mom1,mom2,mom3,mom4)+
228
EvtAmpA1
(mom1,mom4,mom3,mom2)+
229
EvtAmpA1
(mom3,mom2,mom1,mom4)+
230
EvtAmpA1
(mom3,mom4,mom1,mom2);
231
232
EvtComplex
a1m_amp=
EvtAmpA1
(mom2,mom3,mom4,mom1)+
233
EvtAmpA1
(mom2,mom1,mom4,mom3)+
234
EvtAmpA1
(mom4,mom3,mom2,mom1)+
235
EvtAmpA1
(mom4,mom1,mom2,mom3);
236
237
238
A=A_a2p*a2p_amp+A_a1p*a1p_amp+
239
A_a2m*a2m_amp+A_a1m*a1m_amp;
240
Abar=Abar_a2p*a2p_amp+Abar_a1p*a1p_amp+
241
Abar_a2m*a2m_amp+Abar_a1m*a1m_amp;
242
243
244
if
(other_b==B0B){
245
amp=A*
cos
(
getArg
(1)*
t
/(2*
EvtConst::c
))+
246
EvtComplex
(
cos
(-2.0*
getArg
(0)),
sin
(-2.0*
getArg
(0)))*
247
getArg
(2)*
EvtComplex
(0.0,1.0)*Abar*
sin
(
getArg
(1)*
t
/(2*
EvtConst::c
));
248
}
249
if
(other_b==B0){
250
amp=A*
EvtComplex
(
cos
(2.0*
getArg
(0)),
sin
(2.0*
getArg
(0)))*
251
EvtComplex
(0.0,1.0)*
sin
(
getArg
(1)*
t
/(2*
EvtConst::c
))+
252
getArg
(2)*Abar*
cos
(
getArg
(1)*
t
/(2*
EvtConst::c
));
253
}
254
255
vertex
(amp);
256
257
return ;
258
}
259
sin
double sin(const BesAngle a)
Definition
BesAngle.h:210
cos
double cos(const BesAngle a)
Definition
BesAngle.h:213
mass
double mass
Definition
CosmicGenerator.cxx:138
EvtAmpA2
EvtComplex EvtAmpA2(const EvtVector4R &p4pi1, const EvtVector4R &p4pi2, const EvtVector4R &p4pi3, const EvtVector4R &p4pi4)
Definition
EvtBTo4piCP.cc:36
EvtAmpA1
EvtComplex EvtAmpA1(const EvtVector4R &p4pi1, const EvtVector4R &p4pi2, const EvtVector4R &p4pi3, const EvtVector4R &p4pi4)
Definition
EvtBTo4piCP.cc:95
EvtBTo4piCP.hh
EvtCPUtil.hh
EvtConst.hh
boostTo
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
Definition
EvtDiracSpinor.cc:75
EvtGenKine.hh
EvtId.hh
EvtPDL.hh
EvtParticle.hh
EvtPatches.hh
EvtReport.hh
t
TTree * t
Definition
binning.cxx:23
EvtBTo4piCP::EvtBTo4piCP
EvtBTo4piCP()
Definition
EvtBTo4piCP.hh:32
EvtBTo4piCP::~EvtBTo4piCP
virtual ~EvtBTo4piCP()
Definition
EvtBTo4piCP.cc:33
EvtBTo4piCP::decay
void decay(EvtParticle *p)
Definition
EvtBTo4piCP.cc:176
EvtBTo4piCP::getName
void getName(std::string &name)
Definition
EvtBTo4piCP.cc:149
EvtBTo4piCP::init
void init()
Definition
EvtBTo4piCP.cc:162
EvtBTo4piCP::clone
EvtDecayBase * clone()
Definition
EvtBTo4piCP.cc:156
EvtCPUtil::OtherB
static void OtherB(EvtParticle *p, double &t, EvtId &otherb)
Definition
EvtCPUtil.cc:229
EvtComplex
Definition
EvtComplex.hh:28
EvtConst::c
static const double c
Definition
EvtConst.hh:32
EvtConst::twoPi
static const double twoPi
Definition
EvtConst.hh:29
EvtDecayAmp::vertex
void vertex(const EvtComplex &)
Definition
EvtDecayAmp.hh:37
EvtDecayBase
Definition
EvtDecayBase.hh:33
EvtDecayBase::checkSpinDaughter
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
Definition
EvtDecayBase.cc:533
EvtDecayBase::checkSpinParent
void checkSpinParent(EvtSpinType::spintype sp)
Definition
EvtDecayBase.cc:520
EvtDecayBase::getArg
double getArg(int j)
Definition
EvtDecayBase.cc:564
EvtDecayBase::getNDaug
int getNDaug()
Definition
EvtDecayBase.hh:64
EvtDecayBase::checkNDaug
void checkNDaug(int d1, int d2=-1)
Definition
EvtDecayBase.cc:504
EvtDecayBase::getDaugs
EvtId * getDaugs()
Definition
EvtDecayBase.hh:65
EvtDecayBase::checkNArg
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
Definition
EvtDecayBase.cc:482
EvtId
Definition
EvtId.hh:27
EvtPDL::getWidth
static double getWidth(EvtId i)
Definition
EvtPDL.hh:54
EvtPDL::getMeanMass
static double getMeanMass(EvtId i)
Definition
EvtPDL.hh:45
EvtPDL::getId
static EvtId getId(const std::string &name)
Definition
EvtPDL.cc:287
EvtParticle
Definition
EvtParticle.hh:42
EvtParticle::getP4
const EvtVector4R & getP4() const
Definition
EvtParticle.cc:120
EvtParticle::getDaug
EvtParticle * getDaug(int i)
Definition
EvtParticle.cc:84
EvtParticle::initializePhaseSpace
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
Definition
EvtParticle.cc:1070
EvtSpinType::SCALAR
@ SCALAR
Definition
EvtSpinType.hh:31
EvtVector4R
Definition
EvtVector4R.hh:29
EvtVector4R::get
double get(int i) const
Definition
EvtVector4R.hh:179
EvtVector4R::d3mag
double d3mag() const
Definition
EvtVector4R.cc:186
7.1.1
Generator
BesEvtGen
BesEvtGen-00-04-28
src
EvtGen
EvtGenModels
EvtBTo4piCP.cc
Generated by
1.12.0