00001 #ifndef SimMuon_GEMDigitizer_h 00002 #define SimMuon_GEMDigitizer_h 00003 00011 #include "DataFormats/Common/interface/DetSetVector.h" 00012 #include "SimDataFormats/TrackerDigiSimLink/interface/StripDigiSimLink.h" 00013 #include "SimDataFormats/TrackingHit/interface/PSimHit.h" 00014 #include "DataFormats/GEMDigi/interface/GEMDigiCollection.h" 00015 #include "SimDataFormats/CrossingFrame/interface/MixCollection.h" 00016 #include <string> 00017 #include "CLHEP/Random/RandomEngine.h" 00018 00019 namespace edm{ 00020 class ParameterSet; 00021 } 00022 00023 class GEMEtaPartition; 00024 class GEMSim; 00025 class GEMSimSetUp; 00026 class GEMGeometry; 00027 00028 class GEMDigitizer 00029 { 00030 public: 00031 00032 typedef edm::DetSetVector<StripDigiSimLink> StripDigiSimLinks; 00033 00034 GEMDigitizer(const edm::ParameterSet& config, CLHEP::HepRandomEngine&); 00035 00036 ~GEMDigitizer(); 00037 00038 void digitize(MixCollection<PSimHit> & simHits, 00039 GEMDigiCollection & rpcDigis, 00040 StripDigiSimLinks & digiSimLinks); 00041 00043 void setGeometry(const GEMGeometry *geom) {geometry_ = geom;} 00044 00045 void setGEMSimSetUp(GEMSimSetUp *simsetup) {simSetUp_ = simsetup;} 00046 00047 GEMSimSetUp* getGEMSimSetUp() { return simSetUp_; } 00048 00050 const GEMEtaPartition * findDet(int detId) const; 00051 00052 private: 00053 00054 const GEMGeometry * geometry_; 00055 GEMSim* gemSim_; 00056 GEMSimSetUp * simSetUp_; 00057 std::string modelName_; 00058 }; 00059 00060 #endif