/* * PndSttCellTrackingTestTask.h * * Created on: Nov 18, 2014 * Author: micpa904 */ #ifndef PNDSTTCELLTRACKINGTESTTASK_H_ #define PNDSTTCELLTRACKINGTESTTASK_H_ #include #include "TH2D.h" class TClonesArray; class TCanvas; class PndGeoSttPar; class PndSttHit; using namespace std; class PndSttCellTrackingTestTask: public FairTask { public: ClassDef(PndSttCellTrackingTestTask,1); PndSttCellTrackingTestTask(); virtual ~PndSttCellTrackingTestTask(); virtual InitStatus Init(); virtual void Exec(Option_t* opt); virtual void FinishEvent(); private: Int_t fVerbose; bool fDraw; TClonesArray *fEventHeader; TCanvas *SttXYproj; vector fSkewedHits; TClonesArray *fSTTHits; PndGeoSttPar *fSttParameters; // for filling fTubeArray TClonesArray *fTubeArray; /** Input array of MVDHitsPixel **/ TClonesArray* fMvdPixelHitArray; /** Input array of MVDHitsStrip **/ TClonesArray* fMvdStripHitArray; map > fMapTubeIDToHits; map fMapHitIndexToTubeID; TClonesArray *fFirstTrackCand; TClonesArray *fFirstRiemannTrack; TClonesArray *fCombiTrackCand; TClonesArray *fCombiTrack; TClonesArray *fCombiRiemannTrack; vector fVectorPndTrackCand; vector fVectorPndTrack; TClonesArray* fFinalTrackCand; TClonesArray* fFinalTrack; TCanvas *fCanvas; Double_t fSteps; void ExtractSkewedHits(Int_t eventNumber); void DrawSkewTubeLines(PndSttHit* hit); void DrawStt(bool isskew); void DrawHitIsochrone(PndSttHit* hit, Color_t color); void DrawHitSkewedIsochrone(PndSttHit* hit, Color_t color, Double_t beta, Double_t a, Double_t b); void DrawTrackParams(PndTrack* track); void DrawCombiLines(vector > ZPhiPairVector); void DrawCombiLinesResult(vector< TVector2> ZPhiPairVector); vector > MoveSkewedHitsToCircle(TVector2 circle, Double_t circlerad, vector skewhits); vector > MoveSkewedHitsToCircle2(TVector2 circle, Double_t circlerad, vector skewhits); vector HoughTrueIsoFinder(vector > ZPhiPairVector, TH2D *HoughSpace, TVector2 &lineparams); vector HoughTrueIsoFinder2(vector > ZPhiPairVector, TH2D *HoughSpace, TVector2 &lineparams); vector LineCombiIsoFinder(vector > ZPhiPairVector); vector LineCombiIsoFinder2(vector > ZPhiPairVector); void NestedFor(vector ×, vector ¤t, pair,double> &best, double sum, vector,double> > > matrix, int depth); TVector2 PzLineFitExtract(vector< TVector2> ZPhi); void CreatePndTrack(Double_t tanalpha); Int_t ComputeSegmentCircleIntersection(TVector2 ex1, TVector2 ex2, double xc, double yc, double R, TVector2 &intersection1, TVector2 &intersection2); TVector2 ComputeTangentInPoint(double xc, double yc, TVector2 point); }; #endif /* PNDSTTCELLTRACKINGTESTTASK_H_ */