BOSS 7.0.2
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtKstarstargamma.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) 2002 Caltech
10//
11// Module: EvtKstarstargamma.cc
12//
13// Description: Routine for the decau B->K**gamma
14//
15// Modification history:
16//
17// Ryd November 15, 2002 Module created
18//
19//------------------------------------------------------------------------
20//
22#include <stdlib.h>
29#include "EvtGenBase/EvtPDL.hh"
34#include <string>
38
40
41void EvtKstarstargamma::getName(std::string& model_name){
42
43 model_name="KSTARSTARGAMMA";
44
45}
46
47
49
50 return new EvtKstarstargamma;
51
52}
53
55
56 // check that there are 0 arguments
57 checkNArg(0);
58
59 // check that there are 3 daughters
60 checkNDaug(3);
61
62 // check the parent and daughter spins
67}
68
70
71 //setProbMax(1.0);
72
73}
74
76
78
79 EvtParticle* kaon = p->getDaug(0);
80 EvtParticle* pion = p->getDaug(1);
81 EvtParticle* photon = p->getDaug(2);
82
83
85 Hd1[0]=new EvtComplex[2];
86 Hd1[1]=new EvtComplex[2];
87 Hd1[2]=new EvtComplex[2];
88 Hd1[3]=new EvtComplex[2];
89 Hd1[4]=new EvtComplex[2];
90
91 Hd1[0][0]=0.0;
92 Hd1[0][1]=0.0;
93 Hd1[1][0]=0.0;
94 Hd1[1][1]=0.0;
95 Hd1[2][0]=0.0;
96 Hd1[2][1]=0.0;
97 Hd1[3][0]=0.0;
98 Hd1[3][1]=1.0;
99 Hd1[4][0]=0.0;
100 Hd1[4][1]=0.0;
101
104
106
107 theB.init(p->getId(),p->getP4Restframe());
108
109 EvtVector4R theKstarP4=kaon->getP4()+pion->getP4();
110
111 EvtTensorParticle theKstar;
112 theKstar.init(EvtPDL::getId(std::string("K_2*0")),theKstarP4);
113
114 EvtPhotonParticle thePhoton;
115 thePhoton.init(EvtPDL::getId(std::string("K_2*0")),photon->getP4());
116
117 theKstar.addDaug(&theB);
118 thePhoton.addDaug(&theB);
119
120 EvtAmp amp1;
121
122 d1.evalAmp(&theB,amp1);
123
125 Hd2[0]=new EvtComplex[1];
126
127 Hd2[0][0]=1.0;
128
129
132
133
134 EvtVector4R theKstarP4boost(theKstarP4.get(0),-theKstarP4.get(1),-theKstarP4.get(2),-theKstarP4.get(3));
135
136 EvtScalarParticle theKaon;
137 theKaon.init(EvtPDL::getId(std::string("K+")),boostTo(kaon->getP4(),theKstarP4boost));
138
139 EvtScalarParticle thePion;
140 thePion.init(EvtPDL::getId(std::string("pi+")),boostTo(pion->getP4(),theKstarP4boost));
141
142 theKaon.addDaug(&theKstar);
143 thePion.addDaug(&theKstar);
144
145 // Calculate the propagator
146
147 double m = theKstarP4.mass();
148 EvtTwoBodyVertex v(0.5,0.14,1.4,2);
149 EvtTwoBodyKine v1(0.5,0.14,m);
150 EvtPropBreitWignerRel prop(1.4,0.2);
151
152 // Mass-dependent width correction and amplitude calculation
153
154 double width = prop.g0() * v.widthFactor(v1);
155 prop.set_g0(width);
156 EvtComplex bwamp = prop.evaluate(m);
157
158
159 EvtAmp amp2;
160
161 d2.evalAmp(&theKstar,amp2);
162
163 vertex(0,bwamp*(amp1._amp[0]*amp2._amp[0]+
164 amp1._amp[1]*amp2._amp[1]+
165 amp1._amp[2]*amp2._amp[2]+
166 amp1._amp[3]*amp2._amp[3]+
167 amp1._amp[4]*amp2._amp[4]));
168
169 vertex(1,bwamp*(amp1._amp[5]*amp2._amp[0]+
170 amp1._amp[6]*amp2._amp[1]+
171 amp1._amp[7]*amp2._amp[2]+
172 amp1._amp[8]*amp2._amp[3]+
173 amp1._amp[9]*amp2._amp[4]));
174
175 return;
176}
177
178
179
180
181
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition: KarLud.h:35
Definition: EvtAmp.hh:30
EvtComplex evaluate(const T &p) const
Definition: EvtAmplitude.hh:26
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void evalAmp(EvtParticle *p, EvtAmp &amp)
virtual ~EvtKstarstargamma()
EvtDecayBase * clone()
void getName(std::string &name)
void decay(EvtParticle *p)
static EvtId getId(const std::string &name)
Definition: EvtPDL.cc:287
EvtId getId() const
Definition: EvtParticle.cc:113
EvtVector4R getP4Restframe()
Definition: EvtParticle.cc:700
const EvtVector4R & getP4() const
Definition: EvtParticle.cc:121
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
void addDaug(EvtParticle *node)
Definition: EvtParticle.cc:104
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void init(EvtId part_n, double e, double px, double py, double pz)
double g0() const
void set_g0(double g0)
void init(EvtId part_n, double e, double px, double py, double pz)
void init(EvtId part_n, double e, double px, double py, double pz)
double mass() const
Definition: EvtVector4R.cc:39
double get(int i) const
Definition: EvtVector4R.hh:179