CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2_patch1/src/RecoMET/METAlgorithms/interface/CSCHaloAlgo.h

Go to the documentation of this file.
00001 #ifndef RECOMET_METALGORITHMS_CSCHALOALGO_H
00002 #define RECOMET_METALGORITHMS_CSCHALOALGO_H
00003 #include "DataFormats/METReco/interface/CSCHaloData.h"
00004 
00005 /*
00006   [class]:  CSCHaloAlgo
00007   [authors]: R. Remington, The University of Florida
00008   [description]: Algorithm to calculate quantities relevant to CSCHaloData object
00009   [date]: October 15, 2009
00010 */
00011 
00012 #include "CondFormats/CSCObjects/interface/CSCDBCrosstalk.h"
00013 #include "CondFormats/CSCObjects/interface/CSCDBGains.h"
00014 #include "CondFormats/CSCObjects/interface/CSCDBNoiseMatrix.h"
00015 #include "CondFormats/CSCObjects/interface/CSCDBPedestals.h"
00016 #include "CondFormats/DataRecord/interface/CSCDBCrosstalkRcd.h"
00017 #include "CondFormats/DataRecord/interface/CSCDBGainsRcd.h"
00018 #include "CondFormats/DataRecord/interface/CSCDBNoiseMatrixRcd.h"
00019 #include "CondFormats/DataRecord/interface/CSCDBPedestalsRcd.h"
00020 #include "DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigiCollection.h"
00021 #include "DataFormats/CSCDigi/interface/CSCWireDigi.h"
00022 #include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h"
00023 #include "DataFormats/CSCDigi/interface/CSCStripDigi.h"
00024 #include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h"
00025 #include "DataFormats/CSCDigi/interface/CSCComparatorDigi.h"
00026 #include "DataFormats/CSCDigi/interface/CSCComparatorDigiCollection.h"
00027 #include "DataFormats/CSCDigi/interface/CSCALCTDigi.h"
00028 #include "DataFormats/CSCDigi/interface/CSCALCTDigiCollection.h"
00029 #include "DataFormats/CSCRecHit/interface/CSCRecHit2D.h"
00030 #include "DataFormats/CSCRecHit/interface/CSCSegmentCollection.h"
00031 #include "DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h"
00032 #include "DataFormats/CSCRecHit/interface/CSCSegment.h"
00033 #include "DataFormats/GeometrySurface/interface/Cylinder.h"
00034 #include "DataFormats/GeometrySurface/interface/Plane.h"
00035 #include "DataFormats/GeometrySurface/interface/Cone.h"
00036 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00037 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00038 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
00039 #include "DataFormats/GeometryVector/interface/LocalVector.h"
00040 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCTrackCollection.h"
00041 #include "DataFormats/L1CSCTrackFinder/interface/L1CSCStatusDigiCollection.h"
00042 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h"
00043 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutRecord.h"
00044 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h"
00045 #include "DataFormats/MuonDetId/interface/CSCIndexer.h"
00046 #include "DataFormats/MuonDetId/interface/CSCDetId.h"
00047 #include "DataFormats/MuonDetId/interface/RPCDetId.h"
00048 #include "DataFormats/MuonDetId/interface/DTWireId.h"
00049 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00050 #include "DataFormats/MuonReco/interface/Muon.h"
00051 #include "DataFormats/MuonReco/interface/MuonTimeExtra.h"
00052 #include "DataFormats/MuonReco/interface/MuonTimeExtraMap.h"
00053 #include "DataFormats/TrackingRecHit/interface/RecSegment.h"
00054 #include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h"
00055 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h"
00056 #include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2DCollection.h"
00057 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00058 #include "DataFormats/TrackReco/interface/Track.h"
00059 
00060 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
00061 #include "Geometry/CSCGeometry/interface/CSCGeometry.h"
00062 #include "Geometry/CSCGeometry/interface/CSCChamber.h"
00063 #include "Geometry/CSCGeometry/interface/CSCLayer.h"
00064 #include "Geometry/CSCGeometry/interface/CSCLayerGeometry.h"
00065 #include "L1Trigger/CSCTrackFinder/interface/CSCSectorReceiverLUT.h"
00066 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00067 #include "MagneticField/Engine/interface/MagneticField.h"
00068 #include "RecoMuon/TrackingTools/interface/MuonServiceProxy.h"
00069 #include "RecoMuon/TrackingTools/interface/MuonPatternRecoDumper.h"
00070 #include "RecoMuon/TrackingTools/interface/MuonSegmentMatcher.h"
00071 #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHitBuilder.h"
00072 #include "RecoMuon/TransientTrackingRecHit/interface/MuonTransientTrackingRecHit.h"
00073 #include "TrackingTools/GeomPropagators/interface/Propagator.h"
00074 #include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h"
00075 #include "TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h"
00076 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00077 #include "DataFormats/Common/interface/TriggerResults.h"
00078 #include "FWCore/Framework/interface/Event.h"
00079 
00080 namespace edm {
00081   class TriggerNames;
00082 }
00083 
00084 class CSCHaloAlgo {
00085 
00086  public:
00087   CSCHaloAlgo();
00088   ~CSCHaloAlgo(){}
00089   reco::CSCHaloData Calculate(const CSCGeometry& TheCSCGeometry,edm::Handle<reco::MuonCollection>& TheCosmicMuons, 
00090                               const edm::Handle<reco::MuonTimeExtraMap> TheCSCTimeMap,
00091                               edm::Handle<reco::MuonCollection>& TheMuons, edm::Handle<CSCSegmentCollection>& TheCSCSegments, 
00092                               edm::Handle<CSCRecHit2DCollection>& TheCSCRecHits,edm::Handle < L1MuGMTReadoutCollection >& TheL1GMTReadout,
00093                               edm::Handle<edm::TriggerResults>& TheHLTResults, const edm::TriggerNames * triggerNames, 
00094                               const edm::Handle<CSCALCTDigiCollection>& TheALCTs, MuonSegmentMatcher *TheMatcher,
00095                               const edm::Event &TheEvent);
00096 
00097   std::vector<edm::InputTag> vIT_HLTBit;
00098 
00099   void SetDetaThreshold(float x ){ deta_threshold = x;}
00100   void SetMinMaxInnerRadius(float min, float max){ min_inner_radius = min; max_inner_radius = max;}
00101   void SetMinMaxOuterRadius(float min, float max) { min_outer_radius = min; max_outer_radius = max;}
00102   void SetDphiThreshold(float x) { dphi_threshold = x;}
00103   void SetNormChi2Threshold(float x) { norm_chi2_threshold = x;}
00104   void SetRecHitTime0(float x) { recHit_t0 = x;}
00105   void SetRecHitTimeWindow(float x) { recHit_twindow = x; }
00106   void SetExpectedBX(int x) { expected_BX = x ;}
00107   void SetMinMaxOuterMomentumTheta(float min , float max){ min_outer_theta = min;  max_outer_theta = max;}
00108   void SetMatchingDPhiThreshold(float x) { matching_dphi_threshold = x;}
00109   void SetMatchingDEtaThreshold(float x) { matching_deta_threshold = x;}
00110   void SetMatchingDWireThreshold(int x) { matching_dwire_threshold = x;}
00111   void SetMaxDtMuonSegment(float x ){ max_dt_muon_segment = x;}
00112   void SetMaxFreeInverseBeta(float x ){ max_free_inverse_beta = x;}
00113 
00114   // MLR
00115   void SetMaxSegmentRDiff(float x) { max_segment_r_diff = x; }
00116   void SetMaxSegmentPhiDiff(float x) { max_segment_phi_diff = x; }
00117   void SetMaxSegmentTheta(float x) { max_segment_theta = x; }
00118   // End MLR
00119 
00120  private:
00121   float deta_threshold;
00122   float max_outer_theta;
00123   float min_outer_theta;
00124   float min_inner_radius;
00125   float max_inner_radius;
00126   float min_outer_radius;
00127   float max_outer_radius;
00128   float dphi_threshold;
00129   float norm_chi2_threshold;
00130   float recHit_t0;
00131   float recHit_twindow;
00132   int expected_BX;
00133   float matching_dphi_threshold;
00134   float matching_deta_threshold;
00135   int matching_dwire_threshold;
00136   float max_dt_muon_segment;
00137   float max_free_inverse_beta;
00138   // MLR
00139   float max_segment_r_diff;
00140   float max_segment_phi_diff;
00141   float max_segment_theta;
00142   // End MLR
00143 };
00144 
00145 #endif