ATLAS Offline Software
Loading...
Searching...
No Matches
FPGATrackSimSpacePointsTool Class Reference

#include <FPGATrackSimSpacePointsTool.h>

Inheritance diagram for FPGATrackSimSpacePointsTool:
Collaboration diagram for FPGATrackSimSpacePointsTool:

Public Member Functions

virtual StatusCode initialize () override
virtual StatusCode finalize () override
virtual StatusCode DoSpacePoints (FPGATrackSimLogicalEventInputHeader &, std::vector< FPGATrackSimCluster > &) override

Private Member Functions

StatusCode fillMaps (std::vector< FPGATrackSimHit > &hits)
StatusCode makeSpacePoints (FPGATrackSimTowerInputHeader &tower, std::vector< FPGATrackSimCluster > &spacepoints)
void calcPosition (FPGATrackSimHit &hit_in, FPGATrackSimHit &hit_out, float &x, float &y, float &z)
bool searchForMatch (FPGATrackSimHit &hit_in, std::vector< FPGATrackSimHit > &hits_outer, FPGATrackSimTowerInputHeader &tower, std::vector< FPGATrackSimCluster > &spacepoints)
void addSpacePoints (FPGATrackSimHit hit_in, FPGATrackSimHit hit_out, FPGATrackSimTowerInputHeader &tower, std::vector< FPGATrackSimCluster > &spacepoints)
void reduceGlobalCoordPrecision (FPGATrackSimHit &hit) const

Private Attributes

std::map< std::vector< int >, std::pair< std::vector< FPGATrackSimHit >, std::vector< FPGATrackSimHit > > > m_map
std::vector< FPGATrackSimHitm_pixel
Gaudi::Property< float > m_phiwindow { this, "PhiWindow", 0.008, "Distance in phi to consider two hits for making a space-point" }
Gaudi::Property< bool > m_duplicate { this, "Duplication", false, "Duplicate spacepoints to layer on the other side of the stave" }
Gaudi::Property< bool > m_filter { this, "Filtering", false, "Filter out incomplete spacepoints" }
Gaudi::Property< bool > m_filterClose { this, "FilteringClosePoints", false, "Filter out single hits cloes to spacepoints" }
Gaudi::Property< bool > m_sameModulesOnly { this, "SameModulesOnly", false, "Only use hits on the same physical (eta) module" }
Gaudi::Property< bool > m_boundsCheck { this, "BoundsCheck", false, "Perform a module bounds check in the endcaps" }
Gaudi::Property< bool > m_reduceCoordPrecision {this, "ReduceCoordPrecision", false, "flag to enable reduc ing the precision of global coordinates" }
Gaudi::Property< float > m_coordRPrecision {this, "CoordRPrecision", 1./64., "fixed point precision of r coordinate" }
Gaudi::Property< float > m_coordPhiPrecision {this, "CoordPhiPrecision", 1./8192., "fixed point precision of phi coordinate" }
Gaudi::Property< float > m_coordZPrecision {this, "CoordZPrecision", 1./32., "fixed point precision of z coordinate" }
unsigned m_inputhits = 0
unsigned m_spacepts = 0
unsigned m_filteredhits = 0
unsigned m_adjacent_eta_sp = 0
unsigned m_adjacent_phi_sp = 0
unsigned m_diagonal_sp = 0
TH1I * m_spacepts_per_hit = nullptr

Detailed Description

Definition at line 19 of file FPGATrackSimSpacePointsTool.h.

Member Function Documentation

◆ addSpacePoints()

void FPGATrackSimSpacePointsTool::addSpacePoints ( FPGATrackSimHit hit_in,
FPGATrackSimHit hit_out,
FPGATrackSimTowerInputHeader & tower,
std::vector< FPGATrackSimCluster > & spacepoints )
private

Definition at line 254 of file FPGATrackSimSpacePointsTool.cxx.

