EvtBtoXsgammaAliGreub Class Reference

#include <EvtBtoXsgammaAliGreub.hh>

Inheritance diagram for EvtBtoXsgammaAliGreub:

EvtBtoXsgammaAbsModel List of all members.

Public Member Functions

 EvtBtoXsgammaAliGreub ()
virtual ~EvtBtoXsgammaAliGreub ()
void init (int, double *)
double GetMass (int code)

Detailed Description

Definition at line 28 of file EvtBtoXsgammaAliGreub.hh.


Constructor & Destructor Documentation

EvtBtoXsgammaAliGreub::EvtBtoXsgammaAliGreub (  )  [inline]

Definition at line 32 of file EvtBtoXsgammaAliGreub.hh.

00032 {}

EvtBtoXsgammaAliGreub::~EvtBtoXsgammaAliGreub (  )  [virtual]

Definition at line 47 of file EvtBtoXsgammaAliGreub.cc.

00047 {}


Member Function Documentation

double EvtBtoXsgammaAliGreub::GetMass ( int  code  )  [virtual]

Implements EvtBtoXsgammaAbsModel.

Definition at line 63 of file EvtBtoXsgammaAliGreub.cc.

References Bes_Common::DEBUG, exp(), EvtRandom::Flat(), mass, max, min, and report().

00063                                                 {
00064 
00065   // The special lineshape for strange hadrons X_s in b -> s gamma:
00066   // An 18 parameter function fitted to the theoretical mass spectrum
00067   // of Ali & Greub for a B meson mass of 5.279 GeV; top quark mass of
00068   // 174.3 GeV; strange quark mass of 0.48 GeV (tuned to give minimum 
00069   // M_Xs of 0.64 GeV) and Fermi momentum of 265 MeV for spectator quark
00070   // mass of 150 MeV (from CLEO fit). Truncated at max on high side
00071   // and min (just above K pi or KK thresold) on low side.
00072   double min=0.64;
00073   double max=4.5;
00074   double xbox, ybox, alifit;
00075   double mass=0.0;
00076 
00077   double par[18];
00078   if ((Xscode == 30343) || (Xscode == -30343) || 
00079       (Xscode == 30353) || (Xscode == -30353)) { // Xsu or Xsd
00080     min=0.6373; //  Just above K pi threshold for Xsd/u
00081     //min=0.6333; //  K pi threshold for neutral Xsd
00082     par[0]=-2057.2380371094;
00083     par[1]=2502.2556152344;
00084     par[2]=1151.5632324219;
00085     par[3]=0.82431584596634;
00086     par[4]=-4110.5234375000;
00087     par[5]=8445.6757812500;
00088     par[6]=-3034.1894531250;
00089     par[7]=1.1557708978653;
00090     par[8]=1765.9311523438;
00091     par[9]=1.3730158805847;
00092     par[10]=0.51371538639069;
00093     par[11]=2.0056934356689;
00094     par[12]=37144.097656250;
00095     par[13]=-50296.781250000;
00096     par[14]=27319.095703125;
00097     par[15]=-7408.0678710938;
00098     par[16]=1000.8093261719;
00099     par[17]=-53.834449768066;
00100   } else if ((Xscode == 30363) || (Xscode == -30363)) {
00101     min = 0.9964; // Just above KK threshold for Xss
00102     par[0]=-32263.908203125;
00103     par[1]=57186.589843750;
00104     par[2]=-24230.728515625;
00105     par[3]=1.1155973672867;
00106     par[4]=-12161.131835938;
00107     par[5]=20162.146484375;
00108     par[6]=-7198.8564453125;
00109     par[7]=1.3783323764801;
00110     par[8]=1995.1691894531;
00111     par[9]=1.4655895233154;
00112     par[10]=0.48869228363037;
00113     par[11]=2.1038570404053;
00114     par[12]=55100.058593750;
00115     par[13]=-75201.703125000;
00116     par[14]=41096.066406250;
00117     par[15]=-11205.986328125;
00118     par[16]=1522.4024658203;
00119     par[17]=-82.379623413086;
00120   } else {
00121     report(DEBUG,"EvtGen") << "In EvtBtoXsgammaAliGreub: Particle with id " << Xscode << " is not a Xss particle"<<endl;
00122     return 0;
00123   }
00124 
00125   double boxheight=par[8];
00126   double boxwidth=max-min;
00127 
00128   while ((mass > max) || (mass < min)){
00129     xbox = EvtRandom::Flat(boxwidth)+min;
00130     ybox=EvtRandom::Flat(boxheight);
00131     if (xbox<par[3]) {
00132       alifit=par[0]+par[1]*xbox+par[2]*pow(xbox,2);
00133     } else if (xbox<par[7]) {
00134       alifit=par[4]+par[5]*xbox+par[6]*pow(xbox,2);
00135     } else if (xbox<par[11]) {
00136       alifit=par[8]*exp(-0.5*pow((xbox-par[9])/par[10],2));
00137     } else {
00138       alifit=par[12]+par[13]*xbox+par[14]*pow(xbox,2)+par[15]*pow(xbox,3)+par[16]*pow(xbox,4)+par[17]*pow(xbox,5);
00139     }
00140     if (ybox>alifit) {
00141       mass=0.0;
00142     } else {
00143       mass=xbox;
00144     }
00145   }
00146   return mass;
00147 }

void EvtBtoXsgammaAliGreub::init ( int  ,
double *   
) [virtual]

Reimplemented from EvtBtoXsgammaAbsModel.

Definition at line 49 of file EvtBtoXsgammaAliGreub.cc.

References calibUtil::ERROR, and report().

00049                                                       {
00050  
00051   if ((nArg - 1) != 0) {
00052     
00053     report(ERROR,"EvtGen") << "EvtBtoXsgamma generator model "
00054                            << "EvtBtoXsgammaAliGreub expected " 
00055                            << "zero arguments but found: "<<nArg-1<<endl;
00056     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
00057     ::abort();
00058   
00059   }
00060  
00061 }


Generated on Tue Nov 29 23:18:55 2016 for BOSS_7.0.2 by  doxygen 1.4.7