CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/CondFormats/SiPixelObjects/src/FrameConversion.cc

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) {  // -Z side
00022 
00023     if (name.isHalfModule() ) {
00024 
00025       slopeRow = -1;  // d.k. 23/10/08 
00026       slopeCol = 1;   // d.k. 13/11/08
00027       rowOffset = LocalPixel::numRowsInRoc-1;
00028       colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc;  // d.k. 13/11/08
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 {  // +Z side
00051 
00052     if (name.isHalfModule() ) {
00053       slopeRow = -1; 
00054       slopeCol = 1;
00055       rowOffset = LocalPixel::numRowsInRoc-1;
00056       colOffset = rocIdInDetUnit * LocalPixel::numColsInRoc; 
00057     } else {  // Full modules
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     } // if modules 
00070     
00071 
00072   } // end if +-Z
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 }