BOSS 7.0.3
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtTVSPwave.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: EvtTVSPwave.cc
12//
13// Description: Routine to decay tensor-> vector scalar
14// by specifying the partial waves
15//
16// Modification history:
17//
18// DJL/RYD August 11, 1997 Module created
19//
20//------------------------------------------------------------------------
21//
23#include <stdlib.h>
26#include "EvtGenBase/EvtPDL.hh"
31#include <string>
32
34
35void EvtTVSPwave::getName(std::string& model_name){
36
37 model_name="TVS_PWAVE";
38
39}
40
41
43
44 return new EvtTVSPwave;
45
46}
47
49
50 // check that there are 6 arguments
51 checkNArg(6);
52 checkNDaug(2);
53
55
58}
59
61
62 setProbMax(0.5);
63
64
65}
66
68
69 EvtComplex ap(getArg(0)*cos(getArg(1)),getArg(0)*sin(getArg(1)));
70 EvtComplex ad(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3)));
71 EvtComplex af(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5)));
72
73 if (ap!=EvtComplex(0.0,0.0)||af!=EvtComplex(0.0,0.0)) {
74 report(ERROR,"EvtGen") << "dfslkh8945wqh:In EvtTensorToVectorScalar.c\n";
75 report(ERROR,"EvtGen") << "P or F wave not yet implemented!! (ryd) \n";
76 }
77
79
81 v = p->getDaug(0);
82 EvtVector4R momv = v->getP4();
83 double massv = v->mass();
84
85 EvtComplex temp;
86 temp = ad;
87 double m_parent = p->mass();
88
89 EvtVector4R p_parent;
90
91 p_parent.set(m_parent,0.0,0.0,0.0);
92
93 EvtVector4C pep0,pep1,pep2,pep3,pep4;
94 EvtTensor4C pdual;
95
96 EvtVector4C epsdual0,epsdual1,epsdual2;
97
98 double norm=massv/(m_parent*momv.get(0)*momv.d3mag()*momv.d3mag());
99 pdual=dual(directProd(norm*p_parent,momv));
100
101 epsdual0=pdual.cont1(v->epsParent(0).conj());
102 epsdual1=pdual.cont1(v->epsParent(1).conj());
103 epsdual2=pdual.cont1(v->epsParent(2).conj());
104
105 pep0=p->epsTensor(0).cont1(momv);
106 pep1=p->epsTensor(1).cont1(momv);
107 pep2=p->epsTensor(2).cont1(momv);
108 pep3=p->epsTensor(3).cont1(momv);
109 pep4=p->epsTensor(4).cont1(momv);
110
111 vertex(0,0,pep0*epsdual0);
112 vertex(1,0,pep1*epsdual0);
113 vertex(2,0,pep2*epsdual0);
114 vertex(3,0,pep3*epsdual0);
115 vertex(4,0,pep4*epsdual0);
116
117 vertex(0,1,pep0*epsdual1);
118 vertex(1,1,pep1*epsdual1);
119 vertex(2,1,pep2*epsdual1);
120 vertex(3,1,pep3*epsdual1);
121 vertex(4,1,pep4*epsdual1);
122
123 vertex(0,2,pep0*epsdual2);
124 vertex(1,2,pep1*epsdual2);
125 vertex(2,2,pep2*epsdual2);
126 vertex(3,2,pep3*epsdual2);
127 vertex(4,2,pep4*epsdual2);
128
129 return ;
130}
131
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ ERROR
Definition: EvtReport.hh:49
EvtTensor4C dual(const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:379
double sin(const BesAngle a)
double cos(const BesAngle a)
**********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
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
double getArg(int j)
void setProbMax(double prbmx)
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)
EvtParticle * getDaug(int i)
Definition: EvtParticle.cc:85
double mass() const
Definition: EvtParticle.cc:127
virtual EvtTensor4C epsTensor(int i) const
Definition: EvtParticle.cc:670
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
virtual ~EvtTVSPwave()
Definition: EvtTVSPwave.cc:33
EvtDecayBase * clone()
Definition: EvtTVSPwave.cc:42
void decay(EvtParticle *p)
Definition: EvtTVSPwave.cc:67
void initProbMax()
Definition: EvtTVSPwave.cc:60
void getName(std::string &name)
Definition: EvtTVSPwave.cc:35
void init()
Definition: EvtTVSPwave.cc:48
EvtVector4C cont1(const EvtVector4C &v4) const
Definition: EvtTensor4C.cc:461
double get(int i) const
Definition: EvtVector4R.hh:179
double d3mag() const
Definition: EvtVector4R.cc:186
void set(int i, double d)
Definition: EvtVector4R.hh:183