ROOT logo
#ifndef AliAnalysisTaskdNdetaMC_H
#define AliAnalysisTaskdNdetaMC_H

//
// Task used to analize simulations at generation level (i.e. only
// needs galice.root and Kinematics.root).
// 

class TH1F;
class TH1I;
class TGraphErrors;

enum {kHistINEL,kHistNSD,kHistND,kHistSiD,kHistHL,kNHist};
enum {kEta05,kEta10,kEta14,kNEtaHist};// 
enum {kPionPos, kProtonPos, kKaonPos, kElectronPos, kMuonPos,
      kPionNeg, kProtonNeg, kKaonNeg, kElectronNeg, kMuonNeg,
      kLambda, kLambdaBar, kLambdaInclusive, kLambdaBarInclusive,
      kNPart}; //Particles used for identified particles pt spectra
#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskdNdetaMC : public AliAnalysisTaskSE {
 public:
  AliAnalysisTaskdNdetaMC();
  AliAnalysisTaskdNdetaMC(const char *name );
  AliAnalysisTaskdNdetaMC(const char *name, const char *file );
  virtual ~AliAnalysisTaskdNdetaMC();
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);
  TH1F* BookHetaHist(const char * name, const char * title);
  TH1F* BookHptHist(const char * name, const char * title);
  TH1F* BookMultHisto(const char * name, const char * title) ;
  void SetEtaMax(Float_t eta) {fEtaMax = eta;}

  void SkipNormalization(Bool_t flag = kTRUE) { fSkipNormalization = flag; }
  void Finalize();
  TList * GetList() const { return fMyOut;} 
 private:
  TH1F         *fHistEta[kNHist]; //Eta spectrum 
  TH1F         *fHistPt[kNHist+1]; // Pt spectrum  , |eta| < 0.8
  TH1F         *fHistPtID[kNHist][kNPart+1]; //Pt identified particles, |y| < 0.5 
  
  TGraphErrors *fNchDens; // <dN/deta>
  TList * fMyOut; // list of output histos
  TH1I * fHistIev; // number of events per class
  TH1I * fHistNParticlesAtMidRapidity;  // number of particles at midrapidity per class
  static Float_t fEtaMax; // max eta
  Bool_t fSkipNormalization; // Use this when you are running the job on the grid, so that you can normalize dNdeta after merging

  Float_t  fEtaBins[kNEtaHist];    // array of eta_max values
  TH1F * fHistMult[kNHist][kNEtaHist];   // array of multiplicity histos in the different eta ranges values, for the different event classes

  AliAnalysisTaskdNdetaMC(const AliAnalysisTaskdNdetaMC&); // not implemented
  AliAnalysisTaskdNdetaMC& operator=(const AliAnalysisTaskdNdetaMC&); // not implemented
  
  static Int_t fPDGCodes[kNPart+1]; // array of PDG codes of particles for ID Spectra plots
  static const char *  fPartNames[kNPart+1]; // array of particles names for ID Spectra plots

  TH1F * fHistSpecies; // Histogram of particle species contributing to primaries

  ClassDef(AliAnalysisTaskdNdetaMC, 2); 
};

#endif
 AliAnalysisTaskdNdetaMC.h:1
 AliAnalysisTaskdNdetaMC.h:2
 AliAnalysisTaskdNdetaMC.h:3
 AliAnalysisTaskdNdetaMC.h:4
 AliAnalysisTaskdNdetaMC.h:5
 AliAnalysisTaskdNdetaMC.h:6
 AliAnalysisTaskdNdetaMC.h:7
 AliAnalysisTaskdNdetaMC.h:8
 AliAnalysisTaskdNdetaMC.h:9
 AliAnalysisTaskdNdetaMC.h:10
 AliAnalysisTaskdNdetaMC.h:11
 AliAnalysisTaskdNdetaMC.h:12
 AliAnalysisTaskdNdetaMC.h:13
 AliAnalysisTaskdNdetaMC.h:14
 AliAnalysisTaskdNdetaMC.h:15
 AliAnalysisTaskdNdetaMC.h:16
 AliAnalysisTaskdNdetaMC.h:17
 AliAnalysisTaskdNdetaMC.h:18
 AliAnalysisTaskdNdetaMC.h:19
 AliAnalysisTaskdNdetaMC.h:20
 AliAnalysisTaskdNdetaMC.h:21
 AliAnalysisTaskdNdetaMC.h:22
 AliAnalysisTaskdNdetaMC.h:23
 AliAnalysisTaskdNdetaMC.h:24
 AliAnalysisTaskdNdetaMC.h:25
 AliAnalysisTaskdNdetaMC.h:26
 AliAnalysisTaskdNdetaMC.h:27
 AliAnalysisTaskdNdetaMC.h:28
 AliAnalysisTaskdNdetaMC.h:29
 AliAnalysisTaskdNdetaMC.h:30
 AliAnalysisTaskdNdetaMC.h:31
 AliAnalysisTaskdNdetaMC.h:32
 AliAnalysisTaskdNdetaMC.h:33
 AliAnalysisTaskdNdetaMC.h:34
 AliAnalysisTaskdNdetaMC.h:35
 AliAnalysisTaskdNdetaMC.h:36
 AliAnalysisTaskdNdetaMC.h:37
 AliAnalysisTaskdNdetaMC.h:38
 AliAnalysisTaskdNdetaMC.h:39
 AliAnalysisTaskdNdetaMC.h:40
 AliAnalysisTaskdNdetaMC.h:41
 AliAnalysisTaskdNdetaMC.h:42
 AliAnalysisTaskdNdetaMC.h:43
 AliAnalysisTaskdNdetaMC.h:44
 AliAnalysisTaskdNdetaMC.h:45
 AliAnalysisTaskdNdetaMC.h:46
 AliAnalysisTaskdNdetaMC.h:47
 AliAnalysisTaskdNdetaMC.h:48
 AliAnalysisTaskdNdetaMC.h:49
 AliAnalysisTaskdNdetaMC.h:50
 AliAnalysisTaskdNdetaMC.h:51
 AliAnalysisTaskdNdetaMC.h:52
 AliAnalysisTaskdNdetaMC.h:53
 AliAnalysisTaskdNdetaMC.h:54
 AliAnalysisTaskdNdetaMC.h:55
 AliAnalysisTaskdNdetaMC.h:56
 AliAnalysisTaskdNdetaMC.h:57
 AliAnalysisTaskdNdetaMC.h:58
 AliAnalysisTaskdNdetaMC.h:59
 AliAnalysisTaskdNdetaMC.h:60
 AliAnalysisTaskdNdetaMC.h:61
 AliAnalysisTaskdNdetaMC.h:62
 AliAnalysisTaskdNdetaMC.h:63
 AliAnalysisTaskdNdetaMC.h:64
 AliAnalysisTaskdNdetaMC.h:65