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 <math.h>
17 
19 
20  public:
24 
25  // Main publics
26  int ConversionCandidate(math::XYZVector&, double&, double&);
27  void Reconstruct(); // Not directly called when in use
28  void Dump();
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) { if (fSolved==1) return true; else {num+=1; return false;}};
49  bool RegisterUnsolvable() { if (fSolved==1) return true; else return false; };
50  bool RegisterBadSign(int &num) { if (fSignSatisfied==1) return true; else {num+=1; return false;}};
51  bool RegisterBadSign() { if (fSignSatisfied==1) return true; else return false; };
52  bool RegisterBadConverge(int &num) { if (fCutSatisfied==1) return true; else {num+=1; return false;}};
53  bool RegisterBadConverge() { if (fCutSatisfied==1) return true; else return false;};
54 
55  private:
56  void LocalTransformation(const math::XYZVector& v11, const math::XYZVector& v12, const math::XYZVector& v21, const math::XYZVector& v22,
58  double Phi);
62 
63  double fRecPhi;
64  double fRecR;
65  double fRecR1;
66  double fRecR2; // original input coordinates in cm,
67 
68  int fCutSatisfied; // Target cut met within iters?
69  int fSignSatisfied; // All values positive?
70  int fSolved; // No break due to /0 or no real root?
71 
73  int fLoop; // The number of loops actually performed
74  int fFixedNumberOfIterations; // Default 0: use cuts. If > 0, employ fixed loop.
75  double fRadiusECut;
76  double fPhiECut;
77  double fRECut; // Note that these cuts are NOT independent.
78 
79  double fRadiusE;
80  double fPhiE;
81  double fRE;
82  double fBField; // tesla
83 };
84 
85 #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:30
math::XYZVector fHitv12
math::XYZVector fRecC1
bool RegisterBadSign()
void SetBField(double val)
int fMaxNumberOfIterations
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()