ROOT logo
#ifndef ALIDNDPTCUTANALYSISPBPB_H
#define ALIDNDPTCUTANALYSISPBPB_H

//------------------------------------------------------------------------------
// AlidNdPtCutAnalysisPbPb class to determine 
// cuts to be used for dNdPt analysis. 
//
// Author: J.Otwinowski 12/11/2010 
//------------------------------------------------------------------------------

class iostream;
class TFile;
class TCint;
class TProfile;
class TFolder;
class TObjArray;
class TString;
class THnSparse;

class AliESDtrackCuts;
class AliVertexerTracks;
class AliESD;
class AliESDfriend;
class AliESDfriendTrack;

#include "AlidNdPt.h"

class AlidNdPtCutAnalysisPbPb : public AlidNdPt {
public :
  AlidNdPtCutAnalysisPbPb(); 
  AlidNdPtCutAnalysisPbPb(Char_t* name, Char_t* title);
  ~AlidNdPtCutAnalysisPbPb();

  // Init data members
  virtual void Init();

  // Process events
  virtual void Process(AliESDEvent *const esdEvent=0, AliMCEvent *const mcEvent=0);

  // Merge output objects (needed by PROOF) 
  virtual Long64_t Merge(TCollection* const list);

  // Analyse output histograms 
  virtual void Analyse();

  // Export objects to folder
  virtual TFolder *ExportToFolder(TObjArray * const array=0);

  // Get analysis folder
  TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}

  // Create folder for analysed histograms
  TFolder *CreateFolder(TString folder = "folderdNdPtAnalysis",TString title = "Analysed dNdPt histograms");

  // Fill histograms
  void FillHistograms(AliESDEvent *const esdEvent, AliESDtrack *const esdTrack, AliStack *const stack, Float_t centralityF) const;

  // Getters
  THnSparseF *GetEventCount()   const {return fEventCount;}
  THnSparseF *GetRecEventHist() const   {return fRecEventHist;}
  THnSparseF *GetMCEventHist()  const   {return fMCEventHist;}
  THnSparseF *GetRecMCEventHist() const {return fRecMCEventHist;}

  //
  THnSparseF *GetRecMCTrackHist() const {return fRecMCTrackHist;}
  

  TString GetCentralityEstimator() const {return fCentralityEstimator; }
  void SetCentralityEstimator(TString centEst="V0M") { fCentralityEstimator = centEst; }

private:

  // analysis folder 
  TFolder *fAnalysisFolder; // folder for analysed histograms

  //
  // THnSparse event histograms
  //
  THnSparseF *fEventCount; //-> trig, trig + vertex

  THnSparseF *fRecEventHist;   //-> Xv:Yv:Zv:ResZv:Mult
  THnSparseF *fMCEventHist;    //-> mcXv:mcYv:mcZv
  THnSparseF *fRecMCEventHist; //-> Xv-mcXv:Yv-mcYv:Zv-mcZv:Mult

  //
  // THnSparse track histograms
  //
  THnSparseF *fRecMCTrackHist; //-> nCrossRows:chi2PerClust:chi2PerClustITS:nCrossRows/nFindableClust:fracSharedClust:DCAy:DCAz:eta:phi:pt:hasStrangeMother:isFromConversion:isFromMaterial:isPrim:charge:centr:chi2ToTPCc
  TString fCentralityEstimator;     // use centrality can be "VOM" (default), "FMD", "TRK", "TKL", "CL0", "CL1", "V0MvsFMD", "TKLvsV0M", "ZEMvsZDC"

  TObjArray *fFolderObj; // pointer to AnalysisFolder

  AlidNdPtCutAnalysisPbPb(const AlidNdPtCutAnalysisPbPb&); // not implemented
  AlidNdPtCutAnalysisPbPb& operator=(const AlidNdPtCutAnalysisPbPb&); // not implemented

  ClassDef(AlidNdPtCutAnalysisPbPb,4);
};

