BOSS 8.0.0
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//
21#include "EvtKstarstargamma.hh"
36#include <stdlib.h>
37#include <string>
38
40
41void EvtKstarstargamma::getName( std::string& model_name ) { model_name = "KSTARSTARGAMMA"; }
42
44
46
47 // check that there are 0 arguments
48 checkNArg( 0 );
49
50 // check that there are 3 daughters
51 checkNDaug( 3 );
52
53 // check the parent and daughter spins
58}
59
61
62 // setProbMax(1.0);
63}
64
66
68
69 EvtParticle* kaon = p->getDaug( 0 );
70 EvtParticle* pion = p->getDaug( 1 );
71 EvtParticle* photon = p->getDaug( 2 );
72
74 Hd1[0] = new EvtComplex[2];
75 Hd1[1] = new EvtComplex[2];
76 Hd1[2] = new EvtComplex[2];
77 Hd1[3] = new EvtComplex[2];
78 Hd1[4] = new EvtComplex[2];
79
80 Hd1[0][0] = 0.0;
81 Hd1[0][1] = 0.0;
82 Hd1[1][0] = 0.0;
83 Hd1[1][1] = 0.0;
84 Hd1[2][0] = 0.0;
85 Hd1[2][1] = 0.0;
86 Hd1[3][0] = 0.0;
87 Hd1[3][1] = 1.0;
88 Hd1[4][0] = 0.0;
89 Hd1[4][1] = 0.0;
90
92
94
95 theB.init( p->getId(), p->getP4Restframe() );
96
97 EvtVector4R theKstarP4 = kaon->getP4() + pion->getP4();
98
99 EvtTensorParticle theKstar;
100 theKstar.init( EvtPDL::getId( std::string( "K_2*0" ) ), theKstarP4 );
101
102 EvtPhotonParticle thePhoton;
103 thePhoton.init( EvtPDL::getId( std::string( "K_2*0" ) ), photon->getP4() );
104
105 theKstar.addDaug( &theB );
106 thePhoton.addDaug( &theB );
107
108 EvtAmp amp1;
109
110 d1.evalAmp( &theB, amp1 );
111
112 EvtComplexPtrPtr Hd2 = new EvtComplexPtr[1];
113 Hd2[0] = new EvtComplex[1];
114
115 Hd2[0][0] = 1.0;
116
118
119 EvtVector4R theKstarP4boost( theKstarP4.get( 0 ), -theKstarP4.get( 1 ), -theKstarP4.get( 2 ),
120 -theKstarP4.get( 3 ) );
121
122 EvtScalarParticle theKaon;
123 theKaon.init( EvtPDL::getId( std::string( "K+" ) ),
124 boostTo( kaon->getP4(), theKstarP4boost ) );
125
126 EvtScalarParticle thePion;
127 thePion.init( EvtPDL::getId( std::string( "pi+" ) ),
128 boostTo( pion->getP4(), theKstarP4boost ) );
129
130 theKaon.addDaug( &theKstar );
131 thePion.addDaug( &theKstar );
132
133 // Calculate the propagator
134
135 double m = theKstarP4.mass();
136 EvtTwoBodyVertex v( 0.5, 0.14, 1.4, 2 );
137 EvtTwoBodyKine v1( 0.5, 0.14, m );
138 EvtPropBreitWignerRel prop( 1.4, 0.2 );
139
140 // Mass-dependent width correction and amplitude calculation
141
142 double width = prop.g0() * v.widthFactor( v1 );
143 prop.set_g0( width );
144 EvtComplex bwamp = prop.evaluate( m );
145
146 EvtAmp amp2;
147
148 d2.evalAmp( &theKstar, amp2 );
149
150 vertex( 0, bwamp * ( amp1._amp[0] * amp2._amp[0] + amp1._amp[1] * amp2._amp[1] +
151 amp1._amp[2] * amp2._amp[2] + amp1._amp[3] * amp2._amp[3] +
152 amp1._amp[4] * amp2._amp[4] ) );
153
154 vertex( 1, bwamp * ( amp1._amp[5] * amp2._amp[0] + amp1._amp[6] * amp2._amp[1] +
155 amp1._amp[7] * amp2._amp[2] + amp1._amp[8] * amp2._amp[3] +
156 amp1._amp[9] * amp2._amp[4] ) );
157
158 return;
159}
EvtComplex * EvtComplexPtr
Definition EvtComplex.hh:68
EvtComplexPtr * EvtComplexPtrPtr
Definition EvtComplex.hh:69
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
int pion
**********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
EvtComplex evaluate(const T &p) const
void vertex(const EvtComplex &amp)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void evalAmp(EvtParticle *p, EvtAmp &amp)
EvtDecayBase * clone()
void getName(std::string &name)
void decay(EvtParticle *p)
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272
EvtId getId() const
EvtVector4R getP4Restframe()
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
void addDaug(EvtParticle *node)
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
double get(int i) const