00001
00008 #ifndef CSCTrackFinder_CSCTFSectorProcessor_h
00009 #define CSCTrackFinder_CSCTFSectorProcessor_h
00010
00011 #include <vector>
00012 #include <map>
00013 #include <string>
00014 #include <DataFormats/L1CSCTrackFinder/interface/L1CSCTrackCollection.h>
00015 #include <DataFormats/L1CSCTrackFinder/interface/TrackStub.h>
00016 #include <DataFormats/L1CSCTrackFinder/interface/CSCTriggerContainer.h>
00017 #include <FWCore/ParameterSet/interface/ParameterSet.h>
00018
00019 #include <L1Trigger/CSCTrackFinder/interface/CSCSectorReceiverLUT.h>
00020 #include <L1Trigger/CSCTrackFinder/interface/CSCTFSPCoreLogic.h>
00021 #include <L1Trigger/CSCTrackFinder/interface/CSCTFPtLUT.h>
00023 #include <FWCore/Framework/interface/EventSetup.h>
00025
00026 class CSCTFSectorProcessor
00027 {
00028 public:
00029 CSCTFSectorProcessor(const unsigned& endcap,
00030 const unsigned& sector,
00031 const edm::ParameterSet& pset,
00032 bool tmb07,
00033 const L1MuTriggerScales* scales,
00034 const L1MuTriggerPtScale* ptScale );
00035
00037 void initialize(const edm::EventSetup& c);
00039
00040 ~CSCTFSectorProcessor();
00041
00042 bool run(const CSCTriggerContainer<csctf::TrackStub>&);
00043
00044 CSCTriggerContainer<csc::L1Track> tracks() const { return l1_tracks; }
00045 std::vector<csctf::TrackStub> filteredStubs() const { return stub_vec_filtered; }
00046
00047 CSCTriggerContainer<csctf::TrackStub> dtStubs() const { return dt_stubs; }
00048
00049 int minBX() const { return m_minBX; }
00050 int maxBX() const { return m_maxBX; }
00051
00052 void readParameters(const edm::ParameterSet& pset);
00053
00054 void printDisclaimer(int firmSP, int firmFA);
00055
00056 private:
00057
00058 CSCTFSectorProcessor& operator=(const CSCTFSectorProcessor& rhs) { return *this; };
00059 CSCTFSectorProcessor(const CSCTFSectorProcessor& par) {}
00060
00061 bool m_gangedME1a;
00062
00063 bool initializeFromPSet;
00064 unsigned m_endcap, m_sector, TMB07;
00065 unsigned m_latency;
00066
00067
00068 int m_bxa_depth, m_allowALCTonly, m_allowCLCTonly, m_preTrigger;
00069 int m_minBX, m_maxBX;
00070 int m_etawin[7], m_etamin[8], m_etamax[8];
00071 int m_mindphip, m_mindetap;
00072 int m_mindeta12_accp, m_maxdeta12_accp, m_maxdphi12_accp;
00073 int m_mindeta13_accp, m_maxdeta13_accp, m_maxdphi13_accp;
00074 int m_mindeta112_accp, m_maxdeta112_accp, m_maxdphi112_accp;
00075 int m_mindeta113_accp, m_maxdeta113_accp, m_maxdphi113_accp;
00076 int m_mindphip_halo, m_mindetap_halo;
00077 int m_straightp, m_curvedp;
00078 int m_mbaPhiOff, m_mbbPhiOff;
00079 int m_widePhi;
00080
00081
00082 int QualityEnableME1a, QualityEnableME1b, QualityEnableME1c, QualityEnableME1d, QualityEnableME1e, QualityEnableME1f;
00083 int QualityEnableME2a, QualityEnableME2b, QualityEnableME2c;
00084 int QualityEnableME3a, QualityEnableME3b, QualityEnableME3c;
00085 int QualityEnableME4a, QualityEnableME4b, QualityEnableME4c;
00086 int kill_fiber;
00087 int run_core;
00088 int trigger_on_ME1a, trigger_on_ME1b, trigger_on_ME2, trigger_on_ME3, trigger_on_ME4;
00089 int trigger_on_MB1a, trigger_on_MB1d;
00090 int singlesTrackPt;
00091 unsigned int singlesTrackOutput;
00092 int rescaleSinglesPhi;
00093
00094 int m_firmSP, m_firmFA, m_firmDD, m_firmVM;
00095
00096 CSCTriggerContainer<csc::L1Track> l1_tracks;
00097 CSCTriggerContainer<csctf::TrackStub> dt_stubs;
00098 std::vector<csctf::TrackStub> stub_vec_filtered;
00099
00100 static const std::string FPGAs[5];
00101
00102 std::map<std::string, CSCSectorReceiverLUT*> srLUTs_;
00103 CSCTFSPCoreLogic* core_;
00104 CSCTFPtLUT* ptLUT_;
00105
00106
00107 std::map<int, int> firmSP_Map;
00108 bool isCoreVerbose;
00109 };
00110
00111 #endif