#endif
 AlidNdPtCutAnalysisPbPb.h:1
 AlidNdPtCutAnalysisPbPb.h:2
 AlidNdPtCutAnalysisPbPb.h:3
 AlidNdPtCutAnalysisPbPb.h:4
 AlidNdPtCutAnalysisPbPb.h:5
 AlidNdPtCutAnalysisPbPb.h:6
 AlidNdPtCutAnalysisPbPb.h:7
 AlidNdPtCutAnalysisPbPb.h:8
 AlidNdPtCutAnalysisPbPb.h:9
 AlidNdPtCutAnalysisPbPb.h:10
 AlidNdPtCutAnalysisPbPb.h:11
 AlidNdPtCutAnalysisPbPb.h:12
 AlidNdPtCutAnalysisPbPb.h:13
 AlidNdPtCutAnalysisPbPb.h:14
 AlidNdPtCutAnalysisPbPb.h:15
 AlidNdPtCutAnalysisPbPb.h:16
 AlidNdPtCutAnalysisPbPb.h:17
 AlidNdPtCutAnalysisPbPb.h:18
 AlidNdPtCutAnalysisPbPb.h:19
 AlidNdPtCutAnalysisPbPb.h:20
 AlidNdPtCutAnalysisPbPb.h:21
 AlidNdPtCutAnalysisPbPb.h:22
 AlidNdPtCutAnalysisPbPb.h:23
 AlidNdPtCutAnalysisPbPb.h:24
 AlidNdPtCutAnalysisPbPb.h:25
 AlidNdPtCutAnalysisPbPb.h:26
 AlidNdPtCutAnalysisPbPb.h:27
 AlidNdPtCutAnalysisPbPb.h:28
 AlidNdPtCutAnalysisPbPb.h:29
 AlidNdPtCutAnalysisPbPb.h:30
 AlidNdPtCutAnalysisPbPb.h:31
 AlidNdPtCutAnalysisPbPb.h:32
 AlidNdPtCutAnalysisPbPb.h:33
 AlidNdPtCutAnalysisPbPb.h:34
 AlidNdPtCutAnalysisPbPb.h:35
 AlidNdPtCutAnalysisPbPb.h:36
 AlidNdPtCutAnalysisPbPb.h:37
 AlidNdPtCutAnalysisPbPb.h:38
 AlidNdPtCutAnalysisPbPb.h:39
 AlidNdPtCutAnalysisPbPb.h:40
 AlidNdPtCutAnalysisPbPb.h:41
 AlidNdPtCutAnalysisPbPb.h:42
 AlidNdPtCutAnalysisPbPb.h:43
 AlidNdPtCutAnalysisPbPb.h:44
 AlidNdPtCutAnalysisPbPb.h:45
 AlidNdPtCutAnalysisPbPb.h:46
 AlidNdPtCutAnalysisPbPb.h:47
 AlidNdPtCutAnalysisPbPb.h:48
 AlidNdPtCutAnalysisPbPb.h:49
 AlidNdPtCutAnalysisPbPb.h:50
 AlidNdPtCutAnalysisPbPb.h:51
 AlidNdPtCutAnalysisPbPb.h:52
 AlidNdPtCutAnalysisPbPb.h:53
 AlidNdPtCutAnalysisPbPb.h:54
 AlidNdPtCutAnalysisPbPb.h:55
 AlidNdPtCutAnalysisPbPb.h:56
 AlidNdPtCutAnalysisPbPb.h:57
 AlidNdPtCutAnalysisPbPb.h:58
 AlidNdPtCutAnalysisPbPb.h:59
 AlidNdPtCutAnalysisPbPb.h:60
 AlidNdPtCutAnalysisPbPb.h:61
 AlidNdPtCutAnalysisPbPb.h:62
 AlidNdPtCutAnalysisPbPb.h:63
 AlidNdPtCutAnalysisPbPb.h:64
 AlidNdPtCutAnalysisPbPb.h:65
 AlidNdPtCutAnalysisPbPb.h:66
 AlidNdPtCutAnalysisPbPb.h:67
 AlidNdPtCutAnalysisPbPb.h:68
 AlidNdPtCutAnalysisPbPb.h:69
 AlidNdPtCutAnalysisPbPb.h:70
 AlidNdPtCutAnalysisPbPb.h:71
 AlidNdPtCutAnalysisPbPb.h:72
 AlidNdPtCutAnalysisPbPb.h:73
 AlidNdPtCutAnalysisPbPb.h:74
 AlidNdPtCutAnalysisPbPb.h:75
 AlidNdPtCutAnalysisPbPb.h:76
 AlidNdPtCutAnalysisPbPb.h:77
 AlidNdPtCutAnalysisPbPb.h:78
 AlidNdPtCutAnalysisPbPb.h:79
 AlidNdPtCutAnalysisPbPb.h:80
 AlidNdPtCutAnalysisPbPb.h:81
 AlidNdPtCutAnalysisPbPb.h:82
 AlidNdPtCutAnalysisPbPb.h:83
 AlidNdPtCutAnalysisPbPb.h:84
 AlidNdPtCutAnalysisPbPb.h:85
 AlidNdPtCutAnalysisPbPb.h:86
 AlidNdPtCutAnalysisPbPb.h:87
 AlidNdPtCutAnalysisPbPb.h:88
 AlidNdPtCutAnalysisPbPb.h:89
 AlidNdPtCutAnalysisPbPb.h:90
 AlidNdPtCutAnalysisPbPb.h:91
 AlidNdPtCutAnalysisPbPb.h:92
 AlidNdPtCutAnalysisPbPb.h:93
 AlidNdPtCutAnalysisPbPb.h:94
 AlidNdPtCutAnalysisPbPb.h:95
 AlidNdPtCutAnalysisPbPb.h:96
 AlidNdPtCutAnalysisPbPb.h:97
 AlidNdPtCutAnalysisPbPb.h:98
 AlidNdPtCutAnalysisPbPb.h:99