ROOT logo
/* This file is property of and copyright                                 *
 * ALICE Experiment at CERN, All rights reserved.                         *
 * See cxx source for full Copyright notice                               */

/// @file   AliAnaConvCorrPhoton.h
/// @author Svein Lindal
/// @brief  Base class for analysis of correlations between conversion particles and charged tracks

#ifndef ALIANACONVCORRBASE_CXX
#define ALIANACONVCORRBASE_CXX

#include "Rtypes.h"
#include "TMath.h"
#include "TList.h"
#include "TH1.h"
#include <THnSparse.h>

class AliAODConversionParticle;
class TClonesArray;
class TString;

class AliAnaConvCorrBase : public TNamed {

public:

  

  //Constructor / desctructor
  AliAnaConvCorrBase(TString name, TString title); 
  virtual ~AliAnaConvCorrBase();
  
  //CreateHistograms
  void CreateBaseHistograms();
  //To be overrriden by children. Should always call CreateBaseHistograms()
  virtual void CreateHistograms();
  
  //Get list of histograms
  TList * GetHistograms() const { return fHistograms;}

  //Add histogram to list
  void AddHistogram(TH1 * histogram) { fHistograms->Add(dynamic_cast<TObject*>(histogram));}

  void AddAxis(TAxis * axis) { fAxesList.Add(axis); }

  ///Get the distance in phi between trigger particle and correlated particle
  Float_t GetDPhi(Float_t dPhi) { 
    if ( dPhi < 3*TMath::PiOver2() && dPhi > - TMath::PiOver2() ) return dPhi;
    else return ( (dPhi>0)? dPhi - TMath::TwoPi() : dPhi + TMath::TwoPi() ); 
  }

  void CorrelateWithTracks(AliAODConversionParticle * particle, TObjArray * tracks, const Int_t tIDs[4], Float_t cent, Float_t vtxz);
  void FillCounters(TObjArray * particles, TObjArray * tracks, Float_t cent, Float_t vtxz);

  TAxis& GetAxistPt()       { return fAxistPt;   }
  TAxis& GetAxiscPt()       { return fAxiscPt;   }
  TAxis& GetAxisdEta()      { return fAxisdEta;  }
  TAxis& GetAxisdPhi()      { return fAxisdPhi;  }
  TAxis& GetAxisIso()       { return fAxisIso;   }
  TAxis& GetAxisCent()      { return fAxisCent;  }
  TAxis& GetAxisZ()         { return fAxisZ;     }
  TAxis& GetAxisTrigEta()   { return fAxisTrigEta; }
  TAxis& GetAxisAssEta()    { return fAxisAssEta; }
  TAxis& GetAxisMEPhi()     { return fAxisMEPhi; }

  TList& GetAxisList()      { return fAxesList;  }
  TList& GetTrackAxisList() { return fTrackAxisList; }
  TList& GetTrigAxisList()  { return fTrigAxisList; }


protected:

  THnSparseF * CreateSparse(TString name, TString title, TList * axes);

private:

  void SetUpDefaultBins();
  
  //TString fName; //name of analysis
  TList * fHistograms; //List of histograms
  TList fAxesList;  //List over axes to be used in sparse
  TList fTrigAxisList; //list
  TList fTrackAxisList; //list

  TAxis fAxistPt; //Pt axis
  TAxis fAxiscPt; //correlated particle pt axis
  TAxis fAxisdEta; //delta eta axis
  TAxis fAxisdPhi; //delta phi axis
  TAxis fAxisIso; //Isolated particle axis
  TAxis fAxisCent; //Centrality
  TAxis fAxisZ; //vtx
  
  TAxis fAxisTrigEta ; //Eta axis for ME
  TAxis fAxisAssEta ; //Eta axis for ME
  TAxis fAxisMEPhi ; //Phi axis for ME

  THnSparseF * fCorrSparse; // Sparse for corr
  THnSparseF * fTrigSparse; // ME Sparse
  THnSparseF * fTrackSparse; //Track Sparse

  //Default constructor prohibited
  AliAnaConvCorrBase(); //not implemented
  AliAnaConvCorrBase(const AliAnaConvCorrBase&); // not implemented
  AliAnaConvCorrBase& operator=(const AliAnaConvCorrBase&); // not implemented

  ClassDef(AliAnaConvCorrBase, 7); // example of analysis

};

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