File indexing completed on 2024-12-12 23:19:25
0001
0002
0003 #include "RecoMTD/DetLayers/interface/BTLDetLayerGeometryBuilder.h"
0004
0005 #include <DataFormats/ForwardDetId/interface/BTLDetId.h>
0006 #include <Geometry/CommonDetUnit/interface/GeomDet.h>
0007 #include <RecoMTD/DetLayers/interface/MTDTrayBarrelLayer.h>
0008 #include <RecoMTD/DetLayers/interface/MTDDetTray.h>
0009
0010 #include <Utilities/General/interface/precomputed_value_sort.h>
0011 #include <Geometry/CommonDetUnit/interface/DetSorting.h>
0012
0013 #include <FWCore/MessageLogger/interface/MessageLogger.h>
0014
0015 #include <iostream>
0016
0017 using namespace std;
0018
0019 BTLDetLayerGeometryBuilder::BTLDetLayerGeometryBuilder() {}
0020
0021 BTLDetLayerGeometryBuilder::~BTLDetLayerGeometryBuilder() {}
0022
0023 vector<DetLayer*> BTLDetLayerGeometryBuilder::buildLayers(const MTDGeometry& geo, const MTDTopology& topo) {
0024 vector<DetLayer*> detlayers;
0025 vector<MTDTrayBarrelLayer*> result;
0026
0027 vector<const DetRod*> btlDetTrays;
0028
0029 vector<const GeomDet*> geomDets;
0030
0031
0032
0033 geomDets.reserve(topo.btlModulesPerRod());
0034
0035 uint32_t index(0);
0036 for (const auto& det : geo.detsBTL()) {
0037 index++;
0038 geomDets.emplace_back(det);
0039 if (index == topo.btlModulesPerRod()) {
0040 btlDetTrays.emplace_back(new MTDDetTray(geomDets));
0041 LogTrace("MTDDetLayers") << " New BTLDetTray with " << geomDets.size()
0042 << " modules at R=" << btlDetTrays.back()->position().perp()
0043 << ", phi=" << btlDetTrays.back()->position().phi();
0044 index = 0;
0045 geomDets.clear();
0046 }
0047 }
0048
0049 result.emplace_back(new MTDTrayBarrelLayer(btlDetTrays));
0050 LogTrace("MTDDetLayers") << "BTLDetLayerGeometryBuilder: new MTDTrayBarrelLayer with " << btlDetTrays.size()
0051 << " rods, at R " << result.back()->specificSurface().radius();
0052
0053 for (vector<MTDTrayBarrelLayer*>::const_iterator it = result.begin(); it != result.end(); it++)
0054 detlayers.push_back((DetLayer*)(*it));
0055
0056 return detlayers;
0057 }