Back to home page

Project CMSSW displayed by LXR

 
 

    


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) {  // bpix
0018 
0019     if (side == -1 && layer != 1) {  // -Z side: 4 non-flipped modules oriented like 'dddd', except 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       }  // if roc
0032 
0033     } else {  // +Z side: 4 non-flipped modules oriented like 'pppp', but all 8 in Layer 1
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     }  // end if +-Z
0048 
0049   } else {  // fpix
0050 
0051     // for fpix follow Urs's code for pilot blade
0052     // no difference between panels
0053     if (side == -1) {  // pannel 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 {  // pannel 2
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     }  // side
0079 
0080   }  // bpix/fpix
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) {  // bpix
0093 
0094     if (side == -1) {  // -Z side
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       }  // if roc
0107 
0108     } else {  // +Z side
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     }  // end if +-Z
0123 
0124   } else {  // fpix
0125 
0126     // for fpix follow Urs's code for pilot blade
0127     // no difference between panels
0128     if (side == -1) {  // pannel 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 {  // pannel 2
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     }  // side
0154 
0155   }  // bpix/fpix
0156 
0157   theRowConversion = LinearConversion(rowOffset, slopeRow);
0158   theCollumnConversion = LinearConversion(colOffset, slopeCol);
0159 }
0160 
0161 // OLD method for phase0 bpix
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) {  // -Z side
0171 
0172     if (name.isHalfModule()) {
0173       slopeRow = -1;  // d.k. 23/10/08
0174       slopeCol = 1;   // d.k. 13/11/08
0175       rowOffset = LocalPixel::numRowsInRoc - 1;
0176       colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;  // d.k. 13/11/08
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 {  // +Z side
0196 
0197     if (name.isHalfModule()) {
0198       slopeRow = -1;
0199       slopeCol = 1;
0200       rowOffset = LocalPixel::numRowsInRoc - 1;
0201       colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
0202     } else {  // Full modules
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     }  // if modules
0215 
0216   }  // end if +-Z
0217 
0218   theRowConversion = LinearConversion(rowOffset, slopeRow);
0219   theCollumnConversion = LinearConversion(colOffset, slopeCol);
0220 }
0221 // OLD method for phase0 fpix
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 }