CMS 3D CMS Logo

PixelBarrelName Class Reference

Module name (as in PixelDatabase) in barrel. More...

#include <DataFormats/SiPixelDetId/interface/PixelBarrelName.h>

Inheritance diagram for PixelBarrelName:

PixelModuleName

List of all members.

Public Types

enum  Shell { mO = 1, mI = 2, pO = 3, pI = 4 }

Public Member Functions

PXBDetId getDetId ()
 return the DetId
bool isHalfModule () const
 full or half module
int ladderName () const
 ladder id (index in phi)
int layerName () const
 layer id
int moduleName () const
 module id (index in z)
virtual PixelModuleName::ModuleType moduleType () const
 module Type
virtual std::string name () const
 from base class
virtual bool operator== (const PixelModuleName &) const
 check equality of modules from datamemebers
 PixelBarrelName (std::string name)
 ctor from name string
 PixelBarrelName (Shell shell=mO, int layer=0, int module=0, int ladder=0)
 ctor for defined name with dummy parameters
 PixelBarrelName (const DetId &)
 ctor from DetId
int sectorName () const
 sector id
Shell shell () const
virtual ~PixelBarrelName ()

Private Attributes

int theLadder
int theLayer
int theModule
Shell thePart


Detailed Description

Module name (as in PixelDatabase) in barrel.

Definition at line 14 of file PixelBarrelName.h.


Member Enumeration Documentation

enum PixelBarrelName::Shell

Enumerator:
mO 
mI 
pO 
pI 

Definition at line 17 of file PixelBarrelName.h.

00017 { mO = 1, mI = 2 , pO =3 , pI =4 };


Constructor & Destructor Documentation

PixelBarrelName::PixelBarrelName ( const DetId id  ) 

ctor from DetId

Definition at line 12 of file PixelBarrelName.cc.

References funct::abs(), PXBDetId::ladder(), PXBDetId::layer(), mI, mO, PXBDetId::module(), pI, pO, theLadder, theLayer, theModule, and thePart.

Referenced by SiPixelTrackResidualSource::analyze(), SiPixelRawDataErrorModule::book(), SiPixelClusterModule::book(), SiPixelTrackResidualModule::book(), SiPixelRecHitModule::book(), SiPixelDigiModule::book(), SiPixelDigiModule::fill(), SiPixelRawDataErrorModule::fill(), SiPixelFolderOrganizer::getModuleFolder(), and SiPixelFolderOrganizer::setModuleFolder().

00013   : PixelModuleName(true)
00014 {
00015  
00016 //  uint32_t rawId = id.rawId(); 
00017   PXBDetId cmssw_numbering(id);
00018 
00019 
00020   theLayer = cmssw_numbering.layer();
00021 
00022   int oldModule = cmssw_numbering.module() -4; if (oldModule<=0) oldModule--;
00023 
00024   int oldLadder = cmssw_numbering.ladder();
00025   if (theLayer == 1) {
00026     if (oldLadder <= 5) oldLadder = 6-oldLadder;
00027     else if (oldLadder >= 6 && oldLadder <= 15 ) oldLadder = 5-oldLadder;
00028     else if (oldLadder >= 16) oldLadder = 26-oldLadder;
00029   } 
00030   else if (theLayer == 2) {
00031     if (oldLadder <= 8) oldLadder = 9-oldLadder;
00032     else if (oldLadder >= 9 && oldLadder <= 24) oldLadder = 8-oldLadder;
00033     else if (oldLadder >= 25) oldLadder = 41-oldLadder; 
00034   } 
00035   else if (theLayer == 3) {
00036     if (oldLadder <= 11) oldLadder = 12-oldLadder;
00037     else if (oldLadder >= 12 && oldLadder <= 33) oldLadder = 11-oldLadder;
00038     else if (oldLadder >= 34) oldLadder = 56-oldLadder;
00039   } 
00040 
00041   //
00042   // part
00043   //
00044   if      (oldModule < 0 && oldLadder < 0) thePart = mO; 
00045   else if (oldModule > 0 && oldLadder < 0) thePart = pO;
00046   else if (oldModule < 0 && oldLadder > 0) thePart = mI;
00047   else if (oldModule > 0 && oldLadder > 0) thePart = pI;
00048   
00049 
00050   //
00051   // ladder
00052   //
00053   theLadder = abs(oldLadder);
00054 
00055   //
00056   // module
00057   //
00058   theModule = abs(oldModule);
00059  
00060 }

PixelBarrelName::PixelBarrelName ( Shell  shell = mO,
int  layer = 0,
int  module = 0,
int  ladder = 0 
) [inline]

