00001 #ifndef gen_ExternalDecayDriver_h 00002 #define gen_ExternalDecayDriver_h 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 #include "FWCore/Framework/interface/EventSetup.h" 00006 00007 namespace HepMC 00008 { 00009 class GenEvent; 00010 } 00011 00012 namespace gen { 00013 00014 class TauolaInterface; 00015 class EvtGenInterface; 00016 class PhotosInterface; 00017 00018 class ExternalDecayDriver 00019 { 00020 public: 00021 00022 // ctor & dtor 00023 ExternalDecayDriver( const edm::ParameterSet& ); 00024 ~ExternalDecayDriver(); 00025 00026 void init( const edm::EventSetup& ); 00027 00028 const std::vector<int>& operatesOnParticles() { return fPDGs; } 00029 const std::vector<std::string>& specialSettings() { return fSpecialSettings; } 00030 00031 HepMC::GenEvent* decay( HepMC::GenEvent* ); 00032 00033 void statistics() const; 00034 00035 private: 00036 00037 bool fIsInitialized; 00038 TauolaInterface* fTauolaInterface; 00039 EvtGenInterface* fEvtGenInterface; 00040 PhotosInterface* fPhotosInterface; 00041 std::vector<int> fPDGs; 00042 std::vector<std::string> fSpecialSettings; 00043 00044 }; 00045 00046 } 00047 00048 #endif