Converting TEvtGen to native cmake
[u/mrichter/AliRoot.git] / TEvtGen / EvtGen / EvtGenModels / EvtKstarstargamma.cpp
CommitLineData
da0e9ce3 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//
21#include "EvtGenBase/EvtPatches.hh"
22#include <stdlib.h>
23#include "EvtGenBase/EvtParticle.hh"
24#include "EvtGenBase/EvtScalarParticle.hh"
25#include "EvtGenBase/EvtVectorParticle.hh"
26#include "EvtGenBase/EvtPhotonParticle.hh"
27#include "EvtGenBase/EvtTensorParticle.hh"
28#include "EvtGenBase/EvtGenKine.hh"
29#include "EvtGenBase/EvtPDL.hh"
30#include "EvtGenBase/EvtVector4C.hh"
31#include "EvtGenBase/EvtVector4R.hh"
32#include "EvtGenBase/EvtReport.hh"
33#include "EvtGenModels/EvtKstarstargamma.hh"
34#include <string>
35#include "EvtGenBase/EvtEvalHelAmp.hh"
36#include "EvtGenBase/EvtPropBreitWignerRel.hh"
37#include "EvtGenBase/EvtTwoBodyVertex.hh"
38
39EvtKstarstargamma::~EvtKstarstargamma() {}
40
41std::string EvtKstarstargamma::getName(){
42
43 return "KSTARSTARGAMMA";
44
45}
46
47
48EvtDecayBase* EvtKstarstargamma::clone(){
49
50 return new EvtKstarstargamma;
51
52}
53
54void EvtKstarstargamma::init(){
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
63 checkSpinParent(EvtSpinType::SCALAR);
64 checkSpinDaughter(0,EvtSpinType::SCALAR);
65 checkSpinDaughter(1,EvtSpinType::SCALAR);
66 checkSpinDaughter(2,EvtSpinType::PHOTON);
67}
68
69void EvtKstarstargamma::initProbMax() {
70
71 //setProbMax(1.0);
72
73}
74
0ca57c2f 75void EvtKstarstargamma::decay( EvtParticle * /*p*/){
da0e9ce3 76
77/*
78
79 The EvtEvalHelAmp is completely broken...
80
81 p->initializePhaseSpace(getNDaug(),getDaugs());
82
83 EvtParticle* kaon = p->getDaug(0);
84 EvtParticle* pion = p->getDaug(1);
85 EvtParticle* photon = p->getDaug(2);
86
87
88 EvtComplexPtrPtr Hd1=new EvtComplexPtr[5];
89 Hd1[0]=new EvtComplex[2];
90 Hd1[1]=new EvtComplex[2];
91 Hd1[2]=new EvtComplex[2];
92 Hd1[3]=new EvtComplex[2];
93 Hd1[4]=new EvtComplex[2];
94
95 Hd1[0][0]=0.0;
96 Hd1[0][1]=0.0;
97 Hd1[1][0]=0.0;
98 Hd1[1][1]=0.0;
99 Hd1[2][0]=0.0;
100 Hd1[2][1]=0.0;
101 Hd1[3][0]=0.0;
102 Hd1[3][1]=1.0;
103 Hd1[4][0]=0.0;
104 Hd1[4][1]=0.0;
105
106 EvtEvalHelAmp d1(EvtSpinType::SCALAR,EvtSpinType::TENSOR,
107 EvtSpinType::PHOTON,Hd1);
108
109 EvtScalarParticle theB;
110
111 theB.init(p->getId(),p->getP4Restframe());
112
113 EvtVector4R theKstarP4=kaon->getP4()+pion->getP4();
114
115 EvtTensorParticle theKstar;
116 theKstar.init(EvtPDL::getId(std::string("K_2*0")),theKstarP4);
117
118 EvtPhotonParticle thePhoton;
119 thePhoton.init(EvtPDL::getId(std::string("K_2*0")),photon->getP4());
120
121 theKstar.addDaug(&theB);
122 thePhoton.addDaug(&theB);
123
124 EvtAmp amp1;
125
126 d1.evalAmp(&theB,amp1);
127
128 EvtComplexPtrPtr Hd2=new EvtComplexPtr[1];
129 Hd2[0]=new EvtComplex[1];
130
131 Hd2[0][0]=1.0;
132
133
134 EvtEvalHelAmp d2(EvtSpinType::TENSOR,EvtSpinType::SCALAR,
135 EvtSpinType::SCALAR,Hd2);
136
137
138 EvtVector4R theKstarP4boost(theKstarP4.get(0),-theKstarP4.get(1),-theKstarP4.get(2),-theKstarP4.get(3));
139
140 EvtScalarParticle theKaon;
141 theKaon.init(EvtPDL::getId(std::string("K+")),boostTo(kaon->getP4(),theKstarP4boost));
142
143 EvtScalarParticle thePion;
144 thePion.init(EvtPDL::getId(std::string("pi+")),boostTo(pion->getP4(),theKstarP4boost));
145
146 theKaon.addDaug(&theKstar);
147 thePion.addDaug(&theKstar);
148
149 // Calculate the propagator
150
151 double m = theKstarP4.mass();
152 EvtTwoBodyVertex v(0.5,0.14,1.4,2);
153 EvtTwoBodyKine v1(0.5,0.14,m);
154 EvtPropBreitWignerRel prop(1.4,0.2);
155
156 // Mass-dependent width correction and amplitude calculation
157
158 double width = prop.g0() * v.widthFactor(v1);
159 prop.set_g0(width);
160 EvtComplex bwamp = prop.evaluate(m);
161
162
163 EvtAmp amp2;
164
165 d2.evalAmp(&theKstar,amp2);
166
167 vertex(0,bwamp*(amp1._amp[0]*amp2._amp[0]+
168 amp1._amp[1]*amp2._amp[1]+
169 amp1._amp[2]*amp2._amp[2]+
170 amp1._amp[3]*amp2._amp[3]+
171 amp1._amp[4]*amp2._amp[4]));
172
173 vertex(1,bwamp*(amp1._amp[5]*amp2._amp[0]+
174 amp1._amp[6]*amp2._amp[1]+
175 amp1._amp[7]*amp2._amp[2]+
176 amp1._amp[8]*amp2._amp[3]+
177 amp1._amp[9]*amp2._amp[4]));
178
179*/
180
181 return;
182}
183
184
185
186
187