Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ActsSurfaceMaps.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ActsSurfaceMaps.cc
1 
7 #include "ActsSurfaceMaps.h"
8 #include "TrkrCluster.h"
9 #include "MvtxDefs.h"
10 #include "InttDefs.h"
11 
14 
15 namespace
16 {
18  template<class T> inline constexpr T square(const T& x) {return x*x;}
19 
21  template<class T> T radius(const T& x, const T& y)
22  { return std::sqrt(square(x) + square(y));}
23 }
24 
25 
27 { return m_tpcVolumeIds.find( surface->geometryId().volume() ) != m_tpcVolumeIds.end(); }
28 
30 { return m_micromegasVolumeIds.find( surface->geometryId().volume() ) != m_micromegasVolumeIds.end(); }
31 
33  TrkrCluster *cluster) const
34 {
35  const auto trkrid = TrkrDefs::getTrkrId(key);
37 
38  switch( trkrid )
39  {
41  {
42  return getMMSurface( hitsetkey);
43  }
44 
46  {
47  const auto surfkey = cluster->getSubSurfKey();
48  return getTpcSurface(hitsetkey, surfkey);
49  }
50 
53  {
55  }
56  }
57 
58  // unreachable
59  return nullptr;
60 }
61 
63 {
64  unsigned int trkrid = TrkrDefs::getTrkrId(hitsetkey);
66 
67  if(trkrid == TrkrDefs::inttId)
68  {
69  // Set the hitsetkey crossing to zero
70  tmpkey = InttDefs::resetCrossingHitSetKey(hitsetkey);
71  }
72 
73  if(trkrid == TrkrDefs::mvtxId)
74  {
75  // Set the hitsetkey crossing to zero
76  tmpkey = MvtxDefs::resetStrobeHitSetKey(hitsetkey);
77  }
78 
79  auto iter = m_siliconSurfaceMap.find(tmpkey);
80  if(iter != m_siliconSurfaceMap.end())
81  {
82  return iter->second;
83  }
84 
86  {
87  std::cout << "Failed to find silicon surface for hitsetkey " << hitsetkey << " tmpkey " << tmpkey << std::endl;
88  }
89  return nullptr;
90 }
91 
93  TrkrDefs::subsurfkey surfkey) const
94 {
95  unsigned int layer = TrkrDefs::getLayer(hitsetkey);
96  const auto iter = m_tpcSurfaceMap.find(layer);
97 
98  if(iter != m_tpcSurfaceMap.end())
99  {
100  auto surfvec = iter->second;
101  return surfvec.at(surfkey);
102  }
103 
105  return nullptr;
106 }
107 
108 
110 {
111  const auto iter = m_mmSurfaceMap.find( hitsetkey );
112  return (iter == m_mmSurfaceMap.end()) ? nullptr:iter->second;
113 }