00001 #ifndef FastSimulation_EventProducer_FamosManager_H 00002 #define FastSimulation_EventProducer_FamosManager_H 00003 00004 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h" 00005 #include "SimDataFormats/CrossingFrame/interface/CrossingFrame.h" 00006 #include <string> 00007 00008 namespace HepMC { 00009 class GenEvent; 00010 } 00011 00012 namespace edm { 00013 class ParameterSet; 00014 class EventSetup; 00015 class Run; 00016 class HepMCProduct; 00017 } 00018 00019 class FSimEvent; 00020 class TrajectoryManager; 00021 class PileUpSimulator; 00022 class MagneticField; 00023 class CalorimetryManager; 00024 class RandomEngine; 00025 00026 // using trailing _ for private data members, m_p prefix for PSet variables (MSt) 00027 00028 class FamosManager 00029 { 00030 public: 00031 00032 00034 FamosManager(edm::ParameterSet const & p); 00035 00037 ~FamosManager(); 00038 00040 void setupGeometryAndField(edm::Run & run, const edm::EventSetup & es); 00041 00043 // const HepMC::GenEvent* genEvent() const { return myGenEvent; }; 00044 // const reco::CandidateCollection* 00045 00047 FSimEvent* simEvent() const { return mySimEvent; } 00048 00050 void reconstruct(const HepMC::GenEvent* evt, 00051 const reco::GenParticleCollection* particles, 00052 const HepMC::GenEvent* pu); 00053 00054 void reconstruct(const reco::GenParticleCollection* particles); 00055 00057 TrajectoryManager * trackerManager() const {return myTrajectoryManager;} 00058 00060 CalorimetryManager * calorimetryManager() const {return myCalorimetry;} 00061 00062 00063 private: 00064 00065 int iEvent; 00066 // const HepMC::GenEvent* myGenEvent; 00067 FSimEvent* mySimEvent; 00068 TrajectoryManager* myTrajectoryManager; 00069 PileUpSimulator* myPileUpSimulator; 00070 CalorimetryManager * myCalorimetry; 00071 00072 private: 00073 00074 bool m_pUseMagneticField; 00075 bool m_Tracking; 00076 bool m_Calorimetry; 00077 bool m_Alignment; 00078 double weight_; 00079 int m_pRunNumber; 00080 int m_pVerbose; 00081 00082 private: 00083 00084 const RandomEngine* random; 00085 00086 }; 00087 00088 #endif