20 #ifndef PNDSTTSKEWSTRAWPZFINDER_H_ 21 #define PNDSTTSKEWSTRAWPZFINDER_H_ 56 void AddPndRiemannTracks(vector<PndRiemannTrack> AllRiemannTracks);
58 void AddPndTracks(vector<PndTrack> AllTracks);
60 void AddPndTrackCands(vector<PndTrackCand> AllTrackCands);
62 void AddPndSttHits(vector<vector<PndSttHit>> AllSkewedHits);
64 void AddMvdPixelHits(vector<vector<FairHit>> AllMvdPixelHits);
66 void AddMvdStripHits(vector<vector<FairHit>> AllMvdStripHits);
68 void AddGemHits(vector<vector<FairHit>> AllMvdStripHits);
80 vector<PndSttHit>
GetSttHits(
int i) {
return fResultSkewedSttHits[
i]; };
107 fVectorPndRiemannTrack.clear();
108 fVectorPndTrack.clear();
109 fVectorPndTrackCand.clear();
110 fVectorSkewedSttHits.clear();
111 fVectorMvdPixelHits.clear();
112 fVectorMvdStripHits.clear();
113 fVectorGemHits.clear();
115 fResultPndRiemannTrack.clear();
116 fResultPndTrack.clear();
117 fResultPndTrackCand.clear();
118 fResultPzData.clear();
119 fResultSkewedSttHits.clear();
120 fResultMvdPixelHits.clear();
121 fResultMvdStripHits.clear();
122 fVectorGemHits.clear();
125 cout <<
"PndSttSkewStrawPzFinder::Reset()" << endl;
135 Double_t LineCombiAngleThreshold;
136 TClonesArray *fTubeArray;
137 TClonesArray *fSTTHits;
143 vector<PndRiemannTrack> fVectorPndRiemannTrack;
144 vector<PndTrack> fVectorPndTrack;
145 vector<PndTrackCand> fVectorPndTrackCand;
147 vector<vector<PndSttHit>> fVectorSkewedSttHits;
148 vector<vector<FairHit>> fVectorMvdPixelHits;
149 vector<vector<FairHit>> fVectorMvdStripHits;
150 vector<vector<FairHit>> fVectorGemHits;
153 vector<PndRiemannTrack> fResultPndRiemannTrack;
154 vector<PndTrack> fResultPndTrack;
155 vector<PndTrackCand> fResultPndTrackCand;
157 vector<vector<PndSttHit>> fResultSkewedSttHits;
158 vector<vector<FairHit>> fResultMvdPixelHits;
159 vector<vector<FairHit>> fResultMvdStripHits;
160 vector<vector<FairHit>> fResultGemHits;
163 vector<PndSttSkewStrawPzFinderData> fResultPzData;
167 void GetCenterOfTrack(
PndTrack temp, TVector2 ¢er,
double &radius);
169 Int_t ComputeSegmentCircleIntersection(TVector2 ex1, TVector2 ex2,
double xc,
double yc,
double R, TVector2 &intersection1, TVector2 &intersection2);
171 TVector2 ComputeTangentInPoint(
double xc,
double yc, TVector2 point);
175 vector<pair<unsigned int, unsigned int>>
176 LineCombiIsoFinderIndex2(vector<vector<TVector2>> SZPairVector, vector<TVector2> SZPairVectorMvdPixel, vector<TVector2> SZPairVectorMvdStrip, vector<TVector2> SZPairVectorGem);
181 vector<pair<unsigned int, unsigned int>> HoughTrueIsoFinderIndex(vector<vector<TVector2>> SZPairVector, vector<TVector2> SZPairVectorMvdPixel,
182 vector<TVector2> SZPairVectorMvdStrip, vector<TVector2> SZPairVectorGem,
bool draw);
189 vector<vector<PndSttHit>> MoveSkewedHitsToCircle(TVector2 circle, Double_t circlerad, vector<PndSttHit> skewhits, vector<vector<PndSttHit>> &corrxy);
191 void NestedFor(vector<int> ×, vector<int> ¤t, pair<vector<int>,
double> &
best,
double sum, vector<vector<pair<vector<int>,
double>>> matrix,
unsigned int depth);
197 double PzLineFitExtract3(vector<vector<TVector2>> TrueSZPairVector, vector<TVector2> TrueSZPairVectorMvdPixel, vector<TVector2> TrueSZPairVectorMvdStrip,
198 vector<TVector2> TrueSZPairVectorGem, TVector2 &lineparams);
200 void LineFitRecursiveAnnealFinder(vector<vector<TVector2>> SZPairVector, vector<double> DriftRadVector, vector<TVector2> SZPairVectorMvdPixel,
201 vector<TVector2> SZPairVectorMvdStrip, vector<TVector2> SZPairVectorGem, vector<pair<unsigned int, unsigned int>> &TrueSZPairVectorindex,
202 vector<unsigned int> &TrueSZPairVectorMvdPixelindex, vector<unsigned int> &TrueSZPairVectorMvdStripindex,
203 vector<unsigned int> &TrueSZPairVectorGemindex);
205 FairTrackParP GetTrackParam(FairTrackParP oldParam, TVector2 center,
double radius, TVector2 lineparams,
double S0,
int charge);
207 Double_t CalculateResidual(Double_t lineSlope, Double_t lineIntercept, TVector2 SZPoint);
209 void LineFit(vector<vector<TVector2>> SZPairVector, vector<double> DriftRadVector, vector<TVector2> SZPairVectorMvdPixel, vector<TVector2> SZPairVectorMvdStrip,
210 vector<TVector2> SZPairVectorGem,
double &k,
double &
m);
211 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)