/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtConExc.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:  EvtConExc.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   /*******************--- mode definition: also see EvtXsection.cc
00017   0: ppbar
00018   1: nnbar
00019   2: Lambda0 anti-Lambda0
00020   3: Sigma0 anti-Sigma0
00021   4: Lambda0 anti-Sigma0
00022   5: Sigma0 anti-Lambda0
00023   6: pi+ pi-
00024   7: pi+ pi- pi0
00025   8: K+K- pi0
00026   9: KsK+pi- 
00027   10: KsK-pi+
00028   11: K+K-eta
00029   12: 2(pi+pi-)
00030   13: pi+pi-2pi0
00031   14: K+K-pi+pi-
00032   15: K+K-2pi0
00033   16: 2(K+K-)
00034   17: 2(pi+pi-)pi0
00035   18: 2(pi+pi-)eta
00036   19: K+K-pi+pi-pi0             
00037   20: K+K-pi+pi-eta
00038   21: 3(pi+pi-)
00039   22: 2(pi+pi-pi0)
00040   23: phi eta
00041   24: phi pi0
00042   25: K+K*-
00043   26: K-K*+
00044   27: K_SK*0-bar
00045   28: K*0(892)K+pi-
00046   29: K*0(892)K-pi+
00047   30: K*+K-pi0
00048   31: K*-K+pi0
00049   32: K_2*(1430)0 K+pi-
00050   33: K_2*(1430)0 K-pi+
00051   34: K+K-rho
00052   35: phi pi+pi-
00053   36: phi f0(980)
00054   37: eta pi+pi-
00055   38: omega pi+ pi-
00056   39: omega f0(980)
00057   40: eta' pi+ pi-
00058   41: f_1(1285)pi+pi-
00059   42: omega K+K-
00060   43: omega pi+pi-pi0  
00061   *************************************/
00062 // Modification history:
00063 //
00064 //    Ping R.-G.       Nov., 2012       Module created
00065 //
00066 //------------------------------------------------------------------------
00067 //
00068 #ifndef EVTCONEXC_HH
00069 #define EVTCONEXC_HH 
00070 
00071 //#include <string.h>
00072 #include "EvtGenBase/EvtId.hh"
00073 #include "EvtGenBase/EvtDecayIncoherent.hh"
00074 #include "EvtGenModels/EvtXsection.hh"
00075 //------ including root  
00076 #include "TH1.h" 
00077 #include "TH2.h"
00078 #include "TH3.h"
00079 #include "TFile.h"  
00080 #include "TROOT.h" 
00081 #include "TTree.h"
00082 #include "TGraphErrors.h"
00083 #include "TDirectory.h"
00084 
00085 class EvtParticle;
00086  
00087 class EvtConExc:public  EvtDecayIncoherent  {
00088 
00089 public:
00090   
00091   EvtConExc() {
00092   } //constructor
00093   //---
00094   virtual ~EvtConExc();
00095 
00096   void getName(std::string& name);
00097 
00098   EvtDecayBase* clone();
00099 
00100   void initProbMax();
00101 
00102   void init();
00103   void init_Br_ee();
00104 
00105   void decay(EvtParticle *p); 
00106   void init_mode(int mode);
00107   double gamHXSection(EvtParticle* p, double El, double Eh, int nmc=100000);
00108   double gamHXSection(double s, double El, double Eh, int nmc=100000);
00109   double gamHXSection(double El, double Eh);
00110   double gamHXSection(double El, double Eh,int mode);
00111   double gamHXSection_er(double El,double Eh);
00112 
00113   void  findMaxXS(EvtParticle *p);
00114   double difgamXs(EvtParticle* p); //differential cross section for gamma + hadrons
00115   double difgamXs(double mhds,double sintheta);
00116   double Mhad_sampling(double *x,double *y);
00117   double ISR_ang_integrate(double x,double theta);
00118   double ISR_ang_sampling(double x);
00119   bool hadron_angle_sampling(EvtVector4R ppi, EvtVector4R pcm);
00120   void SetP4(EvtParticle *part, double mhdr,double xeng, double theta); //set the gamma and gamma* momentum according sampled results
00121   void SetP4Rvalue(EvtParticle *part, double mhdr,double xeng, double theta); //set the gamma and gamma* momentum according sampled results
00122   bool gam_sampling(EvtParticle *p);
00123   bool xs_sampling(double xs);
00124   bool xs_sampling(double xs,double xs1);
00125   bool baryon_sampling(EvtVector4R pcm, EvtVector4R pi);//baryon angular distri. 1+cos^2\theta
00126   bool meson_sampling(EvtVector4R pcm, EvtVector4R pi); //meson angular distri. sin^2\theta
00127   bool VP_sampling(EvtVector4R pcm, EvtVector4R pi); //VP ang. dist. 1+cos^2theta
00128   bool angularSampling(EvtParticle* part);
00129   bool photonSampling(EvtParticle* part);
00130   double baryonAng(double mx);
00131   double Rad1(double s, double x);
00132   double Rad2(double s, double x);
00133   double Rad2difXs(EvtParticle *p);
00134   double Rad2difXs(double s, double x);
00135   double Rad1difXs(EvtParticle *p);
00136   double Ros_xs(double mx, double bree,EvtId pid);
00137   static EvtXsection *myxsection;
00138   static double _cms; //energy of CMS of ee beam
00139   static double XS_max;// maxium of cross section in experiment
00140   static double SetMthr;
00141 
00142   static int getMode;
00143   double Li2(double x);
00144   double SoftPhoton_xs(double s,double b);
00145   double lgr(double *x,double *y,int n,double t);
00146   bool islgr(double *x,double *y,int n,double t);
00147   double LLr(double *x,double *y,int n,double t);
00148   int selectMode(std::vector<int> vmod, double mhds);
00149   void findMaxXS(double mhds );
00150   bool gam_sampling(double mhds,double sintheta);
00151   void resetResMass();
00152   void getResMass();
00153   bool checkdecay(EvtParticle* p);
00154   double sumExc(double mx);
00155   void showResMass();
00156   int getNdaugs(){return _ndaugs;}
00157   EvtId* getDaugId(){return daugs;}
00158   int getSelectedMode(){return _selectedMode;}
00159   static int conexcmode;
00160   double narrowRXS(double mxL,double mxH);
00161   double selectMass();
00162   double addNarrowRXS(double mhi, double binwidth);
00163   void ReadVP();
00164   double getVP(double cms);
00165   void mk_VXS(double Esig,double Egamcut,double EgamH,int midx); //make a set of observed cross section for exclusive processes,including narrow resonance
00166   int get_mode_index(int mode);
00167   double getObsXsection(double mhds,int mode);
00168   double Egam2Mhds(double Egam);
00169   std::vector<EvtId> get_mode(int mode); 
00170   void writeDecayTabel();
00171   void checkEvtRatio();
00172   int getModeIndex(int m);
00173 private:
00174 
00175   int _mode,_ndaugs,radflag,testflag;
00176   EvtId daugs[10],gamId;//daugs[0]~dagus[_ndaugs-1] are hadrons, daugs[_ndaugs] is ISR gamma
00177   static double _xs0,_xs1; //cross section for 0 and 1-photon processes
00178   static double _er0,_er1; //cross section for 0 and 1-photon processes
00179   static int _nevt;
00180   std::vector<double> ISRXS,ISRM;
00181   std::vector<bool> ISRFLAG;
00182   EvtParticle* gamH;
00183   double maxXS;//maximum of diffrential cross section respective to cos\theta and mhds for ee->gamma hadrons
00184   double differ,differ2,Rad2Xs;
00185   std::string _unit;
00186   std::vector<double> BR_ee;
00187   std::vector<EvtId > ResId,ISRID;
00188 
00189   double Egamcut;
00190   //-- for deguggint to make root file
00191   TFile *myfile;
00192   Double_t pgam[4],phds[4],ph1[4],ph2[4],mhds,sumxs;
00193   Double_t mass1,mass2,costheta,selectmode;
00194   Double_t cosp,cosk;
00195   Int_t imode;
00196   TTree *xs;
00197   bool mydbg; //handler w/o debugging
00198   TGraphErrors *mygr;
00199   TH1F* myth,*Xobs,*Xsum;
00200   // for calulate the correction factor
00201   int pdgcode;
00202   std::string file;
00203   EvtId son[10],pid;
00204   int nson;
00205   double vph; //for vaccuam polarization calculation
00206   double AF[600],AA[600],MH[600],RadXS[600],EgamH;
00207 
00208   double mjsi,mpsip,mpsipp,mphi,momega,mrho0,mrho3s,momega2s;
00209   double wjsi,wpsip,wpsipp,wphi,womega,wrho0,wrho3s,womega2s;
00210   double _mhdL;
00211   double cmsspread;
00212   int _selectedMode;
00213   std::vector<int> _modeFlag;
00214   bool VISR;
00215   std::vector<int > vmode;
00216   static std::vector<std::vector <double> > VXS;
00217   std::vector<double> vpx,vpr,vpi;
00218   double Mthr;
00219   EvtParticle *theparent;
00220 };
00221 
00222 #endif
00223 

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