255{
256 // Make a spacepoint
257 //------------------
258 float x{},y{},z{};
259 calcPosition(hit_in, hit_out, x, y, z);
260
261 float phi_window = abs(hit_in.getGPhi()-hit_out.getGPhi());
262
263 // Let's print out the coords of the spacepoints we identify.
264 float r = TMath::Sqrt(x*x + y*y);
265 ATH_MSG_DEBUG("Spacepoint x = " << x << ", y = " << y << ", z = " << z << ", r = " << r);
266 ATH_MSG_DEBUG(" Paired hit z = " << hit_in.getZ() << ", r = " << hit_in.getR() << ", phi = " << hit_in.getGPhi() << ", phi module = " << hit_in.getPhiModule() << ", eta module = " << hit_in.getEtaModule());
267 ATH_MSG_DEBUG(" Paired hit z = " << hit_out.getZ() << ", r = " << hit_out.getR() << ", phi = " << hit_out.getGPhi() << ", phi module = " << hit_out.getPhiModule() << ", eta module = " << hit_out.getEtaModule());
268
269 // We need to merge the truth information for the hits together in order
270 // to use them in matrix generation.
271
272 const FPGATrackSimMultiTruth truth_in = hit_in.getTruth();
273 const FPGATrackSimMultiTruth truth_out = hit_out.getTruth();
274
275 FPGATrackSimMultiTruth new_truth;
276 new_truth.add(truth_in);
277 new_truth.add(truth_out);
278 //hit_in.setTruth(new_truth);
279
280 //hit_in.setX(x);
281 //hit_in.setY(y);
282 //hit_in.setZ(z);
283
284 // TODO this is probably no longer necessary, we should just overwrite the local coordinates
285 // of both hit, I think?
286 //hit_in.setPairedHit(hit_in);
287
288 // This function now does everything (I think) including storing the correct
289 // local coordinates for later retrieval.
290 // Maybe it should return a new FPGATrackSimHit rather than modifying in place.
291 hit_in.makeSpacepoint(x, y, z, phi_window, hit_out, new_truth);
292 hit_in.setCluster2ID(hit_out.getCluster1ID());
293
296
297 // abusing hit type 'guessed' to be able to indentify it as spacepoint later on
298 // Guessed is ambiguous with an actual guessed hit-- there is a spacepoint type which
299 // should be used instead.
300 // hit_in.setHitType(HitType::guessed);
301 // hit_in.setHitType(HitType::spacepoint);
302 tower.addHit(hit_in);
303
304 if (m_duplicate) {
305 hit_out.makeSpacepoint(x, y, z, phi_window, hit_in, new_truth);
306 hit_out.setCluster2ID(hit_in.getCluster1ID());
307
310
311 tower.addHit(hit_out);
312 }
313
314 // push back a copy for monitoring
315 FPGATrackSimCluster sp;
316 sp.setClusterEquiv(hit_in);
317 sp.push_backHitList(hit_in);
318 sp.push_backHitList(hit_out);
319 spacepoints.push_back(sp);
320
321}
#define ATH_MSG_DEBUG(x)
static Double_t sp
#define y
#define x
#define z
void makeSpacepoint(float x, float y, float z, float window, FPGATrackSimHit &other, FPGATrackSimMultiTruth &new_truth)
float getGPhi() const
int getEtaModule(bool old=false) const
float getZ() const
unsigned getPhiModule() const
int getCluster1ID() const
float getR() const
void setCluster2ID(int v)
const FPGATrackSimMultiTruth & getTruth() const
void add(const FPGATrackSimMultiTruth::Barcode &code, const FPGATrackSimMultiTruth::Weight &weight)
void calcPosition(FPGATrackSimHit &hit_in, FPGATrackSimHit &hit_out, float &x, float &y, float &z)
void reduceGlobalCoordPrecision(FPGATrackSimHit &hit) const
Gaudi::Property< bool > m_reduceCoordPrecision
void addHit(const FPGATrackSimHit &s)
int r
Definition globals.cxx:22

◆ calcPosition()

void FPGATrackSimSpacePointsTool::calcPosition ( FPGATrackSimHit & hit_in,
FPGATrackSimHit & hit_out,
float & x,
float & y,
float & z )
private

Definition at line 325 of file FPGATrackSimSpacePointsTool.cxx.

