File indexing completed on 2024-04-06 12:02:34
0001 #include "CondFormats/SiPixelObjects/interface/FrameConversion.h"
0002 #include "DataFormats/TrackerCommon/interface/PixelBarrelName.h"
0003 #include "DataFormats/TrackerCommon/interface/PixelEndcapName.h"
0004 #include "CondFormats/SiPixelObjects/interface/LocalPixel.h"
0005 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0006
0007 using namespace std;
0008 using namespace edm;
0009 using namespace sipixelobjects;
0010
0011 FrameConversion::FrameConversion(bool bpix, int side, int layer, int rocIdInDetUnit) {
0012 int slopeRow = 0;
0013 int slopeCol = 0;
0014 int rowOffset = 0;
0015 int colOffset = 0;
0016
0017 if (bpix) {
0018
0019 if (side == -1 && layer != 1) {
0020
0021 if (rocIdInDetUnit < 8) {
0022 slopeRow = 1;
0023 slopeCol = -1;
0024 rowOffset = 0;
0025 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0026 } else {
0027 slopeRow = -1;
0028 slopeCol = 1;
0029 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0030 colOffset = (rocIdInDetUnit - 8) * LocalPixel::numColsInRoc;
0031 }
0032
0033 } else {
0034
0035 if (rocIdInDetUnit < 8) {
0036 slopeRow = -1;
0037 slopeCol = 1;
0038 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0039 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0040 } else {
0041 slopeRow = 1;
0042 slopeCol = -1;
0043 rowOffset = 0;
0044 colOffset = (16 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0045 }
0046
0047 }
0048
0049 } else {
0050
0051
0052
0053 if (side == -1) {
0054 if (rocIdInDetUnit < 8) {
0055 slopeRow = 1;
0056 slopeCol = -1;
0057 rowOffset = 0;
0058 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0059 } else {
0060 slopeRow = -1;
0061 slopeCol = 1;
0062 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0063 colOffset = (rocIdInDetUnit - 8) * LocalPixel::numColsInRoc;
0064 }
0065 } else {
0066 if (rocIdInDetUnit < 8) {
0067 slopeRow = 1;
0068 slopeCol = -1;
0069 rowOffset = 0;
0070 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0071 } else {
0072 slopeRow = -1;
0073 slopeCol = 1;
0074 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0075 colOffset = (rocIdInDetUnit - 8) * LocalPixel::numColsInRoc;
0076 }
0077
0078 }
0079
0080 }
0081
0082 theRowConversion = LinearConversion(rowOffset, slopeRow);
0083 theCollumnConversion = LinearConversion(colOffset, slopeCol);
0084 }
0085
0086 FrameConversion::FrameConversion(bool bpix, int side, int rocIdInDetUnit) {
0087 int slopeRow = 0;
0088 int slopeCol = 0;
0089 int rowOffset = 0;
0090 int colOffset = 0;
0091
0092 if (bpix) {
0093
0094 if (side == -1) {
0095
0096 if (rocIdInDetUnit < 8) {
0097 slopeRow = 1;
0098 slopeCol = -1;
0099 rowOffset = 0;
0100 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0101 } else {
0102 slopeRow = -1;
0103 slopeCol = 1;
0104 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0105 colOffset = (rocIdInDetUnit - 8) * LocalPixel::numColsInRoc;
0106 }
0107
0108 } else {
0109
0110 if (rocIdInDetUnit < 8) {
0111 slopeRow = -1;
0112 slopeCol = 1;
0113 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0114 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0115 } else {
0116 slopeRow = 1;
0117 slopeCol = -1;
0118 rowOffset = 0;
0119 colOffset = (16 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0120 }
0121
0122 }
0123
0124 } else {
0125
0126
0127
0128 if (side == -1) {
0129 if (rocIdInDetUnit < 8) {
0130 slopeRow = 1;
0131 slopeCol = -1;
0132 rowOffset = 0;
0133 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0134 } else {
0135 slopeRow = -1;
0136 slopeCol = 1;
0137 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0138 colOffset = (rocIdInDetUnit - 8) * LocalPixel::numColsInRoc;
0139 }
0140 } else {
0141 if (rocIdInDetUnit < 8) {
0142 slopeRow = 1;
0143 slopeCol = -1;
0144 rowOffset = 0;
0145 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0146 } else {
0147 slopeRow = -1;
0148 slopeCol = 1;
0149 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0150 colOffset = (rocIdInDetUnit - 8) * LocalPixel::numColsInRoc;
0151 }
0152
0153 }
0154
0155 }
0156
0157 theRowConversion = LinearConversion(rowOffset, slopeRow);
0158 theCollumnConversion = LinearConversion(colOffset, slopeCol);
0159 }
0160
0161
0162 FrameConversion::FrameConversion(const PixelBarrelName& name, int rocIdInDetUnit) {
0163 int slopeRow = 0;
0164 int slopeCol = 0;
0165 int rowOffset = 0;
0166 int colOffset = 0;
0167
0168
0169 PixelBarrelName::Shell shell = name.shell();
0170 if (shell == PixelBarrelName::mO || shell == PixelBarrelName::mI) {
0171
0172 if (name.isHalfModule()) {
0173 slopeRow = -1;
0174 slopeCol = 1;
0175 rowOffset = LocalPixel::numRowsInRoc - 1;
0176 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0177
0178 } else {
0179 if (rocIdInDetUnit < 8) {
0180 slopeRow = 1;
0181 slopeCol = -1;
0182
0183 rowOffset = 0;
0184 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0185
0186 } else {
0187 slopeRow = -1;
0188 slopeCol = 1;
0189
0190 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0191 colOffset = (rocIdInDetUnit - 8) * LocalPixel::numColsInRoc;
0192 }
0193 }
0194
0195 } else {
0196
0197 if (name.isHalfModule()) {
0198 slopeRow = -1;
0199 slopeCol = 1;
0200 rowOffset = LocalPixel::numRowsInRoc - 1;
0201 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0202 } else {
0203 if (rocIdInDetUnit < 8) {
0204 slopeRow = -1;
0205 slopeCol = 1;
0206 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0207 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0208 } else {
0209 slopeRow = 1;
0210 slopeCol = -1;
0211 rowOffset = 0;
0212 colOffset = (16 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0213 }
0214 }
0215
0216 }
0217
0218 theRowConversion = LinearConversion(rowOffset, slopeRow);
0219 theCollumnConversion = LinearConversion(colOffset, slopeCol);
0220 }
0221
0222 FrameConversion::FrameConversion(const PixelEndcapName& name, int rocIdInDetUnit) {
0223 int slopeRow = 0;
0224 int slopeCol = 0;
0225 int rowOffset = 0;
0226 int colOffset = 0;
0227
0228 if (name.pannelName() == 1) {
0229 if (name.plaquetteName() == 1) {
0230 slopeRow = 1;
0231 slopeCol = -1;
0232 rowOffset = 0;
0233 colOffset = (1 + rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0234 } else if (name.plaquetteName() == 2) {
0235 if (rocIdInDetUnit < 3) {
0236 slopeRow = -1;
0237 slopeCol = 1;
0238 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0239 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0240 } else {
0241 slopeRow = 1;
0242 slopeCol = -1;
0243 rowOffset = 0;
0244 colOffset = (6 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0245 }
0246 } else if (name.plaquetteName() == 3) {
0247 if (rocIdInDetUnit < 4) {
0248 slopeRow = -1;
0249 slopeCol = 1;
0250 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0251 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0252 } else {
0253 slopeRow = 1;
0254 slopeCol = -1;
0255 rowOffset = 0;
0256 colOffset = (8 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0257 }
0258 } else if (name.plaquetteName() == 4) {
0259 slopeRow = -1;
0260 slopeCol = 1;
0261 rowOffset = LocalPixel::numRowsInRoc - 1;
0262 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0263 }
0264 } else {
0265 if (name.plaquetteName() == 1) {
0266 if (rocIdInDetUnit < 3) {
0267 slopeRow = 1;
0268 slopeCol = -1;
0269 rowOffset = 0;
0270 colOffset = (3 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0271 } else {
0272 slopeRow = -1;
0273 slopeCol = 1;
0274 colOffset = (rocIdInDetUnit - 3) * LocalPixel::numColsInRoc;
0275 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0276 }
0277 } else if (name.plaquetteName() == 2) {
0278 if (rocIdInDetUnit < 4) {
0279 slopeRow = 1;
0280 slopeCol = -1;
0281 rowOffset = 0;
0282 colOffset = (4 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0283 } else {
0284 slopeRow = -1;
0285 slopeCol = 1;
0286 colOffset = (rocIdInDetUnit - 4) * LocalPixel::numColsInRoc;
0287 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0288 }
0289 } else if (name.plaquetteName() == 3) {
0290 if (rocIdInDetUnit < 5) {
0291 slopeRow = 1;
0292 slopeCol = -1;
0293 rowOffset = 0;
0294 colOffset = (5 - rocIdInDetUnit) * LocalPixel::numColsInRoc - 1;
0295 } else {
0296 slopeRow = -1;
0297 slopeCol = 1;
0298 colOffset = (rocIdInDetUnit - 5) * LocalPixel::numColsInRoc;
0299 rowOffset = 2 * LocalPixel::numRowsInRoc - 1;
0300 }
0301 }
0302 }
0303
0304 theRowConversion = LinearConversion(rowOffset, slopeRow);
0305 theCollumnConversion = LinearConversion(colOffset, slopeCol);
0306 }