CMS 3D CMS Logo

CmsTrackerRingBuilder Class Reference

Class which constructs TID/TEC rings. More...

#include <Geometry/TrackerNumberingBuilder/plugins/CmsTrackerRingBuilder.h>

Inheritance diagram for CmsTrackerRingBuilder:

CmsTrackerLevelBuilder CmsTrackerAbstractConstruction

List of all members.

Private Member Functions

virtual void buildComponent (DDFilteredView &, GeometricDet *, std::string)
virtual void sortNS (DDFilteredView &, GeometricDet *)


Detailed Description

Class which constructs TID/TEC rings.

Definition at line 10 of file CmsTrackerRingBuilder.h.


Member Function Documentation

void CmsTrackerRingBuilder::buildComponent ( DDFilteredView fv,
GeometricDet g,
std::string  s 
) [private, virtual]

Implements CmsTrackerLevelBuilder.

Definition at line 13 of file CmsTrackerRingBuilder.cc.

References CmsDetConstruction::buildComponent().

00013                                                                                           {
00014   CmsDetConstruction theCmsDetConstruction;
00015   theCmsDetConstruction.buildComponent(fv,g,s);  
00016 }

void CmsTrackerRingBuilder::sortNS ( DDFilteredView fv,
GeometricDet det 
) [private, virtual]

Reimplemented from CmsTrackerLevelBuilder.

Definition at line 18 of file CmsTrackerRingBuilder.cc.

References GeometricDet::addComponents(), GeometricDet::clearComponents(), GeometricDet::components(), GeometricDet::DetUnit, DDFilteredView::firstChild(), ExtractStringFromDDD::getString(), i, GeometricDet::mergedDet, DDFilteredView::parent(), pyDBSRunClass::temp, TrackerStablePhiSort(), GeometricDet::translation(), and z.

00018                                                                        {
00019   GeometricDet::GeometricDetContainer & comp = det->components();
00020   fv.firstChild(); 
00021   GeometricDet::GeometricDetContainer compfw;
00022   GeometricDet::GeometricDetContainer compbw;
00023 
00024 
00025   switch(comp.front()->type()) {
00026   
00027   case GeometricDet::mergedDet: 
00028     TrackerStablePhiSort(comp.begin(), comp.end(), ExtractPhiGluedModule()); 
00029     break;
00030   case GeometricDet::DetUnit: 
00031     TrackerStablePhiSort(comp.begin(), comp.end(), ExtractPhi()); 
00032     break;
00033   default:
00034     edm::LogError("CmsTrackerRingBuilder")<<"ERROR - wrong SubDet to sort..... "<<det->components().front()->type(); 
00035   }
00036   
00037   static std::string const part("TkDDDStructure");
00038   static std::string const TECGluedDet("TECGluedDet");
00039   static std::string const TECDet("TECDet");
00040 
00041   std::string const pname = ExtractStringFromDDD::getString(part,&fv); 
00042 
00043   // TEC
00044   // Module Number: 3 bits [1,...,5 at most]
00045   if(pname== TECGluedDet || pname == TECDet){
00046     
00047     // TEC- 
00048     if( det->translation().z() < 0 && pname == TECDet) {
00049       TrackerStablePhiSort(comp.begin(), comp.end(), ExtractPhiMirror());
00050     }
00051     
00052     if( det->translation().z() < 0 && pname == TECGluedDet) {
00053       TrackerStablePhiSort(comp.begin(), comp.end(), ExtractPhiGluedModuleMirror());
00054     }
00055 
00056     for(uint32_t i=0; i<comp.size();i++)
00057       comp[i]->setGeographicalID(i+1);
00058 
00059   } else {
00060     // TID
00061     // Ring Side: 2 bits [back:1 front:2]
00062     // Module Number: 5 bits [1,...,20 at most]
00063     //
00064     for(uint32_t i=0; i<comp.size();i++){
00065       if(fabs(comp[i]->translation().z())<fabs(det->translation().z())){      
00066         compfw.push_back(comp[i]);
00067       } else {
00068         compbw.push_back(comp[i]);
00069       }
00070     }
00071     
00072     for(uint32_t i=0; i<compbw.size();i++){
00073       uint32_t temp = i+1;
00074       temp |=(1<<5);
00075       compbw[i]->setGeographicalID(temp);
00076     }
00077     
00078     for(uint32_t i=0; i<compfw.size();i++){
00079       uint32_t temp = i+1;
00080       temp |=(2<<5);
00081       compfw[i]->setGeographicalID(temp);
00082     }
00083     
00084     det->clearComponents();
00085     det->addComponents(compfw);
00086     det->addComponents(compbw);
00087     
00088   }
00089   
00090   fv.parent();
00091   
00092 }


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