//-------------------------------------------------------------------------- // // Environment: // This software is part of the EvtGen package developed jointly // for the BaBar and CLEO collaborations. If you use all or part // of it, please give an appropriate acknowledgement. // // Copyright Information: // Copyright (C) 1998 Caltech, UCSB // // Module: EvtBaryonVminusAFF.cc // // Description: Routine to implement semileptonic form factors // according to the model BaryonVminusA // // Modification history: // // R.J. Tesarek May 28, 2004 Module created // Karen Gibson 1/20/2006 Module updated for 1/2+->1/2+, // 1/2+->1/2-, 1/2+->3/2- Lambda decays // //-------------------------------------------------------------------------- #include "EvtGenBase/EvtPatches.hh" #include "EvtGenBase/EvtReport.hh" #include "EvtGenModels/EvtBaryonPCRFF.hh" #include "EvtGenBase/EvtPDL.hh" #include "EvtGenBase/EvtId.hh" #include "EvtGenBase/EvtIdSet.hh" #include "EvtGenBase/EvtConst.hh" #include #include #include using std::endl; void EvtBaryonPCRFF::getdiracff(EvtId parent, EvtId daught, double q2, double /* mass */ , double *f1, double *f2, double *f3, double *g1, double *g2, double *g3 ) { // Baryons (partial list 5/28/04) static EvtId LAMCP=EvtPDL::getId("Lambda_c+"); static EvtId LAMCM=EvtPDL::getId("anti-Lambda_c-"); static EvtId LAMC1P=EvtPDL::getId("Lambda_c(2593)+"); static EvtId LAMC1M=EvtPDL::getId("anti-Lambda_c(2593)-"); static EvtId LAMB=EvtPDL::getId("Lambda_b0"); static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0"); double F1, F2, F3, G1, G2, G3; if( parent==LAMB || parent==LAMBB ) { // Implement constituent quark model form factors predicted // by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005) if( daught==LAMCP|| daught==LAMCM ) { // Parameters needed in the calculation; double mQ = 5.28; double mq = 1.89; double md = 0.40; double MLamB = EvtPDL::getMass(parent); double MLamC = EvtPDL::getMass(daught); double aL = 0.59; double aLp = 0.55; double aL2 = aL*aL; double aLp2 = aLp*aLp; double aLLp2 = 0.5*(aL2+aLp2); // relativistic correction factor double k2 = 1.0; double rho2 = 3.*md*md/(2.*k2*aLLp2); // w = scalar product of the 4 velocities of the Lb and Lc. double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC; double I = pow(aL*aLp/aLLp2, 1.5)*exp(-rho2*(w*w-1.)); // Calculate the form factors F1 = I*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) ); F2 = -I*( (md/mq)*(aLp2/aLLp2) - aL2*aLp2/(4.*aLLp2*mq*mQ) ); F3 = -I*md*aL2/(mQ*aLLp2); G1 = I*( 1.0 - (aL2*aLp2)/(12.*aLLp2*mq*mQ) ); G2 = -I*( md*aLp2/(mq*aLLp2) + (aL2*aLp2)/(12.*aLLp2*mq*mQ)*(1.+12.*md*md/aLLp2) ); G3 = I*( md*aL2/(mQ*aLLp2) + md*md*aL2*aLp2/(mq*mQ*aLLp2*aLLp2) ); // Set form factors to be passed to the amplitude calc. *f1 = F1; *f2 = F2; *f3 = F3; *g1 = G1; *g2 = G2; *g3 = G3; } else if( daught==LAMC1P || daught==LAMC1M ) { double mQ = 5.28; double mq = 1.89; double md = 0.40; double MLamB = EvtPDL::getMass(parent); double MLamC = EvtPDL::getMass(daught); double aL = 0.59; double aLp = 0.47; double aL2 = aL*aL; double aLp2 = aLp*aLp; double aLLp2 = 0.5*(aL2+aLp2); // relativistic correction factor double k2 = 1.0; double rho2 = 3.*md*md/(2.*k2*aLLp2); // w = scalar product of the 4 velocities of the Lb and Lc. double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC; double I = pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.)); // Calculate the form factors F1 = I*aL/6.0*( 3.0/mq - 1.0/mQ ); F2 = -I*( 2.0*md/aL - aL/(2.0*mq) + 2.*md*md*aL/(mQ*aLLp2) - (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2)); F3 = I*2.*md*md*aL/(mQ*aLLp2); G1 = I*( 2.0*md/aL - aL/(6.*mQ) + (md*aL/(6.*mq*mQ*aLLp2))*( 3.*aL2 - 2.*aLp2)); G2 = I*( -2.*md/aL + aL/(2.*mq) + aL/(3.*mQ) ); G3 = I*aL/(3.*mQ)*( 1.0 - (md/(2.*mq*aLLp2))*( 3.*aL2 - 2.*aLp2)); // Set form factors to be passed to the amplitude calc. *f1 = F1; *f2 = F2; *f3 = F3; *g1 = G1; *g2 = G2; *g3 = G3; } } else { *f1 = 1.0; *f2 = 1.0; *f3 = 0.0; *g1 = 1.0; *g2 = 1.0; *g3 = 0.0; } return ; } void EvtBaryonPCRFF::getraritaff( EvtId parent, EvtId daught, double q2, double /* mass */, double *f1, double *f2, double *f3, double *f4, double *g1, double *g2, double *g3, double *g4 ) { // Baryons (partial list 5/28/04) static EvtId LAMB=EvtPDL::getId("Lambda_b0"); static EvtId LAMBB=EvtPDL::getId("anti-Lambda_b0"); static EvtId LAMC2P=EvtPDL::getId("Lambda_c(2625)+"); static EvtId LAMC2M=EvtPDL::getId("anti-Lambda_c(2625)-"); double F1, F2, F3, F4, G1, G2, G3, G4; if( parent==LAMB || parent==LAMBB ) { // Implement constituent quark model form factors predicted // by M. Pervin, W. Roberst, and S. Capstick, Phys. Rev. C72, 035201 (2005) if( daught==LAMC2P|| daught==LAMC2M ) { double mQ = 5.28; double mq = 1.89; double md = 0.40; double MLamB = EvtPDL::getMass(parent); double MLamC = EvtPDL::getMass(daught); double aL = 0.59; double aLp = 0.47; double aL2 = aL*aL; double aLp2 = aLp*aLp; double aLLp2 = 0.5*(aL2+aLp2); // relativistic correction factor double k2 = 1.0; double rho2 = 3.*md*md/(2.*k2*aLLp2); // w = scalar product of the 4 velocities of the Lb and Lc. double w = 0.5*(MLamB*MLamB + MLamC*MLamC - q2)/MLamB/MLamC; double I = -(1./sqrt(3.))*pow(aL*aLp/aLLp2, 2.5)*exp(-rho2*(w*w-1.)); // Calculate the form factors F1 = I*3.0*md/aL*( 1.0 + (md/aLLp2)*( (aLp2/mq)+(aL2/mQ) ) ); F2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL2)) - 5.*aL*aLp2*md/(4.*aLLp2*mq*mQ) ); F3 = -I*( 3.*md*md*aL/(mQ*aLLp2) + aL/(2.*mQ) ); F4 = I*aL/mQ; G1 = I*( 3.0*md/aL - (aL/(2.*mQ))*(1. + 3.*md*aLp2/(2.*aLLp2*mq) ) ); G2 = -I*( (3.*md*md/mq)*(aLp2/(aLLp2*aL)) + aL*aLp2*md/(4.*aLLp2*aLLp2*mq*mQ)*(aLLp2+12.*md*md) ); G3 = I*aL/(mQ*aLLp2)*( aLLp2/2. + 3.*md*md + aLp2*md/(mq*aLLp2)*(aLLp2+6.*md*md) ); G4 = -I*( aL/mQ + md/(mq*mQ)*aLp2*aL/aLLp2 ); // Set form factors to be passed to the amplitude calc. *f1 = F1; *f2 = F2; *f3 = F3; *f4 = F4; *g1 = G1; *g2 = G2; *g3 = G3; *g4 = G4; } } else { *f1 = 1.0; *f2 = 1.0; *f3 = 0.0; *f4 = 0.0; *g1 = 1.0; *g2 = 1.0; *g3 = 0.0; *g4 = 0.0; } return ; } void EvtBaryonPCRFF::getscalarff(EvtId, EvtId, double, double, double*, double*) { report(ERROR,"EvtGen") << "Not implemented :getscalarff in EvtBaryonPCRFF.\n"; ::abort(); } void EvtBaryonPCRFF::getvectorff(EvtId, EvtId, double, double, double*, double*, double*, double*) { report(ERROR,"EvtGen") << "Not implemented :getvectorff in EvtBaryonPCRFF.\n"; ::abort(); } void EvtBaryonPCRFF::gettensorff(EvtId, EvtId, double, double, double*, double*, double*, double*) { report(ERROR,"EvtGen") << "Not implemented :gettensorff in EvtBaryonPCRFF.\n"; ::abort(); } void EvtBaryonPCRFF::getbaryonff(EvtId, EvtId, double, double, double*, double*, double*, double*){ report(ERROR,"EvtGen") << "Not implemented :getbaryonff in EvtBaryonPCRFF.\n"; ::abort(); }