ROOT logo
//-*- Mode: C++ -*-

#ifndef ALIANALYSISNETPARTICLEDISTRIBUTION_H
#define ALIANALYSISNETPARTICLEDISTRIBUTION_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */
 
/**
 * Class for NetParticle Distributions
 * -- Create input for distributions
 * Authors: Jochen Thaeder <jochen@thaeder.de>
 *          Michael Weber <m.weber@cern.ch>
 */

#include "THnSparse.h"
#include "TList.h"

#include "AliAnalysisNetParticleBase.h"

class AliAnalysisNetParticleDistribution : public AliAnalysisNetParticleBase {

 public:

  AliAnalysisNetParticleDistribution();
  virtual ~AliAnalysisNetParticleDistribution();

  /*
   * ---------------------------------------------------------------------------------
   *                                 Public Methods
   * ---------------------------------------------------------------------------------
   */

  /** Process Event - implements purely virtual method */
  virtual void Process();

  /*
   * ---------------------------------------------------------------------------------
   *                                 Setter/Getter
   * ---------------------------------------------------------------------------------
   */

  void SetOutList(TList* l) {fOutList = l;}

  ///////////////////////////////////////////////////////////////////////////////////

 private:

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

  /*
   * ---------------------------------------------------------------------------------
   *                                Methods - private
   * ---------------------------------------------------------------------------------
   */

  /** Event-wise Initialization - implements virtual method */
  virtual void Init();

  /** Event-wise Reset - implements virtual method */
  virtual void Reset();

  /** HistSet-wise Reset */
 void ResetHistSet();

  /** Create the efficiency / contamination THnSparseD  - implements virtual method */
  virtual void CreateHistograms();

  // -----------------------------------------------------------------------

   /** Process ESD/AOD tracks and fill histograms */
  Int_t ProcessTracks();

  /** Process primary particles from the stack and fill histograms */
  Int_t ProcessParticles();
  
  /*
   * ---------------------------------------------------------------------------------
   *                            Helper Methods - private
   * ---------------------------------------------------------------------------------
   */

  /** Add set of histograms */
  void AddHistSetCent(const Char_t *name, const Char_t *title);
  void AddHistSetCentPt(const Char_t *name, const Char_t *title);

  /** Fill set of histograms */
  void FillHistSetCent(const Char_t *name, Int_t idx, Bool_t isMC);
  void FillHistSetCentPt(const Char_t *name, Int_t idx, Bool_t isMC);

  /*
   * ---------------------------------------------------------------------------------
   *                             Members - private
   * ---------------------------------------------------------------------------------
   */

  // =======================================================================
  TList                *fOutList;               //! Output data container
  // =======================================================================
  Int_t                 fOrder;                 //  Max order of higher order distributions
  // -----------------------------------------------------------------------
  Int_t                 fNNp;                   //  N sets of arrays of particle/anti-particle counts
  Int_t               **fNp;                    //  Array of particle/anti-particle counts
  Int_t              ***fNpPt;                  //  Array of particle/anti-particle per ptBin counts

  Int_t                 fNMCNp;                 //  N sets of arrays of MC particle/anti-particle counts
  Int_t               **fMCNp;                  //  Array of MC particle/anti-particle counts
  Int_t              ***fMCNpPt;                //  Array of MC particle/anti-particle per ptBin counts
  // -----------------------------------------------------------------------
  Double_t            **fRedFactp;              //  Array of particle/anti-particle reduced factorial
  // =======================================================================
  THnSparseD           *fHnTrackUnCorr;         //  THnSparseD : uncorrected probe particles
  // -----------------------------------------------------------------------

  ClassDef(AliAnalysisNetParticleDistribution, 1);
};

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