Go to the documentation of this file.00001 #include "CondFormats/SiPixelObjects/interface/FrameConversion.h"
00002 #include "DataFormats/SiPixelDetId/interface/PixelBarrelName.h"
00003 #include "DataFormats/SiPixelDetId/interface/PixelEndcapName.h"
00004 #include "CondFormats/SiPixelObjects/interface/LocalPixel.h"
00005
00006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00007
00008 using namespace std;
00009 using namespace edm;
00010 using namespace sipixelobjects;
00011
00012 FrameConversion::FrameConversion( const PixelBarrelName & name, int rocIdInDetUnit)
00013 {
00014 int slopeRow =0;
00015 int slopeCol = 0;
00016 int rowOffset = 0;
00017 int colOffset = 0;
00018
00019
00020 PixelBarrelName::Shell shell = name.shell();
00021 if (shell == PixelBarrelName::mO || shell == PixelBarrelName::mI) {
00022
00023 if (name.isHalfModule() ) {
00024
00025 slopeRow = -1;
00026 slopeCol = 1;
00027 rowOffset = LocalPixel::numRowsInRoc-1;
00028 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
00029
00030 } else {
00031
00032 if (rocIdInDetUnit <8) {
00033 slopeRow = 1;
00034 slopeCol = -1;
00035
00036 rowOffset = 0;
00037 colOffset = (8-rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00038
00039 } else {
00040 slopeRow = -1;
00041 slopeCol = 1;
00042
00043 rowOffset = 2*LocalPixel::numRowsInRoc-1;
00044 colOffset = (rocIdInDetUnit-8)*LocalPixel::numColsInRoc;
00045
00046 }
00047 }
00048
00049
00050 } else {
00051
00052 if (name.isHalfModule() ) {
00053 slopeRow = -1;
00054 slopeCol = 1;
00055 rowOffset = LocalPixel::numRowsInRoc-1;
00056 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
00057 } else {
00058 if (rocIdInDetUnit <8) {
00059 slopeRow = -1;
00060 slopeCol = 1;
00061 rowOffset = 2*LocalPixel::numRowsInRoc-1;
00062 colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;
00063 } else {
00064 slopeRow = 1;
00065 slopeCol = -1;
00066 rowOffset = 0;
00067 colOffset = (16-rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00068 }
00069 }
00070
00071
00072 }
00073
00074 theRowConversion = LinearConversion(rowOffset,slopeRow);
00075 theCollumnConversion = LinearConversion(colOffset, slopeCol);
00076
00077 }
00078 FrameConversion::FrameConversion( const PixelEndcapName & name, int rocIdInDetUnit)
00079 {
00080 int slopeRow =0;
00081 int slopeCol = 0;
00082 int rowOffset = 0;
00083 int colOffset = 0;
00084
00085 if (name.pannelName()==1) {
00086 if (name.plaquetteName()==1) {
00087 slopeRow = 1;
00088 slopeCol = -1;
00089 rowOffset = 0;
00090 colOffset = (1+rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00091 } else if (name.plaquetteName()==2) {
00092 if (rocIdInDetUnit <3) {
00093 slopeRow = -1;
00094 slopeCol = 1;
00095 rowOffset = 2*LocalPixel::numRowsInRoc-1;
00096 colOffset = rocIdInDetUnit*LocalPixel::numColsInRoc;
00097 } else {
00098 slopeRow = 1;
00099 slopeCol = -1;
00100 rowOffset = 0;
00101 colOffset = (6-rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00102 }
00103 } else if (name.plaquetteName()==3) {
00104 if (rocIdInDetUnit <4) {
00105 slopeRow = -1;
00106 slopeCol = 1;
00107 rowOffset = 2*LocalPixel::numRowsInRoc-1;
00108 colOffset = rocIdInDetUnit*LocalPixel::numColsInRoc;
00109 } else {
00110 slopeRow = 1;
00111 slopeCol = -1;
00112 rowOffset = 0;
00113 colOffset = (8-rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00114 }
00115 } else if (name.plaquetteName()==4) {
00116 slopeRow = -1;
00117 slopeCol = 1;
00118 rowOffset = LocalPixel::numRowsInRoc-1;
00119 colOffset = rocIdInDetUnit*LocalPixel::numColsInRoc;
00120 }
00121 } else {
00122 if (name.plaquetteName()==1) {
00123 if (rocIdInDetUnit <3) {
00124 slopeRow = 1;
00125 slopeCol = -1;
00126 rowOffset = 0;
00127 colOffset = (3-rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00128 } else {
00129 slopeRow = -1;
00130 slopeCol = 1;
00131 colOffset = (rocIdInDetUnit-3)*LocalPixel::numColsInRoc;
00132 rowOffset = 2*LocalPixel::numRowsInRoc-1;
00133 }
00134 } else if (name.plaquetteName()==2) {
00135 if (rocIdInDetUnit <4) {
00136 slopeRow = 1;
00137 slopeCol = -1;
00138 rowOffset = 0;
00139 colOffset = (4-rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00140 } else {
00141 slopeRow = -1;
00142 slopeCol = 1;
00143 colOffset = (rocIdInDetUnit-4)*LocalPixel::numColsInRoc;
00144 rowOffset = 2*LocalPixel::numRowsInRoc-1;
00145 }
00146 } else if (name.plaquetteName()==3) {
00147 if (rocIdInDetUnit <5) {
00148 slopeRow = 1;
00149 slopeCol = -1;
00150 rowOffset = 0;
00151 colOffset = (5-rocIdInDetUnit)*LocalPixel::numColsInRoc-1;
00152 } else {
00153 slopeRow = -1;
00154 slopeCol = 1;
00155 colOffset = (rocIdInDetUnit-5)*LocalPixel::numColsInRoc;
00156 rowOffset = 2*LocalPixel::numRowsInRoc-1;
00157 }
00158 }
00159 }
00160
00161 theRowConversion = LinearConversion(rowOffset,slopeRow);
00162 theCollumnConversion = LinearConversion(colOffset, slopeCol);
00163 }