BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSVVHelAmp.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: EvtSVVHelAmp.cc
12//
13// Description: Routine to decay scalar -> 2 vectors
14// by specifying the helicity amplitudes
15//
16// Modification history:
17//
18// RYD November 24, 1996 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtSVVHelAmp.hh"
34#include <stdlib.h>
35#include <string>
36
38
39void EvtSVVHelAmp::getName( std::string& model_name ) { model_name = "SVV_HELAMP"; }
40
42
44
45 // check that there are 6 arguments
46 checkNArg( 6 );
47 checkNDaug( 2 );
48
50
53}
54
56
57 setProbMax( getArg( 0 ) * getArg( 0 ) + getArg( 2 ) * getArg( 2 ) +
58 getArg( 4 ) * getArg( 4 ) );
59}
60
62
63 SVVHel( p, _amp2, getDaug( 0 ), getDaug( 1 ),
64 EvtComplex( getArg( 0 ) * cos( getArg( 1 ) ), getArg( 0 ) * sin( getArg( 1 ) ) ),
65 EvtComplex( getArg( 2 ) * cos( getArg( 3 ) ), getArg( 2 ) * sin( getArg( 3 ) ) ),
66 EvtComplex( getArg( 4 ) * cos( getArg( 5 ) ), getArg( 4 ) * sin( getArg( 5 ) ) ) );
67
68 return;
69}
70
71void EvtSVVHelAmp::SVVHel( EvtParticle* parent, EvtAmp& amp, EvtId n_v1, EvtId n_v2,
72 const EvtComplex& hp, const EvtComplex& h0, const EvtComplex& hm ) {
73
74 // Routine to decay a scalar into two vectors. Started
75 // by ryd on Oct 17, 1996.
76
77 int tndaug = 2;
78 EvtId tdaug[2];
79 tdaug[0] = n_v1;
80 tdaug[1] = n_v2;
81
82 parent->initializePhaseSpace( tndaug, tdaug );
83
84 EvtParticle *v1, *v2;
85 v1 = parent->getDaug( 0 );
86 v2 = parent->getDaug( 1 );
87
88 EvtVector4R momv1 = v1->getP4();
89 // EvtVector4R momv2 = v2->getP4();
90
91 EvtVector3R v1dir( momv1.get( 1 ), momv1.get( 2 ), momv1.get( 3 ) );
92 v1dir = v1dir / v1dir.d3mag();
93
94 EvtComplex a = -0.5 * ( hp + hm );
95 EvtComplex b = EvtComplex( 0.0, 0.5 ) * ( hp - hm );
96 EvtComplex c = h0 + 0.5 * ( hp + hm );
97
98 EvtTensor3C M = a * EvtTensor3C::id() + b * eps( v1dir ) + c * directProd( v1dir, v1dir );
99
100 EvtVector3C t0 = M.cont1( v1->eps( 0 ).vec().conj() );
101 EvtVector3C t1 = M.cont1( v1->eps( 1 ).vec().conj() );
102 EvtVector3C t2 = M.cont1( v1->eps( 2 ).vec().conj() );
103
104 EvtVector3C eps0 = v2->eps( 0 ).vec().conj();
105 EvtVector3C eps1 = v2->eps( 1 ).vec().conj();
106 EvtVector3C eps2 = v2->eps( 2 ).vec().conj();
107
108 amp.vertex( 0, 0, t0 * eps0 );
109 amp.vertex( 0, 1, t0 * eps1 );
110 amp.vertex( 0, 2, t0 * eps2 );
111
112 amp.vertex( 1, 0, t1 * eps0 );
113 amp.vertex( 1, 1, t1 * eps1 );
114 amp.vertex( 1, 2, t1 * eps2 );
115
116 amp.vertex( 2, 0, t2 * eps0 );
117 amp.vertex( 2, 1, t2 * eps1 );
118 amp.vertex( 2, 2, t2 * eps2 );
119
120 return;
121}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtTensor3C eps(const EvtVector3R &v)
void vertex(const EvtComplex &amp)
Definition EvtAmp.cc:441
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)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition EvtId.hh:27
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
virtual EvtVector4C eps(int i) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
static void SVVHel(EvtParticle *parent, EvtAmp &amp, EvtId n_v1, EvtId n_v2, const EvtComplex &hp, const EvtComplex &h0, const EvtComplex &hm)
void decay(EvtParticle *p)
EvtDecayBase * clone()
void getName(std::string &name)
virtual ~EvtSVVHelAmp()
void initProbMax()
static const EvtTensor3C & id()
EvtVector3C conj() const
double d3mag() const
EvtVector3C vec() const
double get(int i) const