ATLAS Offline Software
Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
FPGATrackSimLLPDoubletHoughTransformTool Class Reference

#include <FPGATrackSimLLPDoubletHoughTransformTool.h>

Inheritance diagram for FPGATrackSimLLPDoubletHoughTransformTool:
Collaboration diagram for FPGATrackSimLLPDoubletHoughTransformTool:

Public Member Functions

 FPGATrackSimLLPDoubletHoughTransformTool (const std::string &, const std::string &, const IInterface *)
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual StatusCode getRoads (const std::vector< const FPGATrackSimHit * > &hits, std::vector< FPGATrackSimRoad * > &roads) override
 

Private Types

typedef vector2D< std::pair< int, std::unordered_set< const FPGATrackSimHit * > > > Image
 

Private Member Functions

StatusCode fillImage (const FPGATrackSimHit *hit1, const FPGATrackSimHit *hit2, Image &image) const
 
bool passThreshold (Image const &image, int x, int y) const
 
bool isLocalMaxima (Image const &image, int x, int y) const
 
FPGATrackSimRoad createRoad (std::unordered_set< const FPGATrackSimHit * > const &hits, unsigned x, unsigned y) const
 
void drawImage (Image const &image) const
 
float xtod0 (int x) const
 
float ytoqoverpt (int y) const
 

Private Attributes

Gaudi::Property< unsigned > m_imageSize_x { this, "nBins_x", 0, ""}
 
Gaudi::Property< unsigned > m_imageSize_y { this, "nBins_y", 0, ""}
 
Gaudi::Property< int > m_threshold { this, "m_threshold", 8, "Threshold to be allied to bins of abs(d0) > 50 (mm)"}
 
Gaudi::Property< int > m_threshold50 { this, "m_threshold50", 8, "Threshold to be allied to bins of abs(d0) < (mm)"}
 
Gaudi::Property< bool > m_traceHits { this, "traceHits", true, "Trace each hit that goes in a bin. Disabling this will save memory/time since each bin doesn't have to store all its hits but the roads created won't have hits from convolution, etc."}
 
Gaudi::Property< float > m_d0_range { this, "d0_range", 120, "The d0 span: (-range, range) in mm"}
 
Gaudi::Property< float > m_qOverPt_range { this, "qOverPt_range", 0.002, "The q/pT span: (-range, range) in e/MeV"}
 
Gaudi::Property< bool > m_continuous { this, "continuous", true, "assure that there is continuity of the line (i.e. middle bins in d0 are filled when one q/pT step would result in a hole)"}
 
std::vector< FPGATrackSimRoadm_roads
 
const double m_acceptedDistanceBetweenLayersMin = 200
 
const double m_acceptedDistanceBetweenLayersMax = 600
 
double m_step_x = 0
 
double m_step_y = 0
 
unsigned m_event = 0
 
int m_eventsProcessed = 0
 
int m_roadsGenerated = 0
 

Detailed Description

Definition at line 25 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

Member Typedef Documentation

◆ Image

typedef vector2D<std::pair<int, std::unordered_set<const FPGATrackSimHit*> > > FPGATrackSimLLPDoubletHoughTransformTool::Image
private

Definition at line 49 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

Constructor & Destructor Documentation

◆ FPGATrackSimLLPDoubletHoughTransformTool()

FPGATrackSimLLPDoubletHoughTransformTool::FPGATrackSimLLPDoubletHoughTransformTool ( const std::string &  algname,
const std::string &  name,
const IInterface *  ifc 
)

Definition at line 39 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

40  : base_class(algname, name, ifc)
41 {
42  declareInterface<IFPGATrackSimRoadFinderTool>(this);
43 }

Member Function Documentation

◆ createRoad()

FPGATrackSimRoad FPGATrackSimLLPDoubletHoughTransformTool::createRoad ( std::unordered_set< const FPGATrackSimHit * > const hits,
unsigned  x,
unsigned  y 
) const
private

Definition at line 142 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

