ROOT logo
#ifndef ALIANALYSISTASKPIDQA_H
#define ALIANALYSISTASKPIDQA_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id: AliAnalysisTaskPIDqa.h 43642 2010-09-17 15:50:04Z wiechula $ */
// Author: Jens Wiechula, 24/02/2011

//==============================================================================
//
//
//
//
//==============================================================================

#include <TVectorDfwd.h>

#ifndef ALIANALYSISTASKSE_H
#include "AliAnalysisTaskSE.h"
#endif

class AliPIDResponse;
class TList;
class AliVEvent;
class AliESDv0KineCuts;

class AliAnalysisTaskPIDqa : public AliAnalysisTaskSE {
  
  
public:
  AliAnalysisTaskPIDqa();
  AliAnalysisTaskPIDqa(const char *name);
  virtual ~AliAnalysisTaskPIDqa();

  virtual void UserCreateOutputObjects();
  
  virtual void UserExec(Option_t */*option*/);

  
private: 
  AliPIDResponse *fPIDResponse;             //! PID response Handler
  AliESDv0KineCuts *fV0cuts;                //! ESD V0 cuts

  TObjArray *fV0electrons;                  //! array with pointer to identified particles from V0 decays (electrons)
  TObjArray *fV0pions;                      //! array with pointer to identified particles from V0 decays (pions)
  TObjArray *fV0kaons;                      //! array with pointer to identified particles from V0 decays (kaons)
  TObjArray *fV0protons;                    //! array with pointer to identified particles from V0 decays (ptotons)

  TList                 *fListQA;           //! list with all QA histograms
  TList                 *fListQAits;        //! List with ITS QA histograms
  TList                 *fListQAitsSA;      //! List with ITS SA QA histograms
  TList                 *fListQAitsPureSA;  //! List with ITS pure SA QA histograms
  TList                 *fListQAtpc;        //! List with TPC QA histograms
  TList                 *fListQAtpcBasic;   //! Sub-list with TPC QA histograms - basic
  TList                 *fListQAtpcMCtruth; //! Sub-list with TPC QA histograms - only MC truth identified particles
  TList                 *fListQAtpcHybrid;  //! Sub-list with TPC QA histograms - the "hybrid" scenario
  TList                 *fListQAtpcOROChigh;//! Sub-list with TPC QA histograms - the "OROChigh" scenario
  TList                 *fListQAtpcV0;      //! Sub-list with TPC QA histograms - V0s
  TList                 *fListQAtrd;        //! List with TRD QA histograms
  TList                 *fListQAtrdNsig;    //! List with TRD QA histograms for Nsigma approach
  TList                 *fListQAtrdNsigTPCTOF; //! List with TRD QA histograms for Nsigma approach after TPC and TOF selection
  TList                 *fListQAtof;        //! List with TOF QA histograms
  TList                 *fListQAt0;         //! List with T0 QA histograms
  TList                 *fListQAemcal;      //! List with EMCAL QA histograms
  TList                 *fListQAhmpid;      //! List with EMCAL QA histograms
  TList                 *fListQAtofhmpid;   //! List with EMCAL QA histograms
  TList                 *fListQAtpctof;     //! List with combined PID from TPC + TOF
  TList                 *fListQAV0;         //! List with V0 kine cuts QA histograms
  TList                 *fListQAinfo;       //! List with information about loaded splines etc.

  
  void ExecNewRun();

  //qa object initialisation
  void SetupITSqa();
  void SetupTPCqa(Bool_t fillMC, Bool_t fill11h, Bool_t fillV0);
  void SetupTRDqa();
  void SetupTOFqa();
  void SetupT0qa();
  void SetupEMCALqa();
  void SetupHMPIDqa();
  void SetupTOFHMPIDqa();
  void SetupTPCTOFqa();
  void SetupV0qa();
  void SetupQAinfo();

