File indexing completed on 2024-04-06 12:13:30
0001 #ifndef gen_ConcurrentExternalDecayDriver_h
0002 #define gen_ConcurrentExternalDecayDriver_h
0003
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 #include "FWCore/Framework/interface/EventSetup.h"
0006
0007 #include <string>
0008 #include <vector>
0009
0010 namespace HepMC {
0011 class GenEvent;
0012 }
0013
0014 namespace CLHEP {
0015 class HepRandomEngine;
0016 }
0017
0018 namespace lhef {
0019 class LHEEvent;
0020 }
0021
0022 namespace gen {
0023
0024 class EvtGenInterfaceBase;
0025 class TauolaInterfaceBase;
0026 class PhotosInterfaceBase;
0027
0028 class ConcurrentExternalDecayDriver {
0029 public:
0030
0031 ConcurrentExternalDecayDriver(const edm::ParameterSet&);
0032 ~ConcurrentExternalDecayDriver();
0033
0034 void init(const edm::EventSetup&);
0035
0036 const std::vector<int>& operatesOnParticles() { return fPDGs; }
0037 const std::vector<std::string>& specialSettings() { return fSpecialSettings; }
0038
0039 HepMC::GenEvent* decay(HepMC::GenEvent* evt);
0040 HepMC::GenEvent* decay(HepMC::GenEvent* evt, lhef::LHEEvent* lheEvent);
0041
0042 void statistics() const;
0043
0044 void setRandomEngine(CLHEP::HepRandomEngine*);
0045
0046 private:
0047 bool fIsInitialized;
0048
0049
0050
0051 std::vector<int> fPDGs;
0052 std::vector<std::string> fSpecialSettings;
0053 };
0054
0055 }
0056
0057 #endif