CMS 3D CMS Logo

Conv4HitsReco2.h
Go to the documentation of this file.
1 //
2 // Simple photon conversion seeding class (inc)
3 //
4 // Author: E Song
5 //
6 // Version: 1; 6 Aug 2012
7 //
8 
9 #ifndef Conv4HitsReco2_h
10 #define Conv4HitsReco2_h
11 
12 #include <iostream>
13 #include <iomanip>
14 #include <cmath>
17 
19 public:
23 
24  // Main publics
25  int ConversionCandidate(math::XYZVector &, double &, double &);
26  void Reconstruct(); // Not directly called when in use
27  void Dump();
28  void Refresh(
30 
33 
34  // Optional publics
36  void SetRadiusECut(double val) { fRadiusECut = val; };
37  void SetPhiECut(double val) { fPhiECut = val; };
38  void SetRECut(double val) { fRECut = val; };
40  void SetBField(double val) { fBField = val; };
41 
42  double GetRecPhi() { return fRecPhi; };
43  double GetRecR() { return fRecR; };
44  double GetRecR1() { return fRecR1; };
45  double GetRecR2() { return fRecR2; };
46  int GetLoop() { return fLoop; };
47 
48  bool RegisterUnsolvable(int &num) {
49  if (fSolved == 1)
50  return true;
51  else {
52  num += 1;
53  return false;
54  }
55  };
57  if (fSolved == 1)
58  return true;
59  else
60  return false;
61  };
62  bool RegisterBadSign(int &num) {
63  if (fSignSatisfied == 1)
64  return true;
65  else {
66  num += 1;
67  return false;
68  }
69  };
70  bool RegisterBadSign() {
71  if (fSignSatisfied == 1)
72  return true;
73  else
74  return false;
75  };
76  bool RegisterBadConverge(int &num) {
77  if (fCutSatisfied == 1)
78  return true;
79  else {
80  num += 1;
81  return false;
82  }
83  };
85  if (fCutSatisfied == 1)
86  return true;
87  else
88  return false;
89  };
90 
91 private:
92  void LocalTransformation(const math::XYZVector &v11,
93  const math::XYZVector &v12,
94  const math::XYZVector &v21,
95  const math::XYZVector &v22,
96  math::XYZVector &V11,
97  math::XYZVector &V12,
98  math::XYZVector &V21,
99  math::XYZVector &V22,
100  double Phi);
104 
105  double fRecPhi;
106  double fRecR;
107  double fRecR1;
108  double fRecR2; // original input coordinates in cm,
109 
110  int fCutSatisfied; // Target cut met within iters?
111  int fSignSatisfied; // All values positive?
112  int fSolved; // No break due to /0 or no real root?
113 
115  int fLoop; // The number of loops actually performed
116  int fFixedNumberOfIterations; // Default 0: use cuts. If > 0, employ fixed loop.
117  double fRadiusECut;
118  double fPhiECut;
119  double fRECut; // Note that these cuts are NOT independent.
120 
121  double fRadiusE;
122  double fPhiE;
123  double fRE;
124  double fBField; // tesla
125 };
126 
127 #endif
void SetPhiECut(double val)
double GetRecR()
void SetRECut(double val)
int fFixedNumberOfIterations
bool RegisterUnsolvable()
void LocalTransformation(const math::XYZVector &v11, const math::XYZVector &v12, const math::XYZVector &v21, const math::XYZVector &v22, math::XYZVector &V11, math::XYZVector &V12, math::XYZVector &V21, math::XYZVector &V22, double Phi)
bool RegisterBadConverge(int &num)
bool RegisterUnsolvable(int &num)
math::XYZVector GetMinusCenter(double &)
int ConversionCandidate(math::XYZVector &, double &, double &)
double GetRecR2()
math::XYZVector fPV
void SetMaxNumberOfIterations(int val)
void SetFixedNumberOfIterations(double val)
math::XYZVector fHitv21
math::XYZVector fHitv22
double GetRecR1()
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
math::XYZVector fHitv12
math::XYZVector fRecC1
bool RegisterBadSign()
void SetBField(double val)
double GetRecPhi()
void Refresh(math::XYZVector &vPhotVertex, math::XYZVector &h1, math::XYZVector &h2, math::XYZVector &h3, math::XYZVector &h4)
bool RegisterBadSign(int &num)
math::XYZVector GetPlusCenter(double &)
void SetRadiusECut(double val)
math::XYZVector fHitv11
math::XYZVector fRecV
math::XYZVector fRecC2
bool RegisterBadConverge()