CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/Geometry/DTGeometry/src/DTGeometry.cc

Go to the documentation of this file.
00001 
00008 #include <Geometry/DTGeometry/interface/DTGeometry.h>
00009 #include <Geometry/CommonDetUnit/interface/GeomDetUnit.h>
00010 
00011 #include <algorithm>
00012 #include <iostream>
00013 
00014 DTGeometry::DTGeometry() {}
00015 
00016 DTGeometry::~DTGeometry(){
00017   // delete all the chambers (which will delete the SL which will delete the
00018   // layers)
00019   for (std::vector<DTChamber*>::const_iterator ich=theChambers.begin();
00020        ich!=theChambers.end(); ++ich) delete (*ich);
00021 }
00022 
00023 const DTGeometry::DetTypeContainer&  DTGeometry::detTypes() const{
00024   // FIXME - fill it at runtime
00025   return theDetTypes;
00026 }
00027 
00028 
00029 void DTGeometry::add(DTChamber* ch) {
00030   theDets.push_back(ch);
00031   theChambers.push_back(ch);
00032   theMap.insert(DTDetMap::value_type(ch->geographicalId(),ch));
00033 }
00034 
00035 
00036 void DTGeometry::add(DTSuperLayer* sl) {
00037   theDets.push_back(sl);
00038   theSuperLayers.push_back(sl);
00039   theMap.insert(DTDetMap::value_type(sl->geographicalId(),sl));
00040 }
00041 
00042 
00043 void DTGeometry::add(DTLayer* l) {
00044   theDetUnits.push_back(l);
00045   theDets.push_back(l);
00046   theLayers.push_back(l); 
00047   theMap.insert(DTDetMap::value_type(l->geographicalId(),l));
00048 }
00049 
00050 
00051 const DTGeometry::DetUnitContainer& DTGeometry::detUnits() const{
00052   return theDetUnits;
00053 }
00054 
00055 
00056 const DTGeometry::DetContainer& DTGeometry::dets() const{
00057   return theDets; 
00058 }
00059 
00060 
00061 const DTGeometry::DetIdContainer& DTGeometry::detUnitIds() const{
00062   // FIXME - fill it at runtime
00063   return theDetUnitIds;
00064 }
00065 
00066 
00067 const DTGeometry::DetIdContainer& DTGeometry::detIds() const{
00068   // FIXME - fill it at runtime
00069   return theDetIds;
00070 }
00071 
00072 
00073 const GeomDetUnit* DTGeometry::idToDetUnit(DetId id) const{
00074   return dynamic_cast<const GeomDetUnit*>(idToDet(id));
00075 }
00076 
00077 
00078 const GeomDet* DTGeometry::idToDet(DetId id) const{
00079   // Strip away wire#, if any!
00080   DTLayerId lId(id.rawId());
00081   DTDetMap::const_iterator i = theMap.find(lId);
00082   return (i != theMap.end()) ?
00083     i->second : 0 ;
00084 }
00085 
00086 
00087 const std::vector<DTChamber*>& DTGeometry::chambers() const{
00088   return theChambers;
00089 }
00090 
00091 
00092 const std::vector<DTSuperLayer*>& DTGeometry::superLayers() const{
00093   return theSuperLayers;
00094 }
00095 
00096 
00097 const std::vector<DTLayer*>& DTGeometry::layers() const{
00098   return theLayers;
00099 }
00100 
00101 
00102 const DTChamber* DTGeometry::chamber(DTChamberId id) const {
00103   return (const DTChamber*)(idToDet(id));
00104 }
00105 
00106 
00107 const DTSuperLayer* DTGeometry::superLayer(DTSuperLayerId id) const {
00108   return (const DTSuperLayer*)(idToDet(id));
00109 }
00110 
00111 
00112 const DTLayer* DTGeometry::layer(DTLayerId id) const {
00113   return (const DTLayer*)(idToDet(id));
00114 }