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 RecoCTPPS_TotemRPLocal_FastLineRecognition
10 #define RecoCTPPS_TotemRPLocal_FastLineRecognition
11 
14 
19 
20 
26 {
27  public:
28  FastLineRecognition(double cw_a = 0., double cw_b = 0.);
29 
31 
32  void resetGeometry(const CTPPSGeometry *_g)
33  {
34  geometry = _g;
35  geometryMap.clear();
36  }
37 
38  void getPatterns(const edm::DetSetVector<TotemRPRecHit> &input, double _z0, double threshold,
40 
41  protected:
43  static const double sigma0;
44 
46  double z0;
47 
49  double chw_a, chw_b;
50 
52  double threshold;
53 
56 
57  struct GeomData
58  {
59  double z;
60  double s;
61  };
62 
64  std::map<unsigned int, GeomData> geometryMap;
65 
67  GeomData getGeomData(unsigned int id);
68 
69  struct Point
70  {
71  unsigned int detId;
72  const TotemRPRecHit* hit;
73  double h;
74  double z;
75  double w;
76  bool usable;
77  Point(unsigned int _d=0, const TotemRPRecHit* _hit=nullptr, double _h=0., double _z=0., double _w=0.) :
78  detId(_d), hit(_hit), h(_h), z(_z), w(_w), usable(true) {}
79  };
80 
82  struct Cluster
83  {
84  double Saw, Sbw, Sw, S1;
85  double weight;
86  double min_a, max_a, min_b, max_b;
87 
88  std::vector<const Point *> contents;
89 
90  Cluster() : Saw(0.), Sbw(0.), Sw(0.), S1(0.), weight(0.) {}
91 
92  void add(const Point *p1, const Point *p2, double a, double b, double w);
93 
94  bool operator<(const Cluster &c) const
95  {
96  return (this->Sw > c.Sw) ? true : false;
97  }
98  };
99 
102  bool getOneLine(const std::vector<Point> &points, double threshold, Cluster &result);
103 };
104 
105 #endif
106 
double chw_a
cluster half widths in a and b
const double w
Definition: UKUtility.cc:23
const TotemRPRecHit * hit
pointer to original reco hit
double s
sensor&#39;s centre projected to its read-out direction
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:44
bool getOneLine(const std::vector< Point > &points, double threshold, Cluster &result)
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
double p2[4]
Definition: TauolaWrapper.h:90
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:33
Point(unsigned int _d=0, const TotemRPRecHit *_hit=0, double _h=0., double _z=0., double _w=0.)
void add(std::map< std::string, TH1 * > &h, TH1 *hist)
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:120
double z
z position with respect to z0
double z
z position of a sensor (wrt. IP)
double p1[4]
Definition: TauolaWrapper.h:89
double a
Definition: hdecay.h:121
bool operator<(const Cluster &c) const