CMS 3D CMS Logo

FastLineRecognition.h
Go to the documentation of this file.
1 /****************************************************************************
2 *
3 * This is a part of TOTEM offline software.
4 * Authors:
5 * Jan Kašpar (jan.kaspar@gmail.com)
6 *
7 ****************************************************************************/
8 
9 #ifndef RecoPPS_Local_FastLineRecognition
10 #define RecoPPS_Local_FastLineRecognition
11 
14 
19 
25 public:
26  FastLineRecognition(double cw_a = 0., double cw_b = 0.);
27 
29 
30  void resetGeometry(const CTPPSGeometry *_g) {
31  geometry = _g;
32  geometryMap.clear();
33  }
34 
36  double _z0,
37  double threshold,
39 
40 private:
42  static const double sigma0;
43 
45  double z0;
46 
48  double chw_a, chw_b;
49 
51  double threshold;
52 
55 
56  struct GeomData {
57  double z;
58  double s;
59  };
60 
62  std::map<unsigned int, GeomData> geometryMap;
63 
65  GeomData getGeomData(unsigned int id);
66 
67  struct Point {
68  unsigned int detId;
69  const TotemRPRecHit *hit;
70  double h;
71  double z;
72  double w;
73  bool usable;
74  Point(unsigned int _d = 0, const TotemRPRecHit *_hit = nullptr, double _h = 0., double _z = 0., double _w = 0.)
75  : detId(_d), hit(_hit), h(_h), z(_z), w(_w), usable(true) {}
76  };
77 
79  struct Cluster {
80  double Saw, Sbw, Sw, S1;
81  double weight;
82 
83  std::vector<const Point *> contents;
84 
85  Cluster() : Saw(0.), Sbw(0.), Sw(0.), S1(0.), weight(0.) {}
86 
87  void add(const Point *p1, const Point *p2, double a, double b, double w);
88 
89  bool operator<(const Cluster &c) const { return (this->Sw > c.Sw) ? true : false; }
90  };
91 
94  bool getOneLine(const std::vector<Point> &points, double threshold, Cluster &result);
95 };
96 
97 #endif
double chw_a
cluster half widths in a and b
T w() const
const TotemRPRecHit * hit
pointer to original reco hit
bool operator<(const Cluster &c) const
double s
sensor&#39;s centre projected to its read-out direction
Definition: weight.py:1
cluster of intersection points
void getPatterns(const edm::DetSetVector< TotemRPRecHit > &input, double _z0, double threshold, edm::DetSet< TotemRPUVPattern > &patterns)
static std::string const input
Definition: EdmProvDump.cc:47
bool getOneLine(const std::vector< Point > &points, double threshold, Cluster &result)
Point(unsigned int _d=0, const TotemRPRecHit *_hit=nullptr, double _h=0., double _z=0., double _w=0.)
void add(const Point *p1, const Point *p2, double a, double b, double w)
double threshold
weight threshold for accepting pattern candidates (clusters)
double z0
"typical" z
std::map< unsigned int, GeomData > geometryMap
map: raw detector id –> GeomData
void resetGeometry(const CTPPSGeometry *_g)
Reconstructed hit in TOTEM RP.
Definition: TotemRPRecHit.h:18
bool usable
whether the point can still be used
Class performing optimized hough transform to recognize lines.
unsigned int detId
raw detector id
std::vector< const Point * > contents
The manager class for TOTEM RP geometry.
Definition: CTPPSGeometry.h:30
static const double sigma0
the uncertainty of 1-hit cluster, in mm
GeomData getGeomData(unsigned int id)
expects raw detector id
double h
hit position in global coordinate system
FastLineRecognition(double cw_a=0., double cw_b=0.)
const CTPPSGeometry * geometry
pointer to the geometry
double b
Definition: hdecay.h:118
double z
z position with respect to z0
double z
z position of a sensor (wrt. IP)
double a
Definition: hdecay.h:119