#ifndef PndTrkPrototype_H #define PndTrkPrototype_H #include #include "FairTask.h" #include "PndGeoSttPar.h" #include "TCanvas.h" #include "TH2F.h" #include "TMatrixT.h" #include "TVector3.h" class FairMCPoint; void fcnStraightLine(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag); void fcnLinePoints_new(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag); void fcnLinePoints_old(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag); class PndTrkPrototype : public FairTask { public: /* Default constructor */ PndTrkPrototype(); /* Destructor */ ~PndTrkPrototype(); /* virtual Init */ virtual InitStatus Init(); void SetParContainers(); /* virtual method exec */ virtual void Exec(Option_t* opt); void DrawGeometry(); void DrawMCPoint(TMatrixT, Int_t, Double_t, Double_t); void DrawCluster(Int_t, TMatrixT, Int_t); void DrawIsochrone(TMatrixT, Int_t, Int_t, Int_t); void DrawIntersections(TMatrixT, Int_t, Int_t, Int_t); void DrawFit(Int_t, Int_t, Double_t*, Int_t); void SetVerbose(int ver) { fVerbose = ver; } void SetDisplay(bool disp) { fDisplay = disp; } void WriteHistograms(); Int_t CreatingClusters(Int_t, TMatrixT, TArrayI, std::vector >*, Int_t*, std::vector >&); Bool_t LinFitPerp(TMatrixT, Int_t, Double_t*, Double_t &); Bool_t MinuitFit(Int_t, Int_t, TMatrixT, Double_t*, Double_t*, Double_t*, Double_t&); Int_t SetupFitVector(Int_t, TMatrixT, TMatrixT&); Bool_t IntersectionFinder(Int_t, TMatrixT, Double_t*, TMatrixT&); Double_t Point2Line(Double_t, Double_t, Double_t*); Bool_t CheckDistance(Int_t, TMatrixT, Double_t*, Int_t&, TMatrixT&, std::vector >&); Bool_t CheckResiduals(Int_t, Int_t, TMatrixT, Double_t*, Int_t&, TMatrixT&, std::vector >&); Int_t TrackIntersections(Int_t, Double_t*, TMatrixT, TMatrixT, TMatrixT&, Int_t&, Int_t&, Double_t&, Double_t&); Double_t GetTimeInfo(Double_t); void SetCalib(Int_t flag) { fFlag = flag; } private: static const Int_t fNMAXSIZE = 80; static const Int_t fNMAXCLUSTERS = 10; static const Int_t fNTubes = 128; static const Int_t fNLayers = 8; char fMCTrackBranch[200]; char fSttPointBranch[200]; char fSttHitBranch[200]; Int_t fVerbose; Bool_t fDisplay; Bool_t fIsHor; Bool_t fSmallButOk; Bool_t fAdjacent; Bool_t fPersistence; Bool_t fIsPrimary[fNMAXCLUSTERS+1]; Bool_t IsAdded[fNTubes+1][fNTubes+1]; Bool_t IsUsed[fNTubes+1]; Bool_t IsChecked[fNTubes+1][fNTubes+1]; Bool_t IsFake[fNTubes+1][fNTubes+1]; TCanvas *c; TH2F *h; TClonesArray /* MC Track Array */ *fMCTrackArray, /* Input array of PndSttTube */ *fSttTubeArray, /* Input array of PndSttPoints */ *fSttPointArray, /* Input array of PndSttHit */ *fSttHitArray, /* Input array of PndSttTrack*/ *fSttTrackarray, /* Input array of PndTrackCand of Stt */ *fSttTrackCandArray; PndGeoSttPar *fSttParameters; Int_t fEventCounter; Int_t fNfailed; Int_t nPrimaryMCtrks; Int_t nRecoTrks; Int_t nReco; Int_t nRecoLess; Int_t nRecoMore; Int_t nTotalMC; Int_t fNSttHits; Int_t fFlag; Bool_t fIsCluster; Bool_t fIsDiscarded; TH1F *hdist; TH1F *hresfit; TH1F *hresrefit; TH1F *hlastresid; TH1F *chi2r_prefit; TH1F *chi2r_fit; TH1F *chi2r_refit; TH1F *chi2r_oldfit; TH1F *cumul_fit; TH1F *cumul_refit; TH1F *cumul_oldfit; TH1F *hstats; TH1F *hmeanres; TH1F *htrklength; TH1F *hde; TH1F *hdedx; TH1F *htubemult; TH1F* hgoodd; ClassDef(PndTrkPrototype,1); }; #endif