Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:59

0001 #ifndef MuonIdentification_CSCTimingExtractor_H
0002 #define MuonIdentification_CSCTimingExtractor_H
0003 
0004 /**\class CSCTimingExtractor
0005  *
0006  * Extracts timing information associated to a muon track
0007  *
0008 */
0009 //
0010 // Original Author:  Traczyk Piotr
0011 //         Created:  Thu Oct 11 15:01:28 CEST 2007
0012 //
0013 //
0014 
0015 // system include files
0016 #include <memory>
0017 
0018 // user include files
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 }  // namespace edm
0049 
0050 class MuonServiceProxy;
0051 class Propagator;
0052 class TrackingComponentsRecord;
0053 
0054 class CSCTimingExtractor {
0055 public:
0056   /// Constructor
0057   CSCTimingExtractor(const edm::ParameterSet &, MuonSegmentMatcher *segMatcher, edm::ConsumesCollector &);
0058 
0059   /// Destructor
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