CMS 3D CMS Logo

CSCAnodeLCTProcessor.h
Go to the documentation of this file.
1 #ifndef L1Trigger_CSCTriggerPrimitives_CSCAnodeLCTProcessor_h
2 #define L1Trigger_CSCTriggerPrimitives_CSCAnodeLCTProcessor_h
3 
29 
30 #include <vector>
31 
32 class CSCGeometry;
33 
35 {
36  public:
38  CSCAnodeLCTProcessor(unsigned endcap, unsigned station, unsigned sector,
39  unsigned subsector, unsigned chamber,
40  const edm::ParameterSet& conf,
41  const edm::ParameterSet& comm);
42 
45 
47  void setConfigParameters(const CSCDBL1TPParameters* conf);
48 
50  void clear();
51 
52  void setCSCGeometry(const CSCGeometry *g) { csc_g = g; }
53 
56  std::vector<CSCALCTDigi> run(const CSCWireDigiCollection* wiredc);
57 
60  void run(const std::vector<int> wire[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES]);
61 
63  bool getDigis(const CSCWireDigiCollection* wiredc);
64  void getDigis(const CSCWireDigiCollection* wiredc, const CSCDetId& id);
65 
72 
75 
77  std::vector<CSCALCTDigi> readoutALCTs();
78 
80  std::vector<CSCALCTDigi> getALCTs();
81 
83  void setRing(unsigned r) {theRing = r;}
84 
91 
92  private:
97  int infoV;
98 
100  const unsigned theEndcap;
101  const unsigned theStation;
102  const unsigned theSector;
103  const unsigned theSubsector;
104  const unsigned theTrigChamber;
105 
107 
109  unsigned theRing;
110 
111  unsigned theChamber;
112 
113  bool isME11;
114 
117 
121  std::vector<CSCWireDigi> digiV[CSCConstants::NUM_LAYERS];
123 
125  bool isMTCC;
126 
128  bool isTMB07;
129 
131  bool isSLHC;
132 
138 
140  unsigned int hit_persist;
141 
144 
147 
150 
154 
157 
160 
163 
166 
169 
171  static const unsigned int def_fifo_tbins, def_fifo_pretrig;
172  static const unsigned int def_drift_delay;
174  static const unsigned int def_nplanes_hit_accel_pretrig;
175  static const unsigned int def_nplanes_hit_accel_pattern;
176  static const unsigned int def_trig_mode, def_accel_mode;
177  static const unsigned int def_l1a_window_width;
178 
181 
183  void loadPatternMask();
184 
187 
189  void checkConfigParameters();
190 
192  void clear(const int wire, const int pattern);
193 
195  void readWireDigis(std::vector<int> wire[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES]);
196  bool pulseExtension(const std::vector<int> wire[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES]);
197  bool preTrigger(const int key_wire, const int start_bx);
198  bool patternDetection(const int key_wire);
199  void ghostCancellationLogic();
201  void lctSearch();
202  void trigMode(const int key_wire);
203  void accelMode(const int key_wire);
204 
205  std::vector<CSCALCTDigi>
206  bestTrackSelector(const std::vector<CSCALCTDigi>& all_alcts);
207  bool isBetterALCT(const CSCALCTDigi& lhsALCT, const CSCALCTDigi& rhsALCT);
208 
210  void dumpConfigParams() const;
211 
213  void dumpDigis(const std::vector<int> wire[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES]) const;
214 
215  void showPatterns(const int key_wire);
216 };
217 
218 #endif
static const int time_weights[CSCConstants::MAX_WIRES_IN_PATTERN]
void showPatterns(const int key_wire)
void readWireDigis(std::vector< int > wire[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES])
int quality[CSCConstants::MAX_NUM_WIRES][3]
int first_bx_corrected[CSCConstants::MAX_NUM_WIRES]
static const unsigned int def_drift_delay
static const unsigned int def_fifo_tbins
bool getDigis(const CSCWireDigiCollection *wiredc)
void setConfigParameters(const CSCDBL1TPParameters *conf)
void trigMode(const int key_wire)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
static const unsigned int def_accel_mode
static const int pattern_envelope[CSCConstants::NUM_ALCT_PATTERNS][CSCConstants::MAX_WIRES_IN_PATTERN]
static const unsigned int def_nplanes_hit_accel_pretrig
static const unsigned int def_fifo_pretrig
void accelMode(const int key_wire)
int pattern_mask[CSCConstants::NUM_ALCT_PATTERNS][CSCConstants::MAX_WIRES_IN_PATTERN]
static const unsigned int def_nplanes_hit_pattern
bool preTrigger(const int key_wire, const int start_bx)
bool pulseExtension(const std::vector< int > wire[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES])
CSCALCTDigi secondALCT[CSCConstants::MAX_ALCT_TBINS]
static const unsigned int def_l1a_window_width
static const int pattern_mask_open[CSCConstants::NUM_ALCT_PATTERNS][CSCConstants::MAX_WIRES_IN_PATTERN]
bool isBetterALCT(const CSCALCTDigi &lhsALCT, const CSCALCTDigi &rhsALCT)
static const unsigned int def_trig_mode
static const unsigned int def_nplanes_hit_accel_pattern
void setRing(unsigned r)
std::vector< CSCALCTDigi > readoutALCTs()
void setCSCGeometry(const CSCGeometry *g)
const CSCGeometry * csc_g
std::vector< CSCALCTDigi > bestTrackSelector(const std::vector< CSCALCTDigi > &all_alcts)
CSCALCTDigi bestALCT[CSCConstants::MAX_ALCT_TBINS]
int first_bx[CSCConstants::MAX_NUM_WIRES]
void dumpDigis(const std::vector< int > wire[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES]) const
unsigned int pulse[CSCConstants::NUM_LAYERS][CSCConstants::MAX_NUM_WIRES]
bool patternDetection(const int key_wire)
static const int pattern_mask_r1[CSCConstants::NUM_ALCT_PATTERNS][CSCConstants::MAX_WIRES_IN_PATTERN]
unsigned int nplanes_hit_accel_pattern
std::vector< CSCALCTDigi > run(const CSCWireDigiCollection *wiredc)
unsigned int pretrig_extra_deadtime
std::vector< CSCWireDigi > digiV[CSCConstants::NUM_LAYERS]
static const int pattern_mask_slim[CSCConstants::NUM_ALCT_PATTERNS][CSCConstants::MAX_WIRES_IN_PATTERN]
std::vector< CSCALCTDigi > getALCTs()
static const unsigned int def_nplanes_hit_pretrig
unsigned int nplanes_hit_accel_pretrig