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

#include "TMath.h"
#include "TAxis.h"

#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliESDtrackCuts.h"

#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAODMCParticle.h"
#include "AliAnalysisNetParticleBase.h"

using namespace std;

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

ClassImp(AliAnalysisNetParticleBase)

/*
 * ---------------------------------------------------------------------------------
 *                            Constructor / Destructor
 * ---------------------------------------------------------------------------------
 */

//________________________________________________________________________
AliAnalysisNetParticleBase::AliAnalysisNetParticleBase() :
  TNamed(),
  fHelper(NULL),
  fPdgCode(2212),

  fESD(NULL), 
  fESDTrackCuts(NULL),
  fAOD(NULL),
  fArrayMC(NULL),
  fAODtrackCutBit(1024),
  fIsMC(kFALSE),
  fMCEvent(NULL),
  fStack(NULL),
  
  fCentralityBin(-1.),
  fNTracks(0) {
  // Constructor   

  AliLog::SetClassDebugLevel("AliAnalysisNetParticleBase",10);
}

//________________________________________________________________________
AliAnalysisNetParticleBase::AliAnalysisNetParticleBase(const Char_t* name, const Char_t* title) :
  TNamed(name, title),
  fHelper(NULL),
  fPdgCode(2212),

  fESD(NULL), 
  fESDTrackCuts(NULL),
  fAOD(NULL),
  fArrayMC(NULL),
  fAODtrackCutBit(1024),
  fIsMC(kFALSE),
  fMCEvent(NULL),
  fStack(NULL),
  
  fCentralityBin(-1.),
  fNTracks(0) {
  // Constructor   

  AliLog::SetClassDebugLevel("AliAnalysisNetParticleBase",10);
}

//________________________________________________________________________
AliAnalysisNetParticleBase::~AliAnalysisNetParticleBase() {
  // Destructor
}

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

//________________________________________________________________________
void AliAnalysisNetParticleBase::Initialize(AliAnalysisNetParticleHelper* helper, AliESDtrackCuts* cuts) {
  // -- Initialize
  //    If esdCuts are provided, they are taken otherwise the efficiency ones are used

  //AliESDtrackCuts *cuts, Bool_t isMC, Int_t trackCutBit

  // -- Get Helper
  fHelper           = helper;

  // -- ESD track cuts
  fESDTrackCuts     = (cuts) ? cuts : helper->GetESDTrackCuts();

  // -- Is MC
  fIsMC             = helper->GetIsMC();

  // -- AOD track filter bit
  fAODtrackCutBit   = helper->GetAODtrackCutBit();

  // -- Get particle species / pdgCode
  if (fIsMC)
    fPdgCode        = AliPID::ParticleCode(fHelper->GetParticleSpecies());

  // -- Init within class
  Init();

  // -- Create histograms
  CreateHistograms();

  return;
}

/*
 * ---------------------------------------------------------------------------------
 *                            Setup/Reset Methods - private
 * ---------------------------------------------------------------------------------
 */

//________________________________________________________________________
Int_t AliAnalysisNetParticleBase::SetupEvent() {
  // -- Setup event

  ResetEvent();

  // -- Get ESD objects
  if (dynamic_cast<AliESDInputHandler*>(fHelper->GetInputEventHandler())) {
    fESD         = dynamic_cast<AliESDEvent*>(fHelper->GetInputEventHandler()->GetEvent());
    fNTracks     = fESD->GetNumberOfTracks();
  }

  // -- Get AOD objects
  else if (dynamic_cast<AliAODInputHandler*>(fHelper->GetInputEventHandler())) {
    fAOD         = dynamic_cast<AliAODEvent*>(fHelper->GetInputEventHandler()->GetEvent());
    fNTracks     = fAOD->GetNumberOfTracks();
    
    if (fIsMC) {
      fArrayMC = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
      if (!fArrayMC)
	AliFatal("No array of MC particles found !!!"); // MW  no AliFatal use return values
    }
  }

  // -- Get MC objects
  if (fIsMC) {
    fMCEvent     = fHelper->GetMCEvent();
    if (fMCEvent)
      fStack     = fMCEvent->Stack();
  }

  // -- Get CentralityBin
  fCentralityBin = fHelper->GetCentralityBin();

  // -- Setup in class
  // -------------------
  return Setup();
}