142  {
143  // Get the road hits
144  std::vector<const FPGATrackSimHit*> road_hits;
145  layer_bitmask_t hitLayers = 0;
146  for (const FPGATrackSimHit * hit : hits)
147  {
148  road_hits.push_back(hit);
149  hitLayers |= 1 << hit->getLayer();
150  }
151 
152  auto sorted_hits = ::sortByLayer(road_hits);
153  sorted_hits.resize(8); // If no hits in last layer, return from sortByLayer will be too short
154 
156  r.setHitLayers(hitLayers);
157  r.setHits(sorted_hits);
158  return r;
159 }

◆ drawImage()

void FPGATrackSimLLPDoubletHoughTransformTool::drawImage ( Image const image) const
private

Definition at line 182 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

182  {
183 
184  TH2I h(("event"+std::to_string( m_event )).c_str(), "LLP Doublet Hough space;d_{0}[mm];q/pT [e/GeV]",
187 
188  for (unsigned x = 0; x < m_imageSize_x; x++)
189  for (unsigned y = 0; y < m_imageSize_y; y++)
190  h.SetBinContent(x+1, y+1, image(x, y).first); // +1 since root bins are 1-indexed
191 
192  h.SaveAs((name()+"_event_"+std::to_string( m_event )+".root").c_str(), "");
193 }

◆ fillImage()

StatusCode FPGATrackSimLLPDoubletHoughTransformTool::fillImage ( const FPGATrackSimHit hit1,
const FPGATrackSimHit hit2,
Image image 
) const
private

Definition at line 102 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

102  {
103  const pvec p1 {{hit1->getX(), hit1->getY()}};
104  const pvec p2 {{hit2->getX(), hit2->getY()}};
105  const pvec halfDiff = (p2 - p1)*0.5;
106  const fp_t halfLen = length(halfDiff);
107 
108  int xbefore = -1;
109 
110  for ( unsigned y = 0; y < m_imageSize_y; y++ ) {
111  const fp_t qoverpt = (y * m_step_y) + m_step_y*0.5 - m_qOverPt_range; // use middle f the bin
112  const fp_t radius = 1.0/(0.6*qoverpt); // magic transform constants
113  const fp_t scale = std::copysign( std::sqrt( std::pow(radius/halfLen, 2) - 1), radius );
114  const pvec rprime = rotate90(halfDiff) * scale;
115  const pvec center = p1 + halfDiff + rprime;
116  const fp_t d0 = (std::signbit(radius) ? -1.0 : 1.0)*(length(center) - abs(radius));
117 
118  // find the bin x position in the image
119  int x = (d0 + m_d0_range) / m_step_x;
120 
121  if ( 0 <= x && x < (int)m_imageSize_x) {
122  if (xbefore == -1) xbefore = x;
123  if ( m_continuous ) { // fill the bins along x starintg from the last one filled
124  const int xmin = (xbefore < x)? xbefore: x;
125  const int xmax = (xbefore < x)? x: xbefore;
126  for ( int xinterpolated = xmin; xinterpolated <= xmax; ++xinterpolated) {
127  image(xinterpolated, y).first++;
128  image(xinterpolated, y).second.insert( hit1 );
129  image(xinterpolated, y).second.insert( hit2 );
130  }
131  } else {
132  image(x, y).first++;
133  image(x, y).second.insert( hit1 );
134  image(x, y).second.insert( hit2 );
135  }
136  xbefore = x;
137  }
138  }
139  return StatusCode::SUCCESS;
140 }

◆ finalize()

StatusCode FPGATrackSimLLPDoubletHoughTransformTool::finalize ( )
overridevirtual

Definition at line 57 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

57  {
58  ATH_MSG_INFO("Number of events procesed by the FPGATrackSimLLPDoubletHoughTransformTool " << m_eventsProcessed << " roads " << m_roadsGenerated);
59  return StatusCode::SUCCESS;
60 }

◆ getRoads()

StatusCode FPGATrackSimLLPDoubletHoughTransformTool::getRoads ( const std::vector< const FPGATrackSimHit * > &  hits,
std::vector< FPGATrackSimRoad * > &  roads 
)
overridevirtual

Definition at line 62 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

62  {
63  roads.clear();
64  m_roads.clear();
66  Image image(m_imageSize_x, m_imageSize_y); // not quite optimal to allocate this memory in evey event, but following nominal HT
67  for (unsigned ihit1 = 0; ihit1 < hits.size(); ihit1++) {
68  const FPGATrackSimHit *hit1 = hits[ihit1];
69  for (unsigned ihit2 = ihit1+1; ihit2 < hits.size(); ihit2++) {
70  const FPGATrackSimHit *hit2 = hits[ihit2];
71  ATH_MSG_DEBUG("Hits pair R: " << hit1->getR() << " " << hit2->getR());
72  //TODO: replace with qualification by layer IDs
73  const double radiusDifference = hit2->getR() - hit1->getR();
74 
75  if ( not (m_acceptedDistanceBetweenLayersMin < radiusDifference && radiusDifference < m_acceptedDistanceBetweenLayersMax) )
76  continue;
77  if ( hit1->getLayer() == hit2->getLayer() )
78  continue;
79  ATH_CHECK(fillImage( hit1, hit2, image ));
80  }
81  }
82  if ( m_event < 20 )
84 
85  for (unsigned y = 0; y < m_imageSize_y; y++) {
86  for (unsigned x = 0; x < m_imageSize_x; x++) {
87  if (passThreshold(image, x, y) && isLocalMaxima( image, x, y ) ) {
88  ATH_MSG_DEBUG("Creating road with threshold " << image(x,y).first << " hits " << image(x,y).second.size()
89  << " at x: " << x << " d0 " << xtod0(x) << " y: "<< y << " q/pt " << ytoqoverpt(y));
91  m_roads.push_back(createRoad(image(x, y).second, x, y));
92  }
93  }
94  }
95  roads.reserve(m_roads.size());
96  for (FPGATrackSimRoad & r : m_roads) roads.push_back(&r);
97  m_event++;
98  return StatusCode::SUCCESS;
99 }

◆ initialize()

StatusCode FPGATrackSimLLPDoubletHoughTransformTool::initialize ( )
overridevirtual

Definition at line 46 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

46  {
47  if (m_imageSize_y %2 == 1) {
48  ATH_MSG_ERROR("Can not have odd number " << m_imageSize_y << " of bins in q/pT - will result in division by 0");
49  return StatusCode::FAILURE;
50  }
53 
54  return StatusCode::SUCCESS;
55  }

◆ isLocalMaxima()

bool FPGATrackSimLLPDoubletHoughTransformTool::isLocalMaxima ( Image const image,
int  x,
int  y 
) const
private

Definition at line 171 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

171  {
172  const auto centerValue = image(x,y).first;
173  for ( int xaround = std::min(x-1, 0); xaround <= std::max((int)m_imageSize_x-1, x+1); xaround++ ) {
174  for ( int yaround = std::min(y-1, 0); yaround <= std::max((int)m_imageSize_y-1, y+1); yaround++ ) {
175  if ( image(xaround,yaround).first > centerValue )
176  return false;
177  }
178  }
179  return true;
180 }

◆ passThreshold()

bool FPGATrackSimLLPDoubletHoughTransformTool::passThreshold ( Image const image,
int  x,
int  y 
) const
private

Definition at line 162 of file FPGATrackSimLLPDoubletHoughTransformTool.cxx.

162  {
163  const int count = image(x,y).first;
164  const float d0 = xtod0(x);
165  if ( std::abs(d0) < 50.0 && count >= m_threshold50 ) return true;
166  if ( std::abs(d0) >= 50.0 && count >= m_threshold ) return true;
167 
168  return false;
169 }

◆ xtod0()

float FPGATrackSimLLPDoubletHoughTransformTool::xtod0 ( int  x) const
inlineprivate

Definition at line 66 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

66 { return x*m_step_x - m_d0_range; }

◆ ytoqoverpt()

float FPGATrackSimLLPDoubletHoughTransformTool::ytoqoverpt ( int  y) const
inlineprivate

Definition at line 67 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

67 { return y*m_step_y - m_qOverPt_range; }

Member Data Documentation

◆ m_acceptedDistanceBetweenLayersMax

const double FPGATrackSimLLPDoubletHoughTransformTool::m_acceptedDistanceBetweenLayersMax = 600
private

Definition at line 53 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_acceptedDistanceBetweenLayersMin

const double FPGATrackSimLLPDoubletHoughTransformTool::m_acceptedDistanceBetweenLayersMin = 200
private

Definition at line 52 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_continuous

Gaudi::Property<bool> FPGATrackSimLLPDoubletHoughTransformTool::m_continuous { this, "continuous", true, "assure that there is continuity of the line (i.e. middle bins in d0 are filled when one q/pT step would result in a hole)"}
private

Definition at line 46 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_d0_range

Gaudi::Property<float> FPGATrackSimLLPDoubletHoughTransformTool::m_d0_range { this, "d0_range", 120, "The d0 span: (-range, range) in mm"}
private

Definition at line 44 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_event

unsigned FPGATrackSimLLPDoubletHoughTransformTool::m_event = 0
private

Definition at line 63 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_eventsProcessed

int FPGATrackSimLLPDoubletHoughTransformTool::m_eventsProcessed = 0
private

Definition at line 68 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_imageSize_x

Gaudi::Property<unsigned> FPGATrackSimLLPDoubletHoughTransformTool::m_imageSize_x { this, "nBins_x", 0, ""}
private

Definition at line 39 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_imageSize_y

Gaudi::Property<unsigned> FPGATrackSimLLPDoubletHoughTransformTool::m_imageSize_y { this, "nBins_y", 0, ""}
private

Definition at line 40 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_qOverPt_range

Gaudi::Property<float> FPGATrackSimLLPDoubletHoughTransformTool::m_qOverPt_range { this, "qOverPt_range", 0.002, "The q/pT span: (-range, range) in e/MeV"}
private

Definition at line 45 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_roads

std::vector<FPGATrackSimRoad> FPGATrackSimLLPDoubletHoughTransformTool::m_roads
private

Definition at line 50 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_roadsGenerated

int FPGATrackSimLLPDoubletHoughTransformTool::m_roadsGenerated = 0
private

Definition at line 69 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_step_x

double FPGATrackSimLLPDoubletHoughTransformTool::m_step_x = 0
private

Definition at line 55 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_step_y

double FPGATrackSimLLPDoubletHoughTransformTool::m_step_y = 0
private

Definition at line 56 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_threshold

Gaudi::Property<int> FPGATrackSimLLPDoubletHoughTransformTool::m_threshold { this, "m_threshold", 8, "Threshold to be allied to bins of abs(d0) > 50 (mm)"}
private

Definition at line 41 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_threshold50

Gaudi::Property<int> FPGATrackSimLLPDoubletHoughTransformTool::m_threshold50 { this, "m_threshold50", 8, "Threshold to be allied to bins of abs(d0) < (mm)"}
private

Definition at line 42 of file FPGATrackSimLLPDoubletHoughTransformTool.h.

◆ m_traceHits

Gaudi::Property<bool> FPGATrackSimLLPDoubletHoughTransformTool::m_traceHits { this, "traceHits", true, "Trace each hit that goes in a bin. Disabling this will save memory/time since each bin doesn't have to store all its hits but the roads created won't have hits from convolution, etc."}
private

Definition at line 43 of file FPGATrackSimLLPDoubletHoughTransformTool.h.


The documentation for this class was generated from the following files:
beamspotman.r
def r
Definition: beamspotman.py:676
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
getMenu.algname
algname
Definition: getMenu.py:53
FPGATrackSimLLPDoubletHoughTransformTool::xtod0
float xtod0(int x) const
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:66
max
#define max(a, b)
Definition: cfImp.cxx:41
FPGATrackSimLLPDoubletHoughTransformTool::passThreshold
bool passThreshold(Image const &image, int x, int y) const
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:162
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FPGATrackSimLLPDoubletHoughTransformTool::m_eventsProcessed
int m_eventsProcessed
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:68
FPGATrackSimHit::getX
float getX() const
Definition: FPGATrackSimHit.h:125
FPGATrackSimLLPDoubletHoughTransformTool::m_acceptedDistanceBetweenLayersMin
const double m_acceptedDistanceBetweenLayersMin
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:52
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
FPGATrackSimHit::getLayer
unsigned getLayer() const
Definition: FPGATrackSimHit.cxx:75
FPGATrackSimLLPDoubletHoughTransformTool::m_continuous
Gaudi::Property< bool > m_continuous
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:46
FPGATrackSimLLPDoubletHoughTransformTool::ytoqoverpt
float ytoqoverpt(int y) const
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:67
FPGATrackSimLLPDoubletHoughTransformTool::m_imageSize_y
Gaudi::Property< unsigned > m_imageSize_y
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:40
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
x
#define x
FPGATrackSimLLPDoubletHoughTransformTool::fillImage
StatusCode fillImage(const FPGATrackSimHit *hit1, const FPGATrackSimHit *hit2, Image &image) const
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:102
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
FPGATrackSimLLPDoubletHoughTransformTool::m_imageSize_x
Gaudi::Property< unsigned > m_imageSize_x
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:39
fp_t
double fp_t
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:7
FPGATrackSimHit
Definition: FPGATrackSimHit.h:38
FPGATrackSimLLPDoubletHoughTransformTool::m_threshold
Gaudi::Property< int > m_threshold
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:41
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xmin
double xmin
Definition: listroot.cxx:60
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
extractSporadic.h
list h
Definition: extractSporadic.py:97
TH2I
Definition: rootspy.cxx:410
LArG4ShowerLibProcessing.hits
hits
Definition: LArG4ShowerLibProcessing.py:136
FPGATrackSimLLPDoubletHoughTransformTool::m_acceptedDistanceBetweenLayersMax
const double m_acceptedDistanceBetweenLayersMax
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:53
FPGATrackSimLLPDoubletHoughTransformTool::m_roadsGenerated
int m_roadsGenerated
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:69
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
sortByLayer
std::vector< std::vector< const FPGATrackSimHit * > > sortByLayer(Container const &hits)
Definition: FPGATrackSimHit.h:215
FPGATrackSimHit::getY
float getY() const
Definition: FPGATrackSimHit.h:126
min
#define min(a, b)
Definition: cfImp.cxx:40
FPGATrackSimLLPDoubletHoughTransformTool::m_d0_range
Gaudi::Property< float > m_d0_range
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:44
FPGATrackSimLLPDoubletHoughTransformTool::drawImage
void drawImage(Image const &image) const
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:182
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
FPGATrackSimLLPDoubletHoughTransformTool::Image
vector2D< std::pair< int, std::unordered_set< const FPGATrackSimHit * > > > Image
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:49
MyPlots.image
string image
Definition: MyPlots.py:43
FPGATrackSimLLPDoubletHoughTransformTool::m_event
unsigned m_event
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:63
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
FPGATrackSimLLPDoubletHoughTransformTool::m_threshold50
Gaudi::Property< int > m_threshold50
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:42
FPGATrackSimLLPDoubletHoughTransformTool::m_step_x
double m_step_x
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:55
FPGATrackSimLLPDoubletHoughTransformTool::m_qOverPt_range
Gaudi::Property< float > m_qOverPt_range
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:45
FPGATrackSimHit::getR
float getR() const
Definition: FPGATrackSimHit.h:128
FPGATrackSimLLPDoubletHoughTransformTool::createRoad
FPGATrackSimRoad createRoad(std::unordered_set< const FPGATrackSimHit * > const &hits, unsigned x, unsigned y) const
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:142
y
#define y
h
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
DeMoScan.first
bool first
Definition: DeMoScan.py:534
xmax
double xmax
Definition: listroot.cxx:61
FPGATrackSimLLPDoubletHoughTransformTool::m_roads
std::vector< FPGATrackSimRoad > m_roads
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:50
rotate90
pvec rotate90(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:30
pvec
std::array< fp_t, 2 > pvec
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:9
FPGATrackSimLLPDoubletHoughTransformTool::isLocalMaxima
bool isLocalMaxima(Image const &image, int x, int y) const
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:171
length
double length(const pvec &v)
Definition: FPGATrackSimLLPDoubletHoughTransformTool.cxx:26
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:29
FPGATrackSimLLPDoubletHoughTransformTool::m_step_y
double m_step_y
Definition: FPGATrackSimLLPDoubletHoughTransformTool.h:56