00001 #ifndef GEMDigitizer_GEMSimSetUp_h 00002 #define GEMDigitizer_GEMSimSetUp_h 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 #include "CondFormats/RPCObjects/interface/RPCStripNoises.h" 00006 #include "CondFormats/RPCObjects/interface/RPCClusterSize.h" 00007 #include "DataFormats/MuonDetId/interface/GEMDetId.h" 00008 00009 #include <map> 00010 #include <vector> 00011 00012 class GEMGeometry; 00013 class GEMDetId; 00014 00015 class GEMSimSetUp 00016 { 00017 public: 00018 00019 GEMSimSetUp(const edm::ParameterSet& ps); 00020 00021 virtual ~GEMSimSetUp() {} 00022 00023 void setup(); 00024 00025 void setup(std::vector<RPCStripNoises::NoiseItem> &vnoise, 00026 std::vector<float> &vcluster); 00027 00028 void setup(std::vector<RPCStripNoises::NoiseItem> &vnoise, 00029 std::vector<RPCClusterSize::ClusterSizeItem> &vClusterSize); 00030 00031 const std::vector<float>& getNoise(uint32_t id); 00032 00033 const std::vector<float>& getEfficiency(uint32_t id); 00034 00035 float getTime(uint32_t id); 00036 00037 const std::map< int, std::vector<float> >& getClusterMap(); 00038 00039 const std::vector<float>& getCluster(uint32_t id); 00040 00041 void setGeometry(const GEMGeometry * geom) {geometry_ = geom;} 00042 00043 const GEMGeometry * getGeometry() { return geometry_; } 00044 00045 private: 00046 00047 void setupNoiseAndEfficiency(std::vector<RPCStripNoises::NoiseItem> &vnoise); 00048 void setupTimeCalibration(GEMDetId id, float timing); 00049 00050 const GEMGeometry * geometry_; 00051 00052 std::map< uint32_t, std::vector<float> > mapDetIdNoise_; 00053 std::map< uint32_t, std::vector<float> > mapDetIdEfficiency_; 00054 std::map< GEMDetId, float> bxmap_; 00055 std::map< int, std::vector<float> > clusterMap_; 00056 std::map< uint32_t, std::vector<float> > mapDetClusterMap_; 00057 00058 double averageEfficiency_; 00059 double averageNoiseRate_; 00060 double timeCalibrationOffset_; 00061 int numberOfStripsPerPartition_; 00062 }; 00063 00064 #endif