ROOT logo

/**************************************************************************
 * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//-----------------------------------------------------------------
//         AliSpectraBothHistoManager class
//-----------------------------------------------------------------

#include "TChain.h"
#include "TTree.h"
#include "TLegend.h"
#include "TH1.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TCanvas.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliAnalysisTaskESDfilter.h"
#include "AliAnalysisDataContainer.h"
#include "AliSpectraBothHistoManager.h"
#include <iostream>

using namespace std;

ClassImp(AliSpectraBothHistoManager)


using namespace AliSpectraNameSpaceBoth;
#include "HistogramNamesBoth.cxx" // generate this automatically running createNames.py 


//const char* kParticleSpecies[] =
 // {
   // "PionPlus",
  //  "KaonPlus",
  //  "ProtonPlus",
  //  "PionMinus",
  //  "KaonMinus",
  //  "ProtonMinus",
 // };


AliSpectraBothHistoManager::AliSpectraBothHistoManager(const char *name,Int_t nrebin,Bool_t pidqa): TNamed(name, "AOD Spectra Histo Manager"), fOutputList(0), fNRebin(0)
{
  // ctor
  fNRebin=nrebin;
  fOutputList = new TList;
  fOutputList->SetOwner();
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);
  for (Int_t ihist  = 0; ihist < kNHist ; ihist++)
    {
      if (ihist <= kNPtGenHist) BookPtGenHistogram(kHistNameBoth[ihist]);  // PT histos
      if (ihist > kNPtGenHist && ihist <= kNPtGenAllChHist) BookPtGenAllChHistogram(kHistNameBoth[ihist]);  // PT histos
      if (ihist > kNPtGenAllChHist && ihist <= kNPtRecHist) BookPtRecHistogram(kHistNameBoth[ihist]);  // PT histos
      if (ihist > kNPtRecHist && ihist <= kNPtRecAllChHist) BookPtRecAllChHistogram(kHistNameBoth[ihist]);  // PT histos
      if (ihist > kNPtRecAllChHist && ihist <= kNHistPID && pidqa) BookPIDHistogram(kHistNameBoth[ihist]);  // PID histos
      if (ihist > kNHistPID && ihist <= kNHistNSig && pidqa) BookNSigHistogram(kHistNameBoth[ihist]);  // NSigmaSep histos
      if(ihist==kHistGenMulvsRawMul) BookGenMulvsRawMulHistogram(kHistNameBoth[ihist]); 
      if(ihist==kHistDoubleCounts)BookDoubleCountsHistogram(kHistNameBoth[ihist]); 
    }
   BookEventStatHist();
  TH1::AddDirectory(oldStatus);
}
//_______________________________________________________________________________________
AliSpectraBothHistoManager::~AliSpectraBothHistoManager()
{
	if (fOutputList) 
	{ 
    		fOutputList->Delete();
    		delete fOutputList;
  	}
}
//_______________________________________________________

TH2F* AliSpectraBothHistoManager::BookPtGenHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking pt gen histogram %s", name));
   
  //standard histo
  const Double_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0};
  Int_t nbinsTempl=52;
   
  TH2F * hist = new TH2F(name,Form("P_{T} distribution (%s)", name),nbinsTempl,templBins,2,-0.5,1.5);//need to be at least 1 becuase the generated are filled with (pt,IsPhysPrim)
  hist->GetXaxis()->SetTitle("generated P_{T} (GeV / c)");
  hist->GetYaxis()->SetTitle("IsPhysicalPrimary()");
  hist->SetMarkerStyle(kFullCircle);
  hist->Sumw2();
  fOutputList->Add(hist);
   
  return hist;
}

//_______________________________________________________

TH2F* AliSpectraBothHistoManager::BookPtGenAllChHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking pt gen histogram - no PID %s", name));
   
  //standard histo
  const Double_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0,5.5,6.0,6.5,7,7.5,8,8.5,9,9.5,10};
  Int_t nbinsTempl=62;
   
  TH2F * hist = new TH2F(name,Form("P_{T} distribution (All Ch) (%s)", name),nbinsTempl,templBins,2,-0.5,1.5);//need to be at least 1 becuase the generated are filled with (pt,IsPhysPrim)
  hist->GetXaxis()->SetTitle("generated P_{T} (GeV / c)");
  hist->GetYaxis()->SetTitle("IsPhysicalPrimary()");
  hist->SetMarkerStyle(kFullCircle);
  hist->Sumw2();
  fOutputList->Add(hist);
   
  return hist;
}


//_______________________________________________________
TH2F* AliSpectraBothHistoManager::BookPtRecHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking pt rec histogram %s,  rebin:%d", name, fNRebin));
   
  //standard histo
  const Double_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0};
  Int_t nbinsTempl=52;
   
  TH2F * hist = new TH2F(name,Form("reconstructed P_{T} distribution (%s)", name),nbinsTempl,templBins,3000,-3,3);//need to be at least 1 becuase the generated are filled with (pt,IsPhysPrim)
  if(fNRebin!=0)hist->RebinY(fNRebin);
  hist->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  hist->GetYaxis()->SetTitle("DCA xy");
  hist->SetMarkerStyle(kFullCircle);
  hist->Sumw2();
  fOutputList->Add(hist);

  return hist;
}

//_______________________________________________________
TH2F* AliSpectraBothHistoManager::BookPtRecAllChHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking pt rec histogram %s,  rebin:%d", name, fNRebin));
   
  //standard histo
  const Double_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0,5.5,6.0,6.5,7,7.5,8,8.5,9,9.5,10};
  Int_t nbinsTempl=62;
   
  TH2F * hist = new TH2F(name,Form("reconstructed P_{T} distribution (All Ch)  (%s)", name),nbinsTempl,templBins,3000,-3,3);//need to be at least 1 becuase the generated are filled with (pt,IsPhysPrim)
  if(fNRebin!=0)hist->RebinY(fNRebin);
  hist->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  hist->GetYaxis()->SetTitle("DCA xy");
  hist->SetMarkerStyle(kFullCircle);
  hist->Sumw2();
  fOutputList->Add(hist);

  return hist;
}

//_____________________________________________________________________________

TH2F* AliSpectraBothHistoManager::BookPIDHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking PID histogram %s, rebin:%d", name, fNRebin));
TString tmp(name);	
  TH2F * hist = new TH2F(name, Form("Particle Identification (%s)", name), 50, 0, 2.5, 200, -1000, 1000);
  if(fNRebin!=0){
    hist->RebinY(fNRebin);
  //  hist->RebinX(fNRebin);
  }
 if(tmp.Contains("Pt"))
	hist->GetXaxis()->SetTitle("P_{t} (GeV / c)");
  else		
  	hist->GetXaxis()->SetTitle("P (GeV / c)");

  hist->GetYaxis()->SetTitle("PID signal");
  //  hist->Sumw2();
  fOutputList->Add(hist);

  return hist;
}

//_____________________________________________________________________________

TH2F* AliSpectraBothHistoManager::BookNSigHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking NSigma histogram %s, rebin:%d", name, fNRebin));
  Int_t nbins=200;
  Float_t miny=-20;
  TString tmp(name);			  
  if(tmp.Contains("TPCTOF"))
  {
	nbins=100;
	miny=0.0;
  }				
  TH2F * hist = new TH2F(name, Form("Particle Identification (%s)", name), 50, 0, 2.5,nbins,miny, 20);
  if(fNRebin!=0){
    hist->RebinY(fNRebin);
    //hist->RebinX(fNRebin);
  }
  if(tmp.Contains("Pt"))
	hist->GetXaxis()->SetTitle("P_{t} (GeV / c)");
  else		
  	hist->GetXaxis()->SetTitle("P (GeV / c)");
  //hist->GetYaxis()->SetTitle("TPC");
  //hist->Sumw2();
  fOutputList->Add(hist);
  
  return hist;
}

//_____________________________________________________________________________

 TH2F*   AliSpectraBothHistoManager::BookGenMulvsRawMulHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking  Gen vs Raw multilicity histogram %s", name));
  
  TH2F * hist = new TH2F(name, Form("Gen vs Raw multilicity (%s)", name), 100, -0.5, 99.5, 100, -0.5, 99.5);
  hist->GetXaxis()->SetTitle("gen mul ");
  hist->GetYaxis()->SetTitle("raw mul ");
  //  hist->Sumw2();
  fOutputList->Add(hist);
  
  return hist;
}
//_____________________________________________________________________________

TH1F* AliSpectraBothHistoManager::GetPtHistogram1D(const char * name,Double_t minDCA,Double_t maxDCA)
{
  //   //return the projection of the TH2 (pt,DCA) in the DCA bin range [firstDCAbin,lastDCAbin]
  //   //if minDCA=-1 && maxDCA=-1 the projection is done using the full DCA range
  TH2F *hist=(TH2F*)fOutputList->FindObject(name);
  TH1F *outhist=0x0;
  AliDebug(2,Form("--- Projecting %s on Xaxis[%f,%f]:",name,minDCA,maxDCA));
  if(minDCA==-1 && maxDCA==-1){
    outhist=(TH1F*)hist->ProjectionX("_px",0,-1,"e");
    AliDebug(2,"Full Range");
  }else {
    Int_t firstbin=hist->GetYaxis()->FindBin(minDCA);
    Int_t lastbin=hist->GetYaxis()->FindBin(maxDCA);
    AliDebug(2,Form("firstbin: %d lastbin: %d",firstbin,lastbin));
    outhist=(TH1F*)hist->ProjectionX("_px",firstbin,lastbin,"e");
  }
  AliDebug(2,Form("Entries outhist: %.0f   Entries hist: %.0f",outhist->GetEntries(),hist->GetEntries()));
  return outhist;
}

//_____________________________________________________________________________

TH1F* AliSpectraBothHistoManager::GetDCAHistogram1D(const char * name,Double_t minPt,Double_t maxPt)
{
  //   //return the projection of the TH2 (pt,DCA) in the DCA bin range [firstDCAbin,lastDCAbin]
  //   //if minPt=-1 && maxPt=-1 the projection is done using the full DCA range
  TH2F *hist=(TH2F*)fOutputList->FindObject(name);
  TH1F *outhist=0x0;
  AliDebug(2,Form("--- Projecting %s on Yaxis[%f,%f]:",name,minPt,maxPt));
  if(minPt==-1 && maxPt==-1){
    outhist=(TH1F*)hist->ProjectionY("_py",0,-1,"e");
    AliDebug(2,"Full Range");
  }else {
    Int_t firstbin=hist->GetXaxis()->FindBin(minPt);
    Int_t lastbin=hist->GetXaxis()->FindBin(maxPt);
    AliDebug(2,Form("firstbin: %d lastbin: %d",firstbin,lastbin));
    outhist=(TH1F*)hist->ProjectionY("_py",firstbin,lastbin,"e");
    AliDebug(2,Form("GetDCAHistogram1D(%s) BinRange:%d  %d  Pt Range: %f %f",hist->GetName(),firstbin,lastbin,hist->GetXaxis()->GetBinLowEdge(firstbin),hist->GetXaxis()->GetBinLowEdge(firstbin)+hist->GetXaxis()->GetBinWidth(lastbin)));
  }
  AliDebug(2,Form("Entries outhist: %.0f   Entries hist: %.0f",outhist->GetEntries(),hist->GetEntries()));
  return outhist;
}

//_____________________________________________________________________________

Long64_t AliSpectraBothHistoManager::Merge(TCollection* list)
{
  // Merge a list of AliSpectraBothHistoManager objects with this.
  // Returns the number of merged objects (including this).

  //  AliInfo("Merging");

  if (!list)
    return 0;

  if (list->IsEmpty())
    return 1;

  TIterator* iter = list->MakeIterator();
  TObject* obj;

  // collections of all histograms
  TList collections;

  Int_t count = 0;

  while ((obj = iter->Next())) {
    AliSpectraBothHistoManager* entry = dynamic_cast<AliSpectraBothHistoManager*> (obj);
    if (entry == 0) 
      continue;

    TList * hlist = entry->GetOutputList();      
    collections.Add(hlist);
    count++;
  }
  
  fOutputList->Merge(&collections);
  
  delete iter;

  return count+1;
}

//________________________________________________________________________________
TH1* AliSpectraBothHistoManager::GetHistogram1D(UInt_t histoType, UInt_t particleType, UInt_t charge) {
  // GetHistogram using particle ID and histogram type
  Int_t baseId = -1;

  if (particleType == kSpUndefined) {
    AliError ("Trying to get histo for undefined particle");
    return 0;
  }

  switch(histoType) {
  case kHistPtGenTruePrimary:
    baseId = kHistPtGenTruePrimaryPionPlus;
    break;
  case kHistPtRecSigma:
    baseId = kHistPtRecSigmaPionPlus;
    break;
  case kHistPtRecTrue:
    baseId = kHistPtRecTruePionPlus;
    break;
  case kHistPtRecTruePrimary:
    baseId = kHistPtRecTruePrimaryPionPlus;
    break;
  case kHistPtRecPrimary:
    baseId = kHistPtRecPrimaryPionPlus;
    break;
  case kHistPtRecSigmaPrimary:
    baseId = kHistPtRecSigmaPrimaryPionPlus;
    break;
  case kHistPtRecSigmaSecondaryMaterial:
    baseId = kHistPtRecSigmaSecondaryMaterialPionPlus;
    break;
  case kHistPtRecSigmaSecondaryWeakDecay:
    baseId = kHistPtRecSigmaSecondaryWeakDecayPionPlus;
    break;
  case kHistNSigTPC:
    baseId = kHistNSigPionTPC;
    break;
  case kHistNSigTOF:
    baseId = kHistNSigPionTOF;
    break;
  case kHistNSigTPCTOF:
    baseId = kHistNSigPionTPCTOF;
    break;
  default:
    baseId = -1;
  }
  
  if (baseId < 0)
    AliFatal(Form("Wrong histogram type %d", histoType));

  //cout << "T[" << histoType << "] ID["<< baseId <<"] P["<<particleType<<"] C[" << charge 
  //     << " --> ["<< baseId + particleType + 3*(charge) <<"] = " ;

  baseId = baseId + particleType + 3*(charge);

  //cout <<  GetHistogram(baseId)->GetName() << endl;

  return GetHistogram(baseId);
}
//____________________________________________________________________________________________________
TH2* AliSpectraBothHistoManager::GetHistogram2D(UInt_t histoType, UInt_t particleType, UInt_t charge){
  // returns histo based on ids, casting it to TH2*
  return (TH2*) GetHistogram1D(histoType,particleType,charge);

}
//______________________________________________________________________________________________________
 TH2F*   AliSpectraBothHistoManager::BookDoubleCountsHistogram(const char * name)
{
  // Return a pt histogram with predefined binning, set the ID and add it to the output list
  AliInfo(Form("Booking  Double Counts histogram %s", name));
  const Double_t templBins[] = {0.05,0.1,0.12,0.14,0.16,0.18,0.20,0.25,0.30,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0};
  Int_t nbinsTempl=52;
   
  TH2F * hist = new TH2F(name,"Histogram of double counts",nbinsTempl,templBins,4,-0.5,3.5);
  hist->GetXaxis()->SetTitle("P_{T} (GeV / c)");
  hist->GetYaxis()->SetTitle("type of doubles");
  hist->GetYaxis()->SetBinLabel(1,"#pi+K+p");
  hist->GetYaxis()->SetBinLabel(2,"#pi+K");
  hist->GetYaxis()->SetBinLabel(3,"#pi+p");
  hist->GetYaxis()->SetBinLabel(4,"K+p");

  hist->SetMarkerStyle(kFullCircle);
  hist->Sumw2();
  fOutputList->Add(hist);
   
  return hist;


}
//_____________________________________________________________________________________________________
TH1F* AliSpectraBothHistoManager::BookEventStatHist()
{
	// We only need 3 bins all, passing phys selection, and selected
	TH1F* hist = new TH1F("EventStatHisto","EventStatHisto",3,-0.5,2.5);
	hist->GetXaxis()->SetBinLabel(1,"all");
	hist->GetXaxis()->SetBinLabel(2,"passing phys. sel.");
	hist->GetXaxis()->SetBinLabel(3,"analyzed");
	fOutputList->Add(hist);
	return hist; 
}
 AliSpectraBothHistoManager.cxx:1
 AliSpectraBothHistoManager.cxx:2
 AliSpectraBothHistoManager.cxx:3
 AliSpectraBothHistoManager.cxx:4
 AliSpectraBothHistoManager.cxx:5
 AliSpectraBothHistoManager.cxx:6
 AliSpectraBothHistoManager.cxx:7
 AliSpectraBothHistoManager.cxx:8
 AliSpectraBothHistoManager.cxx:9
 AliSpectraBothHistoManager.cxx:10
 AliSpectraBothHistoManager.cxx:11
 AliSpectraBothHistoManager.cxx:12
 AliSpectraBothHistoManager.cxx:13
 AliSpectraBothHistoManager.cxx:14
 AliSpectraBothHistoManager.cxx:15
 AliSpectraBothHistoManager.cxx:16
 AliSpectraBothHistoManager.cxx:17
 AliSpectraBothHistoManager.cxx:18
 AliSpectraBothHistoManager.cxx:19
 AliSpectraBothHistoManager.cxx:20
 AliSpectraBothHistoManager.cxx:21
 AliSpectraBothHistoManager.cxx:22
 AliSpectraBothHistoManager.cxx:23
 AliSpectraBothHistoManager.cxx:24
 AliSpectraBothHistoManager.cxx:25
 AliSpectraBothHistoManager.cxx:26
 AliSpectraBothHistoManager.cxx:27
 AliSpectraBothHistoManager.cxx:28
 AliSpectraBothHistoManager.cxx:29
 AliSpectraBothHistoManager.cxx:30
 AliSpectraBothHistoManager.cxx:31
 AliSpectraBothHistoManager.cxx:32
 AliSpectraBothHistoManager.cxx:33
 AliSpectraBothHistoManager.cxx:34
 AliSpectraBothHistoManager.cxx:35
 AliSpectraBothHistoManager.cxx:36
 AliSpectraBothHistoManager.cxx:37
 AliSpectraBothHistoManager.cxx:38
 AliSpectraBothHistoManager.cxx:39
 AliSpectraBothHistoManager.cxx:40
 AliSpectraBothHistoManager.cxx:41
 AliSpectraBothHistoManager.cxx:42
 AliSpectraBothHistoManager.cxx:43
 AliSpectraBothHistoManager.cxx:44
 AliSpectraBothHistoManager.cxx:45
 AliSpectraBothHistoManager.cxx:46
 AliSpectraBothHistoManager.cxx:47
 AliSpectraBothHistoManager.cxx:48
 AliSpectraBothHistoManager.cxx:49
 AliSpectraBothHistoManager.cxx:50
 AliSpectraBothHistoManager.cxx:51
 AliSpectraBothHistoManager.cxx:52
 AliSpectraBothHistoManager.cxx:53
 AliSpectraBothHistoManager.cxx:54
 AliSpectraBothHistoManager.cxx:55
 AliSpectraBothHistoManager.cxx:56
 AliSpectraBothHistoManager.cxx:57
 AliSpectraBothHistoManager.cxx:58
 AliSpectraBothHistoManager.cxx:59
 AliSpectraBothHistoManager.cxx:60
 AliSpectraBothHistoManager.cxx:61
 AliSpectraBothHistoManager.cxx:62
 AliSpectraBothHistoManager.cxx:63
 AliSpectraBothHistoManager.cxx:64
 AliSpectraBothHistoManager.cxx:65
 AliSpectraBothHistoManager.cxx:66
 AliSpectraBothHistoManager.cxx:67
 AliSpectraBothHistoManager.cxx:68
 AliSpectraBothHistoManager.cxx:69
 AliSpectraBothHistoManager.cxx:70
 AliSpectraBothHistoManager.cxx:71
 AliSpectraBothHistoManager.cxx:72
 AliSpectraBothHistoManager.cxx:73
 AliSpectraBothHistoManager.cxx:74
 AliSpectraBothHistoManager.cxx:75
 AliSpectraBothHistoManager.cxx:76
 AliSpectraBothHistoManager.cxx:77
 AliSpectraBothHistoManager.cxx:78
 AliSpectraBothHistoManager.cxx:79
 AliSpectraBothHistoManager.cxx:80
 AliSpectraBothHistoManager.cxx:81
 AliSpectraBothHistoManager.cxx:82
 AliSpectraBothHistoManager.cxx:83
 AliSpectraBothHistoManager.cxx:84
 AliSpectraBothHistoManager.cxx:85
 AliSpectraBothHistoManager.cxx:86
 AliSpectraBothHistoManager.cxx:87
 AliSpectraBothHistoManager.cxx:88
 AliSpectraBothHistoManager.cxx:89
 AliSpectraBothHistoManager.cxx:90
 AliSpectraBothHistoManager.cxx:91
 AliSpectraBothHistoManager.cxx:92
 AliSpectraBothHistoManager.cxx:93
 AliSpectraBothHistoManager.cxx:94
 AliSpectraBothHistoManager.cxx:95
 AliSpectraBothHistoManager.cxx:96
 AliSpectraBothHistoManager.cxx:97
 AliSpectraBothHistoManager.cxx:98
 AliSpectraBothHistoManager.cxx:99
 AliSpectraBothHistoManager.cxx:100
 AliSpectraBothHistoManager.cxx:101
 AliSpectraBothHistoManager.cxx:102
 AliSpectraBothHistoManager.cxx:103
 AliSpectraBothHistoManager.cxx:104
 AliSpectraBothHistoManager.cxx:105
 AliSpectraBothHistoManager.cxx:106
 AliSpectraBothHistoManager.cxx:107
 AliSpectraBothHistoManager.cxx:108
 AliSpectraBothHistoManager.cxx:109
 AliSpectraBothHistoManager.cxx:110
 AliSpectraBothHistoManager.cxx:111
 AliSpectraBothHistoManager.cxx:112
 AliSpectraBothHistoManager.cxx:113
 AliSpectraBothHistoManager.cxx:114
 AliSpectraBothHistoManager.cxx:115
 AliSpectraBothHistoManager.cxx:116
 AliSpectraBothHistoManager.cxx:117
 AliSpectraBothHistoManager.cxx:118
 AliSpectraBothHistoManager.cxx:119
 AliSpectraBothHistoManager.cxx:120
 AliSpectraBothHistoManager.cxx:121
 AliSpectraBothHistoManager.cxx:122
 AliSpectraBothHistoManager.cxx:123
 AliSpectraBothHistoManager.cxx:124
 AliSpectraBothHistoManager.cxx:125
 AliSpectraBothHistoManager.cxx:126
 AliSpectraBothHistoManager.cxx:127
 AliSpectraBothHistoManager.cxx:128
 AliSpectraBothHistoManager.cxx:129
 AliSpectraBothHistoManager.cxx:130
 AliSpectraBothHistoManager.cxx:131
 AliSpectraBothHistoManager.cxx:132
 AliSpectraBothHistoManager.cxx:133
 AliSpectraBothHistoManager.cxx:134
 AliSpectraBothHistoManager.cxx:135
 AliSpectraBothHistoManager.cxx:136
 AliSpectraBothHistoManager.cxx:137
 AliSpectraBothHistoManager.cxx:138
 AliSpectraBothHistoManager.cxx:139
 AliSpectraBothHistoManager.cxx:140
 AliSpectraBothHistoManager.cxx:141
 AliSpectraBothHistoManager.cxx:142
 AliSpectraBothHistoManager.cxx:143
 AliSpectraBothHistoManager.cxx:144
 AliSpectraBothHistoManager.cxx:145
 AliSpectraBothHistoManager.cxx:146
 AliSpectraBothHistoManager.cxx:147
 AliSpectraBothHistoManager.cxx:148
 AliSpectraBothHistoManager.cxx:149
 AliSpectraBothHistoManager.cxx:150
 AliSpectraBothHistoManager.cxx:151
 AliSpectraBothHistoManager.cxx:152
 AliSpectraBothHistoManager.cxx:153
 AliSpectraBothHistoManager.cxx:154
 AliSpectraBothHistoManager.cxx:155
 AliSpectraBothHistoManager.cxx:156
 AliSpectraBothHistoManager.cxx:157
 AliSpectraBothHistoManager.cxx:158
 AliSpectraBothHistoManager.cxx:159
 AliSpectraBothHistoManager.cxx:160
 AliSpectraBothHistoManager.cxx:161
 AliSpectraBothHistoManager.cxx:162
 AliSpectraBothHistoManager.cxx:163
 AliSpectraBothHistoManager.cxx:164
 AliSpectraBothHistoManager.cxx:165
 AliSpectraBothHistoManager.cxx:166
 AliSpectraBothHistoManager.cxx:167
 AliSpectraBothHistoManager.cxx:168
 AliSpectraBothHistoManager.cxx:169
 AliSpectraBothHistoManager.cxx:170
 AliSpectraBothHistoManager.cxx:171
 AliSpectraBothHistoManager.cxx:172
 AliSpectraBothHistoManager.cxx:173
 AliSpectraBothHistoManager.cxx:174
 AliSpectraBothHistoManager.cxx:175
 AliSpectraBothHistoManager.cxx:176
 AliSpectraBothHistoManager.cxx:177
 AliSpectraBothHistoManager.cxx:178
 AliSpectraBothHistoManager.cxx:179
 AliSpectraBothHistoManager.cxx:180
 AliSpectraBothHistoManager.cxx:181
 AliSpectraBothHistoManager.cxx:182
 AliSpectraBothHistoManager.cxx:183
 AliSpectraBothHistoManager.cxx:184
 AliSpectraBothHistoManager.cxx:185
 AliSpectraBothHistoManager.cxx:186
 AliSpectraBothHistoManager.cxx:187
 AliSpectraBothHistoManager.cxx:188
 AliSpectraBothHistoManager.cxx:189
 AliSpectraBothHistoManager.cxx:190
 AliSpectraBothHistoManager.cxx:191
 AliSpectraBothHistoManager.cxx:192
 AliSpectraBothHistoManager.cxx:193
 AliSpectraBothHistoManager.cxx:194
 AliSpectraBothHistoManager.cxx:195
 AliSpectraBothHistoManager.cxx:196
 AliSpectraBothHistoManager.cxx:197
 AliSpectraBothHistoManager.cxx:198
 AliSpectraBothHistoManager.cxx:199
 AliSpectraBothHistoManager.cxx:200
 AliSpectraBothHistoManager.cxx:201
 AliSpectraBothHistoManager.cxx:202
 AliSpectraBothHistoManager.cxx:203
 AliSpectraBothHistoManager.cxx:204
 AliSpectraBothHistoManager.cxx:205
 AliSpectraBothHistoManager.cxx:206
 AliSpectraBothHistoManager.cxx:207
 AliSpectraBothHistoManager.cxx:208
 AliSpectraBothHistoManager.cxx:209
 AliSpectraBothHistoManager.cxx:210
 AliSpectraBothHistoManager.cxx:211
 AliSpectraBothHistoManager.cxx:212
 AliSpectraBothHistoManager.cxx:213
 AliSpectraBothHistoManager.cxx:214
 AliSpectraBothHistoManager.cxx:215
 AliSpectraBothHistoManager.cxx:216
 AliSpectraBothHistoManager.cxx:217
 AliSpectraBothHistoManager.cxx:218
 AliSpectraBothHistoManager.cxx:219
 AliSpectraBothHistoManager.cxx:220
 AliSpectraBothHistoManager.cxx:221
 AliSpectraBothHistoManager.cxx:222
 AliSpectraBothHistoManager.cxx:223
 AliSpectraBothHistoManager.cxx:224
 AliSpectraBothHistoManager.cxx:225
 AliSpectraBothHistoManager.cxx:226
 AliSpectraBothHistoManager.cxx:227
 AliSpectraBothHistoManager.cxx:228
 AliSpectraBothHistoManager.cxx:229
 AliSpectraBothHistoManager.cxx:230
 AliSpectraBothHistoManager.cxx:231
 AliSpectraBothHistoManager.cxx:232
 AliSpectraBothHistoManager.cxx:233
 AliSpectraBothHistoManager.cxx:234
 AliSpectraBothHistoManager.cxx:235
 AliSpectraBothHistoManager.cxx:236
 AliSpectraBothHistoManager.cxx:237
 AliSpectraBothHistoManager.cxx:238
 AliSpectraBothHistoManager.cxx:239
 AliSpectraBothHistoManager.cxx:240
 AliSpectraBothHistoManager.cxx:241
 AliSpectraBothHistoManager.cxx:242
 AliSpectraBothHistoManager.cxx:243
 AliSpectraBothHistoManager.cxx:244
 AliSpectraBothHistoManager.cxx:245
 AliSpectraBothHistoManager.cxx:246
 AliSpectraBothHistoManager.cxx:247
 AliSpectraBothHistoManager.cxx:248
 AliSpectraBothHistoManager.cxx:249
 AliSpectraBothHistoManager.cxx:250
 AliSpectraBothHistoManager.cxx:251
 AliSpectraBothHistoManager.cxx:252
 AliSpectraBothHistoManager.cxx:253
 AliSpectraBothHistoManager.cxx:254
 AliSpectraBothHistoManager.cxx:255
 AliSpectraBothHistoManager.cxx:256
 AliSpectraBothHistoManager.cxx:257
 AliSpectraBothHistoManager.cxx:258
 AliSpectraBothHistoManager.cxx:259
 AliSpectraBothHistoManager.cxx:260
 AliSpectraBothHistoManager.cxx:261
 AliSpectraBothHistoManager.cxx:262
 AliSpectraBothHistoManager.cxx:263
 AliSpectraBothHistoManager.cxx:264
 AliSpectraBothHistoManager.cxx:265
 AliSpectraBothHistoManager.cxx:266
 AliSpectraBothHistoManager.cxx:267
 AliSpectraBothHistoManager.cxx:268
 AliSpectraBothHistoManager.cxx:269
 AliSpectraBothHistoManager.cxx:270
 AliSpectraBothHistoManager.cxx:271
 AliSpectraBothHistoManager.cxx:272
 AliSpectraBothHistoManager.cxx:273
 AliSpectraBothHistoManager.cxx:274
 AliSpectraBothHistoManager.cxx:275
 AliSpectraBothHistoManager.cxx:276
 AliSpectraBothHistoManager.cxx:277
 AliSpectraBothHistoManager.cxx:278
 AliSpectraBothHistoManager.cxx:279
 AliSpectraBothHistoManager.cxx:280
 AliSpectraBothHistoManager.cxx:281
 AliSpectraBothHistoManager.cxx:282
 AliSpectraBothHistoManager.cxx:283
 AliSpectraBothHistoManager.cxx:284
 AliSpectraBothHistoManager.cxx:285
 AliSpectraBothHistoManager.cxx:286
 AliSpectraBothHistoManager.cxx:287
 AliSpectraBothHistoManager.cxx:288
 AliSpectraBothHistoManager.cxx:289
 AliSpectraBothHistoManager.cxx:290
 AliSpectraBothHistoManager.cxx:291
 AliSpectraBothHistoManager.cxx:292
 AliSpectraBothHistoManager.cxx:293
 AliSpectraBothHistoManager.cxx:294
 AliSpectraBothHistoManager.cxx:295
 AliSpectraBothHistoManager.cxx:296
 AliSpectraBothHistoManager.cxx:297
 AliSpectraBothHistoManager.cxx:298
 AliSpectraBothHistoManager.cxx:299
 AliSpectraBothHistoManager.cxx:300
 AliSpectraBothHistoManager.cxx:301
 AliSpectraBothHistoManager.cxx:302
 AliSpectraBothHistoManager.cxx:303
 AliSpectraBothHistoManager.cxx:304
 AliSpectraBothHistoManager.cxx:305
 AliSpectraBothHistoManager.cxx:306
 AliSpectraBothHistoManager.cxx:307
 AliSpectraBothHistoManager.cxx:308
 AliSpectraBothHistoManager.cxx:309
 AliSpectraBothHistoManager.cxx:310
 AliSpectraBothHistoManager.cxx:311
 AliSpectraBothHistoManager.cxx:312
 AliSpectraBothHistoManager.cxx:313
 AliSpectraBothHistoManager.cxx:314
 AliSpectraBothHistoManager.cxx:315
 AliSpectraBothHistoManager.cxx:316
 AliSpectraBothHistoManager.cxx:317
 AliSpectraBothHistoManager.cxx:318
 AliSpectraBothHistoManager.cxx:319
 AliSpectraBothHistoManager.cxx:320
 AliSpectraBothHistoManager.cxx:321
 AliSpectraBothHistoManager.cxx:322
 AliSpectraBothHistoManager.cxx:323
 AliSpectraBothHistoManager.cxx:324
 AliSpectraBothHistoManager.cxx:325
 AliSpectraBothHistoManager.cxx:326
 AliSpectraBothHistoManager.cxx:327
 AliSpectraBothHistoManager.cxx:328
 AliSpectraBothHistoManager.cxx:329
 AliSpectraBothHistoManager.cxx:330
 AliSpectraBothHistoManager.cxx:331
 AliSpectraBothHistoManager.cxx:332
 AliSpectraBothHistoManager.cxx:333
 AliSpectraBothHistoManager.cxx:334
 AliSpectraBothHistoManager.cxx:335
 AliSpectraBothHistoManager.cxx:336
 AliSpectraBothHistoManager.cxx:337
 AliSpectraBothHistoManager.cxx:338
 AliSpectraBothHistoManager.cxx:339
 AliSpectraBothHistoManager.cxx:340
 AliSpectraBothHistoManager.cxx:341
 AliSpectraBothHistoManager.cxx:342
 AliSpectraBothHistoManager.cxx:343
 AliSpectraBothHistoManager.cxx:344
 AliSpectraBothHistoManager.cxx:345
 AliSpectraBothHistoManager.cxx:346
 AliSpectraBothHistoManager.cxx:347
 AliSpectraBothHistoManager.cxx:348
 AliSpectraBothHistoManager.cxx:349
 AliSpectraBothHistoManager.cxx:350
 AliSpectraBothHistoManager.cxx:351
 AliSpectraBothHistoManager.cxx:352
 AliSpectraBothHistoManager.cxx:353
 AliSpectraBothHistoManager.cxx:354
 AliSpectraBothHistoManager.cxx:355
 AliSpectraBothHistoManager.cxx:356
 AliSpectraBothHistoManager.cxx:357
 AliSpectraBothHistoManager.cxx:358
 AliSpectraBothHistoManager.cxx:359
 AliSpectraBothHistoManager.cxx:360
 AliSpectraBothHistoManager.cxx:361
 AliSpectraBothHistoManager.cxx:362
 AliSpectraBothHistoManager.cxx:363
 AliSpectraBothHistoManager.cxx:364
 AliSpectraBothHistoManager.cxx:365
 AliSpectraBothHistoManager.cxx:366
 AliSpectraBothHistoManager.cxx:367
 AliSpectraBothHistoManager.cxx:368
 AliSpectraBothHistoManager.cxx:369
 AliSpectraBothHistoManager.cxx:370
 AliSpectraBothHistoManager.cxx:371
 AliSpectraBothHistoManager.cxx:372
 AliSpectraBothHistoManager.cxx:373
 AliSpectraBothHistoManager.cxx:374
 AliSpectraBothHistoManager.cxx:375
 AliSpectraBothHistoManager.cxx:376
 AliSpectraBothHistoManager.cxx:377
 AliSpectraBothHistoManager.cxx:378
 AliSpectraBothHistoManager.cxx:379
 AliSpectraBothHistoManager.cxx:380
 AliSpectraBothHistoManager.cxx:381
 AliSpectraBothHistoManager.cxx:382
 AliSpectraBothHistoManager.cxx:383
 AliSpectraBothHistoManager.cxx:384
 AliSpectraBothHistoManager.cxx:385
 AliSpectraBothHistoManager.cxx:386
 AliSpectraBothHistoManager.cxx:387
 AliSpectraBothHistoManager.cxx:388
 AliSpectraBothHistoManager.cxx:389
 AliSpectraBothHistoManager.cxx:390
 AliSpectraBothHistoManager.cxx:391
 AliSpectraBothHistoManager.cxx:392
 AliSpectraBothHistoManager.cxx:393
 AliSpectraBothHistoManager.cxx:394
 AliSpectraBothHistoManager.cxx:395
 AliSpectraBothHistoManager.cxx:396
 AliSpectraBothHistoManager.cxx:397
 AliSpectraBothHistoManager.cxx:398
 AliSpectraBothHistoManager.cxx:399
 AliSpectraBothHistoManager.cxx:400
 AliSpectraBothHistoManager.cxx:401
 AliSpectraBothHistoManager.cxx:402
 AliSpectraBothHistoManager.cxx:403
 AliSpectraBothHistoManager.cxx:404
 AliSpectraBothHistoManager.cxx:405
 AliSpectraBothHistoManager.cxx:406
 AliSpectraBothHistoManager.cxx:407
 AliSpectraBothHistoManager.cxx:408
 AliSpectraBothHistoManager.cxx:409
 AliSpectraBothHistoManager.cxx:410
 AliSpectraBothHistoManager.cxx:411
 AliSpectraBothHistoManager.cxx:412
 AliSpectraBothHistoManager.cxx:413
 AliSpectraBothHistoManager.cxx:414
 AliSpectraBothHistoManager.cxx:415
 AliSpectraBothHistoManager.cxx:416
 AliSpectraBothHistoManager.cxx:417
 AliSpectraBothHistoManager.cxx:418
 AliSpectraBothHistoManager.cxx:419
 AliSpectraBothHistoManager.cxx:420
 AliSpectraBothHistoManager.cxx:421
 AliSpectraBothHistoManager.cxx:422
 AliSpectraBothHistoManager.cxx:423
 AliSpectraBothHistoManager.cxx:424
 AliSpectraBothHistoManager.cxx:425
 AliSpectraBothHistoManager.cxx:426
 AliSpectraBothHistoManager.cxx:427
 AliSpectraBothHistoManager.cxx:428
 AliSpectraBothHistoManager.cxx:429