326{
327 float phi_sp = (hit_in.getGPhi() + hit_out.getGPhi()) / 2.0;
328 float r_sp = (hit_in.getR() + hit_out.getR()) / 2.0;;
329 float z_sp = (hit_in.getZ() + hit_out.getZ()) / 2.0;;
330
331 float delta_phi_local = (hit_in.getGPhi() - hit_out.getGPhi()) * r_sp; // distance in phi dir in mm
332
333 if (hit_in.isBarrel())
334 {
335 static const float stereo_angle = 0.026; // barrel
336 z_sp += delta_phi_local/tan(stereo_angle)/2.0;
337 }
338 else
339 {
340 static const float stereo_angle = 0.020; // endcap
341 r_sp += delta_phi_local/tan(stereo_angle)/2.0;
342
343 // don't let r_sp out of range of edge of module TODO fix hardcode
344 // Allow for the bounds check to be disabled, since it may mess up a linear fit.
345 if (m_boundsCheck) {
346 float r_bounds[19] = {394.0, 415.5, 442.0, 472.4, 498.85, 521.45, 547.05, 566.65, 591.0, 621.8, 654.7, 683.9, 710.2, 739.4, 784.2, 838.8, 887.6, 937.7, 967.8};
347
348 if (hit_in.getEtaModule()==hit_in.getEtaModule()) {
349 float r_limited = std::max(r_sp,r_bounds[hit_in.getEtaModule()]);
350 r_limited = std::min(r_sp,r_bounds[hit_in.getEtaModule()+1]);
351 if (r_sp!=r_limited) {
352 ATH_MSG_WARNING("Spacepoint location not in module boundary: r_sp=" << r_sp
353 << " not in [" << r_bounds[hit_in.getEtaModule()] << "," << r_bounds[hit_in.getEtaModule()+1] << "]");
354 r_sp=r_limited;
355 }
356 } else if (hit_in.getEtaModule()==hit_in.getEtaModule()+1) {
357 float window = 3; //mm, max possible distance between hits from same track with reasonable incline to module
358 float r_limited = std::max(r_sp,r_bounds[hit_in.getEtaModule()+1]-window);
359 r_limited = std::min(r_sp,r_bounds[hit_in.getEtaModule()+1]+window);
360 if (r_sp!=r_limited) {
361 ATH_MSG_WARNING("Crossing spacepoint location too far from module boundary: r_sp=" << r_sp
362 << " not in [" << r_bounds[hit_in.getEtaModule()+1]-window << "," << r_bounds[hit_in.getEtaModule()+1]+window << "]");
363 r_sp=r_limited;
364 }
365 }
366 }
367 }
368
369 // insert new values
370 x = r_sp*cos(phi_sp);
371 y = r_sp*sin(phi_sp);
372 z = z_sp;
373}
#define ATH_MSG_WARNING(x)
bool isBarrel() const

◆ DoSpacePoints()

StatusCode FPGATrackSimSpacePointsTool::DoSpacePoints ( FPGATrackSimLogicalEventInputHeader & header,
std::vector< FPGATrackSimCluster > & spacepoints )
overridevirtual

Definition at line 45 of file FPGATrackSimSpacePointsTool.cxx.

46{
47 for (int i = 0; i < header.nTowers(); ++i)
48 {
49 FPGATrackSimTowerInputHeader &tower = *header.getTower(i);
50 std::vector<FPGATrackSimHit> hits = tower.hits();
51 if (hits.empty()) continue;
52
53 m_inputhits += hits.size();
54 ATH_CHECK(fillMaps(hits));
55 ATH_CHECK(makeSpacePoints(tower,spacepoints));
56 }
57
58 return StatusCode::SUCCESS;
59}
#define ATH_CHECK
Evaluate an expression and check for errors.
StatusCode makeSpacePoints(FPGATrackSimTowerInputHeader &tower, std::vector< FPGATrackSimCluster > &spacepoints)
StatusCode fillMaps(std::vector< FPGATrackSimHit > &hits)
const std::vector< FPGATrackSimHit > & hits() const

◆ fillMaps()

StatusCode FPGATrackSimSpacePointsTool::fillMaps ( std::vector< FPGATrackSimHit > & hits)
private

Definition at line 62 of file FPGATrackSimSpacePointsTool.cxx.