  //
  void FillV0PIDlist();
  void ClearV0PIDlist();
  //
  void FillITSqa();
  void FillTPCqa();
  void FillTRDqa();
  void FillTOFqa();
  void FillT0qa();
  void FillEMCALqa();
  void FillHMPIDqa();
  void FillTOFHMPIDqa();
  void FillTPCTOFqa();
  void FillQAinfo();

  // Adding TPC Histograms - called in SetupTPCqa
  void AddTPCHistogramsSignal(TList *sublist, const char *scenario);
  void AddTPCHistogramsNsigma(TList *sublist, const char *scenario, Int_t scnumber);

  // Fill TPC Histograms - called in FillTPCqa
  void FillTPCHistogramsSignal(TList *sublist, Int_t scenario, AliVTrack *track, Int_t nTracks);
  void FillTPCHistogramsNsigma(TList *sublist, Int_t scenario, AliVTrack *track, Int_t nTracks);

  //
  void SetRecoInfo();
  
  //helper functions
  TVectorD* MakeLogBinning(Int_t nbinsX, Double_t xmin, Double_t xmax);
  TVectorD* MakeLinBinning(Int_t nbinsX, Double_t xmin, Double_t xmax);
  TVectorD* MakeArbitraryBinning(const char* bins);
  
  
  AliAnalysisTaskPIDqa(const AliAnalysisTaskPIDqa &other);
  AliAnalysisTaskPIDqa& operator=(const AliAnalysisTaskPIDqa &other);
  
