ROOT logo
#ifndef ALIDNDPTCUTANALYSIS_H
#define ALIDNDPTCUTANALYSIS_H

//------------------------------------------------------------------------------
// AlidNdPtCutAnalysis class to determine 
// cuts to be used for dNdPt analysis. 
//
// Author: J.Otwinowski 04/11/2008 
//------------------------------------------------------------------------------

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 AlidNdPtCutAnalysis : public AlidNdPt {
public :
  AlidNdPtCutAnalysis(); 
  AlidNdPtCutAnalysis(Char_t* name, Char_t* title);
  ~AlidNdPtCutAnalysis();

  // 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(AliESDtrack *const esdTrack, AliStack *const stack) 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;}
  
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; //-> nClust:chi2PerClust:nClust/nFindableClust:DCAy:DCAz:eta:phi:pt:kinkIdx:isPrim:polarity
  THnSparseF *fRecMCTrackHist; //-> nCrossRows:chi2PerClust:nCrossRows/nFindableClust:fracSharedClust:DCAy:DCAz:eta:phi:pt:hasStrangeMother:isFromMaterial:isPrim:charge

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

  ClassDef(AlidNdPtCutAnalysis,2);
};

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