File indexing completed on 2023-03-17 10:46:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "CondFormats/DTObjects/interface/DTSequentialLayerNumber.h"
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 namespace {
0028 constexpr int offsetChamber[] = {0, 0, 12, 24, 36};
0029 constexpr int layersPerSector = 44;
0030 constexpr int layersIn13Sectors = (layersPerSector * 12) + 8;
0031 constexpr int layersPerWheel = layersIn13Sectors + 8;
0032 }
0033
0034
0035
0036
0037 DTSequentialLayerNumber::DTSequentialLayerNumber() {}
0038
0039
0040
0041
0042 DTSequentialLayerNumber::~DTSequentialLayerNumber() {}
0043
0044 int DTSequentialLayerNumber::id(int wheel, int station, int sector, int superlayer, int layer) {
0045 wheel += 3;
0046 if (wheel <= 0)
0047 return -1;
0048 if (station <= 0)
0049 return -2;
0050 if (sector <= 0)
0051 return -3;
0052 if (superlayer <= 0)
0053 return -4;
0054 if (layer <= 0)
0055 return -5;
0056
0057 int seqLayerNum = 0;
0058
0059 if (wheel > 5)
0060 return -1;
0061 seqLayerNum += (wheel - 1) * layersPerWheel;
0062
0063 if (sector > 14)
0064 return -2;
0065 if (sector > 12 && station < 4)
0066 return -2;
0067 if (sector > 13)
0068 seqLayerNum += layersIn13Sectors;
0069 else
0070 seqLayerNum += (sector - 1) * layersPerSector;
0071
0072 if (station > 4)
0073 return -3;
0074 if (sector < 13)
0075 seqLayerNum += offsetChamber[station];
0076
0077 if (superlayer > 3)
0078 return -4;
0079 if (layer > 4)
0080 return -5;
0081 if (superlayer != 2) {
0082 if (superlayer == 3)
0083 layer += 4;
0084 } else {
0085 if (station == 4)
0086 return -4;
0087 layer += 8;
0088 }
0089
0090 return seqLayerNum + layer;
0091 }
0092
0093 int DTSequentialLayerNumber::max() { return 5 * layersPerWheel; }