00001 #ifndef gen_ExternalDecays_TauolaInterface_h 00002 #define gen_ExternalDecays_TauolaInterface_h 00003 00004 // #include "HepPDT/defs.h" 00005 // #include "HepPDT/TableBuilder.hh" 00006 #include "HepPDT/ParticleDataTable.hh" 00007 00008 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00009 #include "FWCore/Framework/interface/ESHandle.h" 00010 #include "FWCore/Framework/interface/EventSetup.h" 00011 00012 namespace HepMC 00013 { 00014 class GenEvent; 00015 } 00016 00017 namespace CLHEP 00018 { 00019 class HepRandomEngine; 00020 } 00021 00022 namespace gen { 00023 00024 /* for old tauola27 */ 00025 class TauolaInterface 00026 { 00027 public: 00028 00029 // ctor & dtor 00030 TauolaInterface( const edm::ParameterSet& ); 00031 ~TauolaInterface(); 00032 00033 void enablePolarization() { fPolarization = 1; return; } 00034 void disablePolarization() { fPolarization = 0; return; } 00035 void init( const edm::EventSetup& ); 00036 const std::vector<int>& operatesOnParticles() { return fPDGs; } 00037 HepMC::GenEvent* decay( HepMC::GenEvent* ); 00038 void statistics() ; 00039 00040 private: 00041 00042 // 00043 std::vector<int> fPDGs; 00044 int fPolarization; 00045 00046 edm::ESHandle<HepPDT::ParticleDataTable> fPDGTable ; 00047 Pythia6Service* fPy6Service; 00048 bool fIsInitialized; 00049 //CLHEP::HepRandomEngine* fRandomEngine; 00050 //CLHEP::RandFlat* fRandomGenerator; 00051 00052 }; 00053 /* */ 00054 00055 /* this is the code for new Tauola++ 00056 00057 extern "C" { 00058 void ranmar_( float *rvec, int *lenv ); 00059 void rmarin_( int*, int*, int* ); 00060 } 00061 00062 class TauolaInterface 00063 { 00064 public: 00065 00066 // ctor & dtor 00067 // TauolaInterface( const edm::ParameterSet& ); 00068 static TauolaInterface* getInstance() ; 00069 ~TauolaInterface(); 00070 00071 void setPSet( const edm::ParameterSet& ); 00072 void enablePolarization() { fPolarization = true; return; } 00073 void disablePolarization() { fPolarization = false; return; } 00074 void init( const edm::EventSetup& ); 00075 const std::vector<int>& operatesOnParticles() { return fPDGs; } 00076 HepMC::GenEvent* decay( HepMC::GenEvent* ); 00077 void statistics() ; 00078 00079 private: 00080 00081 friend void gen::ranmar_( float *rvec, int *lenv ); 00082 00083 // ctor 00084 TauolaInterface(); 00085 00086 // member function(s) 00087 float flat(); 00088 00089 // 00090 CLHEP::HepRandomEngine* fRandomEngine; 00091 std::vector<int> fPDGs; 00092 bool fPolarization; 00093 edm::ESHandle<HepPDT::ParticleDataTable> fPDGTable ; 00094 edm::ParameterSet* fPSet; 00095 bool fIsInitialized; 00096 00097 static TauolaInterface* fInstance; 00098 00099 }; 00100 00101 */ 00102 00103 } 00104 00105 #endif