00001 #ifndef FastSimulation_Muons_FastL1MuonProducer_h 00002 #define FastSimulation_Muons_FastL1MuonProducer_h 00003 00004 // system include files 00005 #include <memory> 00006 00007 // user include files 00008 #include "FWCore/Framework/interface/EDProducer.h" 00009 #include "FWCore/Framework/interface/ESHandle.h" 00010 00011 // Geometry 00012 #include "Geometry/DTGeometry/interface/DTGeometry.h" 00013 #include "Geometry/CSCGeometry/interface/CSCGeometry.h" 00014 #include "Geometry/RPCGeometry/interface/RPCGeometry.h" 00015 00016 00017 00018 #include<vector> 00019 00020 class SimpleL1MuGMTCand; 00021 class L1MuGMTCand; 00022 class FML1EfficiencyHandler; 00023 class FML1PtSmearer; 00024 class L1MuGMTReadoutCollection; 00025 class L1MuTriggerScales; 00026 class L1MuTriggerPtScale; 00027 00028 class RandomEngine; 00029 00030 namespace l1extra { 00031 class L1MuonParticle; 00032 } 00033 00034 00035 namespace edm { 00036 class ParameterSet; 00037 class Event; 00038 class EventSetup; 00039 } 00040 00041 // Data Formats 00042 //#include "DataFormats/MuonReco/interface/Muon.h" 00043 00044 // 00045 // class declaration 00046 // 00047 00048 class FastL1MuonProducer : public edm::EDProducer { 00049 00050 public: 00051 00052 explicit FastL1MuonProducer(const edm::ParameterSet&); 00053 ~FastL1MuonProducer(); 00054 00055 private: 00056 00057 const RandomEngine * random; 00058 00059 typedef std::vector<SimpleL1MuGMTCand*> FML1Muons; 00060 typedef std::vector<L1MuGMTCand> L1MuonCollection; 00061 typedef std::vector<l1extra::L1MuonParticle> L1ExtraCollection; 00062 00063 virtual void beginJob() ; 00064 virtual void beginRun(edm::Run & run, const edm::EventSetup & es); 00065 virtual void produce(edm::Event&, const edm::EventSetup&); 00066 virtual void endJob() ; 00067 void readParameters(const edm::ParameterSet&); 00068 void reconstruct(); 00069 void loadL1Muons(L1MuonCollection& c, 00070 L1ExtraCollection& d, 00071 L1MuGMTReadoutCollection& e) const; 00072 // ---------- member data --------------------------- 00073 00074 FML1Muons mySimpleL1MuonCands; 00075 L1ExtraCollection mySimpleL1MuonExtraCands; 00076 FML1EfficiencyHandler * myL1EfficiencyHandler; 00077 FML1PtSmearer * myL1PtSmearer; 00078 00079 edm::ESHandle<DTGeometry> dtGeometry; 00080 edm::ESHandle<CSCGeometry> cscGeometry; 00081 edm::ESHandle<RPCGeometry> rpcGeometry; 00082 00083 // ----------- parameters ---------------------------- 00084 edm::InputTag theSimModule; 00085 edm::InputTag theDTHits; 00086 edm::InputTag theCSCHits; 00087 edm::InputTag theRPCHits; 00088 // double minEta_ , maxEta_; 00089 00090 // Regional Eta scales 00091 const L1MuTriggerScales* theMuScales; 00092 00093 // Pt scale 00094 const L1MuTriggerPtScale* theMuPtScale; 00095 00096 // ----------- counters ------------------------------ 00097 int nMuonTot , nL1MuonTot; 00098 00099 static double muonMassGeV_ ; 00100 00101 }; 00102 00103 #endif