ROOT logo
#ifndef ALITRDCHECKDET_H
#define ALITRDCHECKDET_H

#ifndef ALITRDRECOTASK_H
#include "AliTRDrecoTask.h"
#endif
////////////////////////////////////////////////////////////////////////////
//  Basic checks for tracking and detector performance                    //
//                                                                        //
//  Authors:                                                              //
//    Anton Andronic <A.Andronic@gsi.de>                                  //
//    Alexandru Bercuci <A.Bercuci@gsi.de>                                //
//    Markus Fasel <M.Fasel@gsi.de>                                       //
////////////////////////////////////////////////////////////////////////////


class TObjArray;
class TH1;
class TH2;
class TMap;
class AliESDHeader;
class AliExternalTrackParam;
class AliTRDcluster;
class AliTRDseedV1;
class AliTRDgeometry;
class AliTRDcheckDET : public AliTRDrecoTask{
public:
  // The Histogram number
  enum  HistType_t {
    kNclustersTrack     = 0,
    kNclustersTracklet  = 1,
    kNtrackletsTrack    = 2,
    kNtrackletsSTA      = 3,
    kNtrackletsBAR      = 4,
    kNtrackletsCross    = 5,
    kNtrackletsFindable = 6,
    kNtracksEvent       = 7,
    kNtracksSector      = 8,
    kPH                 = 9,
    kChi2               = 10,
    kChargeCluster      = 11,
    kChargeTracklet     = 12,
    kNeventsTrigger     = 13,
    kNeventsTriggerTracks=14,
    kTriggerPurity      = 15,
    kTrackStatus        = 16,
    kTrackletStatus     = 17,
    kNTrackletsP        = 18,
    kNclustersLayer     = 19
  };
  enum FigureType_t{
    kFigNclustersTrack,
    kFigNclustersTracklet,
    kFigNtrackletsTrack,
    kFigNTrackletsP,
    kFigNtrackletsCross,
    kFigNtrackletsFindable,
    kFigNtracksEvent,
    kFigNtracksSector,
    kFigTrackStatus,
    kFigTrackletStatus,
    kFigChi2,
    kFigPH,
    kFigChargeCluster,
    kFigChargeTracklet,
    kFigNeventsTrigger,
    kFigNeventsTriggerTracks,
    kFigTriggerPurity
  };
 
  AliTRDcheckDET();
  AliTRDcheckDET(char* name);
  virtual ~AliTRDcheckDET();

  virtual void UserCreateOutputObjects();
  virtual void UserExec(Option_t *opt);
  virtual TObjArray *Histos();

