00001 #ifndef DataMixingModule_h 00002 #define SimDataMixingModule_h 00003 00015 #include "Mixing/Base/interface/BMixingModule.h" 00016 00017 #include "FWCore/Framework/interface/Event.h" 00018 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00019 #include "FWCore/Framework/interface/Selector.h" 00020 00021 #include "DataFormats/Provenance/interface/ProductID.h" 00022 #include "DataFormats/Common/interface/Handle.h" 00023 00024 #include "SimGeneral/DataMixingModule/plugins/DataMixingEMWorker.h" 00025 #include "SimGeneral/DataMixingModule/plugins/DataMixingHcalWorker.h" 00026 #include "SimGeneral/DataMixingModule/plugins/DataMixingMuonWorker.h" 00027 #include "SimGeneral/DataMixingModule/plugins/DataMixingSiStripWorker.h" 00028 #include "SimGeneral/DataMixingModule/plugins/DataMixingSiPixelWorker.h" 00029 00030 #include <map> 00031 #include <vector> 00032 #include <string> 00033 00034 00035 namespace edm 00036 { 00037 class DataMixingModule : public BMixingModule 00038 { 00039 public: 00040 00042 explicit DataMixingModule(const edm::ParameterSet& ps); 00043 00045 virtual ~DataMixingModule(); 00046 00047 virtual void beginJob(edm::EventSetup const&iSetup); 00048 00049 virtual void setBcrOffset(); 00050 virtual void setSourceOffset(const unsigned int is); 00051 00052 private: 00053 // data specifiers 00054 00055 // Ecal 00056 edm::InputTag EBrechitCollection_; // secondary name given to collection of EB rechits 00057 edm::InputTag EErechitCollection_; // secondary name given to collection of EE rechits 00058 edm::InputTag ESrechitCollection_; // secondary name given to collection of EE rechits 00059 std::string EBRecHitCollectionDM_; // secondary name to be given to EB collection of hits 00060 std::string EERecHitCollectionDM_; // secondary name to be given to EE collection of hits 00061 std::string ESRecHitCollectionDM_; // secondary name to be given to EE collection of hits 00062 00063 // Hcal 00064 edm::InputTag HBHErechitCollection_; // secondary name given to collection of EB rechits 00065 edm::InputTag HOrechitCollection_ ; // secondary name given to collection of EB rechits 00066 edm::InputTag HFrechitCollection_ ; // secondary name given to collection of EB rechits 00067 edm::InputTag ZDCrechitCollection_ ; // secondary name given to collection of EB rechits 00068 std::string HBHERecHitCollectionDM_; // secondary name to be given to EB collection of hits 00069 std::string HORecHitCollectionDM_ ; // secondary name to be given to EB collection of hits 00070 std::string HFRecHitCollectionDM_ ; // secondary name to be given to EB collection of hits 00071 std::string ZDCRecHitCollectionDM_ ; // secondary name to be given to EB collection of hits 00072 00073 // Muons 00074 edm::InputTag DTdigi_collection_; // secondary name given to collection of DT digis 00075 edm::InputTag RPCdigi_collection_; // secondary name given to collection of RPC digis 00076 edm::InputTag CSCstripdigi_collection_;// secondary name given to collection of CSC Strip digis 00077 edm::InputTag CSCwiredigi_collection_; // secondary name given to collection of CSC wire digis 00078 00079 std::string DTDigiCollectionDM_; // secondary name to be given to new DT digis 00080 std::string RPCDigiCollectionDM_; // secondary name to be given to new RPC digis 00081 std::string CSCStripDigiCollectionDM_; // secondary name given to new collection of CSC Strip digis 00082 std::string CSCWireDigiCollectionDM_; // secondary name given to new collection of CSC wire digis 00083 00084 // SiStrips 00085 edm::InputTag Sistripdigi_collection_ ; // secondary name given to collection of SiStrip digis 00086 std::string SiStripDigiCollectionDM_ ; // secondary name to be given to new SiStrip digis 00087 00088 // SiPixels 00089 edm::InputTag pixeldigi_collection_ ; // secondary name given to collection of SiPixel digis 00090 std::string PixelDigiCollectionDM_ ; // secondary name to be given to new SiPixel digis 00091 00092 // Submodules to handle the individual detectors 00093 00094 DataMixingEMWorker *EMWorker_ ; 00095 00096 // Hcal 00097 00098 DataMixingHcalWorker *HcalWorker_ ; 00099 00100 // Muons 00101 00102 DataMixingMuonWorker *MuonWorker_ ; 00103 00104 // Si-Strips 00105 00106 DataMixingSiStripWorker *SiStripWorker_ ; 00107 00108 // Pixels 00109 00110 DataMixingSiPixelWorker *SiPixelWorker_ ; 00111 00112 00113 virtual void put(edm::Event &e) ; 00114 virtual void createnewEDProduct(); 00115 virtual void addSignals(const edm::Event &e); 00116 virtual void doPileUp(edm::Event &e); 00117 virtual void addPileups(const int bcr, edm::Event*,unsigned int EventId,unsigned int worker); 00118 virtual void getSubdetectorNames(); 00119 00120 // internally used information : subdetectors present in input 00121 std::vector<std::string> Subdetectors_; 00122 00123 // unsigned int eventId_; //=0 for signal, from 1-n for pileup events 00124 00125 Selector * sel_; 00126 std::string label_; 00127 00128 }; 00129 }//edm 00130 00131 #endif