00001 #ifndef FastSimulation_ParamL3MuonProducer_ParamL3MuonProducer_h
00002 #define FastSimulation_ParamL3MuonProducer_ParamL3MuonProducer_h
00003
00004
00005
00006
00007
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <memory>
00024
00025
00026 #include "FWCore/Framework/interface/EDProducer.h"
00027
00028
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
00052 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTCand.h"
00053 #include "DataFormats/L1Trigger/interface/L1MuonParticle.h"
00054 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00055
00056
00057
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 beginJob(const edm::EventSetup&) ;
00079 virtual void produce(edm::Event&, const edm::EventSetup&);
00080 virtual void endJob() ;
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
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
00106 bool fullPattern_;
00107 bool doL1_ , doL3_ , doGL_;
00108 std::string theSimModuleLabel_ , theSimModuleProcess_, theTrkModuleLabel_ ;
00109 double minEta_ , maxEta_;
00110
00111 int nMuonTot , nL1MuonTot , nL3MuonTot , nGLMuonTot;
00112
00113 static double muonMassGeV_ ;
00114
00115 };
00116
00117 #endif