/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtXsection.hh

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 //
00003 // Environment:
00004 //      This software is part of models developed at BES collaboration
00005 //      based on the EvtGen framework.  If you use all or part
00006 //      of it, please give an appropriate acknowledgement.
00007 //
00008 // Copyright Information: See EvtGen/BesCopyright
00009 //      Copyright (A) 2006      Ping Rong-Gang @IHEP
00010 //
00011 // Module: EvtXsection.hh
00012 //
00013 // Description: To define cross section for the continuum exclusive process
00014 // Experimental cross section taken from PRD73,012005, PRD76,092006, also 
00015 // see a review: Rev. Mod. Phys. 83,1545
00016 // Modification history:
00017 //
00018 //    Ping R.-G.       Nov., 2012       Module created
00019 //
00020   /*******************--- mode definition: also see EvtXsection.cc
00021   0: ppbar
00022   1: nnbar
00023   2: Lambda0 anti-Lambda0
00024   3: Sigma0 anti-Sigma0
00025   4: Lambda0 anti-Sigma0
00026   5: Sigma0 anti-Lambda0
00027   6: pi+ pi-
00028   7: pi+ pi- pi0
00029   8: K+K- pi0
00030   9: KsK+pi- 
00031   10: KsK-pi+
00032   11: K+K-eta
00033   12: 2(pi+pi-)
00034   13: pi+pi-2pi0
00035   14: K+K-pi+pi-
00036   15: K+K-2pi0
00037   16: 2(K+K-)
00038   17: 2(pi+pi-)pi0
00039   18: 2(pi+pi-)eta
00040   19: K+K-pi+pi-pi0             
00041   20: K+K-pi+pi-eta
00042   21: 3(pi+pi-)
00043   22: 2(pi+pi-pi0)
00044   23: phi eta
00045   24: phi pi0
00046   25: K+K*-
00047   26: K-K*+
00048   27: K_SK*0-bar
00049   28: K*0(892)K+pi-
00050   29: K*0(892)K-pi+
00051   30: K*+K-pi0
00052   31: K*-K+pi0
00053   32: K_2*(1430)0 K+pi-
00054   33: K_2*(1430)0 K-pi+
00055   34: K+K-rho
00056   35: phi pi+pi-
00057   36: phi f0(980)
00058   37: eta pi+pi-
00059   38: omega pi+ pi-
00060   39: omega f0(980)
00061   40: eta' pi+ pi-
00062   41: f_1(1285)pi+pi-
00063   42: omega K+K-
00064   43: omega pi+pi-pi0
00065   44: Sigma+ Sigma- (Sigma0 Sigma0-bar SU(3) extention )
00066   45: K+K-
00067   46: K_S K_L
00068 
00069   70: D0D0-bar
00070   71: D+D-
00071   72: D+D*-
00072   73: D-D*+
00073   74: D*+D*-
00074   75: D0D-pi+
00075   76: D0D+pi-
00076   77: D0D*-pi+
00077   78: D0D*+pi-
00078   79: Lambda_c+ Lambda_c-
00079   
00080 
00081   90: J/psi pi+ pi-
00082   91: psi(2S)pi+pi-
00083   92: J/psi K+K- 
00084   93: D_s+ D_s-
00085   94: D_s^{*+}D_s^-
00086   95: D_s^{*-}D_s^+
00087   
00088   *************************************/
00089 //------------------------------------------------------------------------
00090 //
00091 #ifndef EVTXSECTION_HH
00092 #define EVTXSECTION_HH
00093 
00094 #include <math.h>
00095 #include <string.h>
00096 #include <stdlib.h>
00097 #include <string>
00098 #include <vector>
00099 #include <ostream>
00100 #include <fstream>
00101 #include <iostream>
00102 #include <algorithm>
00103 #include "EvtGenBase/EvtId.hh"
00104 #include "EvtGenBase/EvtComplex.hh"
00105 using namespace std;
00106 
00107 class EvtXsection{
00108  public:
00109   EvtXsection(std::vector<EvtId> evtdaugs){
00110     xx.clear();yy.clear();er.clear();
00111     _mode = getMode(evtdaugs);
00112     ini_data(_mode);
00113   
00114   }
00115   EvtXsection(int mode){
00116     xx.clear();yy.clear();er.clear();
00117     _mode = mode;
00118     if(mode>=0){
00119     ini_data(_mode);
00120     }else if(mode==-1){//calculate the correction factor with Breit-wigner
00121       _unit="nb";
00122     }else if(mode==-2){//users provide the cross section list
00123       //std::cout<<"user diy"<<std::endl;
00124        ini_data_diy();
00125     }
00126     //std::cout<<"The mode is : "<<_mode<<", "<<xx[0]<<", "<<yy[0]<<std::endl;
00127   }
00128 
00129   virtual ~EvtXsection();
00130 
00131   int getMode(std::vector<EvtId> evtdaugs);
00132   void ini_data0(int mode);  // exper. cross section data table
00133   void ini_data(int mode);   // fitted results on the cross section of expe. xsection
00134   void ini_data_diy();
00135   double getXsection(double mx);
00136   double getErr(double mx);
00137   double Xsection_a(double mx);//for bin given by up and lower edge
00138   double Xsection_b(double mx);//for bin given by a center value
00139   double Xsection_c(double mx);//for xsection calculated with breit-wigner
00140 
00141   double Err_a(double mx);//for bin given by up and lower edge
00142   double Err_b(double mx);//for bin given by a center value
00143 
00144   int getXBin(double mx,std::vector<double> vy);
00145   int getXBin_a(double mx );//for bin given by up and lower edge
00146   int getXBin_b(double mx );//for bin given by a center value
00147   std::string getUnit(){return _unit;}
00148 
00149   std::vector<double> getXX(){return xx;}
00150   std::vector<double> getYY(){return yy;}
00151   std::vector<double> getEr(){return er;}
00152   double getXup(){return xx[nbins-1];}
00153   double getXlw(){return xx[0];}
00154   std::string getMsg(){return msg;}
00155   void setBW(int pdg);
00156   void setFile(std::string name){file = name;}
00157   double getVP(double mx);
00158   void ReadVP();
00159  private:
00160 //e+e- --> ppbar mode, xsection taken from PRD73,012005
00161   std::vector<double> xx,yy,er;
00162   int nbins,_mode;
00163   std::string _unit,msg;
00164   // calculate cross section with Breit-Wigner
00165   int pdgcode;
00166   double bree;
00167   // user provide xsection list
00168   std::string file;
00169   std::vector<double> vpx,vpr,vpi;
00170 };
00171 
00172 #endif

Generated on Tue Nov 29 23:12:24 2016 for BOSS_7.0.2 by  doxygen 1.4.7