Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtTauVectornu.cpp
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: EvtTauVectornu.cc
12 //
13 // Description: The vector decay of the tau meson.
14 //              E.g., tau- -> rho- + nut
15 //
16 // Modification history:
17 //
18 //    RYD/SHY   April 23, 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/EvtTauVectornu.hh"
30 #include "EvtGenBase/EvtDiracSpinor.hh"
31 #include "EvtGenBase/EvtReport.hh"
32 #include "EvtGenBase/EvtVector4C.hh"
33
34 EvtTauVectornu::~EvtTauVectornu() {}
35
36 std::string EvtTauVectornu::getName(){
37
38   return "TAUVECTORNU";     
39
40 }
41
42
43 EvtDecayBase* EvtTauVectornu::clone(){
44
45   return new EvtTauVectornu;
46
47 }
48
49 void EvtTauVectornu::init(){
50
51   // check that there are 0 arguments
52   checkNArg(0);
53   checkNDaug(2);
54
55   checkSpinParent(EvtSpinType::DIRAC);
56     
57   checkSpinDaughter(0,EvtSpinType::VECTOR);
58   checkSpinDaughter(1,EvtSpinType::NEUTRINO);
59 }
60
61 void EvtTauVectornu::initProbMax(){
62
63   setProbMax(55.0);
64
65 }
66
67 void EvtTauVectornu::decay(EvtParticle *p){
68
69   static EvtId TAUM=EvtPDL::getId("tau-");
70   p->initializePhaseSpace(getNDaug(),getDaugs());
71
72   EvtParticle *v, *nut;
73   v=p->getDaug(0);
74   nut=p->getDaug(1);
75   double mvec = v->mass();
76   EvtVector4C tau1, tau2;
77
78   if (p->getId()==TAUM) {
79     tau1=EvtLeptonVACurrent(nut->spParentNeutrino(),p->sp(0));
80     tau2=EvtLeptonVACurrent(nut->spParentNeutrino(),p->sp(1));
81   }
82   else{
83     tau1=EvtLeptonVACurrent(p->sp(0),nut->spParentNeutrino());
84     tau2=EvtLeptonVACurrent(p->sp(1),nut->spParentNeutrino());
85   }
86
87   double norm=mvec*sqrt(mvec);
88   
89   vertex(0,0,norm*tau1*(v->epsParent(0).conj()));
90   vertex(0,1,norm*tau1*(v->epsParent(1).conj()));
91   vertex(0,2,norm*tau1*(v->epsParent(2).conj()));
92   vertex(1,0,norm*tau2*(v->epsParent(0).conj()));
93   vertex(1,1,norm*tau2*(v->epsParent(1).conj()));
94   vertex(1,2,norm*tau2*(v->epsParent(2).conj()));
95   
96   return;
97
98 }
99