]>
Commit | Line | Data |
---|---|---|
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 | ||
36 | EvtVtoSll::~EvtVtoSll() {} | |
37 | ||
38 | std::string EvtVtoSll::getName(){ | |
39 | ||
40 | return "VTOSLL"; | |
41 | ||
42 | } | |
43 | ||
44 | ||
45 | EvtDecayBase* EvtVtoSll::clone(){ | |
46 | ||
47 | return new EvtVtoSll; | |
48 | ||
49 | } | |
50 | ||
51 | void 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 | ||
65 | void EvtVtoSll::initProbMax(){ | |
66 | ||
67 | //setProbMax(1.0); | |
68 | ||
69 | } | |
70 | ||
71 | void 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 |