]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenModels/EvtBBScalar.hh
If default parameters are allowed and runNumber is provided, search first for the...
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtBBScalar.hh
CommitLineData
da0e9ce3 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
41struct FormFactor {
42 double value;
43 double sigma1;
44 double sigma2;
45 double mV;
46};
47
48enum Baryons {
49 Lambda, Proton, Neutron, Sigma0, Sigma_minus, Xi0, Xi_minus, nBaryons
50};
51
52
53class EvtBBScalar : public EvtDecayAmp {
54
55public:
56 EvtBBScalar();
57 std::string getName();
58 EvtDecayBase* clone();
59 void decay(EvtParticle* p);
60 void init();
61 void initProbMax();
62
63private:
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 std::map<std::string, FormFactor> _f0Map;
85 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 const double B_pi_f1(double t);
92 const double B_pi_f0(double t);
93 const double baryonF1F2(double t);
94 const double G_p(double t);
95 const double G_n(double t);
96
97 const double baryon_gA(double t);
98 const double baryon_hA(double t);
99 const double baryon_gP(double t);
100 const double baryon_fS(double t);
101
102 const double D_A(double t);
103 const double F_A(double t);
104 const double D_P(double t);
105 const double F_P(double t);
106 const double D_S(double t);
107 const double F_S(double t);
108
109 // (mB1 - mB2)/(mq1 - mq1)
110 double _massRatio;
111 double _baryonMassSum;
112 const double formFactorFit(double t, const std::vector<double>& params);
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