Go to the documentation of this file.00001 #include "PixelBarrelLayerBuilder.h"
00002 #include "PixelRodBuilder.h"
00003
00004 using namespace std;
00005 using namespace edm;
00006
00007 PixelBarrelLayer* PixelBarrelLayerBuilder::build(const GeometricDet* aPixelBarrelLayer,
00008 const TrackerGeometry* theGeomDetGeometry)
00009 {
00010
00011
00012
00013 vector<const GeometricDet*> theGeometricDetRods = aPixelBarrelLayer->components();
00014
00015
00016
00017 PixelRodBuilder myPixelRodBuilder;
00018
00019 vector<const PixelRod*> theInnerRods;
00020 vector<const PixelRod*> theOuterRods;
00021
00022
00023
00024 double meanR = 0;
00025 for (unsigned int index=0; index!=theGeometricDetRods.size(); index++) meanR+=theGeometricDetRods[index]->positionBounds().perp();
00026 if (theGeometricDetRods.size()!=0)
00027 meanR/=(double) theGeometricDetRods.size();
00028
00029 for(unsigned int index=0; index!=theGeometricDetRods.size(); index++){
00030 if(theGeometricDetRods[index]->positionBounds().perp() < meanR)
00031 theInnerRods.push_back(myPixelRodBuilder.build(theGeometricDetRods[index],
00032 theGeomDetGeometry) );
00033
00034 if(theGeometricDetRods[index]->positionBounds().perp() > meanR)
00035 theOuterRods.push_back(myPixelRodBuilder.build(theGeometricDetRods[index],
00036 theGeomDetGeometry) );
00037
00038 }
00039
00040 return new PixelBarrelLayer(theInnerRods,theOuterRods);
00041
00042 }
00043