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 264 of file FPGATrackSimSpacePointsTool.cxx.

265{
266 // Make a spacepoint
267 //------------------
268 float x{},y{},z{};
269 calcPosition(hit_in, hit_out, x, y, z);
270
271 float phi_window = abs(hit_in.getGPhi()-hit_out.getGPhi());
272
273 // Let's print out the coords of the spacepoints we identify.
274 float r = TMath::Sqrt(x*x + y*y);
275 ATH_MSG_DEBUG("Spacepoint x = " << x << ", y = " << y << ", z = " << z << ", r = " << r);
276 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());
277 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());
278
279 // We need to merge the truth information for the hits together in order
280 // to use them in matrix generation.
281
282 const FPGATrackSimMultiTruth truth_in = hit_in.getTruth();
283 const FPGATrackSimMultiTruth truth_out = hit_out.getTruth();
284
285 FPGATrackSimMultiTruth new_truth;
286 new_truth.add(truth_in);
287 new_truth.add(truth_out);
288 //hit_in.setTruth(new_truth);
289
290 //hit_in.setX(x);
291 //hit_in.setY(y);
292 //hit_in.setZ(z);
293
294 // TODO this is probably no longer necessary, we should just overwrite the local coordinates
295 // of both hit, I think?
296 //hit_in.setPairedHit(hit_in);
297
298 // This function now does everything (I think) including storing the correct
299 // local coordinates for later retrieval.
300 // Maybe it should return a new FPGATrackSimHit rather than modifying in place.
301 hit_in.makeSpacepoint(x, y, z, phi_window, hit_out, new_truth);
302 hit_in.setCluster2ID(hit_out.getCluster1ID());
303
306
307 // abusing hit type 'guessed' to be able to indentify it as spacepoint later on
308 // Guessed is ambiguous with an actual guessed hit-- there is a spacepoint type which
309 // should be used instead.
310 // hit_in.setHitType(HitType::guessed);
311 // hit_in.setHitType(HitType::spacepoint);
312 tower.addHit(hit_in);
313
314 if (m_duplicate) {
315 hit_out.makeSpacepoint(x, y, z, phi_window, hit_in, new_truth);
316 hit_out.setCluster2ID(hit_in.getCluster1ID());
317
320
321 tower.addHit(hit_out);
322 }
323
324 // push back a copy for monitoring
325 FPGATrackSimCluster sp;
326 sp.setClusterEquiv(hit_in);
327 sp.push_backHitList(hit_in);
328 if (m_duplicate) sp.push_backHitList(hit_out);
329 spacepoints.push_back(std::move(sp));
330
331}
#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 335 of file FPGATrackSimSpacePointsTool.cxx.

