00001 //-------------------------------------------------------------------------- 00002 // 00003 // Environment: 00004 // This software is part of the EvtGen package developed jointly 00005 // for the BaBar and CLEO collaborations. If you use all or part 00006 // of it, please give an appropriate acknowledgement. 00007 // 00008 // Copyright Information: See EvtGen/COPYRIGHT 00009 // Copyright (C) 1998 Caltech, UCSB 00010 // 00011 // Module: EvtGen/EvtVubHybrid.hh 00012 // 00013 // Description: 00014 // Class to generate inclusive B to X_u l nu decays. 00015 // This class is based on EvtVub by Sven Menke with an update to 00016 // generate the inclusive decays in such a way that the right 00017 // mix of inclusive and exclusive decays is obtained: 00018 // "Hybrid Model" by Dominique Fortin. 00019 // NOTE: 00020 // - A set of weights (for bins in the kinematic variables mX, q2, El) 00021 // is read from DECAY.DEC. This set of weights must be consistent 00022 // with the other parameters specified (excl. BF, non-res BF, mb, a). 00023 // - If no binning/weights are specified in DECAY.DEC the hybrid 00024 // reweighting is not activated 00025 // 00026 // Modification history: 00027 // 00028 // Jochen Dingfelder February 1, 2005 Created Module as update of 00029 // the module EvtVub including 00030 // hybrid model. 00031 //------------------------------------------------------------------------ 00032 00033 #ifndef EVTVUBHYBRID_HH 00034 #define EVTVUBHYBRID_HH 00035 00036 #include "EvtGenBase/EvtDecayIncoherent.hh" 00037 00038 #include <vector> 00039 00040 class EvtParticle; 00041 class EvtVubdGamma; 00042 class RandGeneral; 00043 00044 class EvtVubHybrid:public EvtDecayIncoherent { 00045 00046 public: 00047 00048 EvtVubHybrid(); 00049 virtual ~EvtVubHybrid(); 00050 00051 void getName(std::string& name); 00052 00053 EvtDecayBase* clone(); 00054 00055 void initProbMax(); 00056 00057 void init(); 00058 00059 void decay(EvtParticle *p); 00060 00061 void readWeights(int startArg=0); 00062 00063 double getWeight(double mX, double q2, double El); 00064 00065 private: 00066 double findPFermi(); 00067 00068 enum { nParameters = 3, nVariables = 3 }; 00069 00070 bool _noHybrid; 00071 bool _storeQplus; 00072 00073 double _mb; // the b-quark pole mass in GeV (try 4.65 to 4.9) 00074 double _a; // Parameter for the Fermi Motion (1.29 is good) 00075 double _alphas; // Strong Coupling at m_b (around 0.24) 00076 double _dGMax; // max dGamma*p2 value; 00077 int _nbins_mX; 00078 int _nbins_q2; 00079 int _nbins_El; 00080 int _nbins; 00081 double _masscut; 00082 double * _bins_mX; 00083 double * _bins_q2; 00084 double * _bins_El; 00085 double * _weights; 00086 EvtVubdGamma *_dGamma; // calculates the decay rate 00087 std::vector<double> _pf; 00088 }; 00089 00090 #endif 00091