ROOT logo
#ifndef ALIANALYSISTASKTOFQAID_h
#define ALIANALYSISTASKTOFQAID_h

class TString;
class TList;
class AliAnalysisFilter;
class AliCDBManager;
class AliTOFcalib;
class AliTOFT0maker;
class AliTOFT0v1;
class AliTOFHeader;

#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskTOFqaID : public AliAnalysisTaskSE {
 public:
  
  enum ETrackCutSetTOFqa_t { kRun1Cuts = 0,
			   kStd2010,
			   kStd2010crossedRows,
			   kStd2011,
			   kStd2011crossedRows,
			   kNCutSetTOFqa };

  AliAnalysisTaskTOFqaID();
  AliAnalysisTaskTOFqaID(const char *name);
  AliAnalysisTaskTOFqaID(const AliAnalysisTaskTOFqaID& copy);
  AliAnalysisTaskTOFqaID& operator= (const AliAnalysisTaskTOFqaID& copy);
  virtual ~AliAnalysisTaskTOFqaID();
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
    
  Int_t   GetStripIndex(const Int_t * in);
  void    SetTrackFilter(AliAnalysisFilter *filter) { fTrackFilter = filter; return; };
  void    SetMinPtCut(Float_t minpt) { fMatchingMomCut = minpt; return; }
  void    SetMaxEtaCut(Float_t maxeta) { fMatchingEtaCut = maxeta; return; }
  void    EnableAdvancedCheck(Bool_t enable) { fEnableAdvancedCheck = enable; return; };
  void    EnableChargeSplit(Bool_t enable) { fEnableChargeSplit = enable; return; };
  void    SetExpTimeHistoRange(Float_t min, Float_t max) { fExpTimeRangeMin = min; fExpTimeRangeMax = max; return;};
  void    SetExpTimeHistoSmallRange(Float_t min, Float_t max) { fExpTimeSmallRangeMin = min; fExpTimeSmallRangeMax = max; return;};
  void    SetExpTimeBinWidth(Float_t width) { fExpTimeBinWidth = width; return;};
  Bool_t  SetSelectMCspecies(Bool_t enableMC, Int_t absPdgCode) {fIsMC = enableMC; fSelectedPdg = absPdgCode; return kTRUE;};
  TString GetSpeciesName(Int_t absPdgCode);
  void    HistogramMakeUp(TH1* hist, Color_t color, Int_t markerStyle,  TString drawOpt, TString newName, TString newTitle, TString xTitle, TString yTitle);
  Double_t GetPhiAtTPCouterRadius(AliESDtrack * track);
  
 protected:
  void    AddTofBaseHisto(TList *list, Int_t charge, TString suffix);
  void    AddMatchingEffHisto(TList *list, Int_t charge, TString suffix);
  void    AddPidHisto(TList *list, Int_t charge, TString suffix);
  void    AddStartTimeHisto(TList *list, TString suffix);
  void    AddTrdHisto();
  void    AddTofTrgHisto(TString suffix);

  void    FillTofBaseHisto(AliESDtrack * track, Int_t charge, TString suffix);
  void    FillMatchedTrkHisto(Int_t charge, TString suffix);
  void    FillPrimaryTrkHisto(Int_t charge, TString suffix);
  void    FillPidHisto(AliESDtrack * track,Int_t charge, TString suffix);
  void    FillStartTimeHisto(TString suffix);
  void    FillTrdHisto(AliESDtrack * track, Int_t charge);
  void    FillStartTimeMaskHisto(TString suffix);
  void    FillTofTrgHisto(TString suffix);

  Bool_t  ComputeTimeZeroByTOF1GeV();
  Bool_t  SelectMCspecies(AliMCEvent * ev, AliESDtrack * track);
  Bool_t  ComputeMatchingEfficiency(TList* list, TString variable);
  Bool_t  IsTPCTOFMatched(AliESDtrack * track);
  Bool_t  IsInTRD(AliESDtrack * track);
  Bool_t  IsEventSelected(AliESDEvent * event);

 private: 
  Int_t               fRunNumber; //run number
  AliESDEvent *       fESD;    //ESD object
  AliMCEvent *        fMCevent;    //MC event
  AliAnalysisFilter * fTrackFilter; //track filter object
  AliESDVertex *      fVertex; //pointer to the vertex object
  AliESDpid *         fESDpid; //pointer to the PID object
  //AliTOFT0v1 *        fTOFT0v1; // TOF-T0 v1
  AliTOFHeader *      fTOFHeader; // TOF header needed for trigger info
  Int_t               fNTOFtracks[3]; //number of tracks matching with TOF
  //Int_t fNPrimaryTracks; //number of primary tracks
  Float_t             fT0[3]; //event time
  Float_t             fSigmaSpecie[5]; //number of TOF PID sigmas, ie.fSigmaPion, fSigmaKaon, fSigmaProton;
  Double_t            fTrkExpTimes[5]; //expected times from tracking for 5 mass hypothesis
  Double_t            fThExpTimes[5]; //theoretical expected times for 5 mass hypothesis
  Bool_t              fEnableAdvancedCheck; //flag to enable advanced checks
  Bool_t              fEnableChargeSplit; //flag to enable split for sign of charge

  Float_t             fExpTimeBinWidth;//bin width for t-texp histos
  Float_t             fExpTimeRangeMin, fExpTimeRangeMax; //range of t-texp histogram
  Float_t             fExpTimeSmallRangeMin, fExpTimeSmallRangeMax; //reduced range of t-texp histogram
  Int_t               fnExpTimeBins;
  Int_t               fnExpTimeSmallBins;
  
  Double_t            fMyTimeZeroTOF, fMyTimeZeroTOFsigma; //timeZero by TOF recomputed
  Int_t               fMyTimeZeroTOFtracks; // number of tracks used to recompute TOF_T0
  Bool_t              fIsMC; //flag for MC 
  Int_t               fSelectedPdg; //pdg code of the selected specie (for MC only)
  Double_t            fP; //momentum
  Double_t            fPt; //transverse momentum
  Double_t            fEta; //psedorapidity
  Double_t            fPhi; //phi at vertex
  Double_t            fTPCOuterPhi; //phi at outer tpc radius
  Double_t            fL; //integrated track lenght
  Double_t            fMatchingMomCut;//minimum pT cut for matching eff vs eta, phi 
  Double_t            fMatchingEtaCut;//simmetric eta cut for matching eff vs pt, eta, phi
  Double_t            fTof;
  //output objects
  TList *             fHlist;  //list of general histos
  TList *             fHlistTimeZero; //list of timeZero related histos
  TList *             fHlistPID; //list of PID-related histos
  TList *             fHlistTRD;  //list of general histos for positive tracks
  TList *             fHlistTrigger;  //list of general histos for TOF trg infos

  ClassDef(AliAnalysisTaskTOFqaID, 2); // example of analysis
};

#endif



 AliAnalysisTaskTOFqaID.h:1
 AliAnalysisTaskTOFqaID.h:2
 AliAnalysisTaskTOFqaID.h:3
 AliAnalysisTaskTOFqaID.h:4
 AliAnalysisTaskTOFqaID.h:5
 AliAnalysisTaskTOFqaID.h:6
 AliAnalysisTaskTOFqaID.h:7
 AliAnalysisTaskTOFqaID.h:8
 AliAnalysisTaskTOFqaID.h:9
 AliAnalysisTaskTOFqaID.h:10
 AliAnalysisTaskTOFqaID.h:11
 AliAnalysisTaskTOFqaID.h:12
 AliAnalysisTaskTOFqaID.h:13
 AliAnalysisTaskTOFqaID.h:14
 AliAnalysisTaskTOFqaID.h:15
 AliAnalysisTaskTOFqaID.h:16
 AliAnalysisTaskTOFqaID.h:17
 AliAnalysisTaskTOFqaID.h:18
 AliAnalysisTaskTOFqaID.h:19
 AliAnalysisTaskTOFqaID.h:20
 AliAnalysisTaskTOFqaID.h:21
 AliAnalysisTaskTOFqaID.h:22
 AliAnalysisTaskTOFqaID.h:23
 AliAnalysisTaskTOFqaID.h:24
 AliAnalysisTaskTOFqaID.h:25
 AliAnalysisTaskTOFqaID.h:26
 AliAnalysisTaskTOFqaID.h:27
 AliAnalysisTaskTOFqaID.h:28
 AliAnalysisTaskTOFqaID.h:29
 AliAnalysisTaskTOFqaID.h:30
 AliAnalysisTaskTOFqaID.h:31
 AliAnalysisTaskTOFqaID.h:32
 AliAnalysisTaskTOFqaID.h:33
 AliAnalysisTaskTOFqaID.h:34
 AliAnalysisTaskTOFqaID.h:35
 AliAnalysisTaskTOFqaID.h:36
 AliAnalysisTaskTOFqaID.h:37
 AliAnalysisTaskTOFqaID.h:38
 AliAnalysisTaskTOFqaID.h:39
 AliAnalysisTaskTOFqaID.h:40
 AliAnalysisTaskTOFqaID.h:41
 AliAnalysisTaskTOFqaID.h:42
 AliAnalysisTaskTOFqaID.h:43
 AliAnalysisTaskTOFqaID.h:44
 AliAnalysisTaskTOFqaID.h:45
 AliAnalysisTaskTOFqaID.h:46
 AliAnalysisTaskTOFqaID.h:47
 AliAnalysisTaskTOFqaID.h:48
 AliAnalysisTaskTOFqaID.h:49
 AliAnalysisTaskTOFqaID.h:50
 AliAnalysisTaskTOFqaID.h:51
 AliAnalysisTaskTOFqaID.h:52
 AliAnalysisTaskTOFqaID.h:53
 AliAnalysisTaskTOFqaID.h:54
 AliAnalysisTaskTOFqaID.h:55
 AliAnalysisTaskTOFqaID.h:56
 AliAnalysisTaskTOFqaID.h:57
 AliAnalysisTaskTOFqaID.h:58
 AliAnalysisTaskTOFqaID.h:59
 AliAnalysisTaskTOFqaID.h:60
 AliAnalysisTaskTOFqaID.h:61
 AliAnalysisTaskTOFqaID.h:62
 AliAnalysisTaskTOFqaID.h:63
 AliAnalysisTaskTOFqaID.h:64
 AliAnalysisTaskTOFqaID.h:65
 AliAnalysisTaskTOFqaID.h:66
 AliAnalysisTaskTOFqaID.h:67
 AliAnalysisTaskTOFqaID.h:68
 AliAnalysisTaskTOFqaID.h:69
 AliAnalysisTaskTOFqaID.h:70
 AliAnalysisTaskTOFqaID.h:71
 AliAnalysisTaskTOFqaID.h:72
 AliAnalysisTaskTOFqaID.h:73
 AliAnalysisTaskTOFqaID.h:74
 AliAnalysisTaskTOFqaID.h:75
 AliAnalysisTaskTOFqaID.h:76
 AliAnalysisTaskTOFqaID.h:77
 AliAnalysisTaskTOFqaID.h:78
 AliAnalysisTaskTOFqaID.h:79
 AliAnalysisTaskTOFqaID.h:80
 AliAnalysisTaskTOFqaID.h:81
 AliAnalysisTaskTOFqaID.h:82
 AliAnalysisTaskTOFqaID.h:83
 AliAnalysisTaskTOFqaID.h:84
 AliAnalysisTaskTOFqaID.h:85
 AliAnalysisTaskTOFqaID.h:86
 AliAnalysisTaskTOFqaID.h:87
 AliAnalysisTaskTOFqaID.h:88
 AliAnalysisTaskTOFqaID.h:89
 AliAnalysisTaskTOFqaID.h:90
 AliAnalysisTaskTOFqaID.h:91
 AliAnalysisTaskTOFqaID.h:92
 AliAnalysisTaskTOFqaID.h:93
 AliAnalysisTaskTOFqaID.h:94
 AliAnalysisTaskTOFqaID.h:95
 AliAnalysisTaskTOFqaID.h:96
 AliAnalysisTaskTOFqaID.h:97
 AliAnalysisTaskTOFqaID.h:98
 AliAnalysisTaskTOFqaID.h:99
 AliAnalysisTaskTOFqaID.h:100
 AliAnalysisTaskTOFqaID.h:101
 AliAnalysisTaskTOFqaID.h:102
 AliAnalysisTaskTOFqaID.h:103
 AliAnalysisTaskTOFqaID.h:104
 AliAnalysisTaskTOFqaID.h:105
 AliAnalysisTaskTOFqaID.h:106
 AliAnalysisTaskTOFqaID.h:107
 AliAnalysisTaskTOFqaID.h:108
 AliAnalysisTaskTOFqaID.h:109
 AliAnalysisTaskTOFqaID.h:110
 AliAnalysisTaskTOFqaID.h:111
 AliAnalysisTaskTOFqaID.h:112
 AliAnalysisTaskTOFqaID.h:113
 AliAnalysisTaskTOFqaID.h:114
 AliAnalysisTaskTOFqaID.h:115
 AliAnalysisTaskTOFqaID.h:116
 AliAnalysisTaskTOFqaID.h:117
 AliAnalysisTaskTOFqaID.h:118
 AliAnalysisTaskTOFqaID.h:119
 AliAnalysisTaskTOFqaID.h:120
 AliAnalysisTaskTOFqaID.h:121
 AliAnalysisTaskTOFqaID.h:122
 AliAnalysisTaskTOFqaID.h:123