#include <TArrayD.h>
#include <TH1.h>
#include <TList.h>
#include <TObjArray.h>
#include <TROOT.h>
#include <TCanvas.h>
#include <TLegend.h>
#include <TStyle.h>
#include <TMath.h>
#include <TAxis.h>
#include <TGraphErrors.h>
#include <TFile.h>
#include <TPad.h>
#include <TH2D.h>
#include <TF1.h>
#include "AliPID.h"
#include "AliCFContainer.h"
#include "AliCFDataGrid.h"
#include "AliCFEffGrid.h"
#include "AliCFGridSparse.h"
#include "AliCFUnfolding.h"
#include "AliLog.h"
#include "AliHFECorrectSpectrumBase.h"
#include "AliHFEcuts.h"
#include "AliHFEcontainer.h"
#include "AliHFEtools.h"
ClassImp(AliHFECorrectSpectrumBase)
AliHFECorrectSpectrumBase::AliHFECorrectSpectrumBase(const char *name):
TNamed(name, ""),
fCFContainers(new TObjArray(kNbCFContainers)),
fCorrelation(NULL),
fEfficiencyFunction(NULL),
fEtaSelected(kFALSE),
fSetSmoothing(kFALSE),
fNbDimensions(1),
fNEvents(0),
fStepMC(-1),
fStepTrue(-1),
fStepData(-1),
fStepBeforeCutsV0(-1),
fStepAfterCutsV0(-1),
fStepGuessedUnfolding(-1),
fNumberOfIterations(10),
fChargeChoosen(kAllCharge),
fTestCentralityLow(-1),
fTestCentralityHigh(-1)
{
memset(fEtaRange, 0, sizeof(Double_t) * 2);
memset(fEtaRangeNorm, 0, sizeof(Double_t) * 2);
memset(fDims, 0, sizeof(Int_t) * 3);
SetNbDimensions(1);
}
AliHFECorrectSpectrumBase::AliHFECorrectSpectrumBase(const AliHFECorrectSpectrumBase &ref):
TNamed(ref),
fCFContainers(NULL),
fCorrelation(NULL),
fEfficiencyFunction(NULL),
fEtaSelected(ref.fEtaSelected),
fSetSmoothing(ref.fSetSmoothing),
fNbDimensions(ref.fNbDimensions),
fNEvents(ref.fNEvents),
fStepMC(ref.fStepMC),
fStepTrue(ref.fStepTrue),
fStepData(ref.fStepData),
fStepBeforeCutsV0(ref.fStepBeforeCutsV0),
fStepAfterCutsV0(ref.fStepAfterCutsV0),
fStepGuessedUnfolding(ref.fStepGuessedUnfolding),
fNumberOfIterations(ref.fNumberOfIterations),
fChargeChoosen(ref.fChargeChoosen),
fTestCentralityLow(ref.fTestCentralityLow),
fTestCentralityHigh(ref.fTestCentralityHigh)
{
ref.Copy(*this);
}
AliHFECorrectSpectrumBase &AliHFECorrectSpectrumBase::operator=(const AliHFECorrectSpectrumBase &ref){
if(this == &ref)
ref.Copy(*this);
return *this;
}
void AliHFECorrectSpectrumBase::Copy(TObject &o) const {
AliHFECorrectSpectrumBase &target = dynamic_cast<AliHFECorrectSpectrumBase &>(o);
target.fCFContainers = fCFContainers;
target.fCorrelation = fCorrelation;
target.fEfficiencyFunction = fEfficiencyFunction;
target.fEtaSelected = fEtaSelected;
target.fSetSmoothing = fSetSmoothing;
target.fNbDimensions = fNbDimensions;
target.fNEvents = fNEvents;
target.fStepMC = fStepMC;
target.fStepTrue = fStepTrue;
target.fStepData = fStepData;
target.fStepBeforeCutsV0 = fStepBeforeCutsV0;
target.fStepAfterCutsV0 = fStepAfterCutsV0;
target.fStepGuessedUnfolding = fStepGuessedUnfolding;
target.fNumberOfIterations = fNumberOfIterations;
target.fChargeChoosen = fChargeChoosen;
target.fTestCentralityLow = fTestCentralityLow;
target.fTestCentralityHigh = fTestCentralityHigh;
target.fDims[0] = fDims[0];
target.fDims[1] = fDims[1];
target.fDims[2] = fDims[2];
target.fEtaRange[0] = fEtaRange[0];
target.fEtaRange[1] = fEtaRange[1];
target.fEtaRangeNorm[0] = fEtaRangeNorm[0];
target.fEtaRangeNorm[1] = fEtaRangeNorm[1];
}
AliHFECorrectSpectrumBase::~AliHFECorrectSpectrumBase(){
if(fCFContainers) delete fCFContainers;
}
TGraphErrors *AliHFECorrectSpectrumBase::Normalize(THnSparse * const spectrum) const {
if(fNEvents > 0) {
TH1D* projection = spectrum->Projection(0);
AliHFEtools::NormaliseBinWidth(projection);
TGraphErrors *graphError = NormalizeTH1(projection);
return graphError;
}
return 0x0;
}
TGraphErrors *AliHFECorrectSpectrumBase::Normalize(AliCFDataGrid * const spectrum) const {
if(fNEvents > 0) {
TH1D* projection = (TH1D *) spectrum->Project(0);
AliHFEtools::NormaliseBinWidth(projection);
TGraphErrors *graphError = NormalizeTH1(projection);
return graphError;
}
return 0x0;
}
TGraphErrors *AliHFECorrectSpectrumBase::NormalizeTH1(TH1 *input) const {
Double_t chargecoefficient = 0.5;
if(fChargeChoosen != 0) chargecoefficient = 1.0;
Double_t etarange = fEtaSelected ? fEtaRangeNorm[1] - fEtaRangeNorm[0] : 1.6;
printf("Normalizing Eta Range %f\n", etarange);
printf("Number of events in Normalisation: %d\n", fNEvents);
AliDebug(3, Form("charge coefficient: %f\n", chargecoefficient));
if(fNEvents > 0) {
TGraphErrors *spectrumNormalized = new TGraphErrors(input->GetNbinsX());
Double_t p = 0, dp = 0; Int_t point = 1;
Double_t n = 0, dN = 0;
Double_t nCorr = 0, dNcorr = 0;
Double_t errdN = 0;
for(Int_t ibin = input->GetXaxis()->GetFirst(); ibin <= input->GetXaxis()->GetLast(); ibin++){
point = ibin - input->GetXaxis()->GetFirst();
p = input->GetXaxis()->GetBinCenter(ibin);
dp = input->GetXaxis()->GetBinWidth(ibin)/2.;
n = input->GetBinContent(ibin);
AliDebug(6, Form("p: %f, n: %e\n", p, n));
dN = input->GetBinError(ibin);
nCorr = chargecoefficient * 1./etarange * 1./(Double_t)(fNEvents) * 1./(2. * TMath::Pi() * p) * n;
errdN = 1./(2. * TMath::Pi() * p);
dNcorr = chargecoefficient * 1./etarange * 1./(Double_t)(fNEvents) * TMath::Sqrt(errdN * errdN * dN *dN);
spectrumNormalized->SetPoint(point, p, nCorr);
spectrumNormalized->SetPointError(point, dp, dNcorr);
}
spectrumNormalized->GetXaxis()->SetTitle("p_{T} [GeV/c]");
spectrumNormalized->GetYaxis()->SetTitle("#frac{1}{2 #pi p_{T}} #frac{dN}{dp_{T}} / [GeV/c]^{-2}");
spectrumNormalized->SetMarkerStyle(22);
spectrumNormalized->SetMarkerColor(kBlue);
spectrumNormalized->SetLineColor(kBlue);
return spectrumNormalized;
}
return 0x0;
}
void AliHFECorrectSpectrumBase::SetContainer(AliCFContainer *cont, AliHFECorrectSpectrumBase::CFContainer_t type){
if(!fCFContainers) fCFContainers = new TObjArray(kNbCFContainers);
fCFContainers->AddAt(cont, type);
}
AliCFContainer *AliHFECorrectSpectrumBase::GetContainer(AliHFECorrectSpectrumBase::CFContainer_t type){
if(!fCFContainers) return NULL;
return dynamic_cast<AliCFContainer *>(fCFContainers->At(type));
}
AliCFContainer *AliHFECorrectSpectrumBase::GetSlicedContainer(AliCFContainer *container, Int_t nDim, Int_t *dimensions,Int_t source,Chargetype_t charge, Int_t centralitylow, Int_t centralityhigh, Bool_t doCentralityProjection) {
const double kVerySmall = 1e-5;
Double_t *varMin = new Double_t[container->GetNVar()],
*varMax = new Double_t[container->GetNVar()];
Double_t *binLimits;
for(Int_t ivar = 0; ivar < container->GetNVar(); ivar++){
binLimits = new Double_t[container->GetNBins(ivar)+1];
container->GetBinLimits(ivar,binLimits);
varMin[ivar] = binLimits[0];
varMax[ivar] = binLimits[container->GetNBins(ivar)];
if(ivar == 4){
if((source>= 0) && (source<container->GetNBins(ivar))) {
varMin[ivar] = container->GetAxis(4,0)->GetBinLowEdge(container->GetAxis(4,0)->FindBin(binLimits[source]));
varMax[ivar] = container->GetAxis(4,0)->GetBinUpEdge(container->GetAxis(4,0)->FindBin(binLimits[source]));
}
}
if(ivar == 3) {
if(charge != kAllCharge){
varMin[ivar] = container->GetAxis(3,0)->GetBinLowEdge(container->GetAxis(3,0)->FindBin(charge));
varMax[ivar] = container->GetAxis(3,0)->GetBinUpEdge(container->GetAxis(3,0)->FindBin(charge));
}
}
if(ivar == 1){
for(Int_t ic = 1; ic <= container->GetAxis(1,0)->GetLast(); ic++)
AliDebug(1, Form("eta bin %d, min %f, max %f\n", ic, container->GetAxis(1,0)->GetBinLowEdge(ic), container->GetAxis(1,0)->GetBinUpEdge(ic)));
if(fEtaSelected){
varMin[ivar] = fEtaRange[0];
varMax[ivar] = fEtaRange[1];
}
}
if(fEtaSelected){
fEtaRangeNorm[0] = container->GetAxis(1,0)->GetBinLowEdge(container->GetAxis(1,0)->FindBin(fEtaRange[0]));
fEtaRangeNorm[1] = container->GetAxis(1,0)->GetBinUpEdge(container->GetAxis(1,0)->FindBin(fEtaRange[1]));
AliInfo(Form("Normalization done in eta range [%f,%f]\n", fEtaRangeNorm[0], fEtaRangeNorm[1]));
}
if(ivar == 5){
if((centralitylow>= 0) && (centralitylow<container->GetNBins(ivar)) && (centralityhigh>= 0) && (centralityhigh<container->GetNBins(ivar)) && doCentralityProjection) {
varMin[ivar] = binLimits[centralitylow]+ kVerySmall;
varMax[ivar] = binLimits[centralityhigh]+ kVerySmall;
TAxis *axistest = container->GetAxis(5,0);
AliDebug(1, Form("Number of bin in centrality direction %d\n",axistest->GetNbins()));
AliDebug(1, Form("Project from %f to %f\n",binLimits[centralitylow],binLimits[centralityhigh]));
Double_t lowcentrality = axistest->GetBinLowEdge(axistest->FindBin(binLimits[centralitylow]));
Double_t highcentrality = axistest->GetBinUpEdge(axistest->FindBin(binLimits[centralityhigh]));
AliDebug(1, Form("Low centrality %f and high centrality %f\n",lowcentrality,highcentrality));
}
}
if(TMath::Abs(varMax[ivar] - binLimits[container->GetNBins(ivar)]) < kVerySmall){
AliInfo("Protection against overflow bin");
varMax[ivar] -= kVerySmall;
}
if(varMax[ivar] > binLimits[container->GetNBins(ivar)]){
AliError("Upper limit exceeds allowed range");
varMax[ivar] = binLimits[container->GetNBins(ivar)] - kVerySmall;
}
if(TMath::Abs(varMin[ivar] - binLimits[container->GetNBins(ivar)]) < kVerySmall){
AliInfo("Protection against overflow bin");
varMin[ivar] -= kVerySmall;
}
if(varMin[ivar] > binLimits[container->GetNBins(ivar)]){
AliError("Upper limit exceeds allowed range");
varMin[ivar] = binLimits[container->GetNBins(ivar)] - kVerySmall;
}
AliDebug(1, Form("variable %d: Settting limits to %f and %f\n", ivar, varMin[ivar], varMax[ivar]));
delete[] binLimits;
}
AliCFContainer *k = container->MakeSlice(nDim, dimensions, varMin, varMax);
delete[] varMin; delete[] varMax;
return k;
}
THnSparseF *AliHFECorrectSpectrumBase::GetSlicedCorrelation(THnSparseF *correlationmatrix, Int_t nDim, Int_t *dimensions,Chargetype_t charge,Int_t centralitylow, Int_t centralityhigh, Bool_t doCentralityProjection) const {
Int_t ndimensions = correlationmatrix->GetNdimensions();
if(ndimensions < (2*nDim)) {
AliError("Problem in the dimensions");
return NULL;
}
if((5+((Int_t)(ndimensions/2.))) < ndimensions) {
if((centralitylow >=0) && (centralityhigh >=0)) {
TAxis *axiscentrality0 = correlationmatrix->GetAxis(5);
TAxis *axiscentrality1 = correlationmatrix->GetAxis(5+((Int_t)(ndimensions/2.)));
Int_t bins0 = axiscentrality0->GetNbins();
Int_t bins1 = axiscentrality1->GetNbins();
AliDebug(1, Form("Number of centrality bins: %d and %d\n",bins0,bins1));
if(bins0 != bins1) {
AliError("Problem in the dimensions");
return NULL;
}
if((centralitylow>= 0) && (centralitylow<bins0) && (centralityhigh>= 0) && (centralityhigh<bins0) && doCentralityProjection) {
axiscentrality0->SetRangeUser(centralitylow,centralityhigh);
axiscentrality1->SetRangeUser(centralitylow,centralityhigh);
Double_t lowcentrality0 = axiscentrality0->GetBinLowEdge(axiscentrality0->FindBin(centralitylow));
Double_t highcentrality0 = axiscentrality0->GetBinUpEdge(axiscentrality0->FindBin(centralityhigh));
Double_t lowcentrality1 = axiscentrality1->GetBinLowEdge(axiscentrality1->FindBin(centralitylow));
Double_t highcentrality1 = axiscentrality1->GetBinUpEdge(axiscentrality1->FindBin(centralityhigh));
AliDebug(1,Form("0 Low centrality %f and high centrality %f\n",lowcentrality0,highcentrality0));
AliDebug(1,Form("1 Low centrality %f and high centrality %f\n",lowcentrality1,highcentrality1));
}
}
}
if(fEtaSelected){
if((1+((Int_t)(ndimensions/2.))) < ndimensions) {
TAxis *axiseta0 = correlationmatrix->GetAxis(1);
TAxis *axiseta1 = correlationmatrix->GetAxis(1+((Int_t)(ndimensions/2.)));
Int_t bins0 = axiseta0->GetNbins();
Int_t bins1 = axiseta1->GetNbins();
AliDebug(1, Form("Number of eta bins: %d and %d\n",bins0,bins1));
if(bins0 != bins1) {
AliError("Problem in the dimensions");
return NULL;
}
axiseta0->SetRangeUser(fEtaRange[0],fEtaRange[1]);
axiseta1->SetRangeUser(fEtaRange[0],fEtaRange[1]);
Double_t loweta0 = axiseta0->GetBinLowEdge(axiseta0->FindBin(fEtaRange[0]));
Double_t higheta0 = axiseta0->GetBinUpEdge(axiseta0->FindBin(fEtaRange[1]));
Double_t loweta1 = axiseta1->GetBinLowEdge(axiseta1->FindBin(fEtaRange[0]));
Double_t higheta1 = axiseta1->GetBinUpEdge(axiseta1->FindBin(fEtaRange[1]));
AliInfo(Form("0 Low eta %f and high eta %f\n",loweta0,higheta0));
AliInfo(Form("1 Low eta %f and high eta %f\n",loweta1,higheta1));
}
}
if(charge != kAllCharge) {
if((3+((Int_t)(ndimensions/2.))) < ndimensions) {
TAxis *axischarge0 = correlationmatrix->GetAxis(3);
TAxis *axischarge1 = correlationmatrix->GetAxis(3+((Int_t)(ndimensions/2.)));
Int_t bins0 = axischarge0->GetNbins();
Int_t bins1 = axischarge1->GetNbins();
AliDebug(1, Form("Number of charge bins: %d and %d\n",bins0,bins1));
if(bins0 != bins1) {
AliError("Problem in the dimensions");
return NULL;
}
axischarge0->SetRangeUser(charge,charge);
axischarge1->SetRangeUser(charge,charge);
Double_t lowcharge0 = axischarge0->GetBinLowEdge(axischarge0->FindBin(charge));
Double_t highcharge0 = axischarge0->GetBinUpEdge(axischarge0->FindBin(charge));
Double_t lowcharge1 = axischarge1->GetBinLowEdge(axischarge1->FindBin(charge));
Double_t highcharge1 = axischarge1->GetBinUpEdge(axischarge1->FindBin(charge));
AliInfo(Form("0 Low charge %f and high charge %f\n",lowcharge0,highcharge0));
AliInfo(Form("1 Low charge %f and high charge %f\n",lowcharge1,highcharge1));
}
}
Int_t ndimensionsContainer = (Int_t) ndimensions/2;
Int_t *dim = new Int_t[nDim*2];
for(Int_t iter=0; iter < nDim; iter++){
dim[iter] = dimensions[iter];
dim[iter+nDim] = ndimensionsContainer + dimensions[iter];
}
THnSparseF *k = (THnSparseF *) correlationmatrix->Projection(nDim*2,dim);
delete[] dim;
return k;
}
void AliHFECorrectSpectrumBase::CorrectStatErr(AliCFDataGrid *backgroundGrid) const {
TH1D *h1 = (TH1D*)backgroundGrid->Project(0);
Int_t nbinX = h1->GetNbinsX();
Int_t bins[1];
for(Long_t i = 1; i <= nbinX; i++) {
bins[0] = i;
Float_t content = h1->GetBinContent(i);
if(content>0){
Float_t error = TMath::Sqrt(content);
backgroundGrid->SetElementError(bins, error);
}
}
}
TObject* AliHFECorrectSpectrumBase::GetSpectrum(const AliCFContainer * const c, Int_t step) {
AliCFDataGrid* data = new AliCFDataGrid("data","",*c, step);
return data;
}
TObject* AliHFECorrectSpectrumBase::GetEfficiency(const AliCFContainer * const c, Int_t step, Int_t step0){
TString name("eff");
name += step;
name+= step0;
AliCFEffGrid* eff = new AliCFEffGrid((const char*)name,"",*c);
eff->CalculateEfficiency(step,step0);
return eff;
}
void AliHFECorrectSpectrumBase::SetNbDimensions(Int_t nbDimensions) {
fNbDimensions = nbDimensions;
switch(fNbDimensions){
case 1: fDims[0] = 0;
break;
case 2: for(Int_t i = 0; i < 2; i++) fDims[i] = i;
break;
case 3: for(Int_t i = 0; i < 3; i++) fDims[i] = i;
break;
default:
AliError("Container with this number of dimensions not foreseen (yet)");
return ;
};
}
AliHFECorrectSpectrumBase.cxx:1 AliHFECorrectSpectrumBase.cxx:2 AliHFECorrectSpectrumBase.cxx:3 AliHFECorrectSpectrumBase.cxx:4 AliHFECorrectSpectrumBase.cxx:5 AliHFECorrectSpectrumBase.cxx:6 AliHFECorrectSpectrumBase.cxx:7 AliHFECorrectSpectrumBase.cxx:8 AliHFECorrectSpectrumBase.cxx:9 AliHFECorrectSpectrumBase.cxx:10 AliHFECorrectSpectrumBase.cxx:11 AliHFECorrectSpectrumBase.cxx:12 AliHFECorrectSpectrumBase.cxx:13 AliHFECorrectSpectrumBase.cxx:14 AliHFECorrectSpectrumBase.cxx:15 AliHFECorrectSpectrumBase.cxx:16 AliHFECorrectSpectrumBase.cxx:17 AliHFECorrectSpectrumBase.cxx:18 AliHFECorrectSpectrumBase.cxx:19 AliHFECorrectSpectrumBase.cxx:20 AliHFECorrectSpectrumBase.cxx:21 AliHFECorrectSpectrumBase.cxx:22 AliHFECorrectSpectrumBase.cxx:23 AliHFECorrectSpectrumBase.cxx:24 AliHFECorrectSpectrumBase.cxx:25 AliHFECorrectSpectrumBase.cxx:26 AliHFECorrectSpectrumBase.cxx:27 AliHFECorrectSpectrumBase.cxx:28 AliHFECorrectSpectrumBase.cxx:29 AliHFECorrectSpectrumBase.cxx:30 AliHFECorrectSpectrumBase.cxx:31 AliHFECorrectSpectrumBase.cxx:32 AliHFECorrectSpectrumBase.cxx:33 AliHFECorrectSpectrumBase.cxx:34 AliHFECorrectSpectrumBase.cxx:35 AliHFECorrectSpectrumBase.cxx:36 AliHFECorrectSpectrumBase.cxx:37 AliHFECorrectSpectrumBase.cxx:38 AliHFECorrectSpectrumBase.cxx:39 AliHFECorrectSpectrumBase.cxx:40 AliHFECorrectSpectrumBase.cxx:41 AliHFECorrectSpectrumBase.cxx:42 AliHFECorrectSpectrumBase.cxx:43 AliHFECorrectSpectrumBase.cxx:44 AliHFECorrectSpectrumBase.cxx:45 AliHFECorrectSpectrumBase.cxx:46 AliHFECorrectSpectrumBase.cxx:47 AliHFECorrectSpectrumBase.cxx:48 AliHFECorrectSpectrumBase.cxx:49 AliHFECorrectSpectrumBase.cxx:50 AliHFECorrectSpectrumBase.cxx:51 AliHFECorrectSpectrumBase.cxx:52 AliHFECorrectSpectrumBase.cxx:53 AliHFECorrectSpectrumBase.cxx:54 AliHFECorrectSpectrumBase.cxx:55 AliHFECorrectSpectrumBase.cxx:56 AliHFECorrectSpectrumBase.cxx:57 AliHFECorrectSpectrumBase.cxx:58 AliHFECorrectSpectrumBase.cxx:59 AliHFECorrectSpectrumBase.cxx:60 AliHFECorrectSpectrumBase.cxx:61 AliHFECorrectSpectrumBase.cxx:62 AliHFECorrectSpectrumBase.cxx:63 AliHFECorrectSpectrumBase.cxx:64 AliHFECorrectSpectrumBase.cxx:65 AliHFECorrectSpectrumBase.cxx:66 AliHFECorrectSpectrumBase.cxx:67 AliHFECorrectSpectrumBase.cxx:68 AliHFECorrectSpectrumBase.cxx:69 AliHFECorrectSpectrumBase.cxx:70 AliHFECorrectSpectrumBase.cxx:71 AliHFECorrectSpectrumBase.cxx:72 AliHFECorrectSpectrumBase.cxx:73 AliHFECorrectSpectrumBase.cxx:74 AliHFECorrectSpectrumBase.cxx:75 AliHFECorrectSpectrumBase.cxx:76 AliHFECorrectSpectrumBase.cxx:77 AliHFECorrectSpectrumBase.cxx:78 AliHFECorrectSpectrumBase.cxx:79 AliHFECorrectSpectrumBase.cxx:80 AliHFECorrectSpectrumBase.cxx:81 AliHFECorrectSpectrumBase.cxx:82 AliHFECorrectSpectrumBase.cxx:83 AliHFECorrectSpectrumBase.cxx:84 AliHFECorrectSpectrumBase.cxx:85 AliHFECorrectSpectrumBase.cxx:86 AliHFECorrectSpectrumBase.cxx:87 AliHFECorrectSpectrumBase.cxx:88 AliHFECorrectSpectrumBase.cxx:89 AliHFECorrectSpectrumBase.cxx:90 AliHFECorrectSpectrumBase.cxx:91 AliHFECorrectSpectrumBase.cxx:92 AliHFECorrectSpectrumBase.cxx:93 AliHFECorrectSpectrumBase.cxx:94 AliHFECorrectSpectrumBase.cxx:95 AliHFECorrectSpectrumBase.cxx:96 AliHFECorrectSpectrumBase.cxx:97 AliHFECorrectSpectrumBase.cxx:98 AliHFECorrectSpectrumBase.cxx:99 AliHFECorrectSpectrumBase.cxx:100 AliHFECorrectSpectrumBase.cxx:101 AliHFECorrectSpectrumBase.cxx:102 AliHFECorrectSpectrumBase.cxx:103 AliHFECorrectSpectrumBase.cxx:104 AliHFECorrectSpectrumBase.cxx:105 AliHFECorrectSpectrumBase.cxx:106 AliHFECorrectSpectrumBase.cxx:107 AliHFECorrectSpectrumBase.cxx:108 AliHFECorrectSpectrumBase.cxx:109 AliHFECorrectSpectrumBase.cxx:110 AliHFECorrectSpectrumBase.cxx:111 AliHFECorrectSpectrumBase.cxx:112 AliHFECorrectSpectrumBase.cxx:113 AliHFECorrectSpectrumBase.cxx:114 AliHFECorrectSpectrumBase.cxx:115 AliHFECorrectSpectrumBase.cxx:116 AliHFECorrectSpectrumBase.cxx:117 AliHFECorrectSpectrumBase.cxx:118 AliHFECorrectSpectrumBase.cxx:119 AliHFECorrectSpectrumBase.cxx:120 AliHFECorrectSpectrumBase.cxx:121 AliHFECorrectSpectrumBase.cxx:122 AliHFECorrectSpectrumBase.cxx:123 AliHFECorrectSpectrumBase.cxx:124 AliHFECorrectSpectrumBase.cxx:125 AliHFECorrectSpectrumBase.cxx:126 AliHFECorrectSpectrumBase.cxx:127 AliHFECorrectSpectrumBase.cxx:128 AliHFECorrectSpectrumBase.cxx:129 AliHFECorrectSpectrumBase.cxx:130 AliHFECorrectSpectrumBase.cxx:131 AliHFECorrectSpectrumBase.cxx:132 AliHFECorrectSpectrumBase.cxx:133 AliHFECorrectSpectrumBase.cxx:134 AliHFECorrectSpectrumBase.cxx:135 AliHFECorrectSpectrumBase.cxx:136 AliHFECorrectSpectrumBase.cxx:137 AliHFECorrectSpectrumBase.cxx:138 AliHFECorrectSpectrumBase.cxx:139 AliHFECorrectSpectrumBase.cxx:140 AliHFECorrectSpectrumBase.cxx:141 AliHFECorrectSpectrumBase.cxx:142 AliHFECorrectSpectrumBase.cxx:143 AliHFECorrectSpectrumBase.cxx:144 AliHFECorrectSpectrumBase.cxx:145 AliHFECorrectSpectrumBase.cxx:146 AliHFECorrectSpectrumBase.cxx:147 AliHFECorrectSpectrumBase.cxx:148 AliHFECorrectSpectrumBase.cxx:149 AliHFECorrectSpectrumBase.cxx:150 AliHFECorrectSpectrumBase.cxx:151 AliHFECorrectSpectrumBase.cxx:152 AliHFECorrectSpectrumBase.cxx:153 AliHFECorrectSpectrumBase.cxx:154 AliHFECorrectSpectrumBase.cxx:155 AliHFECorrectSpectrumBase.cxx:156 AliHFECorrectSpectrumBase.cxx:157 AliHFECorrectSpectrumBase.cxx:158 AliHFECorrectSpectrumBase.cxx:159 AliHFECorrectSpectrumBase.cxx:160 AliHFECorrectSpectrumBase.cxx:161 AliHFECorrectSpectrumBase.cxx:162 AliHFECorrectSpectrumBase.cxx:163 AliHFECorrectSpectrumBase.cxx:164 AliHFECorrectSpectrumBase.cxx:165 AliHFECorrectSpectrumBase.cxx:166 AliHFECorrectSpectrumBase.cxx:167 AliHFECorrectSpectrumBase.cxx:168 AliHFECorrectSpectrumBase.cxx:169 AliHFECorrectSpectrumBase.cxx:170 AliHFECorrectSpectrumBase.cxx:171 AliHFECorrectSpectrumBase.cxx:172 AliHFECorrectSpectrumBase.cxx:173 AliHFECorrectSpectrumBase.cxx:174 AliHFECorrectSpectrumBase.cxx:175 AliHFECorrectSpectrumBase.cxx:176 AliHFECorrectSpectrumBase.cxx:177 AliHFECorrectSpectrumBase.cxx:178 AliHFECorrectSpectrumBase.cxx:179 AliHFECorrectSpectrumBase.cxx:180 AliHFECorrectSpectrumBase.cxx:181 AliHFECorrectSpectrumBase.cxx:182 AliHFECorrectSpectrumBase.cxx:183 AliHFECorrectSpectrumBase.cxx:184 AliHFECorrectSpectrumBase.cxx:185 AliHFECorrectSpectrumBase.cxx:186 AliHFECorrectSpectrumBase.cxx:187 AliHFECorrectSpectrumBase.cxx:188 AliHFECorrectSpectrumBase.cxx:189 AliHFECorrectSpectrumBase.cxx:190 AliHFECorrectSpectrumBase.cxx:191 AliHFECorrectSpectrumBase.cxx:192 AliHFECorrectSpectrumBase.cxx:193 AliHFECorrectSpectrumBase.cxx:194 AliHFECorrectSpectrumBase.cxx:195 AliHFECorrectSpectrumBase.cxx:196 AliHFECorrectSpectrumBase.cxx:197 AliHFECorrectSpectrumBase.cxx:198 AliHFECorrectSpectrumBase.cxx:199 AliHFECorrectSpectrumBase.cxx:200 AliHFECorrectSpectrumBase.cxx:201 AliHFECorrectSpectrumBase.cxx:202 AliHFECorrectSpectrumBase.cxx:203 AliHFECorrectSpectrumBase.cxx:204 AliHFECorrectSpectrumBase.cxx:205 AliHFECorrectSpectrumBase.cxx:206 AliHFECorrectSpectrumBase.cxx:207 AliHFECorrectSpectrumBase.cxx:208 AliHFECorrectSpectrumBase.cxx:209 AliHFECorrectSpectrumBase.cxx:210 AliHFECorrectSpectrumBase.cxx:211 AliHFECorrectSpectrumBase.cxx:212 AliHFECorrectSpectrumBase.cxx:213 AliHFECorrectSpectrumBase.cxx:214 AliHFECorrectSpectrumBase.cxx:215 AliHFECorrectSpectrumBase.cxx:216 AliHFECorrectSpectrumBase.cxx:217 AliHFECorrectSpectrumBase.cxx:218 AliHFECorrectSpectrumBase.cxx:219 AliHFECorrectSpectrumBase.cxx:220 AliHFECorrectSpectrumBase.cxx:221 AliHFECorrectSpectrumBase.cxx:222 AliHFECorrectSpectrumBase.cxx:223 AliHFECorrectSpectrumBase.cxx:224 AliHFECorrectSpectrumBase.cxx:225 AliHFECorrectSpectrumBase.cxx:226 AliHFECorrectSpectrumBase.cxx:227 AliHFECorrectSpectrumBase.cxx:228 AliHFECorrectSpectrumBase.cxx:229 AliHFECorrectSpectrumBase.cxx:230 AliHFECorrectSpectrumBase.cxx:231 AliHFECorrectSpectrumBase.cxx:232 AliHFECorrectSpectrumBase.cxx:233 AliHFECorrectSpectrumBase.cxx:234 AliHFECorrectSpectrumBase.cxx:235 AliHFECorrectSpectrumBase.cxx:236 AliHFECorrectSpectrumBase.cxx:237 AliHFECorrectSpectrumBase.cxx:238 AliHFECorrectSpectrumBase.cxx:239 AliHFECorrectSpectrumBase.cxx:240 AliHFECorrectSpectrumBase.cxx:241 AliHFECorrectSpectrumBase.cxx:242 AliHFECorrectSpectrumBase.cxx:243 AliHFECorrectSpectrumBase.cxx:244 AliHFECorrectSpectrumBase.cxx:245 AliHFECorrectSpectrumBase.cxx:246 AliHFECorrectSpectrumBase.cxx:247 AliHFECorrectSpectrumBase.cxx:248 AliHFECorrectSpectrumBase.cxx:249 AliHFECorrectSpectrumBase.cxx:250 AliHFECorrectSpectrumBase.cxx:251 AliHFECorrectSpectrumBase.cxx:252 AliHFECorrectSpectrumBase.cxx:253 AliHFECorrectSpectrumBase.cxx:254 AliHFECorrectSpectrumBase.cxx:255 AliHFECorrectSpectrumBase.cxx:256 AliHFECorrectSpectrumBase.cxx:257 AliHFECorrectSpectrumBase.cxx:258 AliHFECorrectSpectrumBase.cxx:259 AliHFECorrectSpectrumBase.cxx:260 AliHFECorrectSpectrumBase.cxx:261 AliHFECorrectSpectrumBase.cxx:262 AliHFECorrectSpectrumBase.cxx:263 AliHFECorrectSpectrumBase.cxx:264 AliHFECorrectSpectrumBase.cxx:265 AliHFECorrectSpectrumBase.cxx:266 AliHFECorrectSpectrumBase.cxx:267 AliHFECorrectSpectrumBase.cxx:268 AliHFECorrectSpectrumBase.cxx:269 AliHFECorrectSpectrumBase.cxx:270 AliHFECorrectSpectrumBase.cxx:271 AliHFECorrectSpectrumBase.cxx:272 AliHFECorrectSpectrumBase.cxx:273 AliHFECorrectSpectrumBase.cxx:274 AliHFECorrectSpectrumBase.cxx:275 AliHFECorrectSpectrumBase.cxx:276 AliHFECorrectSpectrumBase.cxx:277 AliHFECorrectSpectrumBase.cxx:278 AliHFECorrectSpectrumBase.cxx:279 AliHFECorrectSpectrumBase.cxx:280 AliHFECorrectSpectrumBase.cxx:281 AliHFECorrectSpectrumBase.cxx:282 AliHFECorrectSpectrumBase.cxx:283 AliHFECorrectSpectrumBase.cxx:284 AliHFECorrectSpectrumBase.cxx:285 AliHFECorrectSpectrumBase.cxx:286 AliHFECorrectSpectrumBase.cxx:287 AliHFECorrectSpectrumBase.cxx:288 AliHFECorrectSpectrumBase.cxx:289 AliHFECorrectSpectrumBase.cxx:290 AliHFECorrectSpectrumBase.cxx:291 AliHFECorrectSpectrumBase.cxx:292 AliHFECorrectSpectrumBase.cxx:293 AliHFECorrectSpectrumBase.cxx:294 AliHFECorrectSpectrumBase.cxx:295 AliHFECorrectSpectrumBase.cxx:296 AliHFECorrectSpectrumBase.cxx:297 AliHFECorrectSpectrumBase.cxx:298 AliHFECorrectSpectrumBase.cxx:299 AliHFECorrectSpectrumBase.cxx:300 AliHFECorrectSpectrumBase.cxx:301 AliHFECorrectSpectrumBase.cxx:302 AliHFECorrectSpectrumBase.cxx:303 AliHFECorrectSpectrumBase.cxx:304 AliHFECorrectSpectrumBase.cxx:305 AliHFECorrectSpectrumBase.cxx:306 AliHFECorrectSpectrumBase.cxx:307 AliHFECorrectSpectrumBase.cxx:308 AliHFECorrectSpectrumBase.cxx:309 AliHFECorrectSpectrumBase.cxx:310 AliHFECorrectSpectrumBase.cxx:311 AliHFECorrectSpectrumBase.cxx:312 AliHFECorrectSpectrumBase.cxx:313 AliHFECorrectSpectrumBase.cxx:314 AliHFECorrectSpectrumBase.cxx:315 AliHFECorrectSpectrumBase.cxx:316 AliHFECorrectSpectrumBase.cxx:317 AliHFECorrectSpectrumBase.cxx:318 AliHFECorrectSpectrumBase.cxx:319 AliHFECorrectSpectrumBase.cxx:320 AliHFECorrectSpectrumBase.cxx:321 AliHFECorrectSpectrumBase.cxx:322 AliHFECorrectSpectrumBase.cxx:323 AliHFECorrectSpectrumBase.cxx:324 AliHFECorrectSpectrumBase.cxx:325 AliHFECorrectSpectrumBase.cxx:326 AliHFECorrectSpectrumBase.cxx:327 AliHFECorrectSpectrumBase.cxx:328 AliHFECorrectSpectrumBase.cxx:329 AliHFECorrectSpectrumBase.cxx:330 AliHFECorrectSpectrumBase.cxx:331 AliHFECorrectSpectrumBase.cxx:332 AliHFECorrectSpectrumBase.cxx:333 AliHFECorrectSpectrumBase.cxx:334 AliHFECorrectSpectrumBase.cxx:335 AliHFECorrectSpectrumBase.cxx:336 AliHFECorrectSpectrumBase.cxx:337 AliHFECorrectSpectrumBase.cxx:338 AliHFECorrectSpectrumBase.cxx:339 AliHFECorrectSpectrumBase.cxx:340 AliHFECorrectSpectrumBase.cxx:341 AliHFECorrectSpectrumBase.cxx:342 AliHFECorrectSpectrumBase.cxx:343 AliHFECorrectSpectrumBase.cxx:344 AliHFECorrectSpectrumBase.cxx:345 AliHFECorrectSpectrumBase.cxx:346 AliHFECorrectSpectrumBase.cxx:347 AliHFECorrectSpectrumBase.cxx:348 AliHFECorrectSpectrumBase.cxx:349 AliHFECorrectSpectrumBase.cxx:350 AliHFECorrectSpectrumBase.cxx:351 AliHFECorrectSpectrumBase.cxx:352 AliHFECorrectSpectrumBase.cxx:353 AliHFECorrectSpectrumBase.cxx:354 AliHFECorrectSpectrumBase.cxx:355 AliHFECorrectSpectrumBase.cxx:356 AliHFECorrectSpectrumBase.cxx:357 AliHFECorrectSpectrumBase.cxx:358 AliHFECorrectSpectrumBase.cxx:359 AliHFECorrectSpectrumBase.cxx:360 AliHFECorrectSpectrumBase.cxx:361 AliHFECorrectSpectrumBase.cxx:362 AliHFECorrectSpectrumBase.cxx:363 AliHFECorrectSpectrumBase.cxx:364 AliHFECorrectSpectrumBase.cxx:365 AliHFECorrectSpectrumBase.cxx:366 AliHFECorrectSpectrumBase.cxx:367 AliHFECorrectSpectrumBase.cxx:368 AliHFECorrectSpectrumBase.cxx:369 AliHFECorrectSpectrumBase.cxx:370 AliHFECorrectSpectrumBase.cxx:371 AliHFECorrectSpectrumBase.cxx:372 AliHFECorrectSpectrumBase.cxx:373 AliHFECorrectSpectrumBase.cxx:374 AliHFECorrectSpectrumBase.cxx:375 AliHFECorrectSpectrumBase.cxx:376 AliHFECorrectSpectrumBase.cxx:377 AliHFECorrectSpectrumBase.cxx:378 AliHFECorrectSpectrumBase.cxx:379 AliHFECorrectSpectrumBase.cxx:380 AliHFECorrectSpectrumBase.cxx:381 AliHFECorrectSpectrumBase.cxx:382 AliHFECorrectSpectrumBase.cxx:383 AliHFECorrectSpectrumBase.cxx:384 AliHFECorrectSpectrumBase.cxx:385 AliHFECorrectSpectrumBase.cxx:386 AliHFECorrectSpectrumBase.cxx:387 AliHFECorrectSpectrumBase.cxx:388 AliHFECorrectSpectrumBase.cxx:389 AliHFECorrectSpectrumBase.cxx:390 AliHFECorrectSpectrumBase.cxx:391 AliHFECorrectSpectrumBase.cxx:392 AliHFECorrectSpectrumBase.cxx:393 AliHFECorrectSpectrumBase.cxx:394 AliHFECorrectSpectrumBase.cxx:395 AliHFECorrectSpectrumBase.cxx:396 AliHFECorrectSpectrumBase.cxx:397 AliHFECorrectSpectrumBase.cxx:398 AliHFECorrectSpectrumBase.cxx:399 AliHFECorrectSpectrumBase.cxx:400 AliHFECorrectSpectrumBase.cxx:401 AliHFECorrectSpectrumBase.cxx:402 AliHFECorrectSpectrumBase.cxx:403 AliHFECorrectSpectrumBase.cxx:404 AliHFECorrectSpectrumBase.cxx:405 AliHFECorrectSpectrumBase.cxx:406 AliHFECorrectSpectrumBase.cxx:407 AliHFECorrectSpectrumBase.cxx:408 AliHFECorrectSpectrumBase.cxx:409 AliHFECorrectSpectrumBase.cxx:410 AliHFECorrectSpectrumBase.cxx:411 AliHFECorrectSpectrumBase.cxx:412 AliHFECorrectSpectrumBase.cxx:413 AliHFECorrectSpectrumBase.cxx:414 AliHFECorrectSpectrumBase.cxx:415 AliHFECorrectSpectrumBase.cxx:416 AliHFECorrectSpectrumBase.cxx:417 AliHFECorrectSpectrumBase.cxx:418 AliHFECorrectSpectrumBase.cxx:419 AliHFECorrectSpectrumBase.cxx:420 AliHFECorrectSpectrumBase.cxx:421 AliHFECorrectSpectrumBase.cxx:422 AliHFECorrectSpectrumBase.cxx:423 AliHFECorrectSpectrumBase.cxx:424 AliHFECorrectSpectrumBase.cxx:425 AliHFECorrectSpectrumBase.cxx:426 AliHFECorrectSpectrumBase.cxx:427 AliHFECorrectSpectrumBase.cxx:428 AliHFECorrectSpectrumBase.cxx:429 AliHFECorrectSpectrumBase.cxx:430 AliHFECorrectSpectrumBase.cxx:431 AliHFECorrectSpectrumBase.cxx:432 AliHFECorrectSpectrumBase.cxx:433 AliHFECorrectSpectrumBase.cxx:434 AliHFECorrectSpectrumBase.cxx:435 AliHFECorrectSpectrumBase.cxx:436 AliHFECorrectSpectrumBase.cxx:437 AliHFECorrectSpectrumBase.cxx:438 AliHFECorrectSpectrumBase.cxx:439 AliHFECorrectSpectrumBase.cxx:440 AliHFECorrectSpectrumBase.cxx:441 AliHFECorrectSpectrumBase.cxx:442 AliHFECorrectSpectrumBase.cxx:443 AliHFECorrectSpectrumBase.cxx:444 AliHFECorrectSpectrumBase.cxx:445 AliHFECorrectSpectrumBase.cxx:446 AliHFECorrectSpectrumBase.cxx:447 AliHFECorrectSpectrumBase.cxx:448 AliHFECorrectSpectrumBase.cxx:449 AliHFECorrectSpectrumBase.cxx:450 AliHFECorrectSpectrumBase.cxx:451 AliHFECorrectSpectrumBase.cxx:452 AliHFECorrectSpectrumBase.cxx:453 AliHFECorrectSpectrumBase.cxx:454 AliHFECorrectSpectrumBase.cxx:455 AliHFECorrectSpectrumBase.cxx:456 AliHFECorrectSpectrumBase.cxx:457 AliHFECorrectSpectrumBase.cxx:458 AliHFECorrectSpectrumBase.cxx:459 AliHFECorrectSpectrumBase.cxx:460 AliHFECorrectSpectrumBase.cxx:461 AliHFECorrectSpectrumBase.cxx:462 AliHFECorrectSpectrumBase.cxx:463 AliHFECorrectSpectrumBase.cxx:464 AliHFECorrectSpectrumBase.cxx:465 AliHFECorrectSpectrumBase.cxx:466 AliHFECorrectSpectrumBase.cxx:467 AliHFECorrectSpectrumBase.cxx:468 AliHFECorrectSpectrumBase.cxx:469 AliHFECorrectSpectrumBase.cxx:470 AliHFECorrectSpectrumBase.cxx:471 AliHFECorrectSpectrumBase.cxx:472 AliHFECorrectSpectrumBase.cxx:473 AliHFECorrectSpectrumBase.cxx:474 AliHFECorrectSpectrumBase.cxx:475 AliHFECorrectSpectrumBase.cxx:476 AliHFECorrectSpectrumBase.cxx:477 AliHFECorrectSpectrumBase.cxx:478 AliHFECorrectSpectrumBase.cxx:479 AliHFECorrectSpectrumBase.cxx:480 AliHFECorrectSpectrumBase.cxx:481 AliHFECorrectSpectrumBase.cxx:482 AliHFECorrectSpectrumBase.cxx:483 AliHFECorrectSpectrumBase.cxx:484 AliHFECorrectSpectrumBase.cxx:485 AliHFECorrectSpectrumBase.cxx:486 AliHFECorrectSpectrumBase.cxx:487 AliHFECorrectSpectrumBase.cxx:488 AliHFECorrectSpectrumBase.cxx:489 AliHFECorrectSpectrumBase.cxx:490 AliHFECorrectSpectrumBase.cxx:491 AliHFECorrectSpectrumBase.cxx:492 AliHFECorrectSpectrumBase.cxx:493 AliHFECorrectSpectrumBase.cxx:494 AliHFECorrectSpectrumBase.cxx:495 AliHFECorrectSpectrumBase.cxx:496 AliHFECorrectSpectrumBase.cxx:497 AliHFECorrectSpectrumBase.cxx:498 AliHFECorrectSpectrumBase.cxx:499 AliHFECorrectSpectrumBase.cxx:500 AliHFECorrectSpectrumBase.cxx:501 AliHFECorrectSpectrumBase.cxx:502 AliHFECorrectSpectrumBase.cxx:503 AliHFECorrectSpectrumBase.cxx:504 AliHFECorrectSpectrumBase.cxx:505 AliHFECorrectSpectrumBase.cxx:506 AliHFECorrectSpectrumBase.cxx:507 AliHFECorrectSpectrumBase.cxx:508 AliHFECorrectSpectrumBase.cxx:509 AliHFECorrectSpectrumBase.cxx:510 AliHFECorrectSpectrumBase.cxx:511 AliHFECorrectSpectrumBase.cxx:512 AliHFECorrectSpectrumBase.cxx:513 AliHFECorrectSpectrumBase.cxx:514 AliHFECorrectSpectrumBase.cxx:515 AliHFECorrectSpectrumBase.cxx:516 AliHFECorrectSpectrumBase.cxx:517 AliHFECorrectSpectrumBase.cxx:518 AliHFECorrectSpectrumBase.cxx:519 AliHFECorrectSpectrumBase.cxx:520 AliHFECorrectSpectrumBase.cxx:521 AliHFECorrectSpectrumBase.cxx:522 AliHFECorrectSpectrumBase.cxx:523 AliHFECorrectSpectrumBase.cxx:524 AliHFECorrectSpectrumBase.cxx:525 AliHFECorrectSpectrumBase.cxx:526 AliHFECorrectSpectrumBase.cxx:527 AliHFECorrectSpectrumBase.cxx:528 AliHFECorrectSpectrumBase.cxx:529 AliHFECorrectSpectrumBase.cxx:530 AliHFECorrectSpectrumBase.cxx:531 AliHFECorrectSpectrumBase.cxx:532 AliHFECorrectSpectrumBase.cxx:533 AliHFECorrectSpectrumBase.cxx:534 AliHFECorrectSpectrumBase.cxx:535 AliHFECorrectSpectrumBase.cxx:536 AliHFECorrectSpectrumBase.cxx:537 AliHFECorrectSpectrumBase.cxx:538 AliHFECorrectSpectrumBase.cxx:539 AliHFECorrectSpectrumBase.cxx:540 AliHFECorrectSpectrumBase.cxx:541 AliHFECorrectSpectrumBase.cxx:542 AliHFECorrectSpectrumBase.cxx:543 AliHFECorrectSpectrumBase.cxx:544 AliHFECorrectSpectrumBase.cxx:545 AliHFECorrectSpectrumBase.cxx:546