8 #ifndef PNDSTTSKEWSTRAWPZFINDER_H_ 9 #define PNDSTTSKEWSTRAWPZFINDER_H_ 44 void AddPndRiemannTracks(vector<PndRiemannTrack> AllRiemannTracks);
46 void AddPndTracks(vector<PndTrack> AllTracks);
48 void AddPndTrackCands(vector<PndTrackCand> AllTrackCands);
50 void AddPndSttHits(vector<vector<PndSttHit>> AllSkewedHits);
52 void AddMvdPixelHits(vector<vector<FairHit>> AllMvdPixelHits);
54 void AddMvdStripHits(vector<vector<FairHit>> AllMvdStripHits);
56 void AddGemHits(vector<vector<FairHit>> AllMvdStripHits);
68 vector<PndSttHit>
GetSttHits(
int i) {
return fResultSkewedSttHits[
i]; };
95 fVectorPndRiemannTrack.clear();
96 fVectorPndTrack.clear();
97 fVectorPndTrackCand.clear();
98 fVectorSkewedSttHits.clear();
99 fVectorMvdPixelHits.clear();
100 fVectorMvdStripHits.clear();
101 fVectorGemHits.clear();
103 fResultPndRiemannTrack.clear();
104 fResultPndTrack.clear();
105 fResultPndTrackCand.clear();
106 fResultPzData.clear();
107 fResultSkewedSttHits.clear();
108 fResultMvdPixelHits.clear();
109 fResultMvdStripHits.clear();
110 fVectorGemHits.clear();
113 cout <<
"PndSttSkewStrawPzFinder::Reset()" << endl;
123 Double_t LineCombiAngleThreshold;
124 TClonesArray *fTubeArray;
125 TClonesArray *fSTTHits;
131 vector<PndRiemannTrack> fVectorPndRiemannTrack;
132 vector<PndTrack> fVectorPndTrack;
133 vector<PndTrackCand> fVectorPndTrackCand;
135 vector<vector<PndSttHit>> fVectorSkewedSttHits;
136 vector<vector<FairHit>> fVectorMvdPixelHits;
137 vector<vector<FairHit>> fVectorMvdStripHits;
138 vector<vector<FairHit>> fVectorGemHits;
141 vector<PndRiemannTrack> fResultPndRiemannTrack;
142 vector<PndTrack> fResultPndTrack;
143 vector<PndTrackCand> fResultPndTrackCand;
145 vector<vector<PndSttHit>> fResultSkewedSttHits;
146 vector<vector<FairHit>> fResultMvdPixelHits;
147 vector<vector<FairHit>> fResultMvdStripHits;
148 vector<vector<FairHit>> fResultGemHits;
151 vector<PndSttSkewStrawPzFinderData> fResultPzData;
155 void GetCenterOfTrack(
PndTrack temp, TVector2 ¢er,
double &radius);
157 Int_t ComputeSegmentCircleIntersection(TVector2 ex1, TVector2 ex2,
double xc,
double yc,
double R, TVector2 &intersection1, TVector2 &intersection2);
159 TVector2 ComputeTangentInPoint(
double xc,
double yc, TVector2 point);
163 vector<pair<unsigned int, unsigned int>>
164 LineCombiIsoFinderIndex2(vector<vector<TVector2>> SZPairVector, vector<TVector2> SZPairVectorMvdPixel, vector<TVector2> SZPairVectorMvdStrip, vector<TVector2> SZPairVectorGem);
169 vector<pair<unsigned int, unsigned int>> HoughTrueIsoFinderIndex(vector<vector<TVector2>> SZPairVector, vector<TVector2> SZPairVectorMvdPixel,
170 vector<TVector2> SZPairVectorMvdStrip, vector<TVector2> SZPairVectorGem,
bool draw);
177 vector<vector<PndSttHit>> MoveSkewedHitsToCircle(TVector2 circle, Double_t circlerad, vector<PndSttHit> skewhits, vector<vector<PndSttHit>> &corrxy);
179 void NestedFor(vector<int> ×, vector<int> ¤t, pair<vector<int>,
double> &
best,
double sum, vector<vector<pair<vector<int>,
double>>> matrix,
unsigned int depth);
185 double PzLineFitExtract3(vector<vector<TVector2>> TrueSZPairVector, vector<TVector2> TrueSZPairVectorMvdPixel, vector<TVector2> TrueSZPairVectorMvdStrip,
186 vector<TVector2> TrueSZPairVectorGem, TVector2 &lineparams);
188 void LineFitRecursiveAnnealFinder(vector<vector<TVector2>> SZPairVector, vector<double> DriftRadVector, vector<TVector2> SZPairVectorMvdPixel,
189 vector<TVector2> SZPairVectorMvdStrip, vector<TVector2> SZPairVectorGem, vector<pair<unsigned int, unsigned int>> &TrueSZPairVectorindex,
190 vector<unsigned int> &TrueSZPairVectorMvdPixelindex, vector<unsigned int> &TrueSZPairVectorMvdStripindex,
191 vector<unsigned int> &TrueSZPairVectorGemindex);
193 FairTrackParP GetTrackParam(FairTrackParP oldParam, TVector2 center,
double radius, TVector2 lineparams,
double S0,
int charge);
195 Double_t CalculateResidual(Double_t lineSlope, Double_t lineIntercept, TVector2 SZPoint);
197 void LineFit(vector<vector<TVector2>> SZPairVector, vector<double> DriftRadVector, vector<TVector2> SZPairVectorMvdPixel, vector<TVector2> SZPairVectorMvdStrip,
198 vector<TVector2> SZPairVectorGem,
double &k,
double &
m);
199 void DrawOpt2D(TH2D *ShitSpace);
void setStepTheta(double input)
PndRiemannTrack GetRiemannTrack(int i)
vector< FairHit > GetMvdPixelHits(int i)
vector< FairHit > GetGemHits(int i)
int NumPndRiemannTracks()
PndTrackCand GetTrackCand(int i)
virtual ~PndSttSkewStrawPzFinder()
void setMethod(int input)
PndSttSkewStrawPzFinderData GetPzData(int i)
vector< FairHit > GetMvdStripHits(int i)
vector< PndSttHit > GetSttHits(int i)
void WithRiemann(bool set)