#ifndef ALITRDTRACKERDEBUG_H
#define ALITRDTRACKERDEBUG_H
#include "AliTRDtrackerV1.h"
class TTree;
class TCanvas;
class TTreeSRedirector;
class AliTRDtrackV1;
class AliTRDseedV1;
class AliTRDtrackerDebug : public AliTRDtrackerV1
{
public:
AliTRDtrackerDebug();
~AliTRDtrackerDebug();
Bool_t Init();
Bool_t Open(const char *method);
Int_t Process();
void ResidualsClustersTrack(const AliTRDseedV1 *tracklet);
void ResidualsClustersTracklet(const AliTRDseedV1 *tracklet) const;
void ResidualsClustersParametrisation(const AliTRDseedV1 *tracklet) const;
void ResidualsTrackletsTrack() const;
void AnalyseTiltedRiemanFit();
void AnalyseMinMax();
void AnalyseFindable(Char_t *treename);
TCanvas* PlotSeedingConfiguration(const Char_t *direction, Int_t event, Int_t Candidate);
TCanvas* PlotFullTrackFit(Int_t event, Int_t candidate, Int_t iteration = -1, const Char_t *direction = "y");
static Int_t GetEventNumber(){ return fgEventNumber; }
static Int_t GetTrackNumber(){ return fgTrackNumber; }
static Int_t GetCandidateNumber(){ return fgCandidateNumber; }
static void SetEventNumber(Int_t eventNumber){ fgEventNumber = eventNumber; }
static void SetTrackNumber(Int_t trackNumber){ fgTrackNumber = trackNumber; }
static void SetCandidateNumber(Int_t candidateNumber){ fgCandidateNumber = candidateNumber; }
private:
AliTRDtrackerDebug(const AliTRDtrackerDebug &);
AliTRDtrackerDebug& operator=(const AliTRDtrackerDebug &);
Float_t GetTrackRadius(Float_t a, Float_t b, Float_t c) const;
Float_t GetTrackCurvature(Float_t a, Float_t b, Float_t c) const;
Float_t GetDCA(Float_t a, Float_t b, Float_t c) const;
TTreeSRedirector *fOutputStreamer;
TTree *fTree;
AliTRDseedV1 *fTracklet;
AliTRDtrackV1 *fTrack;
Int_t fNClusters;
Float_t fAlpha;
static Int_t fgEventNumber;
static Int_t fgTrackNumber;
static Int_t fgCandidateNumber;
ClassDef(AliTRDtrackerDebug, 1)
};
#endif