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 CVS repository 00009 // Copyright (A) 2011 Ping Rong-Gang 00010 // 00011 // Module: EvtOpenCharm.cc 00012 // 00013 // Description: Routine to decay charmonium-> DD, DDpi according the 00014 // cross section measurement by CLEO PRD 80, 072001. 00015 // 00016 // Modification history: 00017 // 00018 // Ping R.-G. December, 2011 Module created 00019 // 00020 //------------------------------------------------------------------------ 00021 // 00022 00023 00024 #ifndef EVTOPENCHARM_HH 00025 #define EVTOPENCHARM_HH 00026 00027 #include "EvtGenBase/EvtDecayIncoherent.hh" 00028 00029 00030 class EvtParticle; 00031 00032 typedef EvtDecayBase* EvtDecayBasePtr; 00033 00034 #include <iosfwd> 00035 00036 class EvtOpenCharm:public EvtDecayIncoherent { 00037 00038 public: 00039 00040 EvtOpenCharm(); 00041 virtual ~EvtOpenCharm(); 00042 00043 void getName(std::string& name); 00044 EvtDecayBase* clone(); 00045 void decay(EvtParticle *p); 00046 00047 std::string commandName(); 00048 void command(std::string cmd); 00049 00050 void init(); 00051 00052 void initProbMax(); 00053 int getTotalEvt(){return nevt;} 00054 static void OpencrmInit(int f); 00055 00056 static int myiter; 00057 00058 bool isbelong(EvtId myid); 00059 int which_mode(EvtId myid); 00060 00061 private: 00062 00063 void store(EvtDecayBase* jsdecay); 00064 void fixPolarizations(EvtParticle* p); 00065 00066 static int nOpencharmdecays; 00067 static EvtDecayBasePtr* Opencharmdecays; 00068 static int ntable; 00069 00070 static int ncommand; 00071 static int lcommand; 00072 static std::string* commands; 00073 static int nevt; 00074 00075 int theMode; 00076 std::vector<EvtId> theId; 00077 int ndaugjs; 00078 static std::vector<EvtId> mypar; 00079 static std::vector<int> vmode; 00080 static std::vector<double> Vcms; 00081 int _index; 00082 }; 00083 00084 #endif 00085 00086 00087 00088