File indexing completed on 2024-04-06 12:28:00
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef Conv4HitsReco2_h
0010 #define Conv4HitsReco2_h
0011
0012 #include <iostream>
0013 #include <iomanip>
0014 #include <cmath>
0015 #include "DataFormats/Math/interface/Vector3D.h"
0016 #include "DataFormats/Math/interface/Point3D.h"
0017
0018 class Conv4HitsReco2 {
0019 public:
0020 Conv4HitsReco2(math::XYZVector &, math::XYZVector &, math::XYZVector &, math::XYZVector &, math::XYZVector &);
0021 Conv4HitsReco2();
0022 ~Conv4HitsReco2();
0023
0024
0025 int ConversionCandidate(math::XYZVector &, double &, double &);
0026 void Reconstruct();
0027 void Dump();
0028 void Refresh(
0029 math::XYZVector &vPhotVertex, math::XYZVector &h1, math::XYZVector &h2, math::XYZVector &h3, math::XYZVector &h4);
0030
0031 math::XYZVector GetPlusCenter(double &);
0032 math::XYZVector GetMinusCenter(double &);
0033
0034
0035 void SetMaxNumberOfIterations(int val) { fMaxNumberOfIterations = val; };
0036 void SetRadiusECut(double val) { fRadiusECut = val; };
0037 void SetPhiECut(double val) { fPhiECut = val; };
0038 void SetRECut(double val) { fRECut = val; };
0039 void SetFixedNumberOfIterations(double val) { fFixedNumberOfIterations = val; };
0040 void SetBField(double val) { fBField = val; };
0041
0042 double GetRecPhi() { return fRecPhi; };
0043 double GetRecR() { return fRecR; };
0044 double GetRecR1() { return fRecR1; };
0045 double GetRecR2() { return fRecR2; };
0046 int GetLoop() { return fLoop; };
0047
0048 bool RegisterUnsolvable(int &num) {
0049 if (fSolved == 1)
0050 return true;
0051 else {
0052 num += 1;
0053 return false;
0054 }
0055 };
0056 bool RegisterUnsolvable() {
0057 if (fSolved == 1)
0058 return true;
0059 else
0060 return false;
0061 };
0062 bool RegisterBadSign(int &num) {
0063 if (fSignSatisfied == 1)
0064 return true;
0065 else {
0066 num += 1;
0067 return false;
0068 }
0069 };
0070 bool RegisterBadSign() {
0071 if (fSignSatisfied == 1)
0072 return true;
0073 else
0074 return false;
0075 };
0076 bool RegisterBadConverge(int &num) {
0077 if (fCutSatisfied == 1)
0078 return true;
0079 else {
0080 num += 1;
0081 return false;
0082 }
0083 };
0084 bool RegisterBadConverge() {
0085 if (fCutSatisfied == 1)
0086 return true;
0087 else
0088 return false;
0089 };
0090
0091 private:
0092 void LocalTransformation(const math::XYZVector &v11,
0093 const math::XYZVector &v12,
0094 const math::XYZVector &v21,
0095 const math::XYZVector &v22,
0096 math::XYZVector &V11,
0097 math::XYZVector &V12,
0098 math::XYZVector &V21,
0099 math::XYZVector &V22,
0100 double Phi);
0101 math::XYZVector fHitv11, fHitv12, fHitv21, fHitv22;
0102 math::XYZVector fPV;
0103 math::XYZVector fRecV, fRecC1, fRecC2;
0104
0105 double fRecPhi;
0106 double fRecR;
0107 double fRecR1;
0108 double fRecR2;
0109
0110 int fCutSatisfied;
0111 int fSignSatisfied;
0112 int fSolved;
0113
0114 int fMaxNumberOfIterations;
0115 int fLoop;
0116 int fFixedNumberOfIterations;
0117 double fRadiusECut;
0118 double fPhiECut;
0119 double fRECut;
0120
0121 double fRadiusE;
0122 double fPhiE;
0123 double fRE;
0124 double fBField;
0125 };
0126
0127 #endif