00001 #ifndef SimMuon_Neutron_SubsystemNeutronReader_h 00002 #define SimMuon_Neutron_SubsystemNeutronReader_h 00003 00008 #include "SimDataFormats/TrackingHit/interface/PSimHit.h" 00009 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00010 #include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" 00011 #include "CLHEP/Random/RandomEngine.h" 00012 #include "CLHEP/Random/RandFlat.h" 00013 #include "CLHEP/Random/RandPoissonQ.h" 00014 #include<vector> 00015 class NeutronReader; 00016 00017 class SubsystemNeutronReader 00018 { 00019 public: 00023 SubsystemNeutronReader(const edm::ParameterSet & pset); 00024 virtual ~SubsystemNeutronReader(); 00025 00026 void setRandomEngine(CLHEP::HepRandomEngine & engine); 00027 00030 void generateChamberNoise(int chamberType, int chamberIndex, edm::PSimHitContainer & result); 00031 00032 void clear() {theChambersDone.clear();} 00033 00034 protected: 00037 virtual int detId(int chamberIndex, int localDetId ) = 0; 00038 00039 00040 private: 00041 00042 NeutronReader * theHitReader; 00043 00044 CLHEP::RandFlat * theRandFlat; 00045 CLHEP::RandPoissonQ * theRandPoisson; 00046 00048 std::vector<int> theChambersDone; 00049 00050 00052 float theLuminosity; 00053 float theStartTime; 00054 float theEndTime; 00056 float theEventsInWindow; 00057 00058 std::vector<double> theEventOccupancy; // Placed here so ctor init list order OK 00059 00060 }; 00061 00062 #endif 00063