BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtSVPHelAmp.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: EvtSVPHelAmp.cc
12//
13// Description: Routine to decay scalar -> vectors+photon
14// by specifying the helicity amplitudes
15//
16// Modification history:
17//
18// RYD July 26, 1997 Module created
19//
20//------------------------------------------------------------------------
21//
22#include "EvtSVPHelAmp.hh"
32#include <stdlib.h>
33#include <string>
34
36
37void EvtSVPHelAmp::getName( std::string& model_name ) { model_name = "SVP_HELAMP"; }
38
40
42
43 setProbMax( getArg( 0 ) * getArg( 0 ) + getArg( 2 ) * getArg( 2 ) );
44}
45
47
48 // check that there are 4 arguments
49 checkNArg( 4 );
50 checkNDaug( 2 );
51
53
56}
57
59
60 EvtComplex hp( getArg( 0 ) * cos( getArg( 1 ) ), getArg( 0 ) * sin( getArg( 1 ) ) );
61 EvtComplex hm( getArg( 2 ) * cos( getArg( 3 ) ), getArg( 2 ) * sin( getArg( 3 ) ) );
62
63 // Routine to decay a vector into a vector and scalar. Started
64 // by ryd on Oct 17, 1996.
65
66 // This routine is adopted from EvtSVVHel and since there is
67 // a photon that can not have helicity 0 this is put in by
68 // setting the h0 amplitude to 0.
69 EvtComplex h0 = EvtComplex( 0.0, 0.0 );
70
71 EvtParticle *v1, *ph;
72
74 v1 = p->getDaug( 0 );
75 ph = p->getDaug( 1 );
76 EvtVector4R momv1 = v1->getP4();
77 EvtVector4R momph = ph->getP4();
78
79 EvtTensor4C d, g;
80
81 g.setdiag( 1.0, -1.0, -1.0, -1.0 );
82
83 EvtVector4R v, vp;
84
85 v = momv1 / momv1.d3mag();
86 vp = ( momv1 + momph ) / ( momv1 + momph ).mass();
87
88 d = ( ( 1.0 / sqrt( 3.0 ) ) * ( h0 - ( hp + hm ) ) * ( -1.0 / sqrt( 3.0 ) ) ) * g +
89 ( ( 1.0 / sqrt( 2.0 ) ) * ( hp - hm ) * EvtComplex( 0.0, 1.0 ) *
90 ( sqrt( 1.0 / 2.0 ) ) ) *
91 dual( directProd( v, vp ) ) +
92 ( sqrt( 2.0 / 3.0 ) * ( h0 + 0.5 * ( hp + hm ) ) * sqrt( 3.0 / 2.0 ) ) *
93 ( directProd( v, v ) + ( 1.0 / 3.0 ) * g );
94
95 EvtVector4C ep0, ep1, ep2;
96
97 ep0 = d.cont1( v1->eps( 0 ).conj() );
98 ep1 = d.cont1( v1->eps( 1 ).conj() );
99 ep2 = d.cont1( v1->eps( 2 ).conj() );
100
101 EvtVector4C ep20, ep21, ep22;
102
103 ep20 = ph->epsParentPhoton( 0 ).conj();
104 ep21 = ph->epsParentPhoton( 1 ).conj();
105
106 vertex( 0, 0, ep0 * ep20 );
107 vertex( 0, 1, ep0 * ep21 );
108
109 vertex( 1, 0, ep1 * ep20 );
110 vertex( 1, 1, ep1 * ep21 );
111
112 vertex( 2, 0, ep2 * ep20 );
113 vertex( 2, 1, ep2 * ep21 );
114
115 return;
116}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
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)
virtual EvtVector4C epsParentPhoton(int i)
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)
void initProbMax()
EvtDecayBase * clone()
virtual ~EvtSVPHelAmp()
void decay(EvtParticle *p)
void getName(std::string &name)
void setdiag(double t00, double t11, double t22, double t33)
EvtVector4C cont1(const EvtVector4C &v4) const
EvtVector4C conj() const
double mass() const
double d3mag() const