00001 #ifndef BaseFlatGunProducer_H 00002 #define BaseFlatGunProducer_H 00003 00009 #include <string> 00010 00011 #include "HepPDT/defs.h" 00012 #include "HepPDT/TableBuilder.hh" 00013 #include "HepPDT/ParticleDataTable.hh" 00014 00015 #include "HepMC/GenEvent.h" 00016 00017 #include "FWCore/Framework/interface/ESHandle.h" 00018 #include "FWCore/Framework/interface/EDProducer.h" 00019 #include "FWCore/Framework/interface/EventSetup.h" 00020 #include "FWCore/Framework/interface/Run.h" 00021 00022 #include "CLHEP/Random/JamesRandom.h" 00023 #include "CLHEP/Random/RandFlat.h" 00024 00025 #include <memory> 00026 #include "boost/shared_ptr.hpp" 00027 00028 namespace edm 00029 { 00030 00031 class BaseFlatGunProducer : public EDProducer 00032 { 00033 00034 public: 00035 BaseFlatGunProducer(const ParameterSet &); 00036 virtual ~BaseFlatGunProducer(); 00037 void beginRun( edm::Run & r, const edm::EventSetup& ) ; 00038 void endRun( edm::Run& r, const edm::EventSetup& ) ; 00039 00040 private: 00041 00042 protected: 00043 00044 // non-virtuals ! this and only way ! 00045 // 00046 // data members 00047 00048 // gun particle(s) characteristics 00049 std::vector<int> fPartIDs ; 00050 double fMinEta ; 00051 double fMaxEta ; 00052 double fMinPhi ; 00053 double fMaxPhi ; 00054 00055 // the event format itself 00056 HepMC::GenEvent* fEvt; 00057 00058 // HepMC/HepPDT related things 00059 // (for particle/event construction) 00060 //std::string fPDGTablePath ; 00061 //std::string fPDGTableName ; 00062 // DefaultConfig::ParticleDataTable* fPDGTable; 00063 // DefaultConfig::ParticleDataTable* fTestTable ; 00064 // ESHandle<DefaultConfig::ParticleDataTable> fPDGTable ; 00065 ESHandle<HepPDT::ParticleDataTable> fPDGTable ; 00066 00067 int fVerbosity ; 00068 00069 CLHEP::HepRandomEngine& fRandomEngine ; 00070 CLHEP::RandFlat* fRandomGenerator; 00071 00072 bool fAddAntiParticle; 00073 00074 }; 00075 } 00076 00077 #endif