//________________________________________________________________________
void AliAnalysisNetParticleBase::ResetEvent() {
  // -- Reset event

  // -- Reset ESD Event
  fESD       = NULL;

  // -- Reset AOD Event
  fAOD       = NULL;

  // -- Reset MC Event
  if (fIsMC)
    fMCEvent = NULL;

  // -- Reset in class
  Reset();

  return;
}


 AliAnalysisNetParticleBase.cxx:1
 AliAnalysisNetParticleBase.cxx:2
 AliAnalysisNetParticleBase.cxx:3
 AliAnalysisNetParticleBase.cxx:4
 AliAnalysisNetParticleBase.cxx:5
 AliAnalysisNetParticleBase.cxx:6
 AliAnalysisNetParticleBase.cxx:7
 AliAnalysisNetParticleBase.cxx:8
 AliAnalysisNetParticleBase.cxx:9
 AliAnalysisNetParticleBase.cxx:10
 AliAnalysisNetParticleBase.cxx:11
 AliAnalysisNetParticleBase.cxx:12
 AliAnalysisNetParticleBase.cxx:13
 AliAnalysisNetParticleBase.cxx:14
 AliAnalysisNetParticleBase.cxx:15
 AliAnalysisNetParticleBase.cxx:16
 AliAnalysisNetParticleBase.cxx:17
 AliAnalysisNetParticleBase.cxx:18
 AliAnalysisNetParticleBase.cxx:19
 AliAnalysisNetParticleBase.cxx:20
 AliAnalysisNetParticleBase.cxx:21
 AliAnalysisNetParticleBase.cxx:22
 AliAnalysisNetParticleBase.cxx:23
 AliAnalysisNetParticleBase.cxx:24
 AliAnalysisNetParticleBase.cxx:25
 AliAnalysisNetParticleBase.cxx:26
 AliAnalysisNetParticleBase.cxx:27
 AliAnalysisNetParticleBase.cxx:28
 AliAnalysisNetParticleBase.cxx:29
 AliAnalysisNetParticleBase.cxx:30
 AliAnalysisNetParticleBase.cxx:31
 AliAnalysisNetParticleBase.cxx:32
 AliAnalysisNetParticleBase.cxx:33
 AliAnalysisNetParticleBase.cxx:34
 AliAnalysisNetParticleBase.cxx:35
 AliAnalysisNetParticleBase.cxx:36
 AliAnalysisNetParticleBase.cxx:37
 AliAnalysisNetParticleBase.cxx:38
 AliAnalysisNetParticleBase.cxx:39
 AliAnalysisNetParticleBase.cxx:40
 AliAnalysisNetParticleBase.cxx:41
 AliAnalysisNetParticleBase.cxx:42
 AliAnalysisNetParticleBase.cxx:43
 AliAnalysisNetParticleBase.cxx:44
 AliAnalysisNetParticleBase.cxx:45
 AliAnalysisNetParticleBase.cxx:46
 AliAnalysisNetParticleBase.cxx:47
 AliAnalysisNetParticleBase.cxx:48
 AliAnalysisNetParticleBase.cxx:49
 AliAnalysisNetParticleBase.cxx:50
 AliAnalysisNetParticleBase.cxx:51
 AliAnalysisNetParticleBase.cxx:52
 AliAnalysisNetParticleBase.cxx:53
 AliAnalysisNetParticleBase.cxx:54
 AliAnalysisNetParticleBase.cxx:55
 AliAnalysisNetParticleBase.cxx:56
 AliAnalysisNetParticleBase.cxx:57
 AliAnalysisNetParticleBase.cxx:58
 AliAnalysisNetParticleBase.cxx:59
 AliAnalysisNetParticleBase.cxx:60
 AliAnalysisNetParticleBase.cxx:61
 AliAnalysisNetParticleBase.cxx:62
 AliAnalysisNetParticleBase.cxx:63
 AliAnalysisNetParticleBase.cxx:64
 AliAnalysisNetParticleBase.cxx:65
 AliAnalysisNetParticleBase.cxx:66
 AliAnalysisNetParticleBase.cxx:67
 AliAnalysisNetParticleBase.cxx:68
 AliAnalysisNetParticleBase.cxx:69
 AliAnalysisNetParticleBase.cxx:70
 AliAnalysisNetParticleBase.cxx:71
 AliAnalysisNetParticleBase.cxx:72
 AliAnalysisNetParticleBase.cxx:73
 AliAnalysisNetParticleBase.cxx:74
 AliAnalysisNetParticleBase.cxx:75
 AliAnalysisNetParticleBase.cxx:76
 AliAnalysisNetParticleBase.cxx:77
 AliAnalysisNetParticleBase.cxx:78
 AliAnalysisNetParticleBase.cxx:79
 AliAnalysisNetParticleBase.cxx:80
 AliAnalysisNetParticleBase.cxx:81
 AliAnalysisNetParticleBase.cxx:82
 AliAnalysisNetParticleBase.cxx:83
 AliAnalysisNetParticleBase.cxx:84
 AliAnalysisNetParticleBase.cxx:85
 AliAnalysisNetParticleBase.cxx:86
 AliAnalysisNetParticleBase.cxx:87
 AliAnalysisNetParticleBase.cxx:88
 AliAnalysisNetParticleBase.cxx:89
 AliAnalysisNetParticleBase.cxx:90
 AliAnalysisNetParticleBase.cxx:91
 AliAnalysisNetParticleBase.cxx:92
 AliAnalysisNetParticleBase.cxx:93
 AliAnalysisNetParticleBase.cxx:94
 AliAnalysisNetParticleBase.cxx:95
 AliAnalysisNetParticleBase.cxx:96
 AliAnalysisNetParticleBase.cxx:97
 AliAnalysisNetParticleBase.cxx:98
 AliAnalysisNetParticleBase.cxx:99
 AliAnalysisNetParticleBase.cxx:100
 AliAnalysisNetParticleBase.cxx:101
 AliAnalysisNetParticleBase.cxx:102
 AliAnalysisNetParticleBase.cxx:103
 AliAnalysisNetParticleBase.cxx:104
 AliAnalysisNetParticleBase.cxx:105
 AliAnalysisNetParticleBase.cxx:106
 AliAnalysisNetParticleBase.cxx:107
 AliAnalysisNetParticleBase.cxx:108
 AliAnalysisNetParticleBase.cxx:109
 AliAnalysisNetParticleBase.cxx:110
 AliAnalysisNetParticleBase.cxx:111
 AliAnalysisNetParticleBase.cxx:112
 AliAnalysisNetParticleBase.cxx:113
 AliAnalysisNetParticleBase.cxx:114
 AliAnalysisNetParticleBase.cxx:115
 AliAnalysisNetParticleBase.cxx:116
 AliAnalysisNetParticleBase.cxx:117
 AliAnalysisNetParticleBase.cxx:118
 AliAnalysisNetParticleBase.cxx:119
 AliAnalysisNetParticleBase.cxx:120
 AliAnalysisNetParticleBase.cxx:121
 AliAnalysisNetParticleBase.cxx:122
 AliAnalysisNetParticleBase.cxx:123
 AliAnalysisNetParticleBase.cxx:124
 AliAnalysisNetParticleBase.cxx:125
 AliAnalysisNetParticleBase.cxx:126
 AliAnalysisNetParticleBase.cxx:127
 AliAnalysisNetParticleBase.cxx:128
 AliAnalysisNetParticleBase.cxx:129
 AliAnalysisNetParticleBase.cxx:130
 AliAnalysisNetParticleBase.cxx:131
 AliAnalysisNetParticleBase.cxx:132
 AliAnalysisNetParticleBase.cxx:133
 AliAnalysisNetParticleBase.cxx:134
 AliAnalysisNetParticleBase.cxx:135
 AliAnalysisNetParticleBase.cxx:136
 AliAnalysisNetParticleBase.cxx:137
 AliAnalysisNetParticleBase.cxx:138
 AliAnalysisNetParticleBase.cxx:139
 AliAnalysisNetParticleBase.cxx:140
 AliAnalysisNetParticleBase.cxx:141
 AliAnalysisNetParticleBase.cxx:142
 AliAnalysisNetParticleBase.cxx:143
 AliAnalysisNetParticleBase.cxx:144
 AliAnalysisNetParticleBase.cxx:145
 AliAnalysisNetParticleBase.cxx:146
 AliAnalysisNetParticleBase.cxx:147
 AliAnalysisNetParticleBase.cxx:148
 AliAnalysisNetParticleBase.cxx:149
 AliAnalysisNetParticleBase.cxx:150
 AliAnalysisNetParticleBase.cxx:151
 AliAnalysisNetParticleBase.cxx:152
 AliAnalysisNetParticleBase.cxx:153
 AliAnalysisNetParticleBase.cxx:154
 AliAnalysisNetParticleBase.cxx:155
 AliAnalysisNetParticleBase.cxx:156
 AliAnalysisNetParticleBase.cxx:157
 AliAnalysisNetParticleBase.cxx:158
 AliAnalysisNetParticleBase.cxx:159
 AliAnalysisNetParticleBase.cxx:160
 AliAnalysisNetParticleBase.cxx:161
 AliAnalysisNetParticleBase.cxx:162
 AliAnalysisNetParticleBase.cxx:163
 AliAnalysisNetParticleBase.cxx:164
 AliAnalysisNetParticleBase.cxx:165
 AliAnalysisNetParticleBase.cxx:166
 AliAnalysisNetParticleBase.cxx:167
 AliAnalysisNetParticleBase.cxx:168
 AliAnalysisNetParticleBase.cxx:169
 AliAnalysisNetParticleBase.cxx:170
 AliAnalysisNetParticleBase.cxx:171
 AliAnalysisNetParticleBase.cxx:172
 AliAnalysisNetParticleBase.cxx:173
 AliAnalysisNetParticleBase.cxx:174
 AliAnalysisNetParticleBase.cxx:175
 AliAnalysisNetParticleBase.cxx:176
 AliAnalysisNetParticleBase.cxx:177
 AliAnalysisNetParticleBase.cxx:178
 AliAnalysisNetParticleBase.cxx:179
 AliAnalysisNetParticleBase.cxx:180
 AliAnalysisNetParticleBase.cxx:181
 AliAnalysisNetParticleBase.cxx:182
 AliAnalysisNetParticleBase.cxx:183
 AliAnalysisNetParticleBase.cxx:184
 AliAnalysisNetParticleBase.cxx:185
 AliAnalysisNetParticleBase.cxx:186