ATLAS Offline Software
FPGATrackSimMapMakerAlg.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef FPGATRACKSIM_MAPMAKERALG_H
6 #define FPGATRACKSIM_MAPMAKERALG_H
7 
8 /*
9  * Produce Map files from wrappers.
10  */
11 
12 #include "AthenaBaseComps/AthAlgorithm.h" //inheritance
13 #include "GaudiKernel/ToolHandle.h" //member
14 #include "FPGATrackSimObjects/FPGATrackSimTypes.h" //enum classes (e.g. SiliconTech, DetectorZone) in global namespace :-(
16 #include "FPGATrackSimInput/IFPGATrackSimEventInputHeaderTool.h" //tool handle template param
17 
18 #include <fstream> //ofstream members
19 #include <tuple> //typedef
20 #include <map> //member
21 #include <set> //member
22 #include <vector> //member
23 
24 
26 class FPGATrackSimHit;
27 class TFile;
28 
29 
30 
32 {
33  public:
34  typedef std::tuple<SiliconTech, DetectorZone, int, int, int> FPGATrackSimModuleId;
35  //
36  FPGATrackSimMapMakerAlg(const std::string& name, ISvcLocator* pSvcLocator);
37  virtual ~FPGATrackSimMapMakerAlg() = default;
38 
39  StatusCode initialize() override;
40  StatusCode execute() override;
41  StatusCode finalize() override;
42 
43  private:
44  // Handles
45  ToolHandle<IFPGATrackSimEventInputHeaderTool> m_hitInputTool { this, "InputTool", "FPGATrackSimSGToRawHitsTool/FPGATrackSimInputTool", "HitInput Tool" };
46 
48 
49  struct Module {
52  int lyr{};
53  int eta{};
54  int phi{};
55  std::vector<int> numTracks; // used for trimming, indexed by slice
56  int plane{-1};
57  Module() = default;
60  return std::tie(det,bec,lyr,eta,phi);
61  }
62  bool operator==(const Module& m) const
63  {
64  return std::tie(det,bec,lyr,eta,phi) == std::tie(m.det,m.bec,m.lyr,m.eta,m.phi);
65  }
66  bool operator<(const Module & m) const
67  {
68  return std::tie(det,bec,lyr,eta,phi) < std::tie(m.det,m.bec,m.lyr,m.eta,m.phi);
69  }
70  bool operator>(const Module & m) const
71  {
72  return std::tie(det,bec,lyr,eta,phi) > std::tie(m.det,m.bec,m.lyr,m.eta,m.phi);
73  }
74  };
75 
76  // Flags
77  Gaudi::Property<int> m_maxEvents {this, "maxEvents", 10000, "Max Events"};
78  Gaudi::Property<int> m_region {this, "region", 0, "Region"};
79  Gaudi::Property<float> m_trim {this, "trim", 0.1, "trim modules with less than given percent of tracks"};
80  Gaudi::Property<std::string> m_outFileName {this, "OutFileName", "", "naming convention for maps"};
81  Gaudi::Property<std::string> m_keystring {this, "KeyString", "strip,barrel,2", "key layer to use for subrmap"};
82  Gaudi::Property<std::string> m_keystring2 {this, "KeyString2", "", "second key layer for 2D slicing"};
83  Gaudi::Property<int> m_nSlices {this, "nSlices", -1, "default is full granularity/maximum number of slices possible"};
84  Gaudi::Property<bool> m_doSpacePoints {this, "doSpacePoints", false, "Use 9L instead of 8L configuration for first stage (for example)"};
85  Gaudi::Property<float> m_globalTrim {this, "globalTrim", 0.1, "Trimming applied globally to the key layer before determining slice boundaries"};
86  Gaudi::Property<std::string> m_description {this, "description", "", "tag description"};
87  Gaudi::Property<std::string> m_geoTag {this, "GeometryVersion", "ATLAS-P2-ITK-22-02-00", "Geometry tag that this set of maps is for. TODO can we store/read from wrappers?"};
88  Gaudi::Property<bool> m_remapModules {this, "remapModules", false, "Allow maps to be drawn that slice modules more finely, by remapping module indices"};
89  Gaudi::Property<bool> m_drawSlices {this, "drawSlices", false, "Draw the huge 2D slice histograms"};
90  Gaudi::Property<bool> m_insideout {this, "doInsideOut", false, "5 layers pixel-only configuration"};
91 
92  // Instance of the module remap object.
94 
95  // For Subregion map making (zslice map)
96  std::map<FPGATrackSimModuleId, Module> m_modules;
97  std::map<int, std::vector<Module*>> m_track2modules, m_slice2modules;
98  std::map<int, int> m_track2slice;
99 
100  // Event storage
101  std::vector<FPGATrackSimHit> m_pbHits, m_peHits, m_sbHits, m_seHits, m_allHits;
102 
103  int m_pbmax = -1; // pixel barrel largest layer index
104  int m_sbmax = -1;
105  std::vector<int> m_pemax = {-1,-1}; // [positive endcap maxLayer, negative endcap maxLayer]
106  std::vector<int> m_semax = {-1,-1};
107 
108 
109  /* 3D vector that assigns planes for pmap. indices are [reg][plane][physical layers]
110  -> first two chars are DetType and DetZone, pb = pixel barrel, se = strip endcap
111  -> then the layer number is given, followed by a +/- if positive/negative endcap
112  -> -1 means the layer is not used
113  -> Example: se67+ = Strip Positve Endcap layer 67
114  */
115  const std::vector<std::vector<std::vector<std::string>>>* m_planes{};
116  const std::vector< std::vector< std::vector<std::string> > > m_planes_default = //first stage
117  {
118  { // region 0
119  {"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"} // layers that make up each plane.
120  //{"pb0","pe0+","pe1+","pe2+"},{"pb1","pe17+","pe18+"},{"pb2"},{"pb3"},{"pb4"} // pixel only
121  },
122  { // region 1
123  {"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
124  },
125  { // region 2
126  {"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"}
127  },
128  { // region 3
129  {"pb4","pe83+","pe84+","pe85+","pe86+","pe87+","pe88+","pe89+"},{"se5+"},{"se6+"},{"se7+"},{"se8+"},{"se9+"},{"se10+"},{"se11+"}
130  },
131  { // region 4
132  {"pe34+","pe12+"},{"pe36+","pe29+"},{"pe8+","pe40+","pe30+"},{"pe56+","pe65+"},{"pe10+","pe6+"},{"pe11+","pe7+"},{"pe31+","pe32+"},{"pe9+","pe53+"}
133  },
134  { // region 5 - same eta as region 0, different phi
135  {"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
136  },
137  { // region 6 - same eta as region 0, different phi
138  {"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
139  },
140  { // region 7 - same eta as region 0, different phi
141  {"pb4"},{"sb0"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
142  },
143  };
144 
145 
146  // 9L version of the above for spacepoints. There must be a better way to implement this without
147  // needing to duplicate the entire structure, but I'm not sure how without using the pmap files...
148  const std::vector< std::vector< std::vector<std::string> > > m_planes_sp = //first stage
149  {
150  { // region 0
151  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"} // layers that make up each plane.
152  //{"pb0","pe0+","pe1+","pe2+"},{"pb1","pe17+","pe18+"},{"pb2"},{"pb3"},{"pb4"} // pixel only
153  },
154  { // region 1
155  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
156  },
157  { // region 2
158  {"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"}
159  },
160  { // region 3
161  {"pb4","pe83+","pe84+","pe85+","pe86+","pe87+","pe88+","pe89+"},{"se4+"},{"se5+"},{"se6+"},{"se7+"},{"se8+"},{"se9+"},{"se10+"},{"se11+"}
162  },
163  { // region 4
164  //{"pe34+","pe12+"},{"pe36+","pe29+"},{"pe8+","pe40+","pe30+"},{"pe56+","pe65+"},{"pe10+","pe6+"},{"pe11+","pe7+"},{"pe31+","pe32+"},{"pe9+","pe53+"},{"pe30+"}
165  {"pe4+", "pe5+", "pe6+"},
166  {"pe7+", "pe8+", "pe9+"},
167  {"pe10+", "pe11+", "pe12+", "pe29+"},
168  {"pe30+", "pe31+", "pe32+", "pe33+"},
169  {"pe34+"},
170  {"pe36+"},
171  {"pe38+", "pe40+", "pe42+", "pe53+"},
172  {"pe54+", "pe55+"},
173  {"pe56+", "pe57+", "pe65+"}
174  },
175  { // region 5 - same eta as region 0, different phi
176  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
177  },
178  { // region 6 - same eta as region 0, different phi
179  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
180  },
181  { // region 7 - same eta as region 0, different phi
182  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"}
183  },
184  };
185 
186  const std::vector <std::vector <std::vector <std::string> > > m_planes2 = // second stage
187  {
188  { // region 0
189  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
190  },
191  { // region 1
192  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
193  },
194  { // region 2
195  {"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"},{"-1"}
196  },
197  { // region 3
198  {"pb4","pe83+","pe84+","pe85+","pe86+","pe87+","pe88+","pe89+"},{"se4+"},{"se5+"},{"se6+"},{"se7+"},{"se8+"},{"se9+"},{"se10+"},{"se11+"},{"pb2"},{"pb3","pe58+"},{"se2+"},{"se3+"},
199  },
200  { // region 4
201  {"pe0+"},{"pe1+"},{"pe2+"},{"pe3+"},{"pe4+"},{"pe5+"},{"pe6+"},{"pe7+"},{"pe8+"},{"pe9+"},{"pe10+"},{"pe11+"},{"pe12+"} // dummy values to avoid "vector::_M_range_check:"
202  },
203  { // region 5 - same eta as region 0, different phi
204  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
205  },
206  { // region 6 - same eta as region 0, different phi
207  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
208  },
209  { // region 7 - same eta as region 0, different phi
210  {"pb4"},{"sb0"},{"sb1"},{"sb2"},{"sb3"},{"sb4"},{"sb5"},{"sb6"},{"sb7"},{"pb0"},{"pb1"},{"pb2"},{"pb3"}
211  },
212  };
213 
214  const std::vector <std::vector <std::vector <std::string> > > m_planes_insideout = // inside-out 5 layers pixel only
215  {
216  { // region 0
217  {"pb0"},{"pb1"},{"pb2"},{"pb3"},{"pb4"}
218  },
219  { // region 1
220  {"pb0"},{"pb1"},{"pb2"},{"pb3"},{"pb4"}
221  },
222  { // region 2
223  {"-1"},{"-1"},{"-1"},{"-1"},{"-1"}
224  },
225  { // region 3
226  {"pb0", "pe0+","pe1+","pe2+","pe3+","pe4+","pe5+", "pe6+", "pe7+", "pe8+", "pe9+","pe10+","pe11+", "pe12+", "pe13+", "pe14+", "pe15+", "pe16+", },
227  {"pb1", "pe19+", "pe23+", "pe25+", },
228  {"pb2",
229  "pe31+", "pe32+", "pe33+", "pe34+", "pe35+", "pe36+", "pe37+", "pe38+", "pe39+", "pe40+",
230  "pe41+", "pe42+", "pe43+", "pe44+", "pe45+", "pe46+",
231  "pe47+", "pe48+", "pe49+", "pe50+", "pe51+", "pe52+", "pe53+", "pe54+", "pe55+", "pe56+", },
232  {"pb3",
233  "pe57+","pe58+","pe59+", "pe60+", "pe61+", "pe62+", "pe63+", "pe64+", "pe65+", "pe66+","pe67+","pe68+","pe69+"},
234  {"pb4","pe70+","pe71+","pe72+", "pe73+", "pe74+", "pe75+", "pe76+", "pe77+", "pe78+", "pe79+",
235  "pe80+","pe81+","pe82+", "pe83+", "pe84+", "pe85+", "pe86+", "pe87+", "pe88+", "pe89+",}
236  },
237  { // region 4
238  {"pe0+"},{"pe1+"},{"pe2+"},{"pe3+"},{"pe4+"}
239  },
240  { // region 5 - same eta as region 0, different phi
241  {"pb0"},{"pb1"},{"pb2"},{"pb3"},{"pb4"}
242  },
243  { // region 6 - same eta as region 0, different phi
244  {"pb0"},{"pb1"},{"pb2"},{"pb3"},{"pb4"}
245  },
246  { // region 7 - same eta as region 0, different phi
247  {"pb0"},{"pb1"},{"pb2"},{"pb3"},{"pb4"}
248  },
249  };
250 
251  std::map <std::string, std::set<int>> m_keylayer; // key layer used in z-slicing, defined by user with KeyString run arg and set using parseKeyString()
252  std::map <std::string, std::set<int>> m_keylayer2; // for 2D slicing
253 
254  bool m_key2 = false;
255  std::map <int, int> m_key_etamods; // eta module values of the key layer. each etamod = 1 slice for full granulatiy slicing
256  std::set <int> m_key_etamods2; // for 2D slicing
257  std::set <int> m_usedTracks; // tracks that hit the key layer
258  std::vector <std::vector < std::vector<float> > > m_radii; // used to calculate mean radii per layer for each slice, [slice][plane][hit]
259  std::vector <std::vector < std::vector<float> > > m_z; // used to calculate median z per layer for each slice, [slice][plane][hit]
260  // output map files and monitoring
262  std::unique_ptr<TFile> m_monitorFile{};
263 
264 
265  // TODO make automatic
266  const std::vector<uint32_t> m_diskIndex = {0,17,47,58,66}; // number of disks per layer in ATLAS-P2-ITK-22-02-00: [17, 30, 11, 8, 9] --> [0,17,47,58,66]
267 
268  StatusCode readInputs(bool & done);
269  StatusCode writePmapAndRmap(std::vector<FPGATrackSimHit> const & pbHits, std::vector<FPGATrackSimHit> const & peHits, std::vector<FPGATrackSimHit> const & sbHits, std::vector<FPGATrackSimHit> const & seHits, int region);
270  StatusCode writeSubrmap(std::vector<FPGATrackSimHit> const & allHits);
271  StatusCode writeEtaPatterns(); // writes txt file used in the FPGATrackSimEtaPatternFilterTool to filter roads based on eta module
272  StatusCode writeRadiiFile(std::vector<FPGATrackSimHit> const & allHits); // writes txt file with mean radii per layer for each slice, used in 1D Hough Transform
273  StatusCode writeMedianZFile(std::vector<FPGATrackSimHit> const & allHits); // writes txt file with median z per layer for each slice, used in 1D Hough Transform
274 
275  // Helpers
276  void drawSlices(std::vector<FPGATrackSimHit> const & allHits);
277  std::map <std::string, SiliconTech> m_det2tech = { {"pixel",SiliconTech::pixel}, {"strip",SiliconTech::strip} }; // for parsing KeyString
278  std::map <std::string, DetectorZone> m_bec2zone = { {"barrel",DetectorZone::barrel}, {"posEndcap",DetectorZone::posEndcap}, {"negEndcap",DetectorZone::negEndcap} };
279  bool isOnKeyLayer(int keynum, SiliconTech det, DetectorZone bec, int lyr); // returns if hit is on a key layer or not. keynum is either 1 or 2 for the first or second keylayer (if using 2D slicing)
280  int findPlane(const std::vector<std::vector<std::string>>& planes, const std::string& test);
281  std::string makeRmapLines(std::vector<FPGATrackSimHit> const & hits, SiliconTech det, DetectorZone bec, int max);
282  std::string makeSubrmapLines(std::vector<Module*> const & allmods, SiliconTech det, DetectorZone bec, int max);
283  void parseKeyString(); // sets m_keylayer and m_keylayer2 based on the Keystring and Keystring2 run args
284 
285 };
286 
287 #endif // FPGATRACKSIMMAPMAKERALG_H
FPGATrackSimMapMakerAlg::m_planes_default
const std::vector< std::vector< std::vector< std::string > > > m_planes_default
Definition: FPGATrackSimMapMakerAlg.h:116
FPGATrackSimMapMakerAlg::m_subrmap
std::ofstream m_subrmap
Definition: FPGATrackSimMapMakerAlg.h:261
FPGATrackSimMapMakerAlg::m_rmap
std::ofstream m_rmap
Definition: FPGATrackSimMapMakerAlg.h:261
FPGATrackSimMapMakerAlg::Module::lyr
int lyr
Definition: FPGATrackSimMapMakerAlg.h:52
FPGATrackSimMapMakerAlg::makeSubrmapLines
std::string makeSubrmapLines(std::vector< Module * > const &allmods, SiliconTech det, DetectorZone bec, int max)
Definition: FPGATrackSimMapMakerAlg.cxx:902
FPGATrackSimMapMakerAlg::m_description
Gaudi::Property< std::string > m_description
Definition: FPGATrackSimMapMakerAlg.h:86
FPGATrackSimMapMakerAlg::Module::operator>
bool operator>(const Module &m) const
Definition: FPGATrackSimMapMakerAlg.h:70
FPGATrackSimMapMakerAlg::m_track2modules
std::map< int, std::vector< Module * > > m_track2modules
Definition: FPGATrackSimMapMakerAlg.h:97
TRTCalib_Extractor.hits
hits
Definition: TRTCalib_Extractor.py:35
SiliconTech::strip
@ strip
FPGATrackSimMapMakerAlg::m_outFileName
Gaudi::Property< std::string > m_outFileName
Definition: FPGATrackSimMapMakerAlg.h:80
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
FPGATrackSimMapMakerAlg::m_maxEvents
Gaudi::Property< int > m_maxEvents
Definition: FPGATrackSimMapMakerAlg.h:77
FPGATrackSimMapMakerAlg::m_monitorFile
std::unique_ptr< TFile > m_monitorFile
Definition: FPGATrackSimMapMakerAlg.h:262
FPGATrackSimMapMakerAlg::Module::det
SiliconTech det
Definition: FPGATrackSimMapMakerAlg.h:50
FPGATrackSimMapMakerAlg::drawSlices
void drawSlices(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:727
ParticleGun_SamplingFraction.bec
int bec
Definition: ParticleGun_SamplingFraction.py:89
FPGATrackSimMapMakerAlg::m_planes_sp
const std::vector< std::vector< std::vector< std::string > > > m_planes_sp
Definition: FPGATrackSimMapMakerAlg.h:148
TRTCalib_Extractor.det
det
Definition: TRTCalib_Extractor.py:36
FPGATrackSimMapMakerAlg::initialize
StatusCode initialize() override
Definition: FPGATrackSimMapMakerAlg.cxx:23
DetectorZone::posEndcap
@ posEndcap
FPGATrackSimMapMakerAlg::Module::Module
Module()=default
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
FPGATrackSimMapMakerAlg::isOnKeyLayer
bool isOnKeyLayer(int keynum, SiliconTech det, DetectorZone bec, int lyr)
Definition: FPGATrackSimMapMakerAlg.cxx:756
FPGATrackSimMapMakerAlg::m_globalTrim
Gaudi::Property< float > m_globalTrim
Definition: FPGATrackSimMapMakerAlg.h:85
FPGATrackSimMapMakerAlg::m_sbHits
std::vector< FPGATrackSimHit > m_sbHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::m_det2tech
std::map< std::string, SiliconTech > m_det2tech
Definition: FPGATrackSimMapMakerAlg.h:277
FPGATrackSimMapMakerAlg::findPlane
int findPlane(const std::vector< std::vector< std::string >> &planes, const std::string &test)
Definition: FPGATrackSimMapMakerAlg.cxx:771
FPGATrackSimMapMakerAlg::readInputs
StatusCode readInputs(bool &done)
Definition: FPGATrackSimMapMakerAlg.cxx:98
FPGATrackSimMapMakerAlg::m_eventHeader
FPGATrackSimEventInputHeader m_eventHeader
Definition: FPGATrackSimMapMakerAlg.h:47
FPGATrackSimMapMakerAlg::m_hitInputTool
ToolHandle< IFPGATrackSimEventInputHeaderTool > m_hitInputTool
Definition: FPGATrackSimMapMakerAlg.h:45
FPGATrackSimMapMakerAlg::m_pbHits
std::vector< FPGATrackSimHit > m_pbHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::m_pmap
std::ofstream m_pmap
Definition: FPGATrackSimMapMakerAlg.h:261
FPGATrackSimMapMakerAlg::FPGATrackSimModuleId
std::tuple< SiliconTech, DetectorZone, int, int, int > FPGATrackSimModuleId
Definition: FPGATrackSimMapMakerAlg.h:34
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:147
FPGATrackSimMapMakerAlg::Module::operator<
bool operator<(const Module &m) const
Definition: FPGATrackSimMapMakerAlg.h:66
FPGATrackSimMapMakerAlg::m_peHits
std::vector< FPGATrackSimHit > m_peHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::Module::moduleId
FPGATrackSimModuleId moduleId() const
Definition: FPGATrackSimMapMakerAlg.h:59
FPGATrackSimMapMakerAlg::m_pbmax
int m_pbmax
Definition: FPGATrackSimMapMakerAlg.h:103
FPGATrackSimMapMakerAlg::m_insideout
Gaudi::Property< bool > m_insideout
Definition: FPGATrackSimMapMakerAlg.h:90
FPGATrackSimMapMakerAlg::writePmapAndRmap
StatusCode writePmapAndRmap(std::vector< FPGATrackSimHit > const &pbHits, std::vector< FPGATrackSimHit > const &peHits, std::vector< FPGATrackSimHit > const &sbHits, std::vector< FPGATrackSimHit > const &seHits, int region)
Definition: FPGATrackSimMapMakerAlg.cxx:180
FPGATrackSimMapMakerAlg::~FPGATrackSimMapMakerAlg
virtual ~FPGATrackSimMapMakerAlg()=default
FPGATrackSimMapMakerAlg::m_track2slice
std::map< int, int > m_track2slice
Definition: FPGATrackSimMapMakerAlg.h:98
FPGATrackSimHit
Definition: FPGATrackSimHit.h:41
FPGATrackSimMapMakerAlg::m_planes_insideout
const std::vector< std::vector< std::vector< std::string > > > m_planes_insideout
Definition: FPGATrackSimMapMakerAlg.h:214
FPGATrackSimMapMakerAlg::m_keylayer2
std::map< std::string, std::set< int > > m_keylayer2
Definition: FPGATrackSimMapMakerAlg.h:252
FPGATrackSimMapMakerAlg::m_diskIndex
const std::vector< uint32_t > m_diskIndex
Definition: FPGATrackSimMapMakerAlg.h:266
FPGATrackSimMapMakerAlg::writeRadiiFile
StatusCode writeRadiiFile(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:560
AthAlgorithm.h
FPGATrackSimMapMakerAlg::m_key_etamods
std::map< int, int > m_key_etamods
Definition: FPGATrackSimMapMakerAlg.h:255
FPGATrackSimMapMakerAlg::m_sbmax
int m_sbmax
Definition: FPGATrackSimMapMakerAlg.h:104
FPGATrackSimMapMakerAlg::m_usedTracks
std::set< int > m_usedTracks
Definition: FPGATrackSimMapMakerAlg.h:257
FPGATrackSimMapMakerAlg::m_planes2
const std::vector< std::vector< std::vector< std::string > > > m_planes2
Definition: FPGATrackSimMapMakerAlg.h:186
FPGATrackSimMapMakerAlg::m_keystring2
Gaudi::Property< std::string > m_keystring2
Definition: FPGATrackSimMapMakerAlg.h:82
FPGATrackSimMapMakerAlg::m_zedfile
std::ofstream m_zedfile
Definition: FPGATrackSimMapMakerAlg.h:261
SiliconTech
SiliconTech
Definition: FPGATrackSimTypes.h:25
FPGATrackSimMapMakerAlg::makeRmapLines
std::string makeRmapLines(std::vector< FPGATrackSimHit > const &hits, SiliconTech det, DetectorZone bec, int max)
Definition: FPGATrackSimMapMakerAlg.cxx:783
FPGATrackSimMapMakerAlg::m_etapat
std::ofstream m_etapat
Definition: FPGATrackSimMapMakerAlg.h:261
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
FPGATrackSimMapMakerAlg::m_radii
std::vector< std::vector< std::vector< float > > > m_radii
Definition: FPGATrackSimMapMakerAlg.h:258
FPGATrackSimMapMakerAlg::m_drawSlices
Gaudi::Property< bool > m_drawSlices
Definition: FPGATrackSimMapMakerAlg.h:89
FPGATrackSimMapMakerAlg::Module::Module
Module(SiliconTech det, DetectorZone bec, int lyr, int eta, int phi)
Definition: FPGATrackSimMapMakerAlg.h:58
FPGATrackSimMapMakerAlg::m_keylayer
std::map< std::string, std::set< int > > m_keylayer
Definition: FPGATrackSimMapMakerAlg.h:251
FPGATrackSimEventInputHeader
Definition: FPGATrackSimEventInputHeader.h:22
FPGATrackSimMapMakerAlg::Module::phi
int phi
Definition: FPGATrackSimMapMakerAlg.h:54
FPGATrackSimMapMakerAlg::writeEtaPatterns
StatusCode writeEtaPatterns()
Definition: FPGATrackSimMapMakerAlg.cxx:504
FPGATrackSimMapMakerAlg::Module::bec
DetectorZone bec
Definition: FPGATrackSimMapMakerAlg.h:51
FPGATrackSimMapMakerAlg::m_nSlices
Gaudi::Property< int > m_nSlices
Definition: FPGATrackSimMapMakerAlg.h:83
FPGATrackSimMapMakerAlg::m_remapModules
Gaudi::Property< bool > m_remapModules
Definition: FPGATrackSimMapMakerAlg.h:88
AthAlgorithm
Definition: AthAlgorithm.h:47
FPGATrackSimMapMakerAlg::m_bec2zone
std::map< std::string, DetectorZone > m_bec2zone
Definition: FPGATrackSimMapMakerAlg.h:278
FPGATrackSimMapMakerAlg::m_keystring
Gaudi::Property< std::string > m_keystring
Definition: FPGATrackSimMapMakerAlg.h:81
FPGATrackSimMapMakerAlg::m_key_etamods2
std::set< int > m_key_etamods2
Definition: FPGATrackSimMapMakerAlg.h:256
FPGATrackSimMapMakerAlg::Module
Definition: FPGATrackSimMapMakerAlg.h:49
FPGATrackSimEventInputHeader.h
FPGATrackSimMapMakerAlg::writeMedianZFile
StatusCode writeMedianZFile(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:629
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
FPGATrackSimMapMakerAlg::m_z
std::vector< std::vector< std::vector< float > > > m_z
Definition: FPGATrackSimMapMakerAlg.h:259
FPGATrackSimMapMakerAlg::m_key2
bool m_key2
Definition: FPGATrackSimMapMakerAlg.h:254
FPGATrackSimMapMakerAlg::m_trim
Gaudi::Property< float > m_trim
Definition: FPGATrackSimMapMakerAlg.h:79
FPGATrackSimMapMakerAlg::m_doSpacePoints
Gaudi::Property< bool > m_doSpacePoints
Definition: FPGATrackSimMapMakerAlg.h:84
FPGATrackSimMapMakerAlg::FPGATrackSimMapMakerAlg
FPGATrackSimMapMakerAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: FPGATrackSimMapMakerAlg.cxx:17
FPGATrackSimMapMakerAlg::finalize
StatusCode finalize() override
Definition: FPGATrackSimMapMakerAlg.cxx:709
FPGATrackSimMapMakerAlg::Module::plane
int plane
Definition: FPGATrackSimMapMakerAlg.h:56
FPGATrackSimMapMakerAlg::Module::eta
int eta
Definition: FPGATrackSimMapMakerAlg.h:53
FPGATrackSimMapMakerAlg::m_geoTag
Gaudi::Property< std::string > m_geoTag
Definition: FPGATrackSimMapMakerAlg.h:87
DetectorZone::negEndcap
@ negEndcap
FPGATrackSimMapMakerAlg::m_seHits
std::vector< FPGATrackSimHit > m_seHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::m_modules
std::map< FPGATrackSimModuleId, Module > m_modules
Definition: FPGATrackSimMapMakerAlg.h:96
DetectorZone
DetectorZone
Definition: FPGATrackSimTypes.h:28
FPGATrackSimMapMakerAlg::m_moduleRelabel
FPGATrackSimModuleRelabel * m_moduleRelabel
Definition: FPGATrackSimMapMakerAlg.h:93
FPGATrackSimMapMakerAlg::m_semax
std::vector< int > m_semax
Definition: FPGATrackSimMapMakerAlg.h:106
FPGATrackSimMapMakerAlg::m_pemax
std::vector< int > m_pemax
Definition: FPGATrackSimMapMakerAlg.h:105
IFPGATrackSimEventInputHeaderTool.h
FPGATrackSimMapMakerAlg::m_radfile
std::ofstream m_radfile
Definition: FPGATrackSimMapMakerAlg.h:261
FPGATrackSimMapMakerAlg::writeSubrmap
StatusCode writeSubrmap(std::vector< FPGATrackSimHit > const &allHits)
Definition: FPGATrackSimMapMakerAlg.cxx:283
FPGATrackSimMapMakerAlg::m_region
Gaudi::Property< int > m_region
Definition: FPGATrackSimMapMakerAlg.h:78
DetectorZone::barrel
@ barrel
FPGATrackSimMapMakerAlg::Module::numTracks
std::vector< int > numTracks
Definition: FPGATrackSimMapMakerAlg.h:55
FPGATrackSimMapMakerAlg::Module::operator==
bool operator==(const Module &m) const
Definition: FPGATrackSimMapMakerAlg.h:62
FPGATrackSimMapMakerAlg::m_allHits
std::vector< FPGATrackSimHit > m_allHits
Definition: FPGATrackSimMapMakerAlg.h:101
FPGATrackSimMapMakerAlg::parseKeyString
void parseKeyString()
Definition: FPGATrackSimMapMakerAlg.cxx:808
FPGATrackSimMapMakerAlg::m_slice2modules
std::map< int, std::vector< Module * > > m_slice2modules
Definition: FPGATrackSimMapMakerAlg.h:97
FPGATrackSimTypes.h
SiliconTech::pixel
@ pixel
FPGATrackSimMapMakerAlg::m_planes
const std::vector< std::vector< std::vector< std::string > > > * m_planes
Definition: FPGATrackSimMapMakerAlg.h:115
FPGATrackSimMapMakerAlg
Definition: FPGATrackSimMapMakerAlg.h:32
FPGATrackSimModuleRelabel
Definition: FPGATrackSimModuleRelabel.h:30
FPGATrackSimMapMakerAlg::execute
StatusCode execute() override
Definition: FPGATrackSimMapMakerAlg.cxx:71