00001 #ifndef FastSimulation_EventProducer_FamosManager_H 00002 #define FastSimulation_EventProducer_FamosManager_H 00003 00004 #include "DataFormats/HepMCCandidate/interface/GenParticleFwd.h" 00005 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 } 00017 00018 class FSimEvent; 00019 class TrajectoryManager; 00020 class PileUpSimulator; 00021 class MagneticField; 00022 class CalorimetryManager; 00023 class RandomEngine; 00024 00025 // using trailing _ for private data members, m_p prefix for PSet variables (MSt) 00026 00027 class FamosManager 00028 { 00029 public: 00030 00031 00033 FamosManager(edm::ParameterSet const & p); 00034 00036 ~FamosManager(); 00037 00039 void setupGeometryAndField(edm::Run & run, const edm::EventSetup & es); 00040 00042 // const HepMC::GenEvent* genEvent() const { return myGenEvent; }; 00043 // const reco::CandidateCollection* 00044 00046 FSimEvent* simEvent() const { return mySimEvent; } 00047 00049 void reconstruct(const HepMC::GenEvent* evt, 00050 const reco::GenParticleCollection* particles, 00051 const HepMC::GenEvent* pu); 00052 00054 TrajectoryManager * trackerManager() const {return myTrajectoryManager;} 00055 00057 CalorimetryManager * calorimetryManager() const {return myCalorimetry;} 00058 00059 00060 private: 00061 00062 int iEvent; 00063 // const HepMC::GenEvent* myGenEvent; 00064 FSimEvent* mySimEvent; 00065 TrajectoryManager* myTrajectoryManager; 00066 PileUpSimulator* myPileUpSimulator; 00067 CalorimetryManager * myCalorimetry; 00068 00069 private: 00070 00071 bool m_pUseMagneticField; 00072 bool m_Tracking; 00073 bool m_Calorimetry; 00074 bool m_Alignment; 00075 double weight_; 00076 int m_pRunNumber; 00077 int m_pVerbose; 00078 00079 private: 00080 00081 const RandomEngine* random; 00082 00083 }; 00084 00085 #endif