336{
337 float phi_sp = (hit_in.getGPhi() + hit_out.getGPhi()) / 2.0;
338 float r_sp = (hit_in.getR() + hit_out.getR()) / 2.0;;
339 float z_sp = (hit_in.getZ() + hit_out.getZ()) / 2.0;;
340
341 float delta_phi_local = (hit_in.getGPhi() - hit_out.getGPhi()) * r_sp; // distance in phi dir in mm
342
343 if (hit_in.isBarrel())
344 {
345 static const float stereo_angle = 0.026; // barrel
346 z_sp += delta_phi_local/tan(stereo_angle)/2.0;
347 }
348 else
349 {
350 static const float stereo_angle = 0.020; // endcap
351 r_sp += delta_phi_local/tan(stereo_angle)/2.0;
352
353 // don't let r_sp out of range of edge of module TODO fix hardcode
354 // Allow for the bounds check to be disabled, since it may mess up a linear fit.
355 if (m_boundsCheck) {
356 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};
357
358 if (hit_in.getEtaModule()==hit_in.getEtaModule()) {
359 float r_limited = std::max(r_sp,r_bounds[hit_in.getEtaModule()]);
360 r_limited = std::min(r_sp,r_bounds[hit_in.getEtaModule()+1]);
361 if (r_sp!=r_limited) {
362 ATH_MSG_WARNING("Spacepoint location not in module boundary: r_sp=" << r_sp
363 << " not in [" << r_bounds[hit_in.getEtaModule()] << "," << r_bounds[hit_in.getEtaModule()+1] << "]");
364 r_sp=r_limited;
365 }
366 } else if (hit_in.getEtaModule()==hit_in.getEtaModule()+1) {
367 float window = 3; //mm, max possible distance between hits from same track with reasonable incline to module
368 float r_limited = std::max(r_sp,r_bounds[hit_in.getEtaModule()+1]-window);
369 r_limited = std::min(r_sp,r_bounds[hit_in.getEtaModule()+1]+window);
370 if (r_sp!=r_limited) {
371 ATH_MSG_WARNING("Crossing spacepoint location too far from module boundary: r_sp=" << r_sp
372 << " not in [" << r_bounds[hit_in.getEtaModule()+1]-window << "," << r_bounds[hit_in.getEtaModule()+1]+window << "]");
373 r_sp=r_limited;
374 }
375 }
376 }
377 }
378
379 // insert new values
380 x = r_sp*cos(phi_sp);
381 y = r_sp*sin(phi_sp);
382 z = z_sp;
383}
#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 // Also add unpaired hit as single-hit cluster for downstream propagation
154 FPGATrackSimCluster unpairedCluster;
155 unpairedCluster.setClusterEquiv(hit_in);
156 unpairedCluster.push_backHitList(hit_in);
157 spacepoints.push_back(std::move(unpairedCluster));
158 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());
159 }
160 }
161
162 m_spacepts_per_hit->Fill(spacepoints.size()-startsize);
163 }
164
165 // add unpaired outer hits TODO use the hit type instead of another loop
166 for (const FPGATrackSimHit& hit_out : hits_outer) {
167 bool foundPair=false;
168 for (const FPGATrackSimHit& hit_in : hits_inner) {
169 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
170 foundPair=true;
171 break;
172 }
173 }
174
175 // search in -1 eta direction
176 std::vector<int> nextmod = entry.first;
177 nextmod[3]-=1; // increment eta module counter
178 auto entry2 = m_map.find(nextmod);
179 if (entry2!=m_map.end()) {
180 for (const auto & hit_in : entry2->second.first) {
181 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
182 foundPair=true;
184 break;
185 }
186 }
187 }
188
189 // Also seek in -1 phi direction.
190 if (!foundPair) {
191 // search in +1 eta direction
192 std::vector<int> nextphimod = entry.first;
193 nextphimod[2]-=1; // increment phi module counter
194 auto entry3 = m_map.find(nextphimod);
195 if (entry3!=m_map.end()) {
196 for (const auto & hit_in : entry3->second.first) {
197 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
198 foundPair=true;
200 break;
201 }
202 }
203 }
204 }
205
206 // If all else fails, seek in -1 eta, -1 phi direction.
207 if (!foundPair) {
208 // search in +1 eta direction
209 std::vector<int> next2mod = entry.first;
210 next2mod[3]-=1; // increment eta module counter
211 next2mod[2]-=1; // increment phi module counter
212 auto entry4 = m_map.find(next2mod);
213 if (entry4!=m_map.end()) {
214 for (const auto & hit_in : entry4->second.first) {
215 if (std::abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
216 foundPair=true;
218 break;
219 }
220 }
221 }
222 }
223
224 if (!foundPair) {
226 else {
227 tower.addHit(hit_out);
228 // Also add unpaired hit as single-hit cluster for downstream propagation
229 FPGATrackSimCluster unpairedCluster;
230 unpairedCluster.setClusterEquiv(hit_out);
231 unpairedCluster.push_backHitList(hit_out);
232 spacepoints.push_back(std::move(unpairedCluster));
233 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());
234 }
235 }
236 }
237 }
238
239 // add back the pixles
240 for (const FPGATrackSimHit& hit: m_pixel) tower.addHit(hit);
241
242 m_inputhits -= m_pixel.size(); // so count is just input strips
243 m_spacepts += spacepoints.size();
244
245
246 return StatusCode::SUCCESS;
247}
void setClusterEquiv(const FPGATrackSimHit &input)
void push_backHitList(const FPGATrackSimHit &input)
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 385 of file FPGATrackSimSpacePointsTool.cxx.

385 {
386 float pos[3] = { hit.getR(), hit.getGPhi(), hit.getZ() };
387
388 pos[0] = std::trunc(pos[0] / m_coordRPrecision) * m_coordRPrecision;
389 pos[1] = std::trunc(pos[1] / m_coordPhiPrecision) * m_coordPhiPrecision;
390 pos[2] = std::trunc(pos[2] / m_coordZPrecision) * m_coordZPrecision;
391
392 hit.setX(pos[0] * std::cos(pos[1]));
393 hit.setY(pos[0] * std::sin(pos[1]));
394 hit.setZ(pos[2]);
395}
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 250 of file FPGATrackSimSpacePointsTool.cxx.

251{
252 bool foundPair = false;
253 for (const FPGATrackSimHit& hit_out : hits_outer)
254 {
255 // Too far apart to be from same track
256 if (abs(hit_in.getGPhi()-hit_out.getGPhi()) < m_phiwindow) {
257 addSpacePoints(hit_in,hit_out,tower,spacepoints);
258 foundPair=true;
259 }
260 }
261 return foundPair;
262}
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: