CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/FastSimulation/Muons/plugins/FastL1MuonProducer.h

Go to the documentation of this file.
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