]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtTaulnunu.cxx
AliDecayer realisation for the EvtGen code and EvtGen itself.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtTaulnunu.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: EvtTaulnunu.cc
12 //
13 // Description: The leptonic decay of the tau meson.
14 //              E.g., tau- -> e- nueb nut
15 //
16 // Modification history:
17 //
18 //    RYD       January 17, 1997       Module created
19 //
20 //------------------------------------------------------------------------
21 //
22 #include "EvtGenBase/EvtPatches.hh"
23 #include <stdlib.h>
24 #include <iostream>
25 #include <string>
26 #include "EvtGenBase/EvtParticle.hh"
27 #include "EvtGenBase/EvtPDL.hh"
28 #include "EvtGenBase/EvtGenKine.hh"
29 #include "EvtGenModels/EvtTaulnunu.hh"
30 #include "EvtGenBase/EvtDiracSpinor.hh"
31 #include "EvtGenBase/EvtReport.hh"
32 #include "EvtGenBase/EvtVector4C.hh"
33
34 EvtTaulnunu::~EvtTaulnunu() {}
35
36 std::string EvtTaulnunu::getName(){
37
38   return "TAULNUNU";     
39
40 }
41
42
43 EvtDecayBase* EvtTaulnunu::clone(){
44
45   return new EvtTaulnunu;
46
47 }
48
49 void EvtTaulnunu::init(){
50
51   // check that there are 0 arguments
52   checkNArg(0);
53   checkNDaug(3);
54
55   checkSpinParent(EvtSpinType::DIRAC);
56
57   checkSpinDaughter(0,EvtSpinType::DIRAC);
58   checkSpinDaughter(1,EvtSpinType::NEUTRINO);
59   checkSpinDaughter(2,EvtSpinType::NEUTRINO);
60
61 }
62
63 void EvtTaulnunu::initProbMax(){
64
65   setProbMax(650.0);
66
67 }
68
69 void EvtTaulnunu::decay(EvtParticle *p){
70   static EvtId TAUM=EvtPDL::getId("tau-");
71
72   p->initializePhaseSpace(getNDaug(),getDaugs());
73
74   EvtParticle *l, *nul, *nut;
75
76   l = p->getDaug(0);
77   nul = p->getDaug(1);
78   nut = p->getDaug(2);
79   
80   EvtVector4C l1, l2, tau1, tau2;
81
82   if (p->getId()==TAUM) {
83
84     tau1=EvtLeptonVACurrent(nut->spParentNeutrino(),p->sp(0));
85     tau2=EvtLeptonVACurrent(nut->spParentNeutrino(),p->sp(1));
86     l1=EvtLeptonVACurrent(l->spParent(0),nul->spParentNeutrino());
87     l2=EvtLeptonVACurrent(l->spParent(1),nul->spParentNeutrino());
88
89   }
90   else{
91     tau1=EvtLeptonVACurrent(p->sp(0),nut->spParentNeutrino());
92     tau2=EvtLeptonVACurrent(p->sp(1),nut->spParentNeutrino());
93     l1=EvtLeptonVACurrent(nul->spParentNeutrino(),l->spParent(0));
94     l2=EvtLeptonVACurrent(nul->spParentNeutrino(),l->spParent(1));
95   }
96
97   vertex(0,0,tau1*l1);
98   vertex(0,1,tau1*l2);
99   vertex(1,0,tau2*l1);
100   vertex(1,1,tau2*l2);
101   
102   return;
103
104 }
105