00001 #ifndef CSCTrackFinder_CSCTFPtLUT_h 00002 #define CSCTrackFinder_CSCTFPtLUT_h 00003 00004 #include <FWCore/ParameterSet/interface/ParameterSet.h> 00005 #include <L1Trigger/CSCTrackFinder/interface/CSCTrackFinderDataTypes.h> 00006 #include <CondFormats/L1TObjects/interface/L1MuTriggerScales.h> 00007 #include <CondFormats/L1TObjects/interface/L1MuTriggerPtScale.h> 00008 #include <L1Trigger/CSCTrackFinder/interface/CSCTFPtMethods.h> 00009 #include <FWCore/ParameterSet/interface/FileInPath.h> 00011 #include <FWCore/Framework/interface/EventSetup.h> 00013 00014 class CSCTFPtLUT 00015 { 00016 public: 00018 CSCTFPtLUT(const edm::EventSetup& c); 00020 00021 CSCTFPtLUT(const edm::ParameterSet&, 00022 const L1MuTriggerScales* scales, 00023 const L1MuTriggerPtScale* ptScale); 00024 CSCTFPtLUT(const CSCTFPtLUT&); 00025 ~CSCTFPtLUT() { if(pt_lut) delete pt_lut; pt_lut = NULL; } 00026 00027 CSCTFPtLUT& operator=(const CSCTFPtLUT&); 00028 00029 ptdat Pt(const ptadd&) const; 00030 00031 ptdat Pt(const unsigned&) const; 00032 00033 ptdat Pt(const unsigned& delta_phi_12, const unsigned& delta_phi23, 00034 const unsigned& track_eta, const unsigned& track_mode, 00035 const unsigned& track_fr, const unsigned& delta_phi_sign) const; 00036 00037 ptdat Pt(const unsigned& delta_phi_12, const unsigned& track_eta, 00038 const unsigned& track_mode, const unsigned& track_fr, 00039 const unsigned& delta_phi_sign) const; 00040 00041 private: 00042 static ptdat* pt_lut; 00043 static bool lut_read_in; 00044 const L1MuTriggerScales* trigger_scale; 00045 const L1MuTriggerPtScale* trigger_ptscale; 00046 CSCTFPtMethods ptMethods; 00047 00048 bool read_pt_lut, isBinary; 00049 edm::FileInPath pt_lut_file; 00050 unsigned pt_method, lowQualityFlag; 00051 00052 00053 ptdat calcPt(const ptadd&) const; 00054 unsigned trackQuality(const unsigned& eta, const unsigned& mode) const; 00055 void readLUT(); 00056 }; 00057 00058 #endif