ctor for defined name with dummy parameters

Definition at line 23 of file PixelBarrelName.h.

00024     : PixelModuleName(true), 
00025       thePart(shell), theLayer(layer), theModule(module), theLadder(ladder) 
00026   { }

PixelBarrelName::PixelBarrelName ( std::string  name  ) 

ctor from name string

Definition at line 63 of file PixelBarrelName.cc.

References mI, mO, pI, pO, theLadder, theLayer, theModule, and thePart.

00064   : PixelModuleName(true), thePart(mO), theLayer(0),
00065     theModule(0), theLadder(0) {
00066 
00067   // parse the name string
00068   // first, check to make sure this is an BPix name, should start with "BPix_"
00069   // also check to make sure the needed parts are present
00070   if ( (name.substr(0, 5) != "BPix_") ||
00071        (name.find("_B") == string::npos) || 
00072        (name.find("_LYR") == string::npos) ||
00073        (name.find("_LDR") == string::npos) || 
00074        (name.find("_MOD") == string::npos) ) {
00075     edm::LogError ("BadNameString|SiPixel") 
00076       << "Bad name string in PixelBarrelName::PixelBarrelName(std::string): "
00077       << name;
00078     return;
00079   }
00080 
00081   // strip off ROC part if it's there
00082   if (name.find("_ROC") != string::npos)
00083     name = name.substr(0, name.find("_ROC"));
00084 
00085   // find shell
00086   string shellString = name.substr(name.find("_B")+2, name.find("_SEC")-name.find("_B")-2);
00087   if (shellString == "mO") thePart = mO;
00088   else if (shellString == "mI") thePart = mI;
00089   else if (shellString == "pO") thePart = pO;
00090   else if (shellString == "pI") thePart = pI;
00091   else {
00092     edm::LogError ("BadNameString|SiPixel")
00093       << "Unable to determine shell in PixelBarrelName::PixelBarrelName(std::string): "
00094       << name;
00095   }
00096 
00097   // find the layer
00098   string layerString = name.substr(name.find("_LYR")+4, name.find("_LDR")-name.find("_LYR")-4);
00099   if (layerString == "1") theLayer = 1;
00100   else if (layerString == "2") theLayer = 2;
00101   else if (layerString == "3") theLayer = 3;
00102   else {
00103     edm::LogError ("BadNameString|SiPixel")
00104       << "Unable to determine layer in PixelBarrelName::PixelBarrelName(std::string): "
00105       << name;
00106   }
00107 
00108   // find the ladder
00109   string ladderString = name.substr(name.find("_LDR")+4, name.find("_MOD")-name.find("_LDR")-4);
00110   if (ladderString == "1H") theLadder = 1;
00111   else if (ladderString == "10H" && theLayer == 1) theLadder = 10;
00112   else if (ladderString == "16H" && theLayer == 2) theLadder = 16;
00113   else if (ladderString == "22H" && theLayer == 3) theLadder = 22;
00114   else if (ladderString.substr(ladderString.size()-1, 1) == "F") {
00115     int ladderNum = atoi(ladderString.substr(0, ladderString.size() -1).c_str());
00116     if (theLayer == 1 && ladderNum > 1 && ladderNum < 10) theLadder = ladderNum;
00117     else if (theLayer == 2 && ladderNum > 1 && ladderNum < 16) theLadder = ladderNum;
00118     else if (theLayer == 3 && ladderNum > 1 && ladderNum < 22) theLadder = ladderNum;
00119     else {
00120       edm::LogError ("BadNameString|SiPixel")
00121         << "Unable to determine ladder in PixelBarrelName::PixelBarrelName(std::string): "
00122         << name;
00123     }
00124   } // full ladders
00125   else {
00126     edm::LogError ("BadNameString|SiPixel")
00127       << "Unable to determine ladder in PixelBarrelName::PixelBarrelName(std::string): "
00128       << name;
00129   }
00130 
00131   // find the module
00132   string moduleString = name.substr(name.find("_MOD")+4, name.size()-name.find("_MOD")-4);
00133   if (moduleString == "1") theModule = 1;
00134   else if (moduleString == "2") theModule = 2;
00135   else if (moduleString == "3") theModule = 3;
00136   else if (moduleString == "4") theModule = 4;
00137   else {
00138     edm::LogError ("BadNameString|SiPixel")
00139       << "Unable to determine module in PixelBarrelName::PixelBarrelName(std::string): "
00140       << name;
00141   }
00142 
00143 } // PixelBarrelName::PixelBarrelName(std::string name)