63{
64 m_map.clear();
65 m_pixel.clear();
66
67 int strip_hits = 0;
68 for (const auto & hit : hits) {
69
70 if (hit.isPixel()) {
71 // just save them so we can put them back
72 m_pixel.push_back(hit);
73 ATH_MSG_DEBUG("Pixel hit z = " << hit.getZ() << ", r = " << hit.getR() << ", phi = " << hit.getGPhi());
74 continue;
75 }
76 strip_hits += 1;
77
78 std::vector<int> module_desc(4);
79
80 module_desc[0] = (int)hit.getDetectorZone();
81 module_desc[1] = hit.getPhysLayer()/2; //div 2 gives layer as part of pair
82 unsigned side = hit.getPhysLayer()%2; // even/odd layer
83 module_desc[2] = hit.getPhiModule();
84 module_desc[3] = hit.getEtaModule();
85
86 if (side==0)
87 m_map[module_desc].first.push_back(hit);
88 else
89 m_map[module_desc].second.push_back(hit);
90 }
91
92 ATH_MSG_DEBUG("Running spacepoints default tool over " << strip_hits << " strip hits.");
93
94 return StatusCode::SUCCESS;
95}
std::map< std::vector< int >, std::pair< std::vector< FPGATrackSimHit >, std::vector< FPGATrackSimHit > > > m_map
std::vector< FPGATrackSimHit > m_pixel

◆ finalize()

StatusCode FPGATrackSimSpacePointsTool::finalize ( )
overridevirtual

Definition at line 30 of file FPGATrackSimSpacePointsTool.cxx.

31{
32 ATH_MSG_INFO("Spacepoints report");
33 ATH_MSG_INFO("-----------------------------------------");
34 ATH_MSG_INFO("Strip Hits Input " << m_inputhits);
35 ATH_MSG_INFO("Spacepoints Ouput " << m_spacepts);
36 ATH_MSG_INFO("Filtered Hits " << m_filteredhits);
37 ATH_MSG_INFO("Adjacent Eta Module SPs " << m_adjacent_eta_sp);
38 ATH_MSG_INFO("Adjacent Phi Module SPs " << m_adjacent_phi_sp);
39 ATH_MSG_INFO("Diagonal Module SPs " << m_diagonal_sp);
40 ATH_MSG_INFO("Spacepoints per hit " << m_spacepts_per_hit->GetMean());
41 ATH_MSG_INFO("-----------------------------------------");
42 return StatusCode::SUCCESS;
43}
#define ATH_MSG_INFO(x)

◆ initialize()

StatusCode FPGATrackSimSpacePointsTool::initialize ( )
overridevirtual

Definition at line 18 of file FPGATrackSimSpacePointsTool.cxx.

19{
20 ATH_MSG_INFO("Using spacepoints default tool");
21 if (m_duplicate) ATH_MSG_INFO("Duplicating spacepoint to layer on the other side of the stave");
22 if (m_filter) ATH_MSG_INFO("Filtering out incomplete spacepoints");
23 if (m_filterClose) ATH_MSG_INFO("Filtering out single hits close to spacepoints");
24
25 m_spacepts_per_hit = new TH1I("spacepts_per_hit","",20,0,20);
26
27 return StatusCode::SUCCESS;
28}

◆ makeSpacePoints()

StatusCode FPGATrackSimSpacePointsTool::makeSpacePoints ( FPGATrackSimTowerInputHeader & tower,
std::vector< FPGATrackSimCluster > & spacepoints )
private

Definition at line 97 of file FPGATrackSimSpacePointsTool.cxx.

