ROOT logo
#ifndef ALISPECTRABOTHHISTOMANAGER_H
#define ALISPECTRABOTHHISTOMANAGER_H

/*  See cxx source for full Copyright notice */

//-------------------------------------------------------------------------
//                      AliSpectraBothHistoManager
//
//
//
//
// Authors: Michele Floris, CERN, Philip Versteeg, UU, Redmer Bertens, UU
//-------------------------------------------------------------------------

class AliAODEvent;
class TH1F;
class TH2F;
class TH1;
class TH2;

//class TList;
#include "TNamed.h"
#include "TList.h"
#include "HistogramsBoth.h" // Change this file if you want to add an histogram
#include "HistogramNamesBoth.h" // generate this automatically running createNames.py 

namespace AliSpectraNameSpaceBoth
{

   
   enum BothParticleSpecies_t
   {
     kSpPion,
     kSpKaon,
     kSpProton,
     kNSpecies,
     kSpUndefined,
   }; // Particle species used in plotting

   //extern const char * kParticleSpecies[];

   enum BothHistoType_t
   {
     kHistPtGenTruePrimary,
     kHistPtRecSigma,
     kHistPtRecTrue,
     kHistPtRecTruePrimary,
     kHistPtRecPrimary,	
     kHistPtRecSigmaPrimary,
     kHistPtRecSigmaSecondaryMaterial,
     kHistPtRecSigmaSecondaryWeakDecay,
     kHistNSigTPC,
     kHistNSigTOF,
     kHistNSigTPCTOF,
     kNHistoTypes
   }; // Types of histos

   enum BothCharge_t
   {
       kChPos = 0,
       kChNeg,
       kNCharge
   };

}

using namespace AliSpectraNameSpaceBoth;

class AliSpectraBothHistoManager : public TNamed
{
public:
   AliSpectraBothHistoManager() :  TNamed(), fOutputList(0), fNRebin(0) {}
  AliSpectraBothHistoManager(const char *name,Int_t nrebin,Bool_t pidqa=kTRUE);
   virtual  ~AliSpectraBothHistoManager() ;


   TH2F*   BookPtGenHistogram(const char * name);
   TH2F*   BookPtGenAllChHistogram(const char * name);
   TH2F*   BookPtRecHistogram(const char * name);
   TH2F*   BookPtRecAllChHistogram(const char * name);
   TH2F*   BookPIDHistogram(const char * name);
   TH2F*   BookNSigHistogram(const char * name);
   TH2F*   BookGenMulvsRawMulHistogram(const char * name);
   TH2F*   BookDoubleCountsHistogram(const char * name);
   TH1F*   BookEventStatHist(); // due to zip bug in merging it is good to store in one list everything 

   TH1F*   GetPtHistogram1D(const char * name,Double_t minDCA,Double_t maxDCA);
   TH1F*   GetDCAHistogram1D(const char * name,Double_t minPt,Double_t maxPt);
   TH2*     GetHistogram(UInt_t id)      {      return (TH2*) fOutputList->At(id);   }
   //   TH1*     GetHistogram(BothHistoType_t histoType, BothParticleSpecies_t particleType, UInt_t charge);
   TH1*     GetHistogram1D(UInt_t histoType, UInt_t particleType, UInt_t charge);
   TH2*     GetHistogram2D(UInt_t histoType, UInt_t particleType, UInt_t charge);
   TH2*     GetPtHistogram(UInt_t id)    {      return (TH2*) fOutputList->At(id);   }
   TH2*     GetPtHistogram(const char * name)   {      return (TH2*) fOutputList->FindObject(name);   }
   TH2*     GetPtHistogramByName(UInt_t id)     {      return (TH2*) fOutputList->FindObject(kHistNameBoth[id]); }  // Use this if you want to read a file saved with a different histo list   
   TH2*     GetPIDHistogram(UInt_t id)   {      return (TH2*) fOutputList->At(id);   }
   TH2*     GetPIDHistogram(const char * name)  {      return (TH2*) fOutputList->FindObject(name);   }
   TH2*     GetPIDHistogramByName(UInt_t id)    {      return (TH2*) fOutputList->FindObject(kHistNameBoth[id]);  }// Use this if you want to read a file saved with a different histo list
   TH2*     GetNSigHistogram(UInt_t id)   {      return (TH2*) fOutputList->At(id);   }
   TH2*     GetNSigHistogram(const char * name)  {      return (TH2*) fOutputList->FindObject(name);   }
   TH2*     GetNSigHistogramByName(UInt_t id)    {      return (TH2*) fOutputList->FindObject(kHistNameBoth[id]);  }// Use this if you want to read a file saved with a different histo list
   TH2*     GetqVecHistogram(UInt_t id)   {      return (TH2*) fOutputList->At(id);   }
   TH2*     GetqVecHistogram(const char * name)  {      return (TH2*) fOutputList->FindObject(name);   }
   TH2*     GetqVecHistogramByName(UInt_t id)    {      return (TH2*) fOutputList->FindObject(kHistNameBoth[id]);  }// Use this if you want to read a file saved with a different histo list
   TH2*     GetGenMulvsRawMulHistogram(const char * name)  {      return (TH2*) fOutputList->FindObject(name);   }
   TH2*     GetGenMulvsRawMulHistogramByName(UInt_t id)    {      return (TH2*) fOutputList->FindObject(kHistNameBoth[id]);  }// Use this if you want to read a file saved with a different histo list
   TH1F*    GetEventStatHist()  {      return (TH1F*) fOutputList->FindObject("EventStatHisto");  }	
   //TH1F*   GetTH1F(UInt_t id)            {      return (TH1F*) GetPtHistogram(id);   }
   //TH2F*   GetTH2F(UInt_t id)            {      return (TH2F*) GetPIDHistogram(id);   }

  TList * GetOutputList() {return fOutputList;}
  void    SetNRebin(Int_t nreb){fNRebin=nreb;}
  Int_t   GetNRebin() {return fNRebin;}

  Long64_t Merge(TCollection* list);


private:
   TList     *fOutputList;  // List of Pt Histo's
   Int_t      fNRebin; //rebin of histos
   AliSpectraBothHistoManager(const AliSpectraBothHistoManager&);
   AliSpectraBothHistoManager& operator=(const AliSpectraBothHistoManager&);

   ClassDef(AliSpectraBothHistoManager, 2);

};
#endif

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