]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TEvtGen/EvtGen/EvtGenModels/EvtBBScalar.hh
Fix for definitions for CINT
[u/mrichter/AliRoot.git] / TEvtGen / EvtGen / EvtGenModels / EvtBBScalar.hh
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
10 //
11 // Module: EvtGen/EvtBBScalar
12 //
13 // Description:Implementation of the decay B- -> lambda p_bar pi according to
14 // hep-ph/0204185, hep-ph/0211240
15 // This model is intended to be applicable to all decays of the type B-> baryon baryon scalar
16 //
17 // Modification history:
18 //
19 //    Jan Strube     March 24th, 2006         Module created
20 //
21 //------------------------------------------------------------------------
22
23 #ifndef EVTBBSCALAR_HH
24 #define EVTBBSCALAR_HH
25
26 #include "EvtGenBase/EvtDecayAmp.hh"
27 #include "EvtGenBase/EvtPDL.hh"
28 #include "EvtGenBase/EvtComplex.hh"
29 #include "EvtGenBase/EvtParticle.hh"
30 #include "EvtGenBase/EvtScalarParticle.hh"
31 #include "EvtGenBase/EvtDiracParticle.hh"
32 #include "EvtGenBase/EvtConst.hh"
33 #include "EvtGenBase/EvtId.hh"
34 #include "EvtGenBase/EvtVector4C.hh"
35
36 #include <map>
37 #include <string>
38 #include <vector>
39 #include <bitset>
40
41 struct FormFactor {
42     double value;
43     double sigma1;
44     double sigma2;
45     double mV;
46 };
47
48 enum Baryons {
49     Lambda, Proton, Neutron, Sigma0, Sigma_minus, Xi0, Xi_minus, nBaryons
50 };
51
52
53 class EvtBBScalar : public EvtDecayAmp {
54
55 public:
56     EvtBBScalar();
57     std::string getName();
58     EvtDecayBase* clone();
59     void decay(EvtParticle* p);
60     void init();
61     void initProbMax();
62
63 private:
64     // used values of constants
65     static const EvtComplex I;
66     static const EvtComplex V_ub;
67     static const EvtComplex V_us_star;
68     static const EvtComplex a1;
69     static const EvtComplex V_tb;
70     static const EvtComplex V_ts_star;
71     static const EvtComplex a4;
72     static const EvtComplex a6;
73
74     // used parameters in the calculation of the magnetic form factors
75     static const double x[];
76     static const double y[];
77     // quark masses as used in the model
78     static const double m_s;
79     static const double m_u;
80     static const double m_b;
81
82     // used to choose the right value for the form factor depending on the type of scalar
83     std::string _scalarType;
84     mutable std::map<std::string, FormFactor> _f0Map;
85     mutable std::map<std::string, FormFactor> _f1Map;
86
87     // only consider F1+F2 here
88     std::bitset<nBaryons> _baryonCombination;
89     void setKnownBaryonTypes(const EvtId& baryon);
90     
91     double B_pi_f1(double t) const ;
92     double B_pi_f0(double t) const ;
93     double baryonF1F2(double t) const ;
94     double G_p(double t) const ;
95     double G_n(double t) const ;
96     
97     double baryon_gA(double t) const;
98     double baryon_hA(double t) const;
99     double baryon_gP(double t) const ;
100     double baryon_fS(double t) const ;
101
102     double D_A(double t) const ;
103     double F_A(double t) const ;
104     double D_P(double t) const ;
105     double F_P(double t) const ;
106     double D_S(double t) const ;
107     double F_S(double t) const ;
108
109     // (mB1 - mB2)/(mq1 - mq1)
110     double _massRatio;
111     double _baryonMassSum;
112     double formFactorFit(double t, const std::vector<double>& params) const ;
113
114     static const EvtComplex const_B;
115     static const EvtComplex const_C;
116     const EvtVector4C
117     amp_A(const EvtVector4R& p4B, const EvtVector4R& p4Scalar);
118     const EvtComplex
119     amp_B(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
120         , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
121         , int index);
122     const EvtComplex
123     amp_B_vectorPart(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
124                    , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
125                    , int index);
126     const EvtComplex
127     amp_B_axialPart(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
128                   , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
129                   , int index);
130     const EvtComplex
131     amp_C(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
132         , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
133         , int index);
134     const EvtComplex
135     amp_C_scalarPart(const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t);
136     const EvtComplex
137     amp_C_pseudoscalarPart(const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t);
138
139     // initialize phasespace and calculate the amplitude for one (i=0,1) state of the photon
140     EvtComplex calcAmpliude(const EvtParticle* p, const unsigned int polState);
141 };
142
143 #endif