98{
99
100 // delete the old clusters, this will be replaced by the spacepoints
101 tower.clearHits();
102
103 for (auto entry : m_map)
104 {
105 // std::vector<int> const & module_desc = entry.first;
106 std::vector<FPGATrackSimHit>& hits_inner = entry.second.first;
107 std::vector<FPGATrackSimHit>& hits_outer = entry.second.second;
108
109 for (auto hit_in : hits_inner) {
110 int startsize = spacepoints.size();
111 bool foundPair = searchForMatch(hit_in,hits_outer,tower,spacepoints);
112
113 if (!foundPair && !m_sameModulesOnly) {
114 // search in +1 eta direction
115 std::vector<int> nextmod = entry.first;
116 nextmod[3]+=1; // increment eta module counter
117 auto entry2 = m_map.find(nextmod);
118 if (entry2!=m_map.end()) {
119 foundPair = searchForMatch(hit_in,entry2->second.second,tower,spacepoints);
120 if (foundPair) m_adjacent_eta_sp++;
121 }
122 }
123
124 // Also seek in +1 phi direction.
125 if (!foundPair && !m_sameModulesOnly) {
126 // search in +1 eta direction
127 std::vector<int> nextphimod = entry.first;
128 nextphimod[2]+=1; // increment phi module counter
129 auto entry3 = m_map.find(nextphimod);
130 if (entry3!=m_map.end()) {
131 foundPair = searchForMatch(hit_in,entry3->second.second,tower,spacepoints);
132 if (foundPair) m_adjacent_phi_sp++;
133 }
134 }
135
136 // If all else fails, seek in +1 eta, +1 phi direction.
137 if (!foundPair && !m_sameModulesOnly) {
138 // search in +1 eta direction
139 std::vector<int> next2mod = entry.first;
140 next2mod[3]+=1; // increment eta module counter
141 next2mod[2]+=1; // increment phi module counter
142 auto entry4 = m_map.find(next2mod);
143 if (entry4!=m_map.end()) {
144 foundPair = searchForMatch(hit_in,entry4->second.second,tower,spacepoints);
145 if (foundPair) m_diagonal_sp++;
146 }
147 }
148
149 if (!foundPair) {
151 else {
152 tower.addHit(hit_in); // add unpaired hit_in
153 ATH_MSG_DEBUG("Unpaired hit z = " << hit_in.getZ() << ", r = " << hit_in.getR() << ", phi = " << hit_in.getGPhi() << ", phi module = " << hit_in.getPhiModule() << ", eta module = " << hit_in.getEtaModule());
154 }
155 }
156
157 m_spacepts_per_hit->Fill(spacepoints.size()-startsize);
158 }
159
160 // add unpaired outer hits TODO use the hit type instead of another loop
161 for (const FPGATrackSimHit& hit_out : hits_outer) {
162 bool foundPair=false;
163 for (const FPGATrackSimHit& hit_in : hits_inner) {
164 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
165 foundPair=true;
166 break;
167 }
168 }
169
170 // search in -1 eta direction
171 std::vector<int> nextmod = entry.first;
172 nextmod[3]-=1; // increment eta module counter
173 auto entry2 = m_map.find(nextmod);
174 if (entry2!=m_map.end()) {
175 for (const auto & hit_in : entry2->second.first) {
176 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
177 foundPair=true;
179 break;
180 }
181 }
182 }
183
184 // Also seek in -1 phi direction.
185 if (!foundPair) {
186 // search in +1 eta direction
187 std::vector<int> nextphimod = entry.first;
188 nextphimod[2]-=1; // increment phi module counter
189 auto entry3 = m_map.find(nextphimod);
190 if (entry3!=m_map.end()) {
191 for (const auto & hit_in : entry3->second.first) {
192 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
193 foundPair=true;
195 break;
196 }
197 }
198 }
199 }
200
201 // If all else fails, seek in -1 eta, -1 phi direction.
202 if (!foundPair) {
203 // search in +1 eta direction
204 std::vector<int> next2mod = entry.first;
205 next2mod[3]-=1; // increment eta module counter
206 next2mod[2]-=1; // increment phi module counter
207 auto entry4 = m_map.find(next2mod);
208 if (entry4!=m_map.end()) {
209 for (const auto & hit_in : entry4->second.first) {
210 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
211 foundPair=true;
213 break;
214 }
215 }
216 }
217 }
218
219 if (!foundPair) {
221 else {
222 tower.addHit(hit_out);
223 ATH_MSG_DEBUG("Unpaired hit z = " << hit_out.getZ() << ", r = " << hit_out.getR() << ", phi = " << hit_out.getGPhi() << ", phi module = " << hit_out.getPhiModule() << ", eta module = " << hit_out.getEtaModule());
224 }
225 }
226 }
227 }
228
229 // add back the pixles
230 for (const FPGATrackSimHit& hit: m_pixel) tower.addHit(hit);
231
232 m_inputhits -= m_pixel.size(); // so count is just input strips
233 m_spacepts += spacepoints.size();
234
235
236 return StatusCode::SUCCESS;
237}
bool searchForMatch(FPGATrackSimHit &hit_in, std::vector< FPGATrackSimHit > &hits_outer, FPGATrackSimTowerInputHeader &tower, std::vector< FPGATrackSimCluster > &spacepoints)
Gaudi::Property< bool > m_sameModulesOnly

