Back to home page

Project CMSSW displayed by LXR

 
 

    


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     // ctor & dtor
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     //std::unique_ptr<TauolaInterfaceBase> fTauolaInterface;
0049     //std::unique_ptr<EvtGenInterfaceBase> fEvtGenInterface;
0050     //std::unique_ptr<PhotosInterfaceBase> fPhotosInterface;
0051     std::vector<int> fPDGs;
0052     std::vector<std::string> fSpecialSettings;
0053   };
0054 
0055 }  // namespace gen
0056 
0057 #endif