virtual PixelBarrelName::~PixelBarrelName (  )  [inline, virtual]

Definition at line 31 of file PixelBarrelName.h.

00031 { }


Member Function Documentation

PXBDetId PixelBarrelName::getDetId (  ) 

return the DetId

Definition at line 228 of file PixelBarrelName.cc.

References ladderName(), layerName(), mO, moduleName(), SurfaceOrientation::outer, pI, pO, shell(), and thePart.

00228                                    {
00229   
00230   uint32_t layer = 0;
00231   uint32_t ladder = 0;
00232   uint32_t module = 0;
00233 
00234   layer = layerName();
00235   uint32_t tmpLadder = ladderName();
00236   uint32_t tmpModule = moduleName();
00237 
00238   // translate the ladder number from the naming convention to the cmssw convention
00239   bool outer = false;
00240   Shell shell = thePart;
00241   outer = (shell == mO) || (shell == pO);
00242   if (outer) {
00243     if (layer == 1)
00244       ladder = tmpLadder + 5;
00245     else if (layer == 2)
00246       ladder = tmpLadder + 8;
00247     else if (layer == 3)
00248       ladder = tmpLadder + 11;
00249   } // outer
00250   else { // inner
00251     if (layer == 1) {
00252       if (tmpLadder <= 5) ladder = 6 - tmpLadder;
00253       else if (tmpLadder <= 10) ladder = 26 - tmpLadder;
00254     } // layer 1
00255     else if (layer == 2) {
00256       if (tmpLadder <= 8) ladder = 9 - tmpLadder;
00257       else if (tmpLadder <= 16) ladder = 41 - tmpLadder;
00258     } // layer 2
00259     else if (layer == 3) {
00260       if (tmpLadder <= 11) ladder = 12 - tmpLadder;
00261       else if (tmpLadder <= 22) ladder = 56 - tmpLadder;
00262     } // layer 3
00263   } // inner
00264 
00265   // translate the module number from naming convention to cmssw convention
00266   // numbering starts at positive z
00267   if (shell == pO || shell == pI)
00268     module = tmpModule + 4;
00269   else // negative z side
00270     module = 5 - tmpModule;
00271 
00272   return PXBDetId(layer, ladder, module);
00273 
00274 } // PXBDetId PixelBarrelName::getDetId()

bool PixelBarrelName::isHalfModule (  )  const

full or half module

Definition at line 189 of file PixelBarrelName.cc.

References theLadder, and theLayer.

Referenced by PixelToLNKAssociateFromAscii::addConnections(), sipixelobjects::FrameConversion::FrameConversion(), PixelBarrelLinkMaker::links(), moduleType(), and name().

00190 {
00191   bool halfModule = false;
00192   if (theLadder == 1) halfModule = true;
00193   if (theLayer == 1 && theLadder == 10) halfModule = true;
00194   if (theLayer == 2 && theLadder == 16) halfModule = true;
00195   if (theLayer == 3 && theLadder == 22) halfModule = true;
00196   return halfModule;
00197 }

int PixelBarrelName::ladderName (  )  const [inline]

ladder id (index in phi)

Definition at line 45 of file PixelBarrelName.h.

References theLadder.

Referenced by getDetId(), and PixelBarrelLinkMaker::Order::operator()().

00045 { return theLadder; } 

int PixelBarrelName::layerName (  )  const [inline]

layer id

Definition at line 39 of file PixelBarrelName.h.

References theLayer.

Referenced by getDetId(), PixelBarrelLinkMaker::links(), and PixelBarrelLinkMaker::Order::operator()().

00039 { return theLayer; }   

int PixelBarrelName::moduleName (  )  const [inline]

module id (index in z)

Definition at line 42 of file PixelBarrelName.h.

References theModule.

Referenced by getDetId(), and PixelBarrelLinkMaker::Order::operator()().

00042 { return theModule; }  

PixelModuleName::ModuleType PixelBarrelName::moduleType (  )  const [virtual]

module Type

Implements PixelModuleName.

Definition at line 199 of file PixelBarrelName.cc.

References isHalfModule(), PixelModuleName::v1x8, and PixelModuleName::v2x8.

Referenced by sipixelobjects::FrameConversion::FrameConversion().

00200 {
00201   return isHalfModule() ? PixelBarrelName::v1x8 : PixelBarrelName::v2x8;
00202 }

string PixelBarrelName::name (  )  const [virtual]

from base class

Implements PixelModuleName.

Definition at line 216 of file PixelBarrelName.cc.

