]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtSVVHelAmp.cxx
If default parameters are allowed and runNumber is provided, search first for the...
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtSVVHelAmp.cxx
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 "EvtGenBase/EvtPatches.hh"
23 #include <stdlib.h>
24 #include "EvtGenBase/EvtParticle.hh"
25 #include "EvtGenBase/EvtGenKine.hh"
26 #include "EvtGenBase/EvtPDL.hh"
27 #include "EvtGenBase/EvtVector4C.hh"
28 #include "EvtGenBase/EvtTensor4C.hh"
29 #include "EvtGenBase/EvtVector3C.hh"
30 #include "EvtGenBase/EvtVector3R.hh"
31 #include "EvtGenBase/EvtTensor3C.hh"
32 #include "EvtGenBase/EvtReport.hh"
33 #include "EvtGenModels/EvtSVVHelAmp.hh"
34 #include "EvtGenBase/EvtId.hh"
35 #include <string>
36
37 EvtSVVHelAmp::~EvtSVVHelAmp() {}
38
39 std::string EvtSVVHelAmp::getName(){
40
41   return "SVV_HELAMP";     
42
43 }
44
45
46 EvtDecayBase* EvtSVVHelAmp::clone(){
47
48   return new EvtSVVHelAmp;
49
50 }
51
52 void EvtSVVHelAmp::init(){
53
54   // check that there are 6 arguments
55   checkNArg(6);
56   checkNDaug(2);
57
58   checkSpinParent(EvtSpinType::SCALAR);
59
60   checkSpinDaughter(0,EvtSpinType::VECTOR);
61   checkSpinDaughter(1,EvtSpinType::VECTOR);
62
63 }
64
65
66 void EvtSVVHelAmp::initProbMax(){
67
68   setProbMax(getArg(0)*getArg(0)+getArg(2)*getArg(2)+getArg(4)*getArg(4));
69
70 }
71
72
73 void EvtSVVHelAmp::decay( EvtParticle *p){
74
75   SVVHel(p,_amp2,getDaug(0),getDaug(1),
76          EvtComplex(getArg(0)*cos(getArg(1)),getArg(0)*sin(getArg(1))),
77          EvtComplex(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3))),
78          EvtComplex(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5))));
79                                  
80   return ;
81
82 }
83
84
85 void EvtSVVHelAmp::SVVHel(EvtParticle *parent,EvtAmp& amp,EvtId n_v1,EvtId n_v2,
86                const EvtComplex& hp,const EvtComplex& h0,
87                const EvtComplex& hm){
88
89   //  Routine to decay a vector into a vector and scalar.  Started
90   //  by ryd on Oct 17, 1996.
91     
92   int tndaug = 2;
93   EvtId tdaug[2];
94   tdaug[0] = n_v1;
95   tdaug[1] = n_v2;
96
97
98   parent->initializePhaseSpace(tndaug,tdaug);
99
100   EvtParticle *v1,*v2;
101   v1 = parent->getDaug(0);
102   v2 = parent->getDaug(1);
103
104   EvtVector4R momv1 = v1->getP4();
105   //EvtVector4R momv2 = v2->getP4();
106
107   EvtVector3R v1dir(momv1.get(1),momv1.get(2),momv1.get(3));
108   v1dir=v1dir/v1dir.d3mag();
109
110   EvtComplex a=-0.5*(hp+hm);
111   EvtComplex b=EvtComplex(0.0,0.5)*(hp-hm);
112   EvtComplex c=h0+0.5*(hp+hm);
113
114   EvtTensor3C M=a*EvtTensor3C::id()+
115                 b*eps(v1dir)+
116                 c*directProd(v1dir,v1dir);
117
118   EvtVector3C t0=M.cont1(v1->eps(0).vec().conj());
119   EvtVector3C t1=M.cont1(v1->eps(1).vec().conj());
120   EvtVector3C t2=M.cont1(v1->eps(2).vec().conj());
121
122   EvtVector3C eps0=v2->eps(0).vec().conj();
123   EvtVector3C eps1=v2->eps(1).vec().conj();
124   EvtVector3C eps2=v2->eps(2).vec().conj();
125
126   amp.vertex(0,0,t0*eps0);
127   amp.vertex(0,1,t0*eps1);
128   amp.vertex(0,2,t0*eps2);
129
130   amp.vertex(1,0,t1*eps0);
131   amp.vertex(1,1,t1*eps1);
132   amp.vertex(1,2,t1*eps2);
133
134   amp.vertex(2,0,t2*eps0);
135   amp.vertex(2,1,t2*eps1);
136   amp.vertex(2,2,t2*eps2);
137
138   return ;
139
140 }
141
142