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

#ifndef ALIANALYSISNETPARTICLEBASE_H
#define ALIANALYSISNETPARTICLEBASE_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/**
 * Class for NetParticle Distributions
 * -- Base Class
 * Authors: Jochen Thaeder <jochen@thaeder.de>
 *          Michael Weber <m.weber@cern.ch>
 */

#include "THnSparse.h"

#include "AliAnalysisNetParticleHelper.h"

class AliESDEvent;
class AliESDInputHandler;
class AliMCEvent;
class AliStack;
class AliAODInputHandler;

class AliAnalysisNetParticleBase : public TNamed {

 public:

  AliAnalysisNetParticleBase();
  AliAnalysisNetParticleBase(const Char_t* name, const Char_t* title);
  virtual ~AliAnalysisNetParticleBase();

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

  /** Initialize */
  void Initialize(AliAnalysisNetParticleHelper* helper, AliESDtrackCuts* cuts = NULL);

  /** Setup Event */
  Int_t SetupEvent();

  /** Reset Event */
  void ResetEvent();

  /** Process Event - To be implemented by every class */
  virtual void Process() = 0;

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

 private:

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

 protected:
  /*
   * ---------------------------------------------------------------------------------
   *                                Methods - private
   * ---------------------------------------------------------------------------------
   */

  /** Event-wise Initialization - Can be implemented by every class */
  virtual void Init() {};

  /** Create histograms - Can be implemented by every class */
  virtual void CreateHistograms() {};

  /** Event-wise Reset - Can be implemented by every class */
  virtual void Reset() {};

  /** Event-wise Setup - Can be implemented by every class */
  virtual Int_t Setup() { return 0;};

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

  AliAnalysisNetParticleHelper *fHelper;      //! Ptr to helper class
  // =======================================================================
  Int_t               fPdgCode;               // PDG code of particle to be found 
  // =======================================================================
  AliESDEvent        *fESD;                   //! ESD object
  AliESDtrackCuts    *fESDTrackCuts;          //! ESD cuts  
  // -----------------------------------------------------------------------
  AliAODEvent        *fAOD;                   //! AOD object
  TClonesArray       *fArrayMC;               //! array of MC particles
  Int_t               fAODtrackCutBit;        //  Track filter bit for AOD tracks
  // -----------------------------------------------------------------------
  Bool_t              fIsMC;                  //  Is MC event
  AliMCEvent         *fMCEvent;               //! Ptr to MC event
  AliStack           *fStack;                 //! Ptr to stack
  // =======================================================================
  Float_t             fCentralityBin;         //  Centrality of current event  
  Int_t               fNTracks;               //  N Tracks in the current event
  // =======================================================================

  ClassDef(AliAnalysisNetParticleBase, 1);
};

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