◆ reduceGlobalCoordPrecision()

void FPGATrackSimSpacePointsTool::reduceGlobalCoordPrecision ( FPGATrackSimHit & hit) const
private

Definition at line 375 of file FPGATrackSimSpacePointsTool.cxx.

375 {
376 float pos[3] = { hit.getR(), hit.getGPhi(), hit.getZ() };
377
378 pos[0] = std::trunc(pos[0] / m_coordRPrecision) * m_coordRPrecision;
379 pos[1] = std::trunc(pos[1] / m_coordPhiPrecision) * m_coordPhiPrecision;
380 pos[2] = std::trunc(pos[2] / m_coordZPrecision) * m_coordZPrecision;
381
382 hit.setX(pos[0] * std::cos(pos[1]));
383 hit.setY(pos[0] * std::sin(pos[1]));
384 hit.setZ(pos[2]);
385}
void setZ(float v)
void setX(float v)
void setY(float v)
Gaudi::Property< float > m_coordRPrecision
Gaudi::Property< float > m_coordZPrecision
Gaudi::Property< float > m_coordPhiPrecision

◆ searchForMatch()

bool FPGATrackSimSpacePointsTool::searchForMatch ( FPGATrackSimHit & hit_in,
std::vector< FPGATrackSimHit > & hits_outer,
FPGATrackSimTowerInputHeader & tower,
std::vector< FPGATrackSimCluster > & spacepoints )
private

Definition at line 240 of file FPGATrackSimSpacePointsTool.cxx.

241{
242 bool foundPair = false;
243 for (const FPGATrackSimHit& hit_out : hits_outer)
244 {
245 // Too far apart to be from same track
246 if (abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
247 addSpacePoints(hit_in,hit_out,tower,spacepoints);
248 foundPair=true;
249 }
250 }
251 return foundPair;
252}
void addSpacePoints(FPGATrackSimHit hit_in, FPGATrackSimHit hit_out, FPGATrackSimTowerInputHeader &tower, std::vector< FPGATrackSimCluster > &spacepoints)

Member Data Documentation

◆ m_adjacent_eta_sp

unsigned FPGATrackSimSpacePointsTool::m_adjacent_eta_sp = 0
private

Definition at line 57 of file FPGATrackSimSpacePointsTool.h.

◆ m_adjacent_phi_sp

unsigned FPGATrackSimSpacePointsTool::m_adjacent_phi_sp = 0
private

Definition at line 58 of file FPGATrackSimSpacePointsTool.h.

◆ m_boundsCheck

Gaudi::Property<bool> FPGATrackSimSpacePointsTool::m_boundsCheck { this, "BoundsCheck", false, "Perform a module bounds check in the endcaps" }
private

Definition at line 47 of file FPGATrackSimSpacePointsTool.h.

47{ this, "BoundsCheck", false, "Perform a module bounds check in the endcaps" };

◆ m_coordPhiPrecision

Gaudi::Property<float> FPGATrackSimSpacePointsTool::m_coordPhiPrecision {this, "CoordPhiPrecision", 1./8192., "fixed point precision of phi coordinate" }
private

Definition at line 50 of file FPGATrackSimSpacePointsTool.h.

50{this, "CoordPhiPrecision", 1./8192., "fixed point precision of phi coordinate" };

◆ m_coordRPrecision

Gaudi::Property<float> FPGATrackSimSpacePointsTool::m_coordRPrecision {this, "CoordRPrecision", 1./64., "fixed point precision of r coordinate" }
private

Definition at line 49 of file FPGATrackSimSpacePointsTool.h.

49{this, "CoordRPrecision", 1./64., "fixed point precision of r coordinate" };

