File indexing completed on 2023-10-25 10:02:58
0001 #ifndef TkDetLayers_PixelForwardLayerBuilder_h
0002 #define TkDetLayers_PixelForwardLayerBuilder_h
0003
0004 #include "PixelForwardLayer.h"
0005
0006 #include "FWCore/Framework/interface/ESHandle.h"
0007 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0008 #include "Geometry/TrackerNumberingBuilder/interface/GeometricDet.h"
0009
0010 #include "PixelForwardLayerPhase1.h"
0011 #include "PixelForwardLayer.h"
0012 #include "PixelBladeBuilder.h"
0013
0014
0015
0016
0017 #pragma GCC visibility push(hidden)
0018
0019 template <class T1, class T2>
0020 class PixelForwardLayerBuilder {
0021 public:
0022 PixelForwardLayerBuilder(){};
0023 ForwardDetLayer* build(const GeometricDet* aPixelForwardLayer, const TrackerGeometry* theGeomDetGeometry)
0024 __attribute__((cold));
0025 };
0026
0027 template <class T1, class T2>
0028 ForwardDetLayer* PixelForwardLayerBuilder<T1, T2>::build(const GeometricDet* aPixelForwardLayer,
0029 const TrackerGeometry* theGeomDetGeometry) {
0030 std::vector<const GeometricDet*> theGeometricPanels = aPixelForwardLayer->components();
0031 int panelsSize = theGeometricPanels.size();
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051 std::vector<const T1*> theBlades;
0052 PixelBladeBuilder<T1> myBladeBuilder;
0053
0054 theBlades.reserve((panelsSize / 2));
0055 for (int i = 0; i < (panelsSize / 2); i++) {
0056 theBlades.push_back(
0057 myBladeBuilder.build(theGeometricPanels[i], theGeometricPanels[i + (panelsSize / 2)], theGeomDetGeometry));
0058 }
0059
0060 return new T2(theBlades);
0061 }
0062
0063 #pragma GCC visibility pop
0064 #endif