]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenModels/EvtVtoSll.cxx
added a histogram
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtVtoSll.cxx
CommitLineData
da0e9ce3 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: EvtVll.cc
12//
13// Description: The decay of a vector meson to a scalar and a
14// lepton pair. E.g. D_s*+ -> D_s+ e+ e-
15//
16//
17// Modification history:
18//
19// RYD February 28, 2009 Module created
20//
21//------------------------------------------------------------------------
22//
23#include "EvtGenBase/EvtPatches.hh"
24#include <stdlib.h>
25#include <iostream>
26#include <string>
27#include "EvtGenBase/EvtParticle.hh"
28#include "EvtGenBase/EvtPDL.hh"
29#include "EvtGenBase/EvtGenKine.hh"
30#include "EvtGenModels/EvtVtoSll.hh"
31#include "EvtGenBase/EvtDiracSpinor.hh"
32#include "EvtGenBase/EvtReport.hh"
33#include "EvtGenBase/EvtVector4C.hh"
34#include "EvtGenBase/EvtTensor4C.hh"
35
36EvtVtoSll::~EvtVtoSll() {}
37
38std::string EvtVtoSll::getName(){
39
40 return "VTOSLL";
41
42}
43
44
45EvtDecayBase* EvtVtoSll::clone(){
46
47 return new EvtVtoSll;
48
49}
50
51void EvtVtoSll::init(){
52
53 // check that there are 0 arguments
54 checkNArg(0);
55 checkNDaug(3);
56
57 checkSpinParent(EvtSpinType::VECTOR);
58
59 checkSpinDaughter(0,EvtSpinType::SCALAR);
60 checkSpinDaughter(1,EvtSpinType::DIRAC);
61 checkSpinDaughter(2,EvtSpinType::DIRAC);
62
63}
64
65void EvtVtoSll::initProbMax(){
66
67 //setProbMax(1.0);
68
69}
70
71void EvtVtoSll::decay(EvtParticle *p){
72
73 p->initializePhaseSpace(getNDaug(),getDaugs());
74
75 EvtParticle *l1, *l2;
76 l1 = p->getDaug(1);
77 l2 = p->getDaug(2);
78
79 EvtVector4C l11, l12, l21, l22;
80 l11=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(0));
81 l12=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(1));
82 l21=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(0));
83 l22=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(1));
84
85 EvtVector4C eps0=p->eps(0);
86 EvtVector4C eps1=p->eps(1);
87 EvtVector4C eps2=p->eps(2);
88
89 EvtVector4R P=p->getP4Restframe();
90 EvtVector4R k=l1->getP4()+l2->getP4();
91 double k2=k*k;
92
93 EvtTensor4C T(dual(directProd(P,(1.0/k2)*k)));
94
95
96
97 double M2=p->mass();
98 M2*=M2;
99 double m2=l1->mass();
100 m2*=m2;
101
102 double norm=1.0/sqrt(2*M2+4*m2-4*m2*m2/M2);
103
104 vertex(0,0,0,norm*(eps0*T.cont2(l11)));
105 vertex(0,0,1,norm*(eps0*T.cont2(l12)));
106 vertex(0,1,0,norm*(eps0*T.cont2(l21)));
107 vertex(0,1,1,norm*(eps0*T.cont2(l22)));
108
109 vertex(1,0,0,norm*(eps1*T.cont2(l11)));
110 vertex(1,0,1,norm*(eps1*T.cont2(l12)));
111 vertex(1,1,0,norm*(eps1*T.cont2(l21)));
112 vertex(1,1,1,norm*(eps1*T.cont2(l22)));
113
114 vertex(2,0,0,norm*(eps2*T.cont2(l11)));
115 vertex(2,0,1,norm*(eps2*T.cont2(l12)));
116 vertex(2,1,0,norm*(eps2*T.cont2(l21)));
117 vertex(2,1,1,norm*(eps2*T.cont2(l22)));
118
119 return;
120
121}
122
123
124
125
126
127
128
129
130
131
132
133
134