ROOT logo
#ifndef AliTwoPlusOneContainer_H
#define AliTwoPlusOneContainer_H

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

// data container for 2+1 particle analysis

#include "TNamed.h"
#include "AliUEHist.h"
// #include "THn.h" // in cxx file causes .../THn.h:257: error: conflicting declaration ‘typedef class THnT<float> THnF

class AliVParticle;

class TList;
class TSeqCollection;
class TObjArray;
class TH1F;
class TH2F;
class TH3F;

class AliTwoPlusOneContainer : public TNamed
{
 public:
  AliTwoPlusOneContainer(const char* name = "AliTwoPlusOneContainer", const char* binning = 0, Double_t alpha = 0.2);

  virtual ~AliTwoPlusOneContainer();
  
  enum PlotKind {kSameNS = 0, kSameAS, kMixedNS, kMixedAS, kMixedCombNS, kMixedCombAS, k1plus1, kBackgroundSameNS, kBackgroundSameAS, kMixed1plus1};

  void FillCorrelations(Double_t centrality, Float_t zVtx, AliTwoPlusOneContainer::PlotKind step, TObjArray* triggerNear, TObjArray* triggerAway, TObjArray* assocNear, TObjArray* assocAway, Double_t weight, Bool_t is1plus1, Bool_t isBackgroundSame);
  
  AliUEHist* GetData() {return fTwoPlusOne;}
  TH1F* GetAsymmetry() {return fAsymmetry;}
  TH1F* GetAsymmetryMixed() {return fAsymmetryMixed;}
  TH2F* GetTriggerPt() {return fTriggerPt;}
  Double_t getTriggerPt1Min() {return fTriggerPt1Min;}
  Double_t getTriggerPt1Max() {return fTriggerPt1Max;}
  Double_t getTriggerPt2Min() {return fTriggerPt2Min;}
  Double_t getTriggerPt2Max() {return fTriggerPt2Max;}
  Double_t getPtAssocMin() {return fPtAssocMin;}
  Double_t getPtAssocMax() {return fPtAssocMax;}
  
  void SetData(AliUEHist* obj) {fTwoPlusOne = obj; }
  void SetAlpha(Double_t value) {fAlpha = value;}
  void SetUseLeadingPt(Bool_t flag) { fUseLeadingPt = flag; }

  AliTwoPlusOneContainer(const AliTwoPlusOneContainer &c);
  AliTwoPlusOneContainer& operator=(const AliTwoPlusOneContainer& c);
  virtual void Copy(TObject& c) const;
  virtual Long64_t Merge(TCollection* list);
 
protected:
  void DeleteContainers();
  
  AliUEHist* fTwoPlusOne;	     //a 7 dim histogram which actually contains all the data

  TH1F* fAsymmetry;                  //asymmetry of the same event
  TH1F* fAsymmetryMixed;             //asymmetry of the mixed event

  TH2F* fTriggerPt;                  //2 dim histogramm with fine binning to describe the pT distribution of the trigger particles

  Double_t fTriggerPt1Min;           //minimum energy for the first trigger particle
  Double_t fTriggerPt1Max;           //maximum energy for the first trigger particle
  Double_t fTriggerPt2Min;           //minimum energy for the second trigger particle
  Double_t fTriggerPt2Max;           //maximum energy for the second trigger particle
  Double_t fPtAssocMin;              //minimum energy for the associated particles
  Double_t fPtAssocMax;              //maximum energy for the associated particle
  Double_t fAlpha;                   //minimum energy for the first trigger particle
  Bool_t fUseLeadingPt;        //decides if all particles of a cone are used as trigger particles or only the leading particles within alpha (apply this on near and away side)
  Int_t fMergeCount;	             // counts how many objects have been merged together
  
  ClassDef(AliTwoPlusOneContainer, 5)  // underlying event histogram container
};


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