00001 #ifndef DataMixingMuonWorker_h 00002 #define SimDataMixingMuonWorker_h 00003 00017 #include "FWCore/Framework/interface/Event.h" 00018 #include "FWCore/Framework/interface/EventPrincipal.h" 00019 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00020 #include "FWCore/Framework/interface/Selector.h" 00021 00022 #include "DataFormats/Provenance/interface/ProductID.h" 00023 #include "DataFormats/Common/interface/Handle.h" 00024 00025 //DT 00026 #include "DataFormats/DTDigi/interface/DTDigiCollection.h" 00027 //RPC 00028 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h" 00029 //CSC 00030 #include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" 00031 #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h" 00032 #include "DataFormats/CSCDigi/interface/CSCComparatorDigiCollection.h" 00033 00034 #include <map> 00035 #include <vector> 00036 #include <string> 00037 00038 00039 namespace edm 00040 { 00041 class DataMixingMuonWorker 00042 { 00043 public: 00044 00045 DataMixingMuonWorker(); 00046 00048 explicit DataMixingMuonWorker(const edm::ParameterSet& ps); 00049 00051 virtual ~DataMixingMuonWorker(); 00052 00053 void putMuon(edm::Event &e) ; 00054 void addMuonSignals(const edm::Event &e); 00055 void addMuonPileups(const int bcr, const edm::EventPrincipal*,unsigned int EventId); 00056 00057 00058 private: 00059 // data specifiers 00060 00061 edm::InputTag DTdigi_collectionSig_; // secondary name given to collection of DT digis 00062 edm::InputTag RPCdigi_collectionSig_; // secondary name given to collection of RPC digis 00063 edm::InputTag CSCDigiTagSig_; // primary? name given to collection of CSC digis 00064 edm::InputTag DTDigiTagSig_; // primary? name given to collection of DT digis 00065 edm::InputTag RPCDigiTagSig_; // primary? name given to collection of RPC digis 00066 edm::InputTag CSCstripdigi_collectionSig_; // secondary name given to collection of CSC Strip digis 00067 edm::InputTag CSCwiredigi_collectionSig_; // secondary name given to collection of CSC wire digis 00068 edm::InputTag CSCCompdigi_collectionSig_; // secondary name given to collection of CSC wire digis 00069 00070 edm::InputTag DTPileInputTag_ ; // InputTag for pileup DTs 00071 edm::InputTag RPCPileInputTag_ ; // InputTag for pileup RPCs 00072 edm::InputTag CSCWirePileInputTag_ ; // InputTag for pileup CSC Wires 00073 edm::InputTag CSCStripPileInputTag_ ; // InputTag for pileup CSC Strips 00074 edm::InputTag CSCCompPileInputTag_ ; // InputTag for pileup CSC Comparators 00075 00076 std::string DTDigiCollectionDM_; // secondary name to be given to new DT digis 00077 std::string RPCDigiCollectionDM_; // secondary name to be given to new RPC digis 00078 std::string CSCStripDigiCollectionDM_; // secondary name given to new collection of CSC Strip digis 00079 std::string CSCWireDigiCollectionDM_; // secondary name given to new collection of CSC wire digis 00080 std::string CSCComparatorDigiCollectionDM_; // secondary name given to new collection of CSC comparator digis 00081 00082 // just hold our own DigiCollections - order of digis in layer doesn't appear to matter... 00083 // will make a copy and put this back into the event... 00084 00085 DTDigiCollection* OurDTDigis_; 00086 RPCDigiCollection* OurRPCDigis_; 00087 CSCStripDigiCollection* OurCSCStripDigis_; 00088 CSCWireDigiCollection* OurCSCWireDigis_; 00089 CSCComparatorDigiCollection* OurCSCComparatorDigis_; 00090 00091 // unsigned int eventId_; //=0 for signal, from 1-n for pileup events 00092 00093 Selector * sel_; 00094 std::string label_; 00095 00096 }; 00097 }//edm 00098 00099 #endif