CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Phase2EndcapSubDisk.cc
Go to the documentation of this file.
1 #include "Phase2EndcapSubDisk.h"
2 
4 
6 
9 
10 #include <array>
11 #include "DetGroupMerger.h"
12 
13 using namespace std;
14 
15 const std::vector<const GeometricSearchDet*>& Phase2EndcapSubDisk::components() const {
16  throw cms::Exception("Phase2EndcapSubDisk::components() is not implemented");
17 }
18 
20  const BoundDisk& ringDisk = static_cast<const BoundDisk&>(theComps[i]->surface());
21  ringPars.push_back(tkDetUtil::fillRingParametersFromDisk(ringDisk));
22 }
23 
24 Phase2EndcapSubDisk::Phase2EndcapSubDisk(vector<const Phase2EndcapSingleRing*>& rings)
25  : RingedForwardLayer(true), theComponents{nullptr} {
26  theRingSize = rings.size();
27  LogDebug("TkDetLayers") << "Number of rings in Phase2EndcapSubDisk is " << theRingSize << std::endl;
28  setSurface(computeDisk(rings));
29 
30  for (unsigned int i = 0; i != rings.size(); ++i) {
31  theComps.push_back(rings[i]);
32  fillRingPars(i);
33  theBasicComps.insert(
34  theBasicComps.end(), (*rings[i]).basicComponents().begin(), (*rings[i]).basicComponents().end());
35  }
36 
37  LogDebug("TkDetLayers") << "==== DEBUG Phase2EndcapSubDisk =====";
38  LogDebug("TkDetLayers") << "r,zed pos , thickness, innerR, outerR: " << this->position().perp() << " , "
39  << this->position().z() << " , " << this->specificSurface().bounds().thickness() << " , "
40  << this->specificSurface().innerRadius() << " , " << this->specificSurface().outerRadius();
41 }
42 
43 BoundDisk* Phase2EndcapSubDisk::computeDisk(const vector<const Phase2EndcapSingleRing*>& rings) const {
44  return tkDetUtil::computeDisk(rings);
45 }
46 
48  for (auto c : theComps)
49  delete c;
50 
51  delete theComponents.load();
52 }
53 
55  const Propagator& prop,
56  const MeasurementEstimator& est,
57  std::vector<DetGroup>& result) const {
58  tkDetUtil::groupedCompatibleDetsV(startingState, prop, est, result, theRingSize, theComps, ringPars);
59  return;
60 }
61 
63  const TrajectoryStateOnSurface& tsos,
64  const MeasurementEstimator& est) const {
65  return tkDetUtil::computeYdirWindowSize(det, tsos, est);
66 }
67 
69  int index,
70  double ymax,
71  std::vector<tkDetUtil::RingPar> ringParams) const {
72  return tkDetUtil::overlapInR(tsos, index, ymax, ringParams);
73 }
std::atomic< std::vector< const GeometricSearchDet * > * > theComponents
bool overlapInR(const TrajectoryStateOnSurface &tsos, int index, double ymax, const std::vector< RingPar > &ringParams)
Definition: TkDetUtil.cc:112
const std::vector< const GeometricSearchDet * > & components() const override
const edm::EventSetup & c
std::vector< const Phase2EndcapSingleRing * > theComps
BoundDisk * computeDisk(const std::vector< const T * > &structures)
Definition: TkDetUtil.h:236
tuple result
Definition: mps_fire.py:311
float computeYdirWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est)
Definition: TkDetUtil.cc:71
BoundDisk * computeDisk(const std::vector< const Phase2EndcapSingleRing * > &rings) const
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const
RingPar fillRingParametersFromDisk(const BoundDisk &ringDisk)
Definition: TkDetUtil.cc:124
std::vector< tkDetUtil::RingPar > ringPars
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result, const int ringSize, const std::vector< const T * > &diskComponents, const std::vector< RingPar > &ringParams)
Definition: TkDetUtil.h:100
static int position[264][3]
Definition: ReadPGInfo.cc:289
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override
Phase2EndcapSubDisk(std::vector< const Phase2EndcapSingleRing * > &rings)
bool overlapInR(const TrajectoryStateOnSurface &tsos, int i, double ymax, std::vector< tkDetUtil::RingPar > ringParams) const
#define LogDebug(id)