|
||||
File indexing completed on 2024-04-06 12:04:46
0001 #ifndef MuonDetId_CSCTriggerNumbering_h 0002 #define MuonDetId_CSCTriggerNumbering_h 0003 0004 /** \class CSCTriggerNumbering 0005 * 0006 * Converts standard trigger labels to geometry labels. 0007 * "Standard" implies that the numbering is EXACTLY that of 0008 * CMS NOTE: CMS IN 2000/004 v. 2.1 (Oct, 2005). 0009 * 0010 * \warning EVERY INDEX COUNTS FROM ONE 0011 */ 0012 0013 class CSCDetId; 0014 0015 class CSCTriggerNumbering { 0016 public: 0017 CSCTriggerNumbering(); 0018 ~CSCTriggerNumbering(); 0019 0020 /** 0021 * The following functions transform standard chamber labels into 0022 * their corresponding trigger labels. 0023 */ 0024 0025 /** 0026 * Return trigger-level sector id for an Endcap Muon chamber. 0027 * 0028 * This method encapsulates the information about which chambers 0029 * are in which sectors, and may need updating according to 0030 * hardware changes, or software chamber indexing. 0031 * 0032 * Station 1 has 3 rings of 10-degree chambers. <br> 0033 * Stations 2, 3, 4 have an inner ring of 20-degree chambers 0034 * and an outer ring of 10-degree chambers. <br> 0035 * 0036 * Sectors are 60 degree slices of a station, covering both rings. <br> 0037 * For Station 1, there are subsectors of 30 degrees: 9 10-degree 0038 * chambers (3 each from ME1/1, ME1/2, ME1/3.) <br> 0039 * 0040 * The first sector starts at phi = 15 degrees so it matches Barrel Muon sectors. 0041 * We count from one not zero. 0042 * 0043 */ 0044 static int triggerSectorFromLabels(int station, int ring, int chamber); 0045 static int triggerSectorFromLabels(CSCDetId id); 0046 0047 /** 0048 * Return trigger-level sub sector id within a sector in station one. 0049 * 0050 * Each station one sector has two 30 degree subsectors. 0051 * Again, we count from one, not zero. Zero is an allowed return value though. 0052 * 0053 * A return value of zero means this station does not have subsectors. 0054 * 0055 */ 0056 static int triggerSubSectorFromLabels(int station, int chamber); 0057 static int triggerSubSectorFromLabels(CSCDetId id); 0058 0059 /** 0060 * Return trigger-level CSC id within a sector for an Endcap Muon chamber. 0061 * 0062 * This id is an index within a sector such that the 3 inner ring chambers 0063 * (20 degrees each) are 1, 2, 3 (increasing counterclockwise) and the 6 outer ring 0064 * chambers (10 degrees each) are 4, 5, 6, 7, 8, 9 (again increasing counter-clockwise.) 0065 * 0066 * This method knows which chambers are part of which sector and returns 0067 * the chamber label/index/identifier accordingly. 0068 * Beware that this information is liable to change according to hardware 0069 * and software changes. 0070 * 0071 */ 0072 static int triggerCscIdFromLabels(int station, int ring, int chamber); 0073 static int triggerCscIdFromLabels(CSCDetId id); 0074 0075 /** 0076 * The following functions transform trigger labels into their 0077 * corresponding standard chamber labels. 0078 */ 0079 0080 /** 0081 * \function ringFromTriggerLabels 0082 * 0083 * This function calculates the ring at which a given chamber resides. 0084 * Station 1: ring = [1,3] 0085 * Station 2-4: ring = [1,2] 0086 */ 0087 static int ringFromTriggerLabels(int station, int triggerCSCID); 0088 0089 /** 0090 * \function chamberFromTriggerLabels 0091 * 0092 * This function calculates the chamber number for a given set of 0093 * trigger labels. 0094 */ 0095 static int chamberFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station, int TriggerCSCID); 0096 0097 /** 0098 * \function sectorFromTriggerLabels 0099 * 0100 * Translates trigger sector and trigger subsector into the "real" sector number 0101 * For station 1 sector = [1,12] 0102 * For stations 2-4 sector = [1,6] 0103 */ 0104 static int sectorFromTriggerLabels(int TriggerSector, int TriggerSubSector, int station); 0105 0106 /** 0107 * Minimum and Maximum values for trigger specific labels. 0108 */ 0109 0110 static int maxTriggerCscId() { return MAX_CSCID; } 0111 static int minTriggerCscId() { return MIN_CSCID; } 0112 static int maxTriggerSectorId() { return MAX_TRIGSECTOR; } 0113 static int minTriggerSectorId() { return MIN_TRIGSECTOR; } 0114 static int maxTriggerSubSectorId() { return MAX_TRIGSUBSECTOR; } 0115 static int minTriggerSubSectorId() { return MIN_TRIGSUBSECTOR + 1; } 0116 0117 private: 0118 // Below are counts for trigger based labels. 0119 0120 // Max counts for trigger labels. 0121 enum eTrigMaxNum { MAX_TRIGSECTOR = 6, MAX_CSCID = 9, MAX_TRIGSUBSECTOR = 2 }; 0122 0123 // Min counts for trigger labels. Again, we count from one. 0124 enum eTrigMinNum { MIN_TRIGSECTOR = 1, MIN_CSCID = 1, MIN_TRIGSUBSECTOR = 0 }; 0125 }; 0126 0127 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |