Go to the documentation of this file.00001 #ifndef MuonIdentification_MuonTimingFiller_h
00002 #define MuonIdentification_MuonTimingFiller_h 1
00003
00004
00005
00006
00007
00008
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <memory>
00025
00026
00027 #include "FWCore/Framework/interface/Frameworkfwd.h"
00028 #include "FWCore/Framework/interface/EDProducer.h"
00029
00030 #include "FWCore/Framework/interface/Event.h"
00031 #include "FWCore/Framework/interface/MakerMacros.h"
00032
00033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00034
00035 #include "DataFormats/MuonReco/interface/MuonTimeExtra.h"
00036 #include "RecoMuon/MuonIdentification/interface/DTTimingExtractor.h"
00037 #include "RecoMuon/MuonIdentification/interface/CSCTimingExtractor.h"
00038
00039
00040
00041
00042
00043 class MuonTimingFiller {
00044 public:
00045 MuonTimingFiller(const edm::ParameterSet&);
00046 ~MuonTimingFiller();
00047 void fillTiming( const reco::Muon& muon, reco::MuonTimeExtra& dtTime,
00048 reco::MuonTimeExtra& cscTime, reco::MuonTimeExtra& combinedTime,
00049 edm::Event& iEvent, const edm::EventSetup& iSetup );
00050
00051 private:
00052 void fillTimeFromMeasurements( TimeMeasurementSequence tmSeq, reco::MuonTimeExtra &muTime );
00053 void rawFit(double &a, double &da, double &b, double &db,
00054 const std::vector<double> hitsx, const std::vector<double> hitsy);
00055 void addEcalTime( const reco::Muon& muon, TimeMeasurementSequence &cmbSeq );
00056 void combineTMSequences( const reco::Muon& muon, TimeMeasurementSequence dtSeq,
00057 TimeMeasurementSequence cscSeq, TimeMeasurementSequence &cmbSeq );
00058
00059 DTTimingExtractor* theDTTimingExtractor_;
00060 CSCTimingExtractor* theCSCTimingExtractor_;
00061 double errorEB_,errorEE_,ecalEcut_;
00062 bool useDT_, useCSC_, useECAL_;
00063
00064 };
00065
00066 #endif