File indexing completed on 2023-03-17 11:20:30
0001 #ifndef MuonIdentification_CSCTimingExtractor_H
0002 #define MuonIdentification_CSCTimingExtractor_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <memory>
0017
0018
0019 #include "FWCore/Framework/interface/Frameworkfwd.h"
0020
0021 #include "FWCore/Framework/interface/Event.h"
0022
0023 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0024
0025 #include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h"
0026
0027 #include "DataFormats/Common/interface/Ref.h"
0028
0029 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
0030 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
0031
0032 #include "DataFormats/MuonReco/interface/Muon.h"
0033 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0034 #include "RecoMuon/TrackingTools/interface/MuonSegmentMatcher.h"
0035 #include "RecoMuon/MuonIdentification/interface/TimeMeasurementSequence.h"
0036
0037 #include "DataFormats/TrackReco/interface/Track.h"
0038 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0039 #include "DataFormats/TrackReco/interface/TrackExtra.h"
0040 #include "DataFormats/TrackReco/interface/TrackExtraFwd.h"
0041
0042 #include <vector>
0043
0044 namespace edm {
0045 class ParameterSet;
0046 class EventSetup;
0047 class InputTag;
0048 }
0049
0050 class MuonServiceProxy;
0051 class Propagator;
0052 class TrackingComponentsRecord;
0053
0054 class CSCTimingExtractor {
0055 public:
0056
0057 CSCTimingExtractor(const edm::ParameterSet &, MuonSegmentMatcher *segMatcher, edm::ConsumesCollector &);
0058
0059
0060 ~CSCTimingExtractor();
0061
0062 class TimeMeasurement {
0063 public:
0064 float distIP;
0065 float timeCorr;
0066 int station;
0067 float weightTimeVtx;
0068 float weightInvbeta;
0069 };
0070
0071 void fillTiming(TimeMeasurementSequence &tmSequence,
0072 const std::vector<const CSCSegment *> &segments,
0073 reco::TrackRef muonTrack,
0074 const edm::Event &iEvent,
0075 const edm::EventSetup &iSetup);
0076 void fillTiming(TimeMeasurementSequence &tmSequence,
0077 reco::TrackRef muonTrack,
0078 const edm::Event &iEvent,
0079 const edm::EventSetup &iSetup);
0080
0081 private:
0082 edm::InputTag CSCSegmentTags_;
0083 unsigned int theHitsMin_;
0084 double thePruneCut_;
0085 double theStripTimeOffset_;
0086 double theWireTimeOffset_;
0087 double theStripError_;
0088 double theWireError_;
0089 bool UseWireTime;
0090 bool UseStripTime;
0091 bool debug;
0092
0093 std::unique_ptr<MuonServiceProxy> theService;
0094 MuonSegmentMatcher *theMatcher;
0095 edm::ESGetToken<Propagator, TrackingComponentsRecord> thePropagatorToken;
0096 };
0097
0098 #endif