CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/FastSimulation/ParamL3MuonProducer/interface/ParamL3MuonProducer.h

Go to the documentation of this file.
00001 #ifndef FastSimulation_ParamL3MuonProducer_ParamL3MuonProducer_h
00002 #define FastSimulation_ParamL3MuonProducer_ParamL3MuonProducer_h
00003 
00004 //
00005 // Package:    ParamL3MuonProducer
00006 // Class:      ParamL3MuonProducer
00007 // 
00015 //
00016 //  Author:  Andrea Perrotta
00017 // Created:  Wed May 02 12:37:24 CET 2007
00018 // $Id: ParamL3MuonProducer.h,v 1.10 2009/03/12 19:41:52 abdullin Exp $
00019 //
00020 
00021 
00022 // system include files
00023 #include <memory>
00024 
00025 // user include files
00026 #include "FWCore/Framework/interface/EDProducer.h"
00027 
00028 // FastSimulation headers
00029 class SimpleL1MuGMTCand;
00030 class FML1EfficiencyHandler;
00031 class FML1PtSmearer;
00032 class FML3EfficiencyHandler; 
00033 class FML3PtSmearer;
00034 class FMGLfromL3EfficiencyHandler; 
00035 class FMGLfromL3TKEfficiencyHandler; 
00036 class FMGLfromTKEfficiencyHandler; 
00037 
00038 class RandomEngine;
00039 
00040 namespace reco { 
00041   class Muon;
00042   class Track;
00043 }
00044 
00045 namespace edm { 
00046   class ParameterSet;
00047   class Event;
00048   class EventSetup;
00049 }
00050 
00051 // Data Formats
00052 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h"
00053 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
00054 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00055 
00056 //
00057 // class declaration
00058 //
00059 
00060 class ParamL3MuonProducer : public edm::EDProducer {
00061    public:
00062 
00063       explicit ParamL3MuonProducer(const edm::ParameterSet&);
00064       ~ParamL3MuonProducer();
00065 
00066    private:
00067 
00068       int findId(const reco::Track& aTrack) const;
00069 
00070    private:
00071 
00072       const RandomEngine * random;
00073 
00074       typedef std::vector<SimpleL1MuGMTCand*> FML1Muons;
00075       typedef std::vector<L1MuGMTCand> L1MuonCollection;
00076       typedef std::vector<l1extra::L1MuonParticle> L1ExtraCollection;
00077 
00078       virtual void beginRun(edm::Run&, edm::EventSetup const& ) ;
00079       virtual void produce(edm::Event&, const edm::EventSetup&);
00080       virtual void endRun() ;
00081       void readParameters(const edm::ParameterSet&, const edm::ParameterSet& );
00082       void reconstruct();
00083       void loadL1Muons(L1MuonCollection & c, L1ExtraCollection & d) const;
00084       void loadL3Muons(reco::MuonCollection & c) const;
00085       void loadGLMuons(reco::MuonCollection & c) const;
00086     
00087   // ---------- member data ---------------------------
00088 
00089       FML1Muons  mySimpleL1MuonCands;
00090       L1ExtraCollection mySimpleL1MuonExtraCands;
00091       FML1EfficiencyHandler * myL1EfficiencyHandler;
00092       FML1PtSmearer * myL1PtSmearer;
00093 
00094       reco::MuonCollection  mySimpleL3MuonCands;
00095       FML1Muons  mySimpleL3MuonSeeds;
00096       FML3EfficiencyHandler * myL3EfficiencyHandler;
00097       FML3PtSmearer * myL3PtSmearer;
00098 
00099       reco::MuonCollection  mySimpleGLMuonCands;
00100       FMGLfromL3EfficiencyHandler * myGLfromL3EfficiencyHandler;
00101       FMGLfromL3TKEfficiencyHandler * myGLfromL3TKEfficiencyHandler;
00102       FMGLfromTKEfficiencyHandler * myGLfromTKEfficiencyHandler;
00103       FML3PtSmearer * myGLPtSmearer;
00104       
00105   // ----------- parameters ---------------------------- 
00106       bool fullPattern_;
00107       bool doL1_ , doL3_ , doGL_;
00108       std::string theSimModuleLabel_ , theSimModuleProcess_, theTrkModuleLabel_ ;
00109       double minEta_ ,  maxEta_;
00110   // ----------- counters ------------------------------
00111       int   nMuonTot , nL1MuonTot , nL3MuonTot , nGLMuonTot;
00112 
00113       static double muonMassGeV_ ;
00114 
00115 };
00116 
00117 #endif