]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TEvtGen/EvtGenModels/EvtBaryonPCRFF.cpp
Updates EvtGen Code
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtBaryonPCRFF.cpp
diff --git a/TEvtGen/EvtGenModels/EvtBaryonPCRFF.cpp b/TEvtGen/EvtGenModels/EvtBaryonPCRFF.cpp
new file mode 100644 (file)
index 0000000..e5e8d14
--- /dev/null
@@ -0,0 +1,267 @@
+//--------------------------------------------------------------------------
+//
+// 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 <string>
+#include <math.h>
+#include <stdlib.h>
+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();
+
+}