]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtVVpipi.cxx
If default parameters are allowed and runNumber is provided, search first for the...
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtVVpipi.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: EvtVVSPwave.cc
12 //
13 // Description: Routine to decay vector-> vector pi pi where the 
14 //              decay is S-wave dominated.
15 //
16 // Modification history:
17 //
18 //    RYD       December 11, 1999       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/EvtReport.hh"
30 #include "EvtGenModels/EvtVVpipi.hh"
31 #include <string>
32 using std::endl;
33
34 EvtVVpipi::~EvtVVpipi() {}
35
36 std::string EvtVVpipi::getName(){
37
38   return "VVPIPI";     
39
40 }
41
42
43 EvtDecayBase* EvtVVpipi::clone(){
44
45   return new EvtVVpipi;
46
47 }
48
49 void EvtVVpipi::init(){
50
51   static EvtId PIP=EvtPDL::getId("pi+");
52   static EvtId PIM=EvtPDL::getId("pi-");
53   static EvtId PI0=EvtPDL::getId("pi0");
54
55   // check that there are 0 arguments
56   checkNArg(0);
57   checkNDaug(3);
58
59   checkSpinParent(EvtSpinType::VECTOR);
60   checkSpinDaughter(0,EvtSpinType::VECTOR);
61
62
63
64   if ((!(getDaug(1)==PIP&&getDaug(2)==PIM))&&
65       (!(getDaug(1)==PI0&&getDaug(2)==PI0))) {
66     report(ERROR,"EvtGen") << "EvtVVpipi generator expected "
67                            << " pi+ and pi- (or pi0 and pi0) "
68                            << "as 2nd and 3rd daughter. "<<endl;
69     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
70     ::abort();
71   }
72
73 }
74
75 void EvtVVpipi::initProbMax() {
76
77   //Hard coded... should not be hard to calculate...
78   setProbMax(0.08);
79
80 }      
81
82 void EvtVVpipi::decay( EvtParticle *p){
83
84   p->initializePhaseSpace(getNDaug(),getDaugs());
85
86   EvtParticle *v,*s1,*s2;
87   
88   v=p->getDaug(0);
89   s1=p->getDaug(1);
90   s2=p->getDaug(2);
91
92 //  Put phase space results into the daughters.
93   
94   EvtVector4C ep0,ep1,ep2;  
95   
96   ep0=p->eps(0);
97   ep1=p->eps(1);
98   ep2=p->eps(2);
99
100   double fac=(s1->getP4()+s2->getP4()).mass2()-4*s1->mass()*s2->mass();
101
102   vertex(0,0,fac*(ep0*v->epsParent(0).conj()));
103   vertex(0,1,fac*(ep0*v->epsParent(1).conj()));
104   vertex(0,2,fac*(ep0*v->epsParent(2).conj()));
105   
106   vertex(1,0,fac*(ep1*v->epsParent(0).conj()));
107   vertex(1,1,fac*(ep1*v->epsParent(1).conj()));
108   vertex(1,2,fac*(ep1*v->epsParent(2).conj()));
109   
110   vertex(2,0,fac*(ep2*v->epsParent(0).conj()));
111   vertex(2,1,fac*(ep2*v->epsParent(1).conj()));
112   vertex(2,2,fac*(ep2*v->epsParent(2).conj()));
113
114   return ;
115
116 }
117
118
119
120