00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "EvtGenBase/EvtPatches.hh"
00022
00023 #include "EvtGenModels/EvtLambdaP_BarGamma.hh"
00024 #include "EvtGenBase/EvtGammaMatrix.hh"
00025 #include "EvtGenBase/EvtDiracSpinor.hh"
00026 #include "EvtGenBase/EvtSpinType.hh"
00027 #include "EvtGenBase/EvtDiracParticle.hh"
00028 #include "EvtGenBase/EvtPhotonParticle.hh"
00029
00030 EvtLambdaP_BarGamma::EvtLambdaP_BarGamma() :
00031 _mLambdab ( 5.624),
00032 _mLambda0 ( 1.115684),
00033 _c7Eff ( -0.31),
00034 _mb ( 4.4),
00035 _mV ( 5.42),
00036 _mA ( 5.86),
00037 _GF ( 1.166E-5),
00038 _gLambdab ( 16),
00039 _e0 ( 1),
00040 _g1 ( 0.64),
00041 _g2 ( -0.10),
00042 _f1 ( 0.64),
00043 _f2 ( -0.31),
00044 _VtbVtsStar ( 0.038)
00045 {
00046 }
00047
00048
00049
00050 void EvtLambdaP_BarGamma::getName(std::string& modelName){
00051 modelName = "B_TO_LAMBDA_PBAR_GAMMA";
00052 }
00053
00054 EvtDecayBase* EvtLambdaP_BarGamma::clone(){
00055 return new EvtLambdaP_BarGamma;
00056 }
00057
00058 void EvtLambdaP_BarGamma::init() {
00059
00060 checkNArg(0);
00061 checkNDaug(3);
00062
00063 checkSpinParent(EvtSpinType::SCALAR);
00064 checkSpinDaughter(0, EvtSpinType::DIRAC);
00065 checkSpinDaughter(1, EvtSpinType::DIRAC);
00066 checkSpinDaughter(2, EvtSpinType::PHOTON);
00067 }
00068
00069
00070
00071 void EvtLambdaP_BarGamma::decay(EvtParticle* p) {
00072 EvtComplex I(0, 1);
00073
00074 p->initializePhaseSpace(getNDaug(), getDaugs());
00075
00076 EvtDiracParticle* theLambda = static_cast<EvtDiracParticle*>(p->getDaug(0));
00077 EvtVector4R lambdaMomentum = theLambda->getP4Lab();
00078
00079 EvtDiracParticle* theAntiP = static_cast<EvtDiracParticle*>(p->getDaug(1));
00080
00081 EvtPhotonParticle* thePhoton = static_cast<EvtPhotonParticle*>(p->getDaug(2));
00082 EvtVector4R photonMomentum = thePhoton->getP4Lab();
00083
00084
00085 for (int i=0; i<2; ++i) {
00086 EvtDiracSpinor lambdaPol = theLambda->spParent(i);
00087 for (int j=0; j<2; ++j) {
00088 EvtDiracSpinor antiP_Pol = theAntiP->spParent(j);
00089 for (int k=0; k<2; ++k) {
00090 EvtVector4C photonPol = thePhoton->epsParentPhoton(k);
00091 EvtGammaMatrix photonGamma;
00092 for (int mu=0; mu<4; ++mu)
00093 for (int nu=0; nu<4; ++nu)
00094 photonGamma += EvtGammaMatrix::sigmaLower(mu, nu) * photonPol.get(mu) * photonMomentum.get(nu);
00095
00096 EvtComplex amp =
00097 -I*_gLambdab * lambdaPol.adjoint() * ((constA()*EvtGammaMatrix::id() + constB()*EvtGammaMatrix::g5())
00098 * photonGamma * (slash(lambdaMomentum) + slash(photonMomentum) + _mLambdab*EvtGammaMatrix::id())
00099 / ((lambdaMomentum + photonMomentum)*(lambdaMomentum + photonMomentum) - _mLambdab*_mLambdab)
00100 * EvtGammaMatrix::g5() * antiP_Pol);
00101
00102 vertex(i, j, k, amp);
00103 }
00104 }
00105 }
00106 }
00107
00108 void EvtLambdaP_BarGamma::initProbMax()
00109 {
00110
00111 setProbMax(9.0000E-13);
00112 }
00113
00114
00115 const double EvtLambdaP_BarGamma::f0(double fqm, int n){
00116 return fqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mV * _mV), n);
00117 }
00118
00119 const double EvtLambdaP_BarGamma::g0(double gqm, int n){
00120 return gqm * pow(1 - pow(_mLambdab - _mLambda0, 2) / (_mA * _mA), n);
00121 }
00122
00123
00124 const double EvtLambdaP_BarGamma::constA(){
00125 return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
00126 * (f0(_f1) - f0(_f2));
00127 }
00128
00129 const double EvtLambdaP_BarGamma::constB(){
00130 return _GF/sqrt(2.) * _e0 / (8 * EvtConst::pi*EvtConst::pi) * 2 * _c7Eff * _mb * _VtbVtsStar
00131 * (g0(_g1) - (_mLambdab - _mLambda0) / (_mLambdab + _mLambda0) * g0(_g2));
00132 }