]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGenModels/EvtbTosllAli.cxx
added a histogram
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtbTosllAli.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) 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(),_poleSize,1,2));
53
54   _calcamp->CalcAmp(p,_amp2,_aliffmodel);
55   
56 }
57
58
59 void EvtbTosllAli::initProbMax(){
60
61   EvtId parnum,mesnum,l1num,l2num;
62   
63   parnum = getParentId();
64   mesnum = getDaug(0);
65   l1num = getDaug(1);
66   l2num = getDaug(2);
67   
68   //This routine sets the _poleSize.
69   double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
70                                            l1num,l2num,
71                                            _aliffmodel,_poleSize);
72
73   setProbMax(mymaxprob);
74
75 }
76
77
78 void EvtbTosllAli::init(){
79
80   checkNArg(0);
81   checkNDaug(3);
82
83   //We expect the parent to be a scalar 
84   //and the daughters to be X lepton+ lepton-
85
86   checkSpinParent(EvtSpinType::SCALAR);
87
88   EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
89
90   if ( !(mesontype == EvtSpinType::VECTOR||
91         mesontype == EvtSpinType::SCALAR)) {
92     report(ERROR,"EvtGen") << "EvtbTosllAli generator expected "
93                            << " a SCALAR or VECTOR 1st daughter, found:"<<
94                            EvtPDL::name(getDaug(0)).c_str()<<endl;
95     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
96     ::abort();
97   }
98
99   checkSpinDaughter(1,EvtSpinType::DIRAC);
100   checkSpinDaughter(2,EvtSpinType::DIRAC);
101
102   _aliffmodel = new EvtbTosllAliFF();
103   if (mesontype == EvtSpinType::SCALAR){
104     _calcamp = new EvtbTosllScalarAmp(-0.313,4.344,-4.669); 
105   }
106   if (mesontype == EvtSpinType::VECTOR){
107     _calcamp = new EvtbTosllVectorAmp(-0.313,4.344,-4.669); 
108   }
109
110 }
111
112
113
114
115