00001 #ifndef DTCHAMBEREFFICIENCY_H 00002 #define DTCHAMBEREFFICIENCY_H 00003 00020 #include "DataFormats/Common/interface/Handle.h" 00021 00022 00023 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00024 #include "DataFormats/TrackReco/interface/Track.h" 00025 00026 #include "FWCore/Framework/interface/EDAnalyzer.h" 00027 #include "FWCore/Framework/interface/ESHandle.h" 00028 #include "FWCore/Utilities/interface/InputTag.h" 00029 00030 #include "FWCore/Framework/interface/Frameworkfwd.h" 00031 00032 #include "Geometry/DTGeometry/interface/DTGeometry.h" 00033 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h" 00034 #include "MagneticField/Engine/interface/MagneticField.h" 00035 00036 #include "RecoMuon/MeasurementDet/interface/MuonDetLayerMeasurements.h" 00037 #include <vector> 00038 00039 namespace reco { 00040 class TransientTrack; 00041 } 00042 00043 00044 00045 class Chi2MeasurementEstimator; 00046 class MuonServiceProxy; 00047 00048 class DQMStore; 00049 class MonitorElement; 00050 class FreeTrajectoryState; 00051 class DetLayer; 00052 class DetId; 00053 00054 class DTChamberEfficiency : public edm::EDAnalyzer 00055 { 00056 00057 public: 00058 //Constructor 00059 DTChamberEfficiency(const edm::ParameterSet& pset) ; 00060 00061 //Destructor 00062 ~DTChamberEfficiency() ; 00063 00064 //Operations 00065 void analyze(const edm::Event & event, const edm::EventSetup& eventSetup); 00066 void beginJob(); 00067 void beginRun(const edm::Run& , const edm::EventSetup&); 00068 void endJob(); 00069 00070 private: 00071 00072 //functions 00073 std::vector<const DetLayer*> compatibleLayers(const DetLayer *initialLayer, 00074 const FreeTrajectoryState& fts, PropagationDirection propDir); 00075 00076 00077 void bookHistos(); 00078 MeasurementContainer segQualityCut(const MeasurementContainer seg_list) const; 00079 bool chamberSelection(const DetId& idDetLay, reco::TransientTrack& trans_track) const; 00080 inline edm::ESHandle<Propagator> propagator() const; 00081 00082 //data members 00083 bool debug; 00084 00085 edm::InputTag theTracksLabel; 00086 00087 edm::InputTag labelRPCRecHits; 00088 edm::InputTag thedt4DSegments; 00089 edm::InputTag thecscSegments; 00090 00091 double theMaxChi2; 00092 double theNSigma; 00093 int theMinNrec; 00094 00095 std::string theNavigationType; 00096 00097 edm::ESHandle<DTGeometry> dtGeom; 00098 00099 DQMStore* theDbe; 00100 00101 MuonServiceProxy* theService; 00102 MuonDetLayerMeasurements* theMeasurementExtractor; 00103 Chi2MeasurementEstimator* theEstimator; 00104 00105 edm::ESHandle<MagneticField> magfield; 00106 edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry; 00107 00108 //std::map<DTChamberId, std::vector<MonitorElement*> > histosPerW; 00109 00110 std::vector<std::vector<MonitorElement*> > histosPerW; 00111 00112 protected: 00113 00114 }; 00115 00116 #endif // DTANALYZER_H