Go to the documentation of this file.00001 #include "RecoMET/METProducers/interface/CSCHaloDataProducer.h"
00002 #include "FWCore/Common/interface/TriggerNames.h"
00003
00004
00005
00006
00007
00008
00009
00010
00011 using namespace edm;
00012 using namespace std;
00013 using namespace reco;
00014
00015 CSCHaloDataProducer::CSCHaloDataProducer(const edm::ParameterSet& iConfig)
00016 {
00017
00018 IT_L1MuGMTReadout = iConfig.getParameter<edm::InputTag>("L1MuGMTReadoutLabel");
00019
00020
00021 IT_HLTResult = iConfig.getParameter<edm::InputTag>("HLTResultLabel");
00022 CSCAlgo.vIT_HLTBit = iConfig.getParameter< std::vector< edm::InputTag> >("HLTBitLabel");
00023
00024
00025 IT_CSCRecHit = iConfig.getParameter<edm::InputTag>("CSCRecHitLabel");
00026
00027
00028 IT_CSCSegment = iConfig.getParameter<edm::InputTag>("CSCSegmentLabel");
00029 IT_CosmicMuon = iConfig.getParameter<edm::InputTag>("CosmicMuonLabel");
00030 IT_Muon = iConfig.getParameter<edm::InputTag>("MuonLabel");
00031 IT_SA = iConfig.getParameter<edm::InputTag>("SALabel");
00032 IT_ALCT = iConfig.getParameter<edm::InputTag>("ALCTDigiLabel");
00033
00034
00035 edm::ParameterSet serviceParameters = iConfig.getParameter<edm::ParameterSet>("ServiceParameters");
00036 TheService = new MuonServiceProxy(serviceParameters);
00037 edm::ParameterSet matchParameters = iConfig.getParameter<edm::ParameterSet>("MatchParameters");
00038 TheMatcher = new MuonSegmentMatcher(matchParameters, TheService);
00039
00040
00041 CSCAlgo.SetDetaThreshold( (float) iConfig.getParameter<double>("DetaParam"));
00042 CSCAlgo.SetDphiThreshold( (float) iConfig.getParameter<double>("DphiParam"));
00043 CSCAlgo.SetMinMaxInnerRadius( (float) iConfig.getParameter<double>("InnerRMinParam") , (float) iConfig.getParameter<double>("InnerRMaxParam") );
00044 CSCAlgo.SetMinMaxOuterRadius( (float) iConfig.getParameter<double>("OuterRMinParam"), (float) iConfig.getParameter<double>("OuterRMaxParam"));
00045 CSCAlgo.SetNormChi2Threshold( (float) iConfig.getParameter<double>("NormChi2Param") );
00046
00047
00048 CSCAlgo.SetMaxSegmentRDiff( (float) iConfig.getParameter<double>("MaxSegmentRDiff") );
00049 CSCAlgo.SetMaxSegmentPhiDiff( (float) iConfig.getParameter<double>("MaxSegmentPhiDiff") );
00050 CSCAlgo.SetMaxSegmentTheta( (float) iConfig.getParameter<double>("MaxSegmentTheta") );
00051
00052
00053 CSCAlgo.SetMaxDtMuonSegment( (float) iConfig.getParameter<double>("MaxDtMuonSegment") );
00054 CSCAlgo.SetMaxFreeInverseBeta( (float) iConfig.getParameter<double>("MaxFreeInverseBeta") );
00055 CSCAlgo.SetExpectedBX( (short int) iConfig.getParameter<int>("ExpectedBX") );
00056 CSCAlgo.SetRecHitTime0( (float) iConfig.getParameter<double>("RecHitTime0") );
00057 CSCAlgo.SetRecHitTimeWindow( (float) iConfig.getParameter<double>("RecHitTimeWindow") );
00058 CSCAlgo.SetMinMaxOuterMomentumTheta( (float)iConfig.getParameter<double>("MinOuterMomentumTheta"), (float)iConfig.getParameter<double>("MaxOuterMomentumTheta") );
00059 CSCAlgo.SetMatchingDPhiThreshold( (float)iConfig.getParameter<double>("MatchingDPhiThreshold") );
00060 CSCAlgo.SetMatchingDEtaThreshold( (float)iConfig.getParameter<double>("MatchingDEtaThreshold") );
00061 CSCAlgo.SetMatchingDWireThreshold(iConfig.getParameter<int>("MatchingDWireThreshold") );
00062
00063 produces<CSCHaloData>();
00064 }
00065
00066 void CSCHaloDataProducer::produce(Event& iEvent, const EventSetup& iSetup)
00067 {
00068
00069 edm::ESHandle<CSCGeometry> TheCSCGeometry;
00070 iSetup.get<MuonGeometryRecord>().get(TheCSCGeometry);
00071
00072
00073 edm::Handle< reco::MuonCollection > TheCosmics;
00074 iEvent.getByLabel(IT_CosmicMuon, TheCosmics);
00075
00076
00077 edm::Handle<reco::MuonTimeExtraMap> TheCSCTimeMap;
00078 iEvent.getByLabel(IT_CosmicMuon.label(),"csc",TheCSCTimeMap);
00079
00080
00081 edm::Handle< reco::MuonCollection> TheMuons;
00082 iEvent.getByLabel(IT_Muon, TheMuons);
00083
00084
00085 edm::Handle<CSCSegmentCollection> TheCSCSegments;
00086 iEvent.getByLabel(IT_CSCSegment, TheCSCSegments);
00087
00088
00089 Handle<CSCRecHit2DCollection> TheCSCRecHits;
00090 iEvent.getByLabel(IT_CSCRecHit, TheCSCRecHits);
00091
00092
00093 edm::Handle < L1MuGMTReadoutCollection > TheL1GMTReadout ;
00094 iEvent.getByLabel (IT_L1MuGMTReadout, TheL1GMTReadout);
00095
00096
00097 edm::Handle<CSCALCTDigiCollection> TheALCTs;
00098 iEvent.getByLabel (IT_ALCT, TheALCTs);
00099
00100
00101 edm::Handle<edm::TriggerResults> TheHLTResults;
00102 iEvent.getByLabel( IT_HLTResult , TheHLTResults);
00103
00104 const edm::TriggerNames * triggerNames = 0;
00105 if (TheHLTResults.isValid()) {
00106 triggerNames = &iEvent.triggerNames(*TheHLTResults);
00107 }
00108
00109 std::auto_ptr<CSCHaloData> TheCSCData(new CSCHaloData( CSCAlgo.Calculate(*TheCSCGeometry, TheCosmics, TheCSCTimeMap, TheMuons, TheCSCSegments, TheCSCRecHits, TheL1GMTReadout, TheHLTResults, triggerNames, TheALCTs, TheMatcher, iEvent) ) );
00110
00111 iEvent.put(TheCSCData);
00112 return;
00113 }
00114
00115 void CSCHaloDataProducer::beginJob(){return;}
00116 void CSCHaloDataProducer::endJob(){return;}
00117 void CSCHaloDataProducer::beginRun(edm::Run&, const edm::EventSetup&){return;}
00118 void CSCHaloDataProducer::endRun(edm::Run&, const edm::EventSetup&){return;}
00119 CSCHaloDataProducer::~CSCHaloDataProducer(){}