ROOT logo
#ifndef ALIEMCALTRACKINGQATASK_H
#define ALIEMCALTRACKINGQATASK_H

#include "AliAnalysisTaskEmcal.h"

class AliParticleContainer;
class THnSparse;
class TH3;

class AliEmcalTrackingQATask : public AliAnalysisTaskEmcal {

 public:
  AliEmcalTrackingQATask();
  AliEmcalTrackingQATask(const char *name); 
  virtual ~AliEmcalTrackingQATask();

  void                   UserCreateOutputObjects();
  void                   SetGeneratorLevelName(const char* name);
  void                   SetDetectorLevelName(const char* name);
  void                   SetSelectHIJING(Bool_t s)        {fSelectHIJING       = s; }
  void                   SetDoSigma1OverPt(Bool_t s)      {fDoSigma1OverPt     = s; }
  void                   SetDoSigmaPtOverPtGen(Bool_t s)  {fDoSigmaPtOverPtGen = s; }

 protected:
  Bool_t                 FillHistograms()                               ;
  void                   ExecOnce()                                     ;
  void                   GenerateHistoBins()                            ;
  void                   AllocateDetectorLevelTHnSparse()               ;
  void                   AllocateGeneratorLevelTHnSparse()              ;
  void                   AllocateMatchedParticlesTHnSparse()            ;
  void                   FillDetectorLevelTHnSparse(Double_t cent, Double_t trackEta, Double_t trackPhi, Double_t trackPt, 
                                                    Double_t sigma1OverPt, Int_t mcGen, Byte_t trackType);
  void                   FillGeneratorLevelTHnSparse(Double_t cent, Double_t partEta, Double_t partPhi, Double_t partPt, Int_t mcGen, Byte_t findable);
  void                   FillMatchedParticlesTHnSparse(Double_t cent, Double_t partEta, Double_t partPhi, Double_t partPt,
						       Double_t trackEta, Double_t trackPhi, Double_t trackPt, Byte_t trackType);

  // Task configuration
  Bool_t                fSelectHIJING          ; //  select HIJING particles
  Bool_t                fDoSigma1OverPt        ; //  add sigma(1/pt), if false add sigma(pt)/pt instead
  Bool_t                fDoSigmaPtOverPtGen    ; //  MC: if true do sigma((ptgen - ptdet) / ptgen), otherwise do sigma((ptgen - ptdet) / ptdet)

  // Service fields (non-streamed)
  AliParticleContainer* fGeneratorLevel        ; //! generator level container
  AliParticleContainer* fDetectorLevel         ; //! detector level container
  Int_t                 fNPtHistBins           ; //! number of pt bins
  Double_t*             fPtHistBins            ; //! pt bins
  Int_t                 fNEtaHistBins          ; //! number of eta bins
  Double_t*             fEtaHistBins           ; //! eta bins
  Int_t                 fNPhiHistBins          ; //! number of phi bins
  Double_t*             fPhiHistBins           ; //! phi bins
  Int_t                 fNCentHistBins         ; //! number of cent bins
  Double_t*             fCentHistBins          ; //! cent bins
  Int_t                 fNPtRelDiffHistBins    ; //! number of pt relative difference bins
  Double_t*             fPtRelDiffHistBins     ; //! pt relative difference bins
  Int_t                 fNPtResHistBins        ; //! number of pt res bins
  Double_t*             fPtResHistBins         ; //! pt res bins
  Double_t*             f1OverPtResHistBins    ; //! 1/pt res bins
  Int_t                 fN1OverPtResHistBins   ; //! number of 1/pt res bins
  Int_t                 fNIntegerHistBins      ; //! number of integer bins
  Double_t*             fIntegerHistBins       ; //! integer bins


  // Histograms
  THnSparse*            fTracks                ; //! all tracks
  THnSparse*            fParticlesPhysPrim     ; //! all physical primary particles
  THnSparse*            fParticlesMatched      ; //! primary particles matched to detector level tracks
  
 private:
  AliEmcalTrackingQATask(const AliEmcalTrackingQATask&);            // not implemented
  AliEmcalTrackingQATask &operator=(const AliEmcalTrackingQATask&); // not implemented

  ClassDef(AliEmcalTrackingQATask, 3) // Track QA task (efficiency and pt resolution)
};
#endif
 AliEmcalTrackingQATask.h:1
 AliEmcalTrackingQATask.h:2
 AliEmcalTrackingQATask.h:3
 AliEmcalTrackingQATask.h:4
 AliEmcalTrackingQATask.h:5
 AliEmcalTrackingQATask.h:6
 AliEmcalTrackingQATask.h:7
 AliEmcalTrackingQATask.h:8
 AliEmcalTrackingQATask.h:9
 AliEmcalTrackingQATask.h:10
 AliEmcalTrackingQATask.h:11
 AliEmcalTrackingQATask.h:12
 AliEmcalTrackingQATask.h:13
 AliEmcalTrackingQATask.h:14
 AliEmcalTrackingQATask.h:15
 AliEmcalTrackingQATask.h:16
 AliEmcalTrackingQATask.h:17
 AliEmcalTrackingQATask.h:18
 AliEmcalTrackingQATask.h:19
 AliEmcalTrackingQATask.h:20
 AliEmcalTrackingQATask.h:21
 AliEmcalTrackingQATask.h:22
 AliEmcalTrackingQATask.h:23
 AliEmcalTrackingQATask.h:24
 AliEmcalTrackingQATask.h:25
 AliEmcalTrackingQATask.h:26
 AliEmcalTrackingQATask.h:27
 AliEmcalTrackingQATask.h:28
 AliEmcalTrackingQATask.h:29
 AliEmcalTrackingQATask.h:30
 AliEmcalTrackingQATask.h:31
 AliEmcalTrackingQATask.h:32
 AliEmcalTrackingQATask.h:33
 AliEmcalTrackingQATask.h:34
 AliEmcalTrackingQATask.h:35
 AliEmcalTrackingQATask.h:36
 AliEmcalTrackingQATask.h:37
 AliEmcalTrackingQATask.h:38
 AliEmcalTrackingQATask.h:39
 AliEmcalTrackingQATask.h:40
 AliEmcalTrackingQATask.h:41
 AliEmcalTrackingQATask.h:42
 AliEmcalTrackingQATask.h:43
 AliEmcalTrackingQATask.h:44
 AliEmcalTrackingQATask.h:45
 AliEmcalTrackingQATask.h:46
 AliEmcalTrackingQATask.h:47
 AliEmcalTrackingQATask.h:48
 AliEmcalTrackingQATask.h:49
 AliEmcalTrackingQATask.h:50
 AliEmcalTrackingQATask.h:51
 AliEmcalTrackingQATask.h:52
 AliEmcalTrackingQATask.h:53
 AliEmcalTrackingQATask.h:54
 AliEmcalTrackingQATask.h:55
 AliEmcalTrackingQATask.h:56
 AliEmcalTrackingQATask.h:57
 AliEmcalTrackingQATask.h:58
 AliEmcalTrackingQATask.h:59
 AliEmcalTrackingQATask.h:60
 AliEmcalTrackingQATask.h:61
 AliEmcalTrackingQATask.h:62
 AliEmcalTrackingQATask.h:63
 AliEmcalTrackingQATask.h:64
 AliEmcalTrackingQATask.h:65
 AliEmcalTrackingQATask.h:66
 AliEmcalTrackingQATask.h:67
 AliEmcalTrackingQATask.h:68
 AliEmcalTrackingQATask.h:69
 AliEmcalTrackingQATask.h:70
 AliEmcalTrackingQATask.h:71
 AliEmcalTrackingQATask.h:72
 AliEmcalTrackingQATask.h:73
 AliEmcalTrackingQATask.h:74