LCOV - code coverage report
Current view: top level - TEvtGen/EvtGen/EvtGenModels - EvtBtoXsEtap.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 37 0.0 %
Date: 2016-06-14 17:26:59 Functions: 0 8 0.0 %

          Line data    Source code
       1             : //--------------------------------------------------------------------------
       2             : //
       3             : //
       4             : // Copyright Information: See EvtGen/COPYRIGHT
       5             : //
       6             : // Environment:
       7             : //      This software is part of the EvtGen package developed jointly
       8             : //      for the BaBar and CLEO collaborations.  If you use all or part
       9             : //      of it, please give an appropriate acknowledgement.
      10             : //
      11             : // Module: EvtBtoXsEtap.cc
      12             : //
      13             : // Description: Routine to perform two-body non-resonant B->Xs,gluon decays.
      14             : // It generates an X_s mass spectrum based on a parameterisation of the
      15             : // b->s,gluon  spectrum of Atwood-Soni. The resultant X_s particles may
      16             : // be decayed by JETSET.
      17             : //
      18             : // Modification history:
      19             : //
      20             : //    Adlene Hicheur       January 10, 2001       Module created
      21             : //------------------------------------------------------------------------
      22             : //
      23             : #include "EvtGenBase/EvtPatches.hh"
      24             : 
      25             : #include <stdlib.h>
      26             : #include "EvtGenBase/EvtRandom.hh"
      27             : #include "EvtGenBase/EvtParticle.hh"
      28             : #include "EvtGenBase/EvtGenKine.hh"
      29             : #include "EvtGenBase/EvtPDL.hh"
      30             : #include "EvtGenBase/EvtReport.hh"
      31             : #include "EvtGenModels/EvtBtoXsEtap.hh"
      32             : #include <string>
      33             : #include "EvtGenBase/EvtConst.hh"
      34             : using std::endl;
      35             : 
      36           0 : EvtBtoXsEtap::~EvtBtoXsEtap() {}
      37             : 
      38             : std::string EvtBtoXsEtap::getName(){
      39             : 
      40           0 :   return "BTOXSETAP";     
      41             : 
      42             : }
      43             : 
      44             : EvtDecayBase* EvtBtoXsEtap::clone(){
      45             : 
      46           0 :   return new EvtBtoXsEtap;
      47             : 
      48           0 : }
      49             : 
      50             : 
      51             : void EvtBtoXsEtap::init(){
      52             : 
      53             :   // check that there are no arguments
      54             : 
      55           0 :   checkNArg(0);
      56           0 : }
      57             : 
      58             : void EvtBtoXsEtap::initProbMax(){
      59             : 
      60           0 :   noProbMax();
      61             : 
      62           0 : }
      63             : 
      64             : void EvtBtoXsEtap::decay( EvtParticle *p ){
      65             : 
      66             :   // useless
      67             :   //  if ( p->getNDaug() != 0 ) {
      68             :   //  //Will end up here because maxrate multiplies by 1.2
      69             :   //  report(Severity::Debug,"EvtGen") << "In EvtBtoXsEtap: X_s daughters should not be here!"<<endl;
      70             :   //  return;
      71             :   //}
      72             : 
      73             :   double m_b;
      74             :   int i;
      75           0 :   p->makeDaughters(getNDaug(),getDaugs());
      76           0 :   EvtParticle *pdaug[MAX_DAUG];
      77             : 
      78           0 :   for(i=0;i<getNDaug();i++){
      79           0 :      pdaug[i]=p->getDaug(i);   
      80             :   }
      81             : 
      82           0 :   static EvtVector4R p4[MAX_DAUG];
      83             :   static double mass[MAX_DAUG];
      84             : 
      85           0 :   m_b = p->mass();
      86             : 
      87             :   // Prepare for phase space routine.
      88             : 
      89           0 :   mass[1] = EvtPDL::getMass(getDaug(1));
      90             : 
      91             :   double xbox, ybox, min, max,hichfit;
      92             :   min=0.493;
      93             :   max=4.3;
      94           0 :   const double TwoPi = EvtConst::twoPi;
      95           0 :   int Xscode = EvtPDL::getStdHep(getDaug(0));
      96             : 
      97             :   // A five parameters fit, the shape is taken from Atwood & Soni
      98             : 
      99             :   //  double par[18];
     100             :   double par[6];
     101           0 :   if ((Xscode == 30343) || (Xscode == -30343) || 
     102           0 :       (Xscode == 30353) || (Xscode == -30353)) { // Xsu or Xsd
     103             :     min=0.6373; //  Just above K pi threshold for Xsd/u
     104             :     //min=0.6333; //  K pi threshold for neutral Xsd
     105             :     //    par[0]=-2057.2380371094;
     106             :     par[0]=2.36816;
     107             :     //    par[1]=2502.2556152344;
     108             :     par[1]=0.62325725;
     109             :     //    par[2]=1151.5632324219;
     110             :     par[2]=2.2;
     111             :     //    par[3]=0.82431584596634;
     112             :     par[3]=-0.2109375;
     113             :     //    par[4]=-4110.5234375000;
     114             :     par[4]=2.7;
     115             :     //    par[5]=8445.6757812500;
     116             :     par[5]=0.54;
     117             :     //    par[6]=-3034.1894531250;
     118             :     //    par[7]=1.1557708978653;
     119             :     //    par[8]=1765.9311523438;
     120             :     //    par[9]=1.3730158805847;
     121             :     //    par[10]=0.51371538639069;
     122             :     //    par[11]=2.0056934356689;
     123             :     //    par[12]=37144.097656250;
     124             :     //    par[13]=-50296.781250000;
     125             :     //    par[14]=27319.095703125;
     126             :     //    par[15]=-7408.0678710938;
     127             :     //    par[16]=1000.8093261719;
     128             :     //    par[17]=-53.834449768066;
     129             :   } else {
     130           0 :     report(Severity::Debug,"EvtGen") << "In EvtBtoXsEtap: Particle with id " << Xscode << " is not a Xsd/u particle"<<endl;
     131           0 :     return;
     132             :   }
     133             : 
     134             :   double boxheight=par[5];
     135             :   double boxwidth=max-min;
     136             : 
     137           0 :   mass[0]=0.0;
     138           0 :   while ((mass[0] > max) || (mass[0] < min)){
     139           0 :     xbox = EvtRandom::Flat(boxwidth)+min;
     140           0 :     ybox=EvtRandom::Flat(boxheight);
     141           0 :     if (xbox<par[2]) {
     142             : 
     143           0 :       hichfit=(1/sqrt(TwoPi*par[1]))*exp(-0.5*pow((xbox-par[0])/par[1],2));      
     144             :       //      alifit=par[0]+par[1]*xbox+par[2]*pow(xbox,2);
     145             :       //    } else if (xbox<par[7]) {
     146             :       //      alifit=par[4]+par[5]*xbox+par[6]*pow(xbox,2);
     147             :       //    } else if (xbox<par[11]) {
     148             :       //      alifit=par[8]*exp(-0.5*pow((xbox-par[9])/par[10],2));
     149           0 :     } else {
     150           0 :       hichfit=par[3]*pow((xbox-par[4]),2)+par[5];
     151             :       //      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);
     152             :     }
     153           0 :     if (ybox>hichfit) {
     154           0 :       mass[0]=0.0;
     155           0 :     } else {
     156           0 :       mass[0]=xbox;
     157             :     }
     158             :   }
     159             : 
     160             :   // debug stuff:  report(Severity::Info,"EvtGen") << "Xscode " << Xscode << " daughter 1 mass " << mass[0] << " daughter 2 mass " << mass[1] << endl;
     161             : 
     162           0 :   EvtGenKine::PhaseSpace( getNDaug(), mass, p4, m_b );
     163             : 
     164           0 :   for(i=0;i<getNDaug();i++){
     165           0 :      pdaug[i]->init( getDaugs()[i], p4[i] );
     166             :   }
     167             : 
     168             :   return ;
     169           0 : }
     170             : 
     171             : 

Generated by: LCOV version 1.11