Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "MagneticField/GeomBuilder/src/eLayer.h"
00012 #include "MagneticField/VolumeGeometry/interface/MagVolume6Faces.h"
00013 #include "MagneticField/Layers/interface/MagELayer.h"
00014
00015 #include "Utilities/General/interface/precomputed_value_sort.h"
00016
00017 using namespace SurfaceOrientation;
00018 using namespace std;
00019
00020
00021 MagGeoBuilderFromDDD::eLayer::eLayer(handles::const_iterator begin,
00022 handles::const_iterator end) :
00023 theVolumes(begin,end),
00024 mlayer(0)
00025 {
00026
00027
00028
00029 precomputed_value_sort(theVolumes.begin(), theVolumes.end(), ExtractR());
00030
00031
00032
00033
00034
00035 }
00036
00037 MagGeoBuilderFromDDD::eLayer::~eLayer(){}
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 MagELayer * MagGeoBuilderFromDDD::eLayer::buildMagELayer() const {
00050 if (mlayer==0) {
00051
00052
00053 double zmin = 1e19;
00054 double zmax = -1e19;
00055 vector<MagVolume*> mVols;
00056 for (handles::const_iterator vol = theVolumes.begin();
00057 vol!=theVolumes.end(); ++vol) {
00058 mVols.push_back((*vol)->magVolume);
00059 zmin = min(zmin, (*vol)->minZ());
00060 zmax = max(zmax, (*vol)->maxZ());
00061 }
00062 mlayer = new MagELayer(mVols, zmin, zmax);
00063 }
00064 return mlayer;
00065 }
00066