  // Plotting Functions:
  TH1 *PlotTrackStatus(const AliTRDtrackV1 *track = 0x0);
  TH1 *PlotTrackletStatus(const AliTRDtrackV1 *track = 0x0);
  TH1 *PlotNClustersTracklet(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotNClustersTrack(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotNTrackletsTrack(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotNTrackletsRowCross(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotFindableTracklets(const AliTRDtrackV1 *track = 0x0);
  TH1 *PlotNTracksSector(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotPHt(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotPHx(const AliTRDtrackV1 *track = 0x0);
  TH1 *PlotChi2(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotChargeCluster(const AliTRDtrackV1 *t = 0x0);
  TH1 *PlotChargeTracklet(const AliTRDtrackV1 *t = 0x0);

  virtual Bool_t PostProcess();
  virtual Bool_t GetRefFigure(Int_t ifig);
  virtual void MakeSummary();
  
  Bool_t IsUsingClustersOutsideChamber() const {return TESTBIT(fFlags, kUseClustersOutsideChamber);}
  void UseClustersOutsideChamber(Bool_t b = kTRUE) {if(b) SETBIT(fFlags, kUseClustersOutsideChamber); else CLRBIT(fFlags, kUseClustersOutsideChamber);}

private:
  enum{
    kUseClustersOutsideChamber = 0 
  };
  AliTRDcheckDET(const AliTRDcheckDET &);
  AliTRDcheckDET& operator=(const AliTRDcheckDET &);
  void GetDistanceToTracklet(Double_t *dist, AliTRDseedV1 * const tracklet, AliTRDcluster * const c);
  //----------------------------------------------------
  // Functions creating the reference figures
  TH1* MakePlotChi2() const;
  TH1* MakePlotNTracklets();
  Bool_t MakePlotPulseHeight();
  void MakePlotnTrackletsVsP();
  void MakePlotMeanClustersLayer();
  void MakePlotNclustersTrack();
  void MakePlotNclustersTracklet();
  void MakePlotTrackletCharge();
  Bool_t MakeBarPlot(TH1 *histo, Int_t Color);
  //----------------------------------------------------
  void GetEtaPhiAt(const AliExternalTrackParam *track, Double_t x, Double_t &eta, Double_t &phi);
  TH1 *ProjectCentrality(TH2 *h2d, Int_t centralityBin = -1);

  Int_t fCentralityClass;              // Centrality Class
  TMap *fTriggerNames;                 //! Containing trigger class names
  UChar_t fFlags;                      // Flags for setting

  static const Color_t fkColorsCentrality[AliTRDeventInfo::kCentralityClasses];		// Colors for the different centrality classes in the Ref Figures
  ClassDef(AliTRDcheckDET, 2)
};
#endif
 AliTRDcheckDET.h:1
 AliTRDcheckDET.h:2
 AliTRDcheckDET.h:3
 AliTRDcheckDET.h:4
 AliTRDcheckDET.h:5
 AliTRDcheckDET.h:6
 AliTRDcheckDET.h:7
 AliTRDcheckDET.h:8
 AliTRDcheckDET.h:9
 AliTRDcheckDET.h:10
 AliTRDcheckDET.h:11
 AliTRDcheckDET.h:12
 AliTRDcheckDET.h:13
 AliTRDcheckDET.h:14
 AliTRDcheckDET.h:15
 AliTRDcheckDET.h:16
 AliTRDcheckDET.h:17
 AliTRDcheckDET.h:18
 AliTRDcheckDET.h:19
 AliTRDcheckDET.h:20
 AliTRDcheckDET.h:21
 AliTRDcheckDET.h:22
 AliTRDcheckDET.h:23
 AliTRDcheckDET.h:24
 AliTRDcheckDET.h:25
 AliTRDcheckDET.h:26
 AliTRDcheckDET.h:27
 AliTRDcheckDET.h:28
 AliTRDcheckDET.h:29
 AliTRDcheckDET.h:30
 AliTRDcheckDET.h:31
 AliTRDcheckDET.h:32
 AliTRDcheckDET.h:33
 AliTRDcheckDET.h:34
 AliTRDcheckDET.h:35
 AliTRDcheckDET.h:36
 AliTRDcheckDET.h:37
 AliTRDcheckDET.h:38
 AliTRDcheckDET.h:39
 AliTRDcheckDET.h:40
 AliTRDcheckDET.h:41
 AliTRDcheckDET.h:42
 AliTRDcheckDET.h:43
 AliTRDcheckDET.h:44
 AliTRDcheckDET.h:45
 AliTRDcheckDET.h:46
 AliTRDcheckDET.h:47
 AliTRDcheckDET.h:48
 AliTRDcheckDET.h:49
 AliTRDcheckDET.h:50
 AliTRDcheckDET.h:51
 AliTRDcheckDET.h:52
 AliTRDcheckDET.h:53
 AliTRDcheckDET.h:54
 AliTRDcheckDET.h:55
 AliTRDcheckDET.h:56
 AliTRDcheckDET.h:57
 AliTRDcheckDET.h:58
 AliTRDcheckDET.h:59
 AliTRDcheckDET.h:60
 AliTRDcheckDET.h:61
 AliTRDcheckDET.h:62
 AliTRDcheckDET.h:63
 AliTRDcheckDET.h:64
 AliTRDcheckDET.h:65
 AliTRDcheckDET.h:66
 AliTRDcheckDET.h:67
 AliTRDcheckDET.h:68
 AliTRDcheckDET.h:69
 AliTRDcheckDET.h:70
 AliTRDcheckDET.h:71
 AliTRDcheckDET.h:72
 AliTRDcheckDET.h:73
 AliTRDcheckDET.h:74
 AliTRDcheckDET.h:75
 AliTRDcheckDET.h:76
 AliTRDcheckDET.h:77
 AliTRDcheckDET.h:78
 AliTRDcheckDET.h:79
 AliTRDcheckDET.h:80
 AliTRDcheckDET.h:81
 AliTRDcheckDET.h:82
 AliTRDcheckDET.h:83
 AliTRDcheckDET.h:84
 AliTRDcheckDET.h:85
 AliTRDcheckDET.h:86
 AliTRDcheckDET.h:87
 AliTRDcheckDET.h:88
 AliTRDcheckDET.h:89
 AliTRDcheckDET.h:90
 AliTRDcheckDET.h:91
 AliTRDcheckDET.h:92
 AliTRDcheckDET.h:93
 AliTRDcheckDET.h:94
 AliTRDcheckDET.h:95
 AliTRDcheckDET.h:96
 AliTRDcheckDET.h:97
 AliTRDcheckDET.h:98
 AliTRDcheckDET.h:99
 AliTRDcheckDET.h:100
 AliTRDcheckDET.h:101
 AliTRDcheckDET.h:102
 AliTRDcheckDET.h:103
 AliTRDcheckDET.h:104
 AliTRDcheckDET.h:105
 AliTRDcheckDET.h:106
 AliTRDcheckDET.h:107
 AliTRDcheckDET.h:108
 AliTRDcheckDET.h:109
 AliTRDcheckDET.h:110
 AliTRDcheckDET.h:111
 AliTRDcheckDET.h:112
 AliTRDcheckDET.h:113
 AliTRDcheckDET.h:114
 AliTRDcheckDET.h:115
 AliTRDcheckDET.h:116
 AliTRDcheckDET.h:117
 AliTRDcheckDET.h:118
 AliTRDcheckDET.h:119
 AliTRDcheckDET.h:120
 AliTRDcheckDET.h:121
 AliTRDcheckDET.h:122
 AliTRDcheckDET.h:123
 AliTRDcheckDET.h:124
 AliTRDcheckDET.h:125
 AliTRDcheckDET.h:126
 AliTRDcheckDET.h:127
 AliTRDcheckDET.h:128
 AliTRDcheckDET.h:129
 AliTRDcheckDET.h:130