References isHalfModule(), sectorName(), theLadder, theLayer, theModule, and thePart.

Referenced by SiPixelInformationExtractor::findNoisyPixels(), PixelBarrelLinkMaker::Order::operator()(), sipixelobjects::PixelFEDLink::printForMap(), and SiPixelOfflineCalibAnalysisBase::translateDetIdToString().

00217 {
00218    std::ostringstream stm;
00219    
00220    stm<<"BPix_B"<<thePart<<"_SEC"<<sectorName()<<"_LYR"<<theLayer<<"_LDR"<<theLadder;
00221    if ( isHalfModule() ) stm <<"H"; else stm <<"F";
00222    stm << "_MOD" << theModule;
00223 
00224    return stm.str();
00225 }

bool PixelBarrelName::operator== ( const PixelModuleName o  )  const [virtual]

check equality of modules from datamemebers

Implements PixelModuleName.

Definition at line 204 of file PixelBarrelName.cc.

References PixelModuleName::isBarrel(), theLadder, theLayer, theModule, and thePart.

00205 {
00206   if ( o.isBarrel() ) { 
00207     const PixelBarrelName *other = dynamic_cast<const PixelBarrelName*>(&o);
00208     return (    other
00209              && thePart   == other->thePart 
00210              && theLayer  == other->theLayer 
00211              && theModule == other->theModule 
00212              && theLadder == other->theLadder);
00213   } else return false; 
00214 }

int PixelBarrelName::sectorName (  )  const

sector id

Definition at line 145 of file PixelBarrelName.cc.

References theLadder, and theLayer.

Referenced by name().

00146 {
00147   int sector = 0;
00148   if (theLayer==1) {
00149     switch (theLadder) {
00150     case 1 : case 2: {sector = 1; break;}
00151     case 3 :         {sector = 2; break;}
00152     case 4 :         {sector = 3; break;}
00153     case 5 :         {sector = 4; break;}
00154     case 6 :         {sector = 5; break;}
00155     case 7 :         {sector = 6; break;}
00156     case 8 :         {sector = 7; break;}
00157     case 9 : case 10:{sector = 8; break;}
00158     default: ;
00159     };
00160   } else if (theLayer==2) {
00161     switch (theLadder) {
00162     case  1 : case  2: {sector = 1; break;}
00163     case  3 : case  4: {sector = 2; break;}
00164     case  5 : case  6: {sector = 3; break;}
00165     case  7 : case  8: {sector = 4; break;}
00166     case  9 : case 10: {sector = 5; break;}
00167     case 11 : case 12: {sector = 6; break;}
00168     case 13 : case 14: {sector = 7; break;}
00169     case 15 : case 16: {sector = 8; break;}
00170     default: ;
00171     };
00172   } else if (theLayer==3) {
00173     switch (theLadder) {
00174     case  1 : case  2: case  3: {sector = 1; break;}
00175     case  4 : case  5: case  6: {sector = 2; break;}
00176     case  7 : case  8: case  9: {sector = 3; break;}
00177     case 10 : case 11:          {sector = 4; break;}
00178     case 12 : case 13:          {sector = 5; break;}
00179     case 14 : case 15: case 16: {sector = 6; break;}
00180     case 17 : case 18: case 19: {sector = 7; break;}
00181     case 20 : case 21: case 22: {sector = 8; break;}
00182     default: ;
00183     };
00184   }
00185   return sector;
00186 
00187 }

Shell PixelBarrelName::shell (  )  const [inline]

Definition at line 36 of file PixelBarrelName.h.

References thePart.

Referenced by sipixelobjects::FrameConversion::FrameConversion(), and getDetId().

00036 { return thePart; }


Member Data Documentation

int PixelBarrelName::theLadder [private]

Definition at line 64 of file PixelBarrelName.h.

Referenced by isHalfModule(), ladderName(), name(), operator==(), PixelBarrelName(), and sectorName().

int PixelBarrelName::theLayer [private]

Definition at line 64 of file PixelBarrelName.h.

Referenced by isHalfModule(), layerName(), name(), operator==(), PixelBarrelName(), and sectorName().

int PixelBarrelName::theModule [private]

Definition at line 64 of file PixelBarrelName.h.

Referenced by moduleName(), name(), operator==(), and PixelBarrelName().

Shell PixelBarrelName::thePart [private]

Definition at line 63 of file PixelBarrelName.h.

Referenced by getDetId(), name(), operator==(), PixelBarrelName(), and shell().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:29:58 2009 for CMSSW by  doxygen 1.5.4