CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/Geometry/TrackerGeometryBuilder/src/TrackerGeometry.cc

Go to the documentation of this file.
00001 #include <typeinfo>
00002 
00003 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00004 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00005 #include "Geometry/CommonDetUnit/interface/GeomDetType.h"
00006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00007 
00008 #include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
00009 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
00010 #include "DataFormats/DetId/interface/DetId.h"
00011 
00012 #include <algorithm>
00013 #include <iostream>
00014 #include <map>
00015 
00016 TrackerGeometry::TrackerGeometry(GeometricDet const* gd) :  theTrackerDet(gd){}
00017 
00018 TrackerGeometry::~TrackerGeometry() {
00019     for (DetContainer::iterator     it = theDets.begin(),     ed = theDets.end();     it != ed; ++it) delete *it;
00020     for (DetTypeContainer::iterator it = theDetTypes.begin(), ed = theDetTypes.end(); it != ed; ++it) delete *it;
00021 }
00022 
00023 GeometricDet const * TrackerGeometry::trackerDet() const {
00024   return  theTrackerDet;
00025 }
00026 
00027 
00028 void TrackerGeometry::addType(GeomDetType* p) {
00029   theDetTypes.push_back(p);  // add to vector
00030 }
00031 
00032 void TrackerGeometry::addDetUnit(GeomDetUnit* p) {
00033   // set index
00034   p->setIndex(theDetUnits.size());
00035   theDetUnits.push_back(p);  // add to vector
00036   theMapUnit.insert(std::make_pair(p->geographicalId().rawId(),p));
00037 }
00038 
00039 void TrackerGeometry::addDetUnitId(DetId p){
00040   theDetUnitIds.push_back(p);
00041 }
00042 
00043 void TrackerGeometry::addDet(GeomDet* p) {
00044   theDets.push_back(p);  // add to vector
00045   theMap.insert(std::make_pair(p->geographicalId().rawId(),p));
00046   DetId id(p->geographicalId());
00047   switch(id.subdetId()){
00048   case PixelSubdetector::PixelBarrel:
00049     thePXBDets.push_back(p);
00050     break;
00051   case PixelSubdetector::PixelEndcap:
00052     thePXFDets.push_back(p);
00053     break;
00054   case StripSubdetector::TIB:
00055     theTIBDets.push_back(p);
00056     break;
00057   case StripSubdetector::TID:
00058     theTIDDets.push_back(p);
00059     break;
00060   case StripSubdetector::TOB:
00061     theTOBDets.push_back(p);
00062     break;
00063   case StripSubdetector::TEC:
00064     theTECDets.push_back(p);
00065     break;
00066   default:
00067     edm::LogError("TrackerGeometry")<<"ERROR - I was expecting a Tracker Subdetector, I got a "<<id.subdetId();
00068   }
00069 
00070 
00071 }
00072 
00073 void TrackerGeometry::addDetId(DetId p){
00074   theDetIds.push_back(p);
00075 }
00076 
00077 const TrackerGeometry::DetUnitContainer&
00078 TrackerGeometry::detUnits() const
00079 {
00080   return theDetUnits;
00081 }
00082 
00083 const TrackerGeometry::DetContainer&
00084 TrackerGeometry::dets() const
00085 {
00086   return theDets;
00087 }
00088 
00089 const TrackerGeometry::DetContainer&
00090 TrackerGeometry::detsPXB() const
00091 {
00092   return thePXBDets;
00093 }
00094 
00095 const TrackerGeometry::DetContainer&
00096 TrackerGeometry::detsPXF() const
00097 {
00098   return thePXFDets;
00099 }
00100 
00101 const TrackerGeometry::DetContainer&
00102 TrackerGeometry::detsTIB() const
00103 {
00104   return theTIBDets;
00105 }
00106 
00107 const TrackerGeometry::DetContainer&
00108 TrackerGeometry::detsTID() const
00109 {
00110   return theTIDDets;
00111 }
00112 
00113 const TrackerGeometry::DetContainer&
00114 TrackerGeometry::detsTOB() const
00115 {
00116   return theTOBDets;
00117 }
00118 
00119 const TrackerGeometry::DetContainer&
00120 TrackerGeometry::detsTEC() const
00121 {
00122   return theTECDets;
00123 }
00124 
00125 const GeomDetUnit* 
00126 TrackerGeometry::idToDetUnit(DetId s)const
00127 {
00128   mapIdToDetUnit::const_iterator p=theMapUnit.find(s.rawId());
00129   if (p != theMapUnit.end())
00130     return (p)->second;
00131   edm::LogError("TrackerGeometry")<<"Invalid DetID: no GeomDetUnit associated";
00132   GeomDetUnit* geom = 0;
00133   return geom;
00134 }
00135 
00136 const GeomDet* 
00137 TrackerGeometry::idToDet(DetId s)const
00138 {
00139   mapIdToDet::const_iterator p=theMap.find(s.rawId());
00140   if (p != theMap.end())
00141     return (p)->second;
00142   edm::LogError("TrackerGeometry")<<"Invalid DetID: no GeomDet associated";
00143   GeomDet* geom = 0;
00144   return geom;
00145 }
00146 
00147 const TrackerGeometry::DetTypeContainer&  
00148 TrackerGeometry::detTypes()   const 
00149 {
00150   return theDetTypes;
00151 }
00152 
00153 
00154 const TrackerGeometry::DetIdContainer&  
00155 TrackerGeometry::detUnitIds()   const 
00156 {
00157   return theDetUnitIds;
00158 }
00159 
00160 const TrackerGeometry::DetIdContainer&  
00161 TrackerGeometry::detIds()   const 
00162 {
00163   return theDetIds;
00164 }
00165 
00166