BOSS 8.0.0
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//
22#include "EvtTVSPwave.hh"
30#include <stdlib.h>
31#include <string>
32
34
35void EvtTVSPwave::getName( std::string& model_name ) { model_name = "TVS_PWAVE"; }
36
38
40
41 // check that there are 6 arguments
42 checkNArg( 6 );
43 checkNDaug( 2 );
44
46
49}
50
52
54
55 EvtComplex ap( getArg( 0 ) * cos( getArg( 1 ) ), getArg( 0 ) * sin( getArg( 1 ) ) );
56 EvtComplex ad( getArg( 2 ) * cos( getArg( 3 ) ), getArg( 2 ) * sin( getArg( 3 ) ) );
57 EvtComplex af( getArg( 4 ) * cos( getArg( 5 ) ), getArg( 4 ) * sin( getArg( 5 ) ) );
58
59 if ( ap != EvtComplex( 0.0, 0.0 ) || af != EvtComplex( 0.0, 0.0 ) )
60 {
61 report( ERROR, "EvtGen" ) << "dfslkh8945wqh:In EvtTensorToVectorScalar.c\n";
62 report( ERROR, "EvtGen" ) << "P or F wave not yet implemented!! (ryd) \n";
63 }
64
66
68 v = p->getDaug( 0 );
69 EvtVector4R momv = v->getP4();
70 double massv = v->mass();
71
72 EvtComplex temp;
73 temp = ad;
74 double m_parent = p->mass();
75
76 EvtVector4R p_parent;
77
78 p_parent.set( m_parent, 0.0, 0.0, 0.0 );
79
80 EvtVector4C pep0, pep1, pep2, pep3, pep4;
81 EvtTensor4C pdual;
82
83 EvtVector4C epsdual0, epsdual1, epsdual2;
84
85 double norm = massv / ( m_parent * momv.get( 0 ) * momv.d3mag() * momv.d3mag() );
86 pdual = dual( directProd( norm * p_parent, momv ) );
87
88 epsdual0 = pdual.cont1( v->epsParent( 0 ).conj() );
89 epsdual1 = pdual.cont1( v->epsParent( 1 ).conj() );
90 epsdual2 = pdual.cont1( v->epsParent( 2 ).conj() );
91
92 pep0 = p->epsTensor( 0 ).cont1( momv );
93 pep1 = p->epsTensor( 1 ).cont1( momv );
94 pep2 = p->epsTensor( 2 ).cont1( momv );
95 pep3 = p->epsTensor( 3 ).cont1( momv );
96 pep4 = p->epsTensor( 4 ).cont1( momv );
97
98 vertex( 0, 0, pep0 * epsdual0 );
99 vertex( 1, 0, pep1 * epsdual0 );
100 vertex( 2, 0, pep2 * epsdual0 );
101 vertex( 3, 0, pep3 * epsdual0 );
102 vertex( 4, 0, pep4 * epsdual0 );
103
104 vertex( 0, 1, pep0 * epsdual1 );
105 vertex( 1, 1, pep1 * epsdual1 );
106 vertex( 2, 1, pep2 * epsdual1 );
107 vertex( 3, 1, pep3 * epsdual1 );
108 vertex( 4, 1, pep4 * epsdual1 );
109
110 vertex( 0, 2, pep0 * epsdual2 );
111 vertex( 1, 2, pep1 * epsdual2 );
112 vertex( 2, 2, pep2 * epsdual2 );
113 vertex( 3, 2, pep3 * epsdual2 );
114 vertex( 4, 2, pep4 * epsdual2 );
115
116 return;
117}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
EvtTensor4C dual(const EvtTensor4C &t2)
**********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)
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()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtParticle * getDaug(int i)
double mass() const
virtual EvtTensor4C epsTensor(int i) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
virtual ~EvtTVSPwave()
EvtDecayBase * clone()
void decay(EvtParticle *p)
void initProbMax()
void getName(std::string &name)
EvtVector4C cont1(const EvtVector4C &v4) const
double get(int i) const
double d3mag() const
void set(int i, double d)