00001 #ifndef CSCTriggerPrimitives_CSCMotherboard_h
00002 #define CSCTriggerPrimitives_CSCMotherboard_h
00003
00039 #include <L1Trigger/CSCTriggerPrimitives/src/CSCAnodeLCTProcessor.h>
00040 #include <L1Trigger/CSCTriggerPrimitives/src/CSCCathodeLCTProcessor.h>
00041 #include <DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h>
00042
00043 class CSCMotherboard
00044 {
00045 public:
00047 CSCMotherboard(unsigned endcap, unsigned station, unsigned sector,
00048 unsigned subsector, unsigned chamber,
00049 const edm::ParameterSet& conf);
00050
00052 CSCMotherboard();
00053
00055 ~CSCMotherboard();
00056
00058 void run(std::vector<int> time1[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES],
00059 int time2[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_STRIPS],
00060 int triad[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_STRIPS]);
00061
00064 std::vector<CSCCorrelatedLCTDigi> run(const CSCWireDigiCollection* wiredc,
00065 const CSCComparatorDigiCollection* compdc);
00066
00068 std::vector<CSCCorrelatedLCTDigi> getLCTs();
00069
00072 void clear();
00073
00075 void setConfigParameters(const CSCL1TPParameters* conf);
00076
00078 CSCAnodeLCTProcessor* alct;
00079
00081 CSCCathodeLCTProcessor* clct;
00082
00083 private:
00086 int infoV;
00087
00089 const unsigned theEndcap;
00090 const unsigned theStation;
00091 const unsigned theSector;
00092 const unsigned theSubsector;
00093 const unsigned theTrigChamber;
00094
00096 bool isMTCC;
00097
00099 bool isTMB07;
00100
00102 CSCCorrelatedLCTDigi firstLCT;
00103
00105 CSCCorrelatedLCTDigi secondLCT;
00106
00107 void correlateLCTs(CSCALCTDigi bestALCT, CSCALCTDigi secondALCT,
00108 CSCCLCTDigi bestCLCT, CSCCLCTDigi secondCLCT);
00109 CSCCorrelatedLCTDigi constructLCTs(const CSCALCTDigi& aLCT,
00110 const CSCCLCTDigi& cLCT);
00111 unsigned int encodePattern(const int ptn, const int highPt);
00112 unsigned int findQuality(const CSCALCTDigi& aLCT, const CSCCLCTDigi& cLCT);
00113
00114
00115 int findSTA(const bool, const bool, const bool, const bool);
00116 int findBxnMatch(const int aBxn, const int cBxn);
00117
00118
00119 void testLCT();
00120 };
00121 #endif