Fix bug in building local list of valid files.
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtbTosllAli.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) 2003      Caltech, UCSB
10 //
11 // Module: EvtbTosllAli.cc
12 //
13 // Description: Routine to implement b->sll decays according to Ali '02 et al. 
14 //
15 // Modification history:
16 //
17 //    Ryd     March 30, 2003        Module created
18 //
19 //------------------------------------------------------------------------
20 // 
21 #include "EvtGenBase/EvtPatches.hh"
22 #include <stdlib.h>
23 #include "EvtGenBase/EvtParticle.hh"
24 #include "EvtGenBase/EvtGenKine.hh"
25 #include "EvtGenBase/EvtPDL.hh"
26 #include "EvtGenBase/EvtReport.hh"
27 #include "EvtGenModels/EvtbTosllAli.hh"
28 #include "EvtGenModels/EvtbTosllAliFF.hh"
29 #include "EvtGenModels/EvtbTosllAmp.hh"
30 #include "EvtGenModels/EvtbTosllScalarAmp.hh"
31 #include "EvtGenModels/EvtbTosllVectorAmp.hh"
32
33 #include <string>
34 using std::endl;
35
36 EvtbTosllAli::~EvtbTosllAli() {}
37
38 std::string EvtbTosllAli::getName(){
39
40   return "BTOSLLALI";     
41 }
42
43
44 EvtDecayBase* EvtbTosllAli::clone(){
45
46   return new EvtbTosllAli;
47
48 }
49
50 void EvtbTosllAli::decay( EvtParticle *p ){
51
52   setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),false,
53                                     _poleSize,1,2));
54
55   _calcamp->CalcAmp(p,_amp2,_aliffmodel);
56   
57 }
58
59
60 void EvtbTosllAli::initProbMax(){
61
62   EvtId parnum,mesnum,l1num,l2num;
63   
64   parnum = getParentId();
65   mesnum = getDaug(0);
66   l1num = getDaug(1);
67   l2num = getDaug(2);
68   
69   //This routine sets the _poleSize.
70   double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
71                                            l1num,l2num,
72                                            _aliffmodel,_poleSize);
73
74   setProbMax(mymaxprob);
75
76 }
77
78
79 void EvtbTosllAli::init(){
80
81   checkNArg(0);
82   checkNDaug(3);
83
84   //We expect the parent to be a scalar 
85   //and the daughters to be X lepton+ lepton-
86
87   checkSpinParent(EvtSpinType::SCALAR);
88
89   EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
90
91   if ( !(mesontype == EvtSpinType::VECTOR||
92         mesontype == EvtSpinType::SCALAR)) {
93     report(ERROR,"EvtGen") << "EvtbTosllAli generator expected "
94                            << " a SCALAR or VECTOR 1st daughter, found:"<<
95                            EvtPDL::name(getDaug(0)).c_str()<<endl;
96     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
97     ::abort();
98   }
99
100   checkSpinDaughter(1,EvtSpinType::DIRAC);
101   checkSpinDaughter(2,EvtSpinType::DIRAC);
102
103   _aliffmodel = new EvtbTosllAliFF();
104   if (mesontype == EvtSpinType::SCALAR){
105     _calcamp = new EvtbTosllScalarAmp(-0.313,4.344,-4.669); 
106   }
107   if (mesontype == EvtSpinType::VECTOR){
108     _calcamp = new EvtbTosllVectorAmp(-0.313,4.344,-4.669); 
109   }
110
111 }
112
113
114
115
116