◆ m_coordZPrecision

Gaudi::Property<float> FPGATrackSimSpacePointsTool::m_coordZPrecision {this, "CoordZPrecision", 1./32., "fixed point precision of z coordinate" }
private

Definition at line 51 of file FPGATrackSimSpacePointsTool.h.

51{this, "CoordZPrecision", 1./32., "fixed point precision of z coordinate" };

◆ m_diagonal_sp

unsigned FPGATrackSimSpacePointsTool::m_diagonal_sp = 0
private

Definition at line 59 of file FPGATrackSimSpacePointsTool.h.

◆ m_duplicate

Gaudi::Property<bool> FPGATrackSimSpacePointsTool::m_duplicate { this, "Duplication", false, "Duplicate spacepoints to layer on the other side of the stave" }
private

Definition at line 43 of file FPGATrackSimSpacePointsTool.h.

43{ this, "Duplication", false, "Duplicate spacepoints to layer on the other side of the stave" };

◆ m_filter

Gaudi::Property<bool> FPGATrackSimSpacePointsTool::m_filter { this, "Filtering", false, "Filter out incomplete spacepoints" }
private

Definition at line 44 of file FPGATrackSimSpacePointsTool.h.

44{ this, "Filtering", false, "Filter out incomplete spacepoints" };

◆ m_filterClose

Gaudi::Property<bool> FPGATrackSimSpacePointsTool::m_filterClose { this, "FilteringClosePoints", false, "Filter out single hits cloes to spacepoints" }
private

Definition at line 45 of file FPGATrackSimSpacePointsTool.h.

45{ this, "FilteringClosePoints", false, "Filter out single hits cloes to spacepoints" };

◆ m_filteredhits

unsigned FPGATrackSimSpacePointsTool::m_filteredhits = 0
private

Definition at line 56 of file FPGATrackSimSpacePointsTool.h.

◆ m_inputhits

unsigned FPGATrackSimSpacePointsTool::m_inputhits = 0
private

Definition at line 54 of file FPGATrackSimSpacePointsTool.h.

◆ m_map

std::map<std::vector<int>,std::pair<std::vector<FPGATrackSimHit>,std::vector<FPGATrackSimHit> > > FPGATrackSimSpacePointsTool::m_map
private

Definition at line 39 of file FPGATrackSimSpacePointsTool.h.

◆ m_phiwindow

Gaudi::Property<float> FPGATrackSimSpacePointsTool::m_phiwindow { this, "PhiWindow", 0.008, "Distance in phi to consider two hits for making a space-point" }
private

Definition at line 42 of file FPGATrackSimSpacePointsTool.h.

42{ this, "PhiWindow", 0.008, "Distance in phi to consider two hits for making a space-point" };

◆ m_pixel

std::vector<FPGATrackSimHit> FPGATrackSimSpacePointsTool::m_pixel
private

Definition at line 40 of file FPGATrackSimSpacePointsTool.h.

◆ m_reduceCoordPrecision

Gaudi::Property<bool> FPGATrackSimSpacePointsTool::m_reduceCoordPrecision {this, "ReduceCoordPrecision", false, "flag to enable reduc ing the precision of global coordinates" }
private

Definition at line 48 of file FPGATrackSimSpacePointsTool.h.

48{this, "ReduceCoordPrecision", false, "flag to enable reduc ing the precision of global coordinates" };

◆ m_sameModulesOnly

Gaudi::Property<bool> FPGATrackSimSpacePointsTool::m_sameModulesOnly { this, "SameModulesOnly", false, "Only use hits on the same physical (eta) module" }
private

Definition at line 46 of file FPGATrackSimSpacePointsTool.h.

46{ this, "SameModulesOnly", false, "Only use hits on the same physical (eta) module" };

◆ m_spacepts

unsigned FPGATrackSimSpacePointsTool::m_spacepts = 0
private

Definition at line 55 of file FPGATrackSimSpacePointsTool.h.

◆ m_spacepts_per_hit

TH1I* FPGATrackSimSpacePointsTool::m_spacepts_per_hit = nullptr
private

Definition at line 60 of file FPGATrackSimSpacePointsTool.h.


The documentation for this class was generated from the following files: