Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtFlatQ2.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: EvtFlatQ2.cc
12 //
13 // Description: B->Xu l nu with flat q2 distribution
14 //
15 // Modification history:
16 //
17 //    David Cote, U. de Montreal, 11/02/2003    Module created
18 //
19 //------------------------------------------------------------------------
20 //
21 #include "EvtGenBase/EvtPatches.hh"
22 #include "EvtGenModels/EvtFlatQ2.hh"
23
24 #include <stdlib.h>
25 #include <fstream>
26 #include <stdio.h>
27 #include <string>
28 #include "EvtGenBase/EvtGenKine.hh"
29 #include "EvtGenBase/EvtParticle.hh"
30 #include "EvtGenBase/EvtPDL.hh"
31 #include "EvtGenBase/EvtReport.hh"
32 #include "EvtGenBase/EvtDiracSpinor.hh"
33 #include "EvtGenBase/EvtVector4C.hh"
34 #include "EvtGenBase/EvtTensor4C.hh"
35 using std::fstream;
36
37 EvtFlatQ2::~EvtFlatQ2() {}
38
39 std::string EvtFlatQ2::getName(){
40
41     return "FLATQ2";
42
43 }
44
45 EvtDecayBase* EvtFlatQ2::clone(){
46
47   return new EvtFlatQ2;
48
49 }
50
51
52 void EvtFlatQ2::initProbMax(){
53
54   setProbMax(100);
55
56 }
57
58
59 void EvtFlatQ2::init(){
60
61   // check that there are 0 arguments
62   checkNArg(0);
63   checkNDaug(3);
64
65   //We expect B->X l nu events
66   checkSpinParent(EvtSpinType::SCALAR);
67   checkSpinDaughter(1,EvtSpinType::DIRAC);
68   checkSpinDaughter(2,EvtSpinType::NEUTRINO);
69
70 }
71
72
73 void EvtFlatQ2::decay( EvtParticle *p){
74
75   p->initializePhaseSpace(getNDaug(),getDaugs());
76
77   EvtVector4R p4Xu = p->getDaug(0)->getP4();
78   double pXu_x2=p4Xu.get(1)*p4Xu.get(1);
79   double pXu_y2=p4Xu.get(2)*p4Xu.get(2);
80   double pXu_z2=p4Xu.get(3)*p4Xu.get(3);
81   double pXu = sqrt(pXu_x2+pXu_y2+pXu_z2);
82   double prob=1/pXu;
83   
84   if(pXu>0.01) setProb(prob);
85
86   return;
87 }
88
89