  ClassDef(AliAnalysisTaskPIDqa,2)  // Task to properly set the PID response functions of all detectors
};
#endif
 AliAnalysisTaskPIDqa.h:1
 AliAnalysisTaskPIDqa.h:2
 AliAnalysisTaskPIDqa.h:3
 AliAnalysisTaskPIDqa.h:4
 AliAnalysisTaskPIDqa.h:5
 AliAnalysisTaskPIDqa.h:6
 AliAnalysisTaskPIDqa.h:7
 AliAnalysisTaskPIDqa.h:8
 AliAnalysisTaskPIDqa.h:9
 AliAnalysisTaskPIDqa.h:10
 AliAnalysisTaskPIDqa.h:11
 AliAnalysisTaskPIDqa.h:12
 AliAnalysisTaskPIDqa.h:13
 AliAnalysisTaskPIDqa.h:14
 AliAnalysisTaskPIDqa.h:15
 AliAnalysisTaskPIDqa.h:16
 AliAnalysisTaskPIDqa.h:17
 AliAnalysisTaskPIDqa.h:18
 AliAnalysisTaskPIDqa.h:19
 AliAnalysisTaskPIDqa.h:20
 AliAnalysisTaskPIDqa.h:21
 AliAnalysisTaskPIDqa.h:22
 AliAnalysisTaskPIDqa.h:23
 AliAnalysisTaskPIDqa.h:24
 AliAnalysisTaskPIDqa.h:25
 AliAnalysisTaskPIDqa.h:26
 AliAnalysisTaskPIDqa.h:27
 AliAnalysisTaskPIDqa.h:28
 AliAnalysisTaskPIDqa.h:29
 AliAnalysisTaskPIDqa.h:30
 AliAnalysisTaskPIDqa.h:31
 AliAnalysisTaskPIDqa.h:32
 AliAnalysisTaskPIDqa.h:33
 AliAnalysisTaskPIDqa.h:34
 AliAnalysisTaskPIDqa.h:35
 AliAnalysisTaskPIDqa.h:36
 AliAnalysisTaskPIDqa.h:37
 AliAnalysisTaskPIDqa.h:38
 AliAnalysisTaskPIDqa.h:39
 AliAnalysisTaskPIDqa.h:40
 AliAnalysisTaskPIDqa.h:41
 AliAnalysisTaskPIDqa.h:42
 AliAnalysisTaskPIDqa.h:43
 AliAnalysisTaskPIDqa.h:44
 AliAnalysisTaskPIDqa.h:45
 AliAnalysisTaskPIDqa.h:46
 AliAnalysisTaskPIDqa.h:47
 AliAnalysisTaskPIDqa.h:48
 AliAnalysisTaskPIDqa.h:49
 AliAnalysisTaskPIDqa.h:50
 AliAnalysisTaskPIDqa.h:51
 AliAnalysisTaskPIDqa.h:52
 AliAnalysisTaskPIDqa.h:53
 AliAnalysisTaskPIDqa.h:54
 AliAnalysisTaskPIDqa.h:55
 AliAnalysisTaskPIDqa.h:56
 AliAnalysisTaskPIDqa.h:57
 AliAnalysisTaskPIDqa.h:58
 AliAnalysisTaskPIDqa.h:59
 AliAnalysisTaskPIDqa.h:60
 AliAnalysisTaskPIDqa.h:61
 AliAnalysisTaskPIDqa.h:62
 AliAnalysisTaskPIDqa.h:63
 AliAnalysisTaskPIDqa.h:64
 AliAnalysisTaskPIDqa.h:65
 AliAnalysisTaskPIDqa.h:66
 AliAnalysisTaskPIDqa.h:67
 AliAnalysisTaskPIDqa.h:68
 AliAnalysisTaskPIDqa.h:69
 AliAnalysisTaskPIDqa.h:70
 AliAnalysisTaskPIDqa.h:71
 AliAnalysisTaskPIDqa.h:72
 AliAnalysisTaskPIDqa.h:73
 AliAnalysisTaskPIDqa.h:74
 AliAnalysisTaskPIDqa.h:75
 AliAnalysisTaskPIDqa.h:76
 AliAnalysisTaskPIDqa.h:77
 AliAnalysisTaskPIDqa.h:78
 AliAnalysisTaskPIDqa.h:79
 AliAnalysisTaskPIDqa.h:80
 AliAnalysisTaskPIDqa.h:81
 AliAnalysisTaskPIDqa.h:82
 AliAnalysisTaskPIDqa.h:83
 AliAnalysisTaskPIDqa.h:84
 AliAnalysisTaskPIDqa.h:85
 AliAnalysisTaskPIDqa.h:86
 AliAnalysisTaskPIDqa.h:87
 AliAnalysisTaskPIDqa.h:88
 AliAnalysisTaskPIDqa.h:89
 AliAnalysisTaskPIDqa.h:90
 AliAnalysisTaskPIDqa.h:91
 AliAnalysisTaskPIDqa.h:92
 AliAnalysisTaskPIDqa.h:93
 AliAnalysisTaskPIDqa.h:94
 AliAnalysisTaskPIDqa.h:95
 AliAnalysisTaskPIDqa.h:96
 AliAnalysisTaskPIDqa.h:97
 AliAnalysisTaskPIDqa.h:98
 AliAnalysisTaskPIDqa.h:99
 AliAnalysisTaskPIDqa.h:100
 AliAnalysisTaskPIDqa.h:101
 AliAnalysisTaskPIDqa.h:102
 AliAnalysisTaskPIDqa.h:103
 AliAnalysisTaskPIDqa.h:104
 AliAnalysisTaskPIDqa.h:105
 AliAnalysisTaskPIDqa.h:106
 AliAnalysisTaskPIDqa.h:107
 AliAnalysisTaskPIDqa.h:108
 AliAnalysisTaskPIDqa.h:109
 AliAnalysisTaskPIDqa.h:110
 AliAnalysisTaskPIDqa.h:111
 AliAnalysisTaskPIDqa.h:112
 AliAnalysisTaskPIDqa.h:113
 AliAnalysisTaskPIDqa.h:114
 AliAnalysisTaskPIDqa.h:115
 AliAnalysisTaskPIDqa.h:116
 AliAnalysisTaskPIDqa.h:117
 AliAnalysisTaskPIDqa.h:118
 AliAnalysisTaskPIDqa.h:119
 AliAnalysisTaskPIDqa.h:120
 AliAnalysisTaskPIDqa.h:121
 AliAnalysisTaskPIDqa.h:122
 AliAnalysisTaskPIDqa.h:123
 AliAnalysisTaskPIDqa.h:124
 AliAnalysisTaskPIDqa.h:125