ROOT logo

/**************************************************************************
 * Copyright(c) 1998-1999, 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.                  *
 **************************************************************************/

//------------------------------------------------------------------------------
// Implementation of AliPerfAnalyzeInvPt class. It analyzes the output of
// AliPerformancePtCalib.cxx  and AliPerformancePtCalibMC.cxx: via
// AliPerformancePtCalib::Analyse() or AliPerformancePtCalibMC::Analyse()
//
// Projection of charge/pt vs theta and vs phi resp. histoprams will be fitted with either
// polynomial or gaussian fit function to extract minimum position of charge/pt.
// Fit options and theta, phi bins can be set by user.
// Attention: use the Set* functions of AliPerformancePtCalib.h and AliPerformancePtCalibMC.h
// when running AliPerformancePtCalib*::Analyse()
// The result of the analysis (histograms/graphs) are stored in the folder which is
// a data member of AliPerformancePtCalib*.
//
// Author: S.Schuchmann 11/13/2009 
//------------------------------------------------------------------------------

/*
 
// after running the performance task of AliPerformancePtCalib* or AliPerformancePtCalibMC*
// read the file, and get component:

TFile f("Output.root");
AliPerformancePtCalib *compObj = (AliPerformancePtCalib*)coutput->FindObject("AliPerformancePtCalib");
//or
AliPerformancePtCalibMC *compObj = (AliPerformancePtCalibMC*)coutput->FindObject("AliPerformancePtCalibMC");

// set phi and theta bins for fitting and analyse comparison data
compObj->SetProjBinsTheta(thetaBins,nThetaBins,minPhi, maxPhi);
compObj->SetProjBinsPhi(phiBins,nPhiBins,minTheta,maxTheta);
compObj->SetMakeFitOption(kFALSE,exclRange,fitRange);
compObj->SetDoRebin(rebin);
compObj->Analyse();
//for details see functions of class AliPerformancePtCalib*

// the output histograms/graphs will be stored in the folder "folderRes" 
compObj->GetAnalysisFolder()->ls("*");

// user can save whole comparison object (or only folder with anlysed histograms) 
// in the seperate output file (e.g.)
TFile fout("Analysed_InvPt.root","recreate");
compObj->Write(); // compObj->GetAnalysisFolder()->Write();
fout.Close();

*/

#include "TNamed.h"
#include "TF1.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TH1D.h"
#include "TMath.h"
#include "TGraphErrors.h"
#include "TCanvas.h"
#include "TObjArray.h"

#include "AliPerfAnalyzeInvPt.h"

ClassImp(AliPerfAnalyzeInvPt)


// fit functions
//____________________________________________________________________________________________________________________________________________
   Double_t AliPerfAnalyzeInvPt::Polynomial(Double_t *x, const Double_t *par)
{
   // fit function for fitting of 1/pt with a polynomial of 4th order, rejecting points between  +/-par[4]

  
   if (x[0] > -par[4] && x[0] < par[4]) {
      TF1::RejectPoint();
      return 0;
   }
   
   return  par[2]+par[0]*pow((x[0]-par[1]),2)+par[3]*pow((x[0]-par[1]),4);

}
//____________________________________________________________________________________________________________________________________________
Double_t AliPerfAnalyzeInvPt::PolynomialRejP(Double_t *x, const Double_t *par)
{
   // fit function for fitting of 1/pt with a polynomial of 4th order to improve result (fit range and rejection zone is adjusted to first guess of minimum position)
     
   Double_t pos  = par[5];
   Double_t neg = - par[5];
   pos += par[4];
   neg += par[4];
   
   if (x[0] > neg && x[0] < pos) {
      TF1::RejectPoint();
      return 0;
   }
   
   return   par[2]+par[0]*pow((x[0]-par[1]),2)+par[3]*pow((x[0]-par[1]),4);
 
}
//____________________________________________________________________________________________________________________________________________
Double_t AliPerfAnalyzeInvPt::InvGauss(Double_t *x, const Double_t *par)
{
   // fit function for fitting of 1/pt with gaussian, rejecting points between  +/-par[4]
   if (x[0] > -par[6] && x[0] < par[6]) {
      TF1::RejectPoint();
      return 0;
   }

   return par[3]+par[0]*(TMath::Exp(-0.5*(TMath::Power((x[0]-par[1])/par[2], 2.0)))+par[4]*pow((x[0]-par[1]),2)+par[5]*pow((x[0]-par[1]),4)) ;
}
//____________________________________________________________________________________________________________________________________________
Double_t AliPerfAnalyzeInvPt::InvGaussRejP(Double_t *x, const Double_t *par)
{
   // fit function for fitting of 1/pt with gaussian to improve result (fit range and rejection zone is adjusted to first guess of minimum position)
   Double_t pos  = par[7];//0.12;
   Double_t neg = - par[7];//0.12;
   pos += par[6];
   neg += par[6];
  
   if (x[0] > neg && x[0] < pos) {
      TF1::RejectPoint();
      return 0;
   }


   return par[3]+par[0]*TMath::Exp(-0.5*(TMath::Power((x[0]-par[1])/par[2], 2.0)))+par[4]*pow((x[0]-par[1]),2)+par[5]*pow((x[0]-par[1]),4) ;
}


//_____________________________________________________________________________________________________________________________________________
AliPerfAnalyzeInvPt::AliPerfAnalyzeInvPt(const Char_t* name, const Char_t* title):
   TNamed(name,title),
   fThetaBins(),
   fPhiBins(),
   fNThetaBins(0), 
   fNPhiBins(0),
   fRange(0),
   fExclRange(0),
   fFitGaus(0) ,
   fDoRebin(0),
   fRebin(0),
   fHistFitTheta(),
   fHistFitPhi(),
   //histograms,graphs and functions
   fHistH2InvPtTheta(0),
   fHistH2InvPtPhi(0), 
   fGrMinPosTheta(0),
   fGrMinPosPhi(0),
   fFitMinPos(0),
   fFitMinPosRejP(0),
   fFitInvGauss(0),
   fFitInvGaussRejP(0)
{
   // Default constructor
  
   fFitGaus = kFALSE;// flag for gaussian fit
   fNThetaBins = 0; // theta bins for projections
   fNPhiBins = 0; //phi bins for projections
   fRange = 0; //fit range
   fExclRange = 0; //fit exclusion range
   fDoRebin = kFALSE; // flag for rebin
   fRebin = 0; // bins for rebin
   
   for(Int_t i=0;i<100;i++){
      
      fHistFitTheta[i] = NULL;
      fHistFitPhi[i] = NULL;
   }
 
   
}

//______________________________________________________________________________________________________________________________________
void AliPerfAnalyzeInvPt::InitGraphs(Double_t *binsXTheta,Double_t *fitParamTheta,Double_t *errFitParamTheta,Double_t *binsXPhi,Double_t *fitParamPhi,Double_t *errFitParamPhi){

   // initialize graphs for storing fit parameter
  
   fGrMinPosTheta = new TGraphErrors(fNThetaBins,binsXTheta,fitParamTheta,0, errFitParamTheta);  
   fGrMinPosTheta->SetMarkerStyle(20);
   fGrMinPosTheta->SetMarkerColor(2);
   fGrMinPosTheta->SetLineColor(2);
   fGrMinPosTheta->GetYaxis()->SetTitle("min pos (GeV/c)^{-1}");
   fGrMinPosTheta->GetXaxis()->SetTitle("#theta bin no.");
   fGrMinPosTheta->GetYaxis()->SetTitleOffset(1.2);   
   fGrMinPosTheta->SetTitle("#theta bins");

   fGrMinPosPhi = new TGraphErrors(fNPhiBins,binsXPhi,fitParamPhi,0,errFitParamPhi);  
   fGrMinPosPhi->SetMarkerStyle(20);
   fGrMinPosPhi->SetMarkerColor(4);
   fGrMinPosPhi->SetLineColor(4);
   fGrMinPosPhi->GetYaxis()->SetTitle("min pos (GeV/c)^{-1}");
   fGrMinPosPhi->GetXaxis()->SetTitle("#phi bin no.");
   fGrMinPosPhi->GetYaxis()->SetTitleOffset(1.2);   
   fGrMinPosPhi->SetTitle("#phi bins");
}

//______________________________________________________________________________________________________________________________________

void AliPerfAnalyzeInvPt::InitFitFcn(){
   // fit functions
   fFitMinPos = new TF1("fFitMinPos", Polynomial,-4.0,4.0,5);
   fFitMinPos->SetLineColor(4);
   fFitMinPos->SetLineWidth(1);
   fFitMinPos->SetParameter(0,1.0);
   fFitMinPos->SetParameter(1,0.0);
   fFitMinPos->SetParameter(2,0.0);

   fFitMinPosRejP = new TF1("fFitMinPosRejP",PolynomialRejP,-4.0,4.0,6);
   fFitMinPosRejP->SetLineColor(2);
   fFitMinPosRejP->SetLineWidth(1);
   fFitMinPosRejP->SetParameter(0,1.0);
   fFitMinPosRejP->SetParameter(1,0.0);
   fFitMinPosRejP->SetParameter(2,0.0);
 
  
   fFitInvGauss = new TF1("fFitInvGauss", InvGauss,-4.0,4.0,6);
   fFitInvGauss->SetLineColor(4);
   fFitInvGauss->SetLineWidth(1);
   fFitInvGauss->SetParameter(2,1.0);
  
   fFitInvGaussRejP = new TF1("fFitInvGaussRejP", InvGaussRejP,-4.0,4.0,7);
   fFitInvGaussRejP->SetLineColor(2);
   fFitInvGaussRejP->SetLineWidth(1);
   fFitInvGaussRejP->SetParameter(2,1.0);
 
}
//______________________________________________________________________________________________________________________________________
void AliPerfAnalyzeInvPt::StartAnalysis(const TH2F *histThetaInvPt, const TH2F *histPhiInvPt, TObjArray* aFolderObj){
   //start analysis: fitting charge/pt spectra

  
   
   if(!histThetaInvPt) {
      Printf("warning: no 1/pt histogram to analyse in theta bins!");
      return;
   }
   if(!histPhiInvPt) {
      Printf("warning: no 1/pt histogram to analyse in phit bins!");
      return;
   }

   Double_t thetaBins[9] = {0.77,0.97,1.17,1.37,1.57,1.77,1.97,2.17,2.37};                 // default theta bins
   Double_t phiBins[13] = {0.0,0.5,1.0,1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.5};           // default phi bins
  
   Int_t nThetaBins = 9;
   Int_t nPhiBins = 13;
   Double_t range = 1.0;        // fit range
   Double_t  exclRange  = 0.13; // range of point rejection in fit
   Bool_t fitGaus=kFALSE;       // fit with Gaussian or with polynomial (kFALSE)
   
   if(!fNThetaBins){
      fNThetaBins = nThetaBins;
      for(Int_t k = 0;k<fNThetaBins;k++){
	 fThetaBins[k] = thetaBins[k];
      }
      Printf("warning: for theta bins no user intput! bins are set to default values.");
   }

   if(!fNPhiBins){
      fNPhiBins = nPhiBins;
      for(Int_t k = 0;k<fNPhiBins;k++){
	 fPhiBins[k] = phiBins[k];
      }
    
      Printf("warning: for phi bins no user intput! bins are set to default values.");
    
   }

   if(!fRange){
      fRange = range;
      fExclRange = exclRange;
      fFitGaus = fitGaus;
      Printf("warning: no fit range is set. default fitting conditions are used.");
   }

      
   //fit parameter arrays
   Double_t fitParamTheta[100],fitParamPhi[100];
   Double_t errFitParamTheta[100], errFitParamPhi[100];
   Double_t binsXTheta[100],binsXPhi[100];
   
   //copy histograms
   fHistH2InvPtTheta  = (TH2F*)histThetaInvPt->Clone("invPtVsTheta");
   fHistH2InvPtPhi    = (TH2F*)histPhiInvPt->Clone("invPtVsPhi");
   
   // initialize fit functions
   InitFitFcn();
   
   // canvas for 2D histograms (input)
   TCanvas *thephiCan =new TCanvas("thephiCan","theta and phi vs invPt",800,400);
   thephiCan->Divide(2,1);
   thephiCan->cd(1);
   fHistH2InvPtTheta->SetTitle("#theta vs charge/pt for selected #phi range");
   fHistH2InvPtTheta->GetXaxis()->SetTitle("charge/p_{t} (GeV/c)^{-1}");
   fHistH2InvPtTheta->GetYaxis()->SetTitle("#theta (rad)");
   fHistH2InvPtTheta->DrawCopy("col1z");
   
   thephiCan->cd(2);
   fHistH2InvPtPhi->SetTitle("#phi vs charge/pt for selected #theta range");
   fHistH2InvPtPhi->GetXaxis()->SetTitle("charge/p_{t} (GeV/c)^{-1}");
   fHistH2InvPtPhi->GetYaxis()->SetTitle("#phi (rad)");
   fHistH2InvPtPhi->DrawCopy("col1z");
   
   // canvas for 1D histograms (projections)
   TCanvas *theCan =new TCanvas("theCan","invPt theta bins",1200,900);
   theCan->Divide((fNThetaBins+2)/2,2);
   TCanvas *phiCan =new TCanvas("phiCan","invPt phi bins",1200,900);
   phiCan->Divide((fNPhiBins+2)/2,2);

   Int_t countPad = 1;
	 
   // analyse charge/pt in bins of theta 
   for(Int_t i=0;i<fNThetaBins;i++){

      //set name for each projection
      TString name = "fit_theta_";
      name +=i;
      fHistH2InvPtTheta->SetName(name.Data());
      
      //find bins for projection
      Int_t firstBin= fHistH2InvPtTheta->GetYaxis()->FindBin(fThetaBins[i]);
      if(i>0) firstBin +=1;
      Int_t lastBin = fHistH2InvPtTheta->GetYaxis()->FindBin(fThetaBins[i+1]);
      if( i == fNThetaBins-1) {
	 firstBin= fHistH2InvPtTheta->GetYaxis()->FindBin(fThetaBins[0]);
	 lastBin = fHistH2InvPtTheta->GetYaxis()->FindBin(fThetaBins[i]);
      }
      
      //make projection
      fHistFitTheta[i] =  (TH1D*)fHistH2InvPtTheta->ProjectionX("_px",firstBin,lastBin,"e");
      
      Char_t titleTheta[50];
      if(TMath::Abs(i-(fNThetaBins-1))<0.5) snprintf(titleTheta,50,"charge/pt (GeV/c) integrated over #theta");
      else  snprintf(titleTheta,50,"charge/pt (GeV/c) for #theta range: %1.3f - %1.3f",fThetaBins[i],fThetaBins[i+1]);
      
      fHistFitTheta[i]->SetTitle(titleTheta);
   
      Double_t invPtMinPos  = 0;
      Double_t invPtMinPosErr = 0;
      Double_t invPtMinPosImpr  = 0;
      Double_t invPtMinPosErrImpr = 0;
   
      if(fDoRebin) fHistFitTheta[i]->Rebin(fRebin);

      //start fitting
      if(!fFitGaus){
	 Printf("making polynomial fit in charge/pt in theta bins");
	 theCan->cd(countPad);
	 MakeFit(fHistFitTheta[i],fFitMinPos, invPtMinPos,invPtMinPosErr, fExclRange,fRange);
	 MakeFitBetter(fHistFitTheta[i],fFitMinPosRejP, invPtMinPosImpr, invPtMinPosErrImpr, invPtMinPos,fExclRange,fRange);

	 //plot projection and fit
	 fHistFitTheta[i]->DrawCopy();
	 fFitMinPos->DrawCopy("L,same");
	 fFitMinPosRejP->DrawCopy("L,same");
      }
      else{
	 Printf("making gauss fit in charge/pt in theta bins");
	 theCan->cd(countPad);
	 MakeFitInvGauss(fHistFitTheta[i],fFitInvGauss, invPtMinPos, invPtMinPosErr,fExclRange,fRange);
	 MakeFitInvGaussBetter(fHistFitTheta[i],fFitInvGaussRejP, invPtMinPosImpr, invPtMinPosErrImpr,invPtMinPos,fExclRange,fRange);

	 //plot projection and fit
	 fHistFitTheta[i]->DrawCopy();
	 fFitInvGauss->DrawCopy("L,same");
	 fFitInvGaussRejP->DrawCopy("L,same");
      }
      //add objects for analysis folder
      aFolderObj->Add(fHistFitTheta[i]);
      
      //store fit parameter
      fitParamTheta[i] = invPtMinPosImpr;
      errFitParamTheta[i] = invPtMinPosErrImpr;
      
      //count bins and pad number for displaying
      binsXTheta[i] = i+1.0;
      countPad++;
   }
      
      
   countPad = 1;

   
   // analyse charge/pt in bins of phi 
  
   for(Int_t i=0;i<fNPhiBins;i++){

      //set name for each projection
      TString name = "fit_phi_";
      name +=i;
      fHistH2InvPtPhi->SetName(name.Data());
      
      //find bins for projection
      Int_t  firstBin = fHistH2InvPtPhi->GetYaxis()->FindBin(fPhiBins[i]);
      if(i>0) firstBin +=1;
      Int_t   lastBin =  fHistH2InvPtPhi->GetYaxis()->FindBin(fPhiBins[i+1]);
      if(TMath::Abs(i-(fNPhiBins-1))<0.5){
	 firstBin = fHistH2InvPtPhi->GetYaxis()->FindBin(fPhiBins[0]);
	 lastBin =  fHistH2InvPtPhi->GetYaxis()->FindBin(fPhiBins[i]);
      }
      
      //make projection
      fHistFitPhi[i] =  (TH1D*) fHistH2InvPtPhi->ProjectionX("_px",firstBin,lastBin,"e");
      
      Char_t titlePhi[50];
      if(TMath::Abs(i-(fNPhiBins-1))<0.5) snprintf(titlePhi,50,"charge/pt (GeV/c) integrated over #phi");
      else  snprintf(titlePhi,50,"charge/pt (GeV/c) for #phi range: %1.3f - %1.3f",fPhiBins[i],fPhiBins[i+1]);
     
      fHistFitPhi[i]->SetTitle(titlePhi);
  
      Double_t invPtMinPos  = 0;
      Double_t invPtMinPosErr = 0;
      Double_t invPtMinPosImpr  = 0;
      Double_t invPtMinPosErrImpr = 0;
      if(fDoRebin) fHistFitPhi[i]->Rebin(fRebin);

      //start fitting
      if(!fFitGaus){
	 Printf("making polynomial fit in charge/pt in phi bins");
	 phiCan->cd(countPad);
	 MakeFit(fHistFitPhi[i],fFitMinPos, invPtMinPos, invPtMinPosErr,fExclRange,fRange);
	 MakeFitBetter(fHistFitPhi[i],fFitMinPosRejP, invPtMinPosImpr, invPtMinPosErrImpr,invPtMinPos,fExclRange,fRange);

	 //plot projection and fit
	 fHistFitPhi[i]->DrawCopy();
	 fFitMinPos->DrawCopy("L,same");
	 fFitMinPosRejP->DrawCopy("L,same");

      }
      else {
	 Printf("making gauss fit in charge/pt in phi bins");
	 phiCan->cd(countPad);
	 MakeFitInvGauss(fHistFitPhi[i],fFitInvGauss, invPtMinPos, invPtMinPosErr, exclRange,fRange);
	 MakeFitInvGaussBetter(fHistFitPhi[i],fFitInvGaussRejP, invPtMinPosImpr, invPtMinPosErrImpr, invPtMinPos, fExclRange,fRange);

	 //plot projection and fit
	 fHistFitPhi[i]->DrawCopy();
	 fFitInvGauss->DrawCopy("L,same");
	 fFitInvGaussRejP->DrawCopy("L,same");
      }
      //add objects for analysis folder
      aFolderObj->Add(fHistFitPhi[i]);
      
      //store fit parameter
      fitParamPhi[i] = invPtMinPosImpr;
      errFitParamPhi[i] = invPtMinPosErrImpr;

      //count bins and pad number for displaying
      binsXPhi[i] = i+1.0;
      countPad++;
   }

   //initialize graphs for displaying the fit parameter
   InitGraphs(binsXTheta,fitParamTheta,errFitParamTheta,binsXPhi,fitParamPhi,errFitParamPhi);

   //plot fit values = minimum positions of charge/pt
   TCanvas *canFitVal = new TCanvas("canFitVal","min pos histos",800,400);
   canFitVal->Divide(2,1);

   canFitVal->cd(1);
   fGrMinPosTheta->Draw("AP");
   canFitVal->cd(2);
   fGrMinPosPhi->Draw("AP");

   Printf("AliPerfAnalyzeInvPt::StartAnalysis: ***** NOTE: last bin is always fit result of integral over all angle BINS which have been set by user! angle ranges of 2D projections are kept.*****");

   //add objects to folder
   aFolderObj->Add(fGrMinPosTheta);
   aFolderObj->Add(fGrMinPosPhi);
   aFolderObj->Add(fHistH2InvPtTheta);
   aFolderObj->Add(fHistH2InvPtPhi);
  
  
}


//____________________________________________________________________________________________________________________________________________

void AliPerfAnalyzeInvPt::MakeFit(TH1D *hproy, TF1 * fitpb, Double_t &mean, Double_t &errMean, Double_t &excl,Double_t &range)
{
   // fit charge/pt and extract minimum position
   
   fitpb->SetRange(-range,range);
   fitpb->SetParLimits(1,-0.05,0.05);
   fitpb->SetParameter(0,1.0);
   fitpb->FixParameter(4,excl);
   fitpb->FixParameter(2,0.0);
    
   hproy->Fit(fitpb,"RM");
   mean = fitpb->GetParameter(1);
   errMean = fitpb->GetParError(1);
   if(!mean)  errMean = 0.0;
}
//____________________________________________________________________________________________________________________________________________
void AliPerfAnalyzeInvPt::MakeFitBetter(TH1D *hproy, TF1 * fitpb2, Double_t &mean, Double_t &errMean, Double_t &f, Double_t &excl, Double_t &range)
{
   // adjust fit range to minimum position of AliPerfAnalyzeInvPt::MakeFit and fit 1/pt and extract new minimum position
   
   fitpb2->FixParameter(5,excl);
   fitpb2->FixParameter(4,f);
   // fitpb2->FixParameter(2,0.0);
   fitpb2->SetRange(-range+f,range+f);
   fitpb2->SetParLimits(1,-0.05,0.05);
   fitpb2->SetParameter(0,1.0);
   hproy->Fit(fitpb2,"RM");
   mean = fitpb2->GetParameter(1);
   errMean = fitpb2->GetParError(1);
   if(!mean)   errMean = 0.0;

}
//____________________________________________________________________________________________________________________________________________
void AliPerfAnalyzeInvPt::MakeFitInvGauss(TH1D *hproy, TF1 * fitpb, Double_t &mean, Double_t &errMean, Double_t &excl,Double_t &range)
{
   // fit charge/pt and extract minimum position
   
   fitpb->FixParameter(6,excl);
   fitpb->SetRange(-range,range);
   fitpb->SetParameter(0,-1.0);
   fitpb->SetParameter(2,1.0);
   fitpb->SetParameter(3,25000.0);
   fitpb->SetParameter(4,-1.0);
   fitpb->SetParLimits(1,-0.02,0.02);
   hproy->Fit(fitpb,"RM");
   mean = fitpb->GetParameter(1);
   errMean = fitpb->GetParError(1);
   if(!mean)   errMean = 0.0;
  
}
//____________________________________________________________________________________________________________________________________________
void AliPerfAnalyzeInvPt::MakeFitInvGaussBetter(TH1D *hproy, TF1 * fitpb2, Double_t &mean, Double_t &errMean, Double_t &f, Double_t &excl, Double_t &range)
{
   // adjust fit range to minimum position of AliPerfAnalyzeInvPt::MakeFitInvGauss and fit 1/pt and extract new minimum position
   
   fitpb2->FixParameter(7,excl);
   fitpb2->FixParameter(6,f);
   fitpb2->SetRange(-range+f,range+f);
   fitpb2->SetParameter(0,-1.0);
   fitpb2->SetParameter(2,1.0);
   fitpb2->SetParameter(3,25000.0);
   fitpb2->SetParameter(4,-1.0);
   fitpb2->SetParLimits(1,-0.02,0.02);
   hproy->Fit(fitpb2,"RM");
   mean = fitpb2->GetParameter(1);
   errMean = fitpb2->GetParError(1);
   if(!mean)   errMean = 0.0;
   
}


//____________________________________________________________________________________________________________________________________________

// set variables for analysis
void AliPerfAnalyzeInvPt::SetProjBinsPhi(const Double_t *phiBinArray,const Int_t nphBins){

   // set theta bins for Analyse()
   //set phi bins as array and set number of this array which is equal to number of bins analysed
   //the last analysed bin will always be the projection from first to last bin in the array
   if(nphBins){
      fNPhiBins = nphBins;
  
      for(Int_t k = 0;k<fNPhiBins;k++){
	 fPhiBins[k] = phiBinArray[k];
      }
      Printf("AliPerfAnalyzeInvPt::SetProjBinsPhi:number of bins in phi set to %i",fNPhiBins);
   }
   else Printf("AliPerfAnalyzeInvPt::SetProjBinsPhi: number of bins in theta NOT set. Default values are used.");
}
//____________________________________________________________________________________________________________________________________________
void AliPerfAnalyzeInvPt::SetProjBinsTheta(const Double_t *thetaBinArray, const Int_t nthBins){
   // set theta bins for Analyse()
   //set theta bins as array and set number of this array which is equal to number of bins analysed
   //the last analysed bin will always be the projection from first to last bin in the array
   if(nthBins){
      fNThetaBins = nthBins;
      for(Int_t k = 0;k<fNThetaBins;k++){
	 fThetaBins[k] = thetaBinArray[k];
      }
      Printf("AliPerfAnalyzeInvPt::SetProjBinsTheta: number of bins in theta set to %i",fNThetaBins);
   }
   else Printf("AliPerfAnalyzeInvPt::SetProjBinsTheta: number of bins in theta NOT set. Default values are used.");
}
//____________________________________________________________________________________________________________________________________________
void AliPerfAnalyzeInvPt::SetMakeFitOption(const Bool_t setGausFit, const Double_t exclusionR,const Double_t fitR ){

   //set the fit options:
   //for usage of gaussian function instead of polynomial (default) set setGausFit=kTRUE
   //set the range of rejection of points around 0 via exclusionR
   //set the fit range around 0 with fitR
   if(fitR){
      fFitGaus = setGausFit;
      fExclRange  = exclusionR;
      fRange = fitR;
  
      if(fFitGaus) Printf("AliPerfAnalyzeInvPt::SetMakeFitOption: set MakeGausFit with fit range %2.3f and exclusion range in fabs(1/pt): %2.3f",fRange,fExclRange);
      else  Printf("AliPerfAnalyzeInvPt::SetMakeFitOption: set standard polynomial fit with fit range %2.3f and exclusion range in fabs(1/pt): %2.3f",fRange,fExclRange);
   }
   else Printf(" AliPerfAnalyzeInvPt::SetMakeFitOption: no user input. Set standard polynomial fit with fit range 1.0 and exclusion range 0.13.");
}
 AliPerfAnalyzeInvPt.cxx:1
 AliPerfAnalyzeInvPt.cxx:2
 AliPerfAnalyzeInvPt.cxx:3
 AliPerfAnalyzeInvPt.cxx:4
 AliPerfAnalyzeInvPt.cxx:5
 AliPerfAnalyzeInvPt.cxx:6
 AliPerfAnalyzeInvPt.cxx:7
 AliPerfAnalyzeInvPt.cxx:8
 AliPerfAnalyzeInvPt.cxx:9
 AliPerfAnalyzeInvPt.cxx:10
 AliPerfAnalyzeInvPt.cxx:11
 AliPerfAnalyzeInvPt.cxx:12
 AliPerfAnalyzeInvPt.cxx:13
 AliPerfAnalyzeInvPt.cxx:14
 AliPerfAnalyzeInvPt.cxx:15
 AliPerfAnalyzeInvPt.cxx:16
 AliPerfAnalyzeInvPt.cxx:17
 AliPerfAnalyzeInvPt.cxx:18
 AliPerfAnalyzeInvPt.cxx:19
 AliPerfAnalyzeInvPt.cxx:20
 AliPerfAnalyzeInvPt.cxx:21
 AliPerfAnalyzeInvPt.cxx:22
 AliPerfAnalyzeInvPt.cxx:23
 AliPerfAnalyzeInvPt.cxx:24
 AliPerfAnalyzeInvPt.cxx:25
 AliPerfAnalyzeInvPt.cxx:26
 AliPerfAnalyzeInvPt.cxx:27
 AliPerfAnalyzeInvPt.cxx:28
 AliPerfAnalyzeInvPt.cxx:29
 AliPerfAnalyzeInvPt.cxx:30
 AliPerfAnalyzeInvPt.cxx:31
 AliPerfAnalyzeInvPt.cxx:32
 AliPerfAnalyzeInvPt.cxx:33
 AliPerfAnalyzeInvPt.cxx:34
 AliPerfAnalyzeInvPt.cxx:35
 AliPerfAnalyzeInvPt.cxx:36
 AliPerfAnalyzeInvPt.cxx:37
 AliPerfAnalyzeInvPt.cxx:38
 AliPerfAnalyzeInvPt.cxx:39
 AliPerfAnalyzeInvPt.cxx:40
 AliPerfAnalyzeInvPt.cxx:41
 AliPerfAnalyzeInvPt.cxx:42
 AliPerfAnalyzeInvPt.cxx:43
 AliPerfAnalyzeInvPt.cxx:44
 AliPerfAnalyzeInvPt.cxx:45
 AliPerfAnalyzeInvPt.cxx:46
 AliPerfAnalyzeInvPt.cxx:47
 AliPerfAnalyzeInvPt.cxx:48
 AliPerfAnalyzeInvPt.cxx:49
 AliPerfAnalyzeInvPt.cxx:50
 AliPerfAnalyzeInvPt.cxx:51
 AliPerfAnalyzeInvPt.cxx:52
 AliPerfAnalyzeInvPt.cxx:53
 AliPerfAnalyzeInvPt.cxx:54
 AliPerfAnalyzeInvPt.cxx:55
 AliPerfAnalyzeInvPt.cxx:56
 AliPerfAnalyzeInvPt.cxx:57
 AliPerfAnalyzeInvPt.cxx:58
 AliPerfAnalyzeInvPt.cxx:59
 AliPerfAnalyzeInvPt.cxx:60
 AliPerfAnalyzeInvPt.cxx:61
 AliPerfAnalyzeInvPt.cxx:62
 AliPerfAnalyzeInvPt.cxx:63
 AliPerfAnalyzeInvPt.cxx:64
 AliPerfAnalyzeInvPt.cxx:65
 AliPerfAnalyzeInvPt.cxx:66
 AliPerfAnalyzeInvPt.cxx:67
 AliPerfAnalyzeInvPt.cxx:68
 AliPerfAnalyzeInvPt.cxx:69
 AliPerfAnalyzeInvPt.cxx:70
 AliPerfAnalyzeInvPt.cxx:71
 AliPerfAnalyzeInvPt.cxx:72
 AliPerfAnalyzeInvPt.cxx:73
 AliPerfAnalyzeInvPt.cxx:74
 AliPerfAnalyzeInvPt.cxx:75
 AliPerfAnalyzeInvPt.cxx:76
 AliPerfAnalyzeInvPt.cxx:77
 AliPerfAnalyzeInvPt.cxx:78
 AliPerfAnalyzeInvPt.cxx:79
 AliPerfAnalyzeInvPt.cxx:80
 AliPerfAnalyzeInvPt.cxx:81
 AliPerfAnalyzeInvPt.cxx:82
 AliPerfAnalyzeInvPt.cxx:83
 AliPerfAnalyzeInvPt.cxx:84
 AliPerfAnalyzeInvPt.cxx:85
 AliPerfAnalyzeInvPt.cxx:86
 AliPerfAnalyzeInvPt.cxx:87
 AliPerfAnalyzeInvPt.cxx:88
 AliPerfAnalyzeInvPt.cxx:89
 AliPerfAnalyzeInvPt.cxx:90
 AliPerfAnalyzeInvPt.cxx:91
 AliPerfAnalyzeInvPt.cxx:92
 AliPerfAnalyzeInvPt.cxx:93
 AliPerfAnalyzeInvPt.cxx:94
 AliPerfAnalyzeInvPt.cxx:95
 AliPerfAnalyzeInvPt.cxx:96
 AliPerfAnalyzeInvPt.cxx:97
 AliPerfAnalyzeInvPt.cxx:98
 AliPerfAnalyzeInvPt.cxx:99
 AliPerfAnalyzeInvPt.cxx:100
 AliPerfAnalyzeInvPt.cxx:101
 AliPerfAnalyzeInvPt.cxx:102
 AliPerfAnalyzeInvPt.cxx:103
 AliPerfAnalyzeInvPt.cxx:104
 AliPerfAnalyzeInvPt.cxx:105
 AliPerfAnalyzeInvPt.cxx:106
 AliPerfAnalyzeInvPt.cxx:107
 AliPerfAnalyzeInvPt.cxx:108
 AliPerfAnalyzeInvPt.cxx:109
 AliPerfAnalyzeInvPt.cxx:110
 AliPerfAnalyzeInvPt.cxx:111
 AliPerfAnalyzeInvPt.cxx:112
 AliPerfAnalyzeInvPt.cxx:113
 AliPerfAnalyzeInvPt.cxx:114
 AliPerfAnalyzeInvPt.cxx:115
 AliPerfAnalyzeInvPt.cxx:116
 AliPerfAnalyzeInvPt.cxx:117
 AliPerfAnalyzeInvPt.cxx:118
 AliPerfAnalyzeInvPt.cxx:119
 AliPerfAnalyzeInvPt.cxx:120
 AliPerfAnalyzeInvPt.cxx:121
 AliPerfAnalyzeInvPt.cxx:122
 AliPerfAnalyzeInvPt.cxx:123
 AliPerfAnalyzeInvPt.cxx:124
 AliPerfAnalyzeInvPt.cxx:125
 AliPerfAnalyzeInvPt.cxx:126
 AliPerfAnalyzeInvPt.cxx:127
 AliPerfAnalyzeInvPt.cxx:128
 AliPerfAnalyzeInvPt.cxx:129
 AliPerfAnalyzeInvPt.cxx:130
 AliPerfAnalyzeInvPt.cxx:131
 AliPerfAnalyzeInvPt.cxx:132
 AliPerfAnalyzeInvPt.cxx:133
 AliPerfAnalyzeInvPt.cxx:134
 AliPerfAnalyzeInvPt.cxx:135
 AliPerfAnalyzeInvPt.cxx:136
 AliPerfAnalyzeInvPt.cxx:137
 AliPerfAnalyzeInvPt.cxx:138
 AliPerfAnalyzeInvPt.cxx:139
 AliPerfAnalyzeInvPt.cxx:140
 AliPerfAnalyzeInvPt.cxx:141
 AliPerfAnalyzeInvPt.cxx:142
 AliPerfAnalyzeInvPt.cxx:143
 AliPerfAnalyzeInvPt.cxx:144
 AliPerfAnalyzeInvPt.cxx:145
 AliPerfAnalyzeInvPt.cxx:146
 AliPerfAnalyzeInvPt.cxx:147
 AliPerfAnalyzeInvPt.cxx:148
 AliPerfAnalyzeInvPt.cxx:149
 AliPerfAnalyzeInvPt.cxx:150
 AliPerfAnalyzeInvPt.cxx:151
 AliPerfAnalyzeInvPt.cxx:152
 AliPerfAnalyzeInvPt.cxx:153
 AliPerfAnalyzeInvPt.cxx:154
 AliPerfAnalyzeInvPt.cxx:155
 AliPerfAnalyzeInvPt.cxx:156
 AliPerfAnalyzeInvPt.cxx:157
 AliPerfAnalyzeInvPt.cxx:158
 AliPerfAnalyzeInvPt.cxx:159
 AliPerfAnalyzeInvPt.cxx:160
 AliPerfAnalyzeInvPt.cxx:161
 AliPerfAnalyzeInvPt.cxx:162
 AliPerfAnalyzeInvPt.cxx:163
 AliPerfAnalyzeInvPt.cxx:164
 AliPerfAnalyzeInvPt.cxx:165
 AliPerfAnalyzeInvPt.cxx:166
 AliPerfAnalyzeInvPt.cxx:167
 AliPerfAnalyzeInvPt.cxx:168
 AliPerfAnalyzeInvPt.cxx:169
 AliPerfAnalyzeInvPt.cxx:170
 AliPerfAnalyzeInvPt.cxx:171
 AliPerfAnalyzeInvPt.cxx:172
 AliPerfAnalyzeInvPt.cxx:173
 AliPerfAnalyzeInvPt.cxx:174
 AliPerfAnalyzeInvPt.cxx:175
 AliPerfAnalyzeInvPt.cxx:176
 AliPerfAnalyzeInvPt.cxx:177
 AliPerfAnalyzeInvPt.cxx:178
 AliPerfAnalyzeInvPt.cxx:179
 AliPerfAnalyzeInvPt.cxx:180
 AliPerfAnalyzeInvPt.cxx:181
 AliPerfAnalyzeInvPt.cxx:182
 AliPerfAnalyzeInvPt.cxx:183
 AliPerfAnalyzeInvPt.cxx:184
 AliPerfAnalyzeInvPt.cxx:185
 AliPerfAnalyzeInvPt.cxx:186
 AliPerfAnalyzeInvPt.cxx:187
 AliPerfAnalyzeInvPt.cxx:188
 AliPerfAnalyzeInvPt.cxx:189
 AliPerfAnalyzeInvPt.cxx:190
 AliPerfAnalyzeInvPt.cxx:191
 AliPerfAnalyzeInvPt.cxx:192
 AliPerfAnalyzeInvPt.cxx:193
 AliPerfAnalyzeInvPt.cxx:194
 AliPerfAnalyzeInvPt.cxx:195
 AliPerfAnalyzeInvPt.cxx:196
 AliPerfAnalyzeInvPt.cxx:197
 AliPerfAnalyzeInvPt.cxx:198
 AliPerfAnalyzeInvPt.cxx:199
 AliPerfAnalyzeInvPt.cxx:200
 AliPerfAnalyzeInvPt.cxx:201
 AliPerfAnalyzeInvPt.cxx:202
 AliPerfAnalyzeInvPt.cxx:203
 AliPerfAnalyzeInvPt.cxx:204
 AliPerfAnalyzeInvPt.cxx:205
 AliPerfAnalyzeInvPt.cxx:206
 AliPerfAnalyzeInvPt.cxx:207
 AliPerfAnalyzeInvPt.cxx:208
 AliPerfAnalyzeInvPt.cxx:209
 AliPerfAnalyzeInvPt.cxx:210
 AliPerfAnalyzeInvPt.cxx:211
 AliPerfAnalyzeInvPt.cxx:212
 AliPerfAnalyzeInvPt.cxx:213
 AliPerfAnalyzeInvPt.cxx:214
 AliPerfAnalyzeInvPt.cxx:215
 AliPerfAnalyzeInvPt.cxx:216
 AliPerfAnalyzeInvPt.cxx:217
 AliPerfAnalyzeInvPt.cxx:218
 AliPerfAnalyzeInvPt.cxx:219
 AliPerfAnalyzeInvPt.cxx:220
 AliPerfAnalyzeInvPt.cxx:221
 AliPerfAnalyzeInvPt.cxx:222
 AliPerfAnalyzeInvPt.cxx:223
 AliPerfAnalyzeInvPt.cxx:224
 AliPerfAnalyzeInvPt.cxx:225
 AliPerfAnalyzeInvPt.cxx:226
 AliPerfAnalyzeInvPt.cxx:227
 AliPerfAnalyzeInvPt.cxx:228
 AliPerfAnalyzeInvPt.cxx:229
 AliPerfAnalyzeInvPt.cxx:230
 AliPerfAnalyzeInvPt.cxx:231
 AliPerfAnalyzeInvPt.cxx:232
 AliPerfAnalyzeInvPt.cxx:233
 AliPerfAnalyzeInvPt.cxx:234
 AliPerfAnalyzeInvPt.cxx:235
 AliPerfAnalyzeInvPt.cxx:236
 AliPerfAnalyzeInvPt.cxx:237
 AliPerfAnalyzeInvPt.cxx:238
 AliPerfAnalyzeInvPt.cxx:239
 AliPerfAnalyzeInvPt.cxx:240
 AliPerfAnalyzeInvPt.cxx:241
 AliPerfAnalyzeInvPt.cxx:242
 AliPerfAnalyzeInvPt.cxx:243
 AliPerfAnalyzeInvPt.cxx:244
 AliPerfAnalyzeInvPt.cxx:245
 AliPerfAnalyzeInvPt.cxx:246
 AliPerfAnalyzeInvPt.cxx:247
 AliPerfAnalyzeInvPt.cxx:248
 AliPerfAnalyzeInvPt.cxx:249
 AliPerfAnalyzeInvPt.cxx:250
 AliPerfAnalyzeInvPt.cxx:251
 AliPerfAnalyzeInvPt.cxx:252
 AliPerfAnalyzeInvPt.cxx:253
 AliPerfAnalyzeInvPt.cxx:254
 AliPerfAnalyzeInvPt.cxx:255
 AliPerfAnalyzeInvPt.cxx:256
 AliPerfAnalyzeInvPt.cxx:257
 AliPerfAnalyzeInvPt.cxx:258
 AliPerfAnalyzeInvPt.cxx:259
 AliPerfAnalyzeInvPt.cxx:260
 AliPerfAnalyzeInvPt.cxx:261
 AliPerfAnalyzeInvPt.cxx:262
 AliPerfAnalyzeInvPt.cxx:263
 AliPerfAnalyzeInvPt.cxx:264
 AliPerfAnalyzeInvPt.cxx:265
 AliPerfAnalyzeInvPt.cxx:266
 AliPerfAnalyzeInvPt.cxx:267
 AliPerfAnalyzeInvPt.cxx:268
 AliPerfAnalyzeInvPt.cxx:269
 AliPerfAnalyzeInvPt.cxx:270
 AliPerfAnalyzeInvPt.cxx:271
 AliPerfAnalyzeInvPt.cxx:272
 AliPerfAnalyzeInvPt.cxx:273
 AliPerfAnalyzeInvPt.cxx:274
 AliPerfAnalyzeInvPt.cxx:275
 AliPerfAnalyzeInvPt.cxx:276
 AliPerfAnalyzeInvPt.cxx:277
 AliPerfAnalyzeInvPt.cxx:278
 AliPerfAnalyzeInvPt.cxx:279
 AliPerfAnalyzeInvPt.cxx:280
 AliPerfAnalyzeInvPt.cxx:281
 AliPerfAnalyzeInvPt.cxx:282
 AliPerfAnalyzeInvPt.cxx:283
 AliPerfAnalyzeInvPt.cxx:284
 AliPerfAnalyzeInvPt.cxx:285
 AliPerfAnalyzeInvPt.cxx:286
 AliPerfAnalyzeInvPt.cxx:287
 AliPerfAnalyzeInvPt.cxx:288
 AliPerfAnalyzeInvPt.cxx:289
 AliPerfAnalyzeInvPt.cxx:290
 AliPerfAnalyzeInvPt.cxx:291
 AliPerfAnalyzeInvPt.cxx:292
 AliPerfAnalyzeInvPt.cxx:293
 AliPerfAnalyzeInvPt.cxx:294
 AliPerfAnalyzeInvPt.cxx:295
 AliPerfAnalyzeInvPt.cxx:296
 AliPerfAnalyzeInvPt.cxx:297
 AliPerfAnalyzeInvPt.cxx:298
 AliPerfAnalyzeInvPt.cxx:299
 AliPerfAnalyzeInvPt.cxx:300
 AliPerfAnalyzeInvPt.cxx:301
 AliPerfAnalyzeInvPt.cxx:302
 AliPerfAnalyzeInvPt.cxx:303
 AliPerfAnalyzeInvPt.cxx:304
 AliPerfAnalyzeInvPt.cxx:305
 AliPerfAnalyzeInvPt.cxx:306
 AliPerfAnalyzeInvPt.cxx:307
 AliPerfAnalyzeInvPt.cxx:308
 AliPerfAnalyzeInvPt.cxx:309
 AliPerfAnalyzeInvPt.cxx:310
 AliPerfAnalyzeInvPt.cxx:311
 AliPerfAnalyzeInvPt.cxx:312
 AliPerfAnalyzeInvPt.cxx:313
 AliPerfAnalyzeInvPt.cxx:314
 AliPerfAnalyzeInvPt.cxx:315
 AliPerfAnalyzeInvPt.cxx:316
 AliPerfAnalyzeInvPt.cxx:317
 AliPerfAnalyzeInvPt.cxx:318
 AliPerfAnalyzeInvPt.cxx:319
 AliPerfAnalyzeInvPt.cxx:320
 AliPerfAnalyzeInvPt.cxx:321
 AliPerfAnalyzeInvPt.cxx:322
 AliPerfAnalyzeInvPt.cxx:323
 AliPerfAnalyzeInvPt.cxx:324
 AliPerfAnalyzeInvPt.cxx:325
 AliPerfAnalyzeInvPt.cxx:326
 AliPerfAnalyzeInvPt.cxx:327
 AliPerfAnalyzeInvPt.cxx:328
 AliPerfAnalyzeInvPt.cxx:329
 AliPerfAnalyzeInvPt.cxx:330
 AliPerfAnalyzeInvPt.cxx:331
 AliPerfAnalyzeInvPt.cxx:332
 AliPerfAnalyzeInvPt.cxx:333
 AliPerfAnalyzeInvPt.cxx:334
 AliPerfAnalyzeInvPt.cxx:335
 AliPerfAnalyzeInvPt.cxx:336
 AliPerfAnalyzeInvPt.cxx:337
 AliPerfAnalyzeInvPt.cxx:338
 AliPerfAnalyzeInvPt.cxx:339
 AliPerfAnalyzeInvPt.cxx:340
 AliPerfAnalyzeInvPt.cxx:341
 AliPerfAnalyzeInvPt.cxx:342
 AliPerfAnalyzeInvPt.cxx:343
 AliPerfAnalyzeInvPt.cxx:344
 AliPerfAnalyzeInvPt.cxx:345
 AliPerfAnalyzeInvPt.cxx:346
 AliPerfAnalyzeInvPt.cxx:347
 AliPerfAnalyzeInvPt.cxx:348
 AliPerfAnalyzeInvPt.cxx:349
 AliPerfAnalyzeInvPt.cxx:350
 AliPerfAnalyzeInvPt.cxx:351
 AliPerfAnalyzeInvPt.cxx:352
 AliPerfAnalyzeInvPt.cxx:353
 AliPerfAnalyzeInvPt.cxx:354
 AliPerfAnalyzeInvPt.cxx:355
 AliPerfAnalyzeInvPt.cxx:356
 AliPerfAnalyzeInvPt.cxx:357
 AliPerfAnalyzeInvPt.cxx:358
 AliPerfAnalyzeInvPt.cxx:359
 AliPerfAnalyzeInvPt.cxx:360
 AliPerfAnalyzeInvPt.cxx:361
 AliPerfAnalyzeInvPt.cxx:362
 AliPerfAnalyzeInvPt.cxx:363
 AliPerfAnalyzeInvPt.cxx:364
 AliPerfAnalyzeInvPt.cxx:365
 AliPerfAnalyzeInvPt.cxx:366
 AliPerfAnalyzeInvPt.cxx:367
 AliPerfAnalyzeInvPt.cxx:368
 AliPerfAnalyzeInvPt.cxx:369
 AliPerfAnalyzeInvPt.cxx:370
 AliPerfAnalyzeInvPt.cxx:371
 AliPerfAnalyzeInvPt.cxx:372
 AliPerfAnalyzeInvPt.cxx:373
 AliPerfAnalyzeInvPt.cxx:374
 AliPerfAnalyzeInvPt.cxx:375
 AliPerfAnalyzeInvPt.cxx:376
 AliPerfAnalyzeInvPt.cxx:377
 AliPerfAnalyzeInvPt.cxx:378
 AliPerfAnalyzeInvPt.cxx:379
 AliPerfAnalyzeInvPt.cxx:380
 AliPerfAnalyzeInvPt.cxx:381
 AliPerfAnalyzeInvPt.cxx:382
 AliPerfAnalyzeInvPt.cxx:383
 AliPerfAnalyzeInvPt.cxx:384
 AliPerfAnalyzeInvPt.cxx:385
 AliPerfAnalyzeInvPt.cxx:386
 AliPerfAnalyzeInvPt.cxx:387
 AliPerfAnalyzeInvPt.cxx:388
 AliPerfAnalyzeInvPt.cxx:389
 AliPerfAnalyzeInvPt.cxx:390
 AliPerfAnalyzeInvPt.cxx:391
 AliPerfAnalyzeInvPt.cxx:392
 AliPerfAnalyzeInvPt.cxx:393
 AliPerfAnalyzeInvPt.cxx:394
 AliPerfAnalyzeInvPt.cxx:395
 AliPerfAnalyzeInvPt.cxx:396
 AliPerfAnalyzeInvPt.cxx:397
 AliPerfAnalyzeInvPt.cxx:398
 AliPerfAnalyzeInvPt.cxx:399
 AliPerfAnalyzeInvPt.cxx:400
 AliPerfAnalyzeInvPt.cxx:401
 AliPerfAnalyzeInvPt.cxx:402
 AliPerfAnalyzeInvPt.cxx:403
 AliPerfAnalyzeInvPt.cxx:404
 AliPerfAnalyzeInvPt.cxx:405
 AliPerfAnalyzeInvPt.cxx:406
 AliPerfAnalyzeInvPt.cxx:407
 AliPerfAnalyzeInvPt.cxx:408
 AliPerfAnalyzeInvPt.cxx:409
 AliPerfAnalyzeInvPt.cxx:410
 AliPerfAnalyzeInvPt.cxx:411
 AliPerfAnalyzeInvPt.cxx:412
 AliPerfAnalyzeInvPt.cxx:413
 AliPerfAnalyzeInvPt.cxx:414
 AliPerfAnalyzeInvPt.cxx:415
 AliPerfAnalyzeInvPt.cxx:416
 AliPerfAnalyzeInvPt.cxx:417
 AliPerfAnalyzeInvPt.cxx:418
 AliPerfAnalyzeInvPt.cxx:419
 AliPerfAnalyzeInvPt.cxx:420
 AliPerfAnalyzeInvPt.cxx:421
 AliPerfAnalyzeInvPt.cxx:422
 AliPerfAnalyzeInvPt.cxx:423
 AliPerfAnalyzeInvPt.cxx:424
 AliPerfAnalyzeInvPt.cxx:425
 AliPerfAnalyzeInvPt.cxx:426
 AliPerfAnalyzeInvPt.cxx:427
 AliPerfAnalyzeInvPt.cxx:428
 AliPerfAnalyzeInvPt.cxx:429
 AliPerfAnalyzeInvPt.cxx:430
 AliPerfAnalyzeInvPt.cxx:431
 AliPerfAnalyzeInvPt.cxx:432
 AliPerfAnalyzeInvPt.cxx:433
 AliPerfAnalyzeInvPt.cxx:434
 AliPerfAnalyzeInvPt.cxx:435
 AliPerfAnalyzeInvPt.cxx:436
 AliPerfAnalyzeInvPt.cxx:437
 AliPerfAnalyzeInvPt.cxx:438
 AliPerfAnalyzeInvPt.cxx:439
 AliPerfAnalyzeInvPt.cxx:440
 AliPerfAnalyzeInvPt.cxx:441
 AliPerfAnalyzeInvPt.cxx:442
 AliPerfAnalyzeInvPt.cxx:443
 AliPerfAnalyzeInvPt.cxx:444
 AliPerfAnalyzeInvPt.cxx:445
 AliPerfAnalyzeInvPt.cxx:446
 AliPerfAnalyzeInvPt.cxx:447
 AliPerfAnalyzeInvPt.cxx:448
 AliPerfAnalyzeInvPt.cxx:449
 AliPerfAnalyzeInvPt.cxx:450
 AliPerfAnalyzeInvPt.cxx:451
 AliPerfAnalyzeInvPt.cxx:452
 AliPerfAnalyzeInvPt.cxx:453
 AliPerfAnalyzeInvPt.cxx:454
 AliPerfAnalyzeInvPt.cxx:455
 AliPerfAnalyzeInvPt.cxx:456
 AliPerfAnalyzeInvPt.cxx:457
 AliPerfAnalyzeInvPt.cxx:458
 AliPerfAnalyzeInvPt.cxx:459
 AliPerfAnalyzeInvPt.cxx:460
 AliPerfAnalyzeInvPt.cxx:461
 AliPerfAnalyzeInvPt.cxx:462
 AliPerfAnalyzeInvPt.cxx:463
 AliPerfAnalyzeInvPt.cxx:464
 AliPerfAnalyzeInvPt.cxx:465
 AliPerfAnalyzeInvPt.cxx:466
 AliPerfAnalyzeInvPt.cxx:467
 AliPerfAnalyzeInvPt.cxx:468
 AliPerfAnalyzeInvPt.cxx:469
 AliPerfAnalyzeInvPt.cxx:470
 AliPerfAnalyzeInvPt.cxx:471
 AliPerfAnalyzeInvPt.cxx:472
 AliPerfAnalyzeInvPt.cxx:473
 AliPerfAnalyzeInvPt.cxx:474
 AliPerfAnalyzeInvPt.cxx:475
 AliPerfAnalyzeInvPt.cxx:476
 AliPerfAnalyzeInvPt.cxx:477
 AliPerfAnalyzeInvPt.cxx:478
 AliPerfAnalyzeInvPt.cxx:479
 AliPerfAnalyzeInvPt.cxx:480
 AliPerfAnalyzeInvPt.cxx:481
 AliPerfAnalyzeInvPt.cxx:482
 AliPerfAnalyzeInvPt.cxx:483
 AliPerfAnalyzeInvPt.cxx:484
 AliPerfAnalyzeInvPt.cxx:485
 AliPerfAnalyzeInvPt.cxx:486
 AliPerfAnalyzeInvPt.cxx:487
 AliPerfAnalyzeInvPt.cxx:488
 AliPerfAnalyzeInvPt.cxx:489
 AliPerfAnalyzeInvPt.cxx:490
 AliPerfAnalyzeInvPt.cxx:491
 AliPerfAnalyzeInvPt.cxx:492
 AliPerfAnalyzeInvPt.cxx:493
 AliPerfAnalyzeInvPt.cxx:494
 AliPerfAnalyzeInvPt.cxx:495
 AliPerfAnalyzeInvPt.cxx:496
 AliPerfAnalyzeInvPt.cxx:497
 AliPerfAnalyzeInvPt.cxx:498
 AliPerfAnalyzeInvPt.cxx:499
 AliPerfAnalyzeInvPt.cxx:500
 AliPerfAnalyzeInvPt.cxx:501
 AliPerfAnalyzeInvPt.cxx:502
 AliPerfAnalyzeInvPt.cxx:503
 AliPerfAnalyzeInvPt.cxx:504
 AliPerfAnalyzeInvPt.cxx:505
 AliPerfAnalyzeInvPt.cxx:506
 AliPerfAnalyzeInvPt.cxx:507
 AliPerfAnalyzeInvPt.cxx:508
 AliPerfAnalyzeInvPt.cxx:509
 AliPerfAnalyzeInvPt.cxx:510
 AliPerfAnalyzeInvPt.cxx:511
 AliPerfAnalyzeInvPt.cxx:512
 AliPerfAnalyzeInvPt.cxx:513
 AliPerfAnalyzeInvPt.cxx:514
 AliPerfAnalyzeInvPt.cxx:515
 AliPerfAnalyzeInvPt.cxx:516
 AliPerfAnalyzeInvPt.cxx:517
 AliPerfAnalyzeInvPt.cxx:518
 AliPerfAnalyzeInvPt.cxx:519
 AliPerfAnalyzeInvPt.cxx:520
 AliPerfAnalyzeInvPt.cxx:521
 AliPerfAnalyzeInvPt.cxx:522
 AliPerfAnalyzeInvPt.cxx:523
 AliPerfAnalyzeInvPt.cxx:524
 AliPerfAnalyzeInvPt.cxx:525
 AliPerfAnalyzeInvPt.cxx:526
 AliPerfAnalyzeInvPt.cxx:527
 AliPerfAnalyzeInvPt.cxx:528
 AliPerfAnalyzeInvPt.cxx:529
 AliPerfAnalyzeInvPt.cxx:530
 AliPerfAnalyzeInvPt.cxx:531
 AliPerfAnalyzeInvPt.cxx:532
 AliPerfAnalyzeInvPt.cxx:533
 AliPerfAnalyzeInvPt.cxx:534
 AliPerfAnalyzeInvPt.cxx:535
 AliPerfAnalyzeInvPt.cxx:536
 AliPerfAnalyzeInvPt.cxx:537
 AliPerfAnalyzeInvPt.cxx:538
 AliPerfAnalyzeInvPt.cxx:539
 AliPerfAnalyzeInvPt.cxx:540
 AliPerfAnalyzeInvPt.cxx:541
 AliPerfAnalyzeInvPt.cxx:542
 AliPerfAnalyzeInvPt.cxx:543
 AliPerfAnalyzeInvPt.cxx:544
 AliPerfAnalyzeInvPt.cxx:545
 AliPerfAnalyzeInvPt.cxx:546
 AliPerfAnalyzeInvPt.cxx:547
 AliPerfAnalyzeInvPt.cxx:548
 AliPerfAnalyzeInvPt.cxx:549
 AliPerfAnalyzeInvPt.cxx:550
 AliPerfAnalyzeInvPt.cxx:551
 AliPerfAnalyzeInvPt.cxx:552
 AliPerfAnalyzeInvPt.cxx:553
 AliPerfAnalyzeInvPt.cxx:554
 AliPerfAnalyzeInvPt.cxx:555
 AliPerfAnalyzeInvPt.cxx:556
 AliPerfAnalyzeInvPt.cxx:557
 AliPerfAnalyzeInvPt.cxx:558
 AliPerfAnalyzeInvPt.cxx:559
 AliPerfAnalyzeInvPt.cxx:560
 AliPerfAnalyzeInvPt.cxx:561
 AliPerfAnalyzeInvPt.cxx:562
 AliPerfAnalyzeInvPt.cxx:563
 AliPerfAnalyzeInvPt.cxx:564
 AliPerfAnalyzeInvPt.cxx:565
 AliPerfAnalyzeInvPt.cxx:566
 AliPerfAnalyzeInvPt.cxx:567
 AliPerfAnalyzeInvPt.cxx:568
 AliPerfAnalyzeInvPt.cxx:569
 AliPerfAnalyzeInvPt.cxx:570
 AliPerfAnalyzeInvPt.cxx:571
 AliPerfAnalyzeInvPt.cxx:572
 AliPerfAnalyzeInvPt.cxx:573
 AliPerfAnalyzeInvPt.cxx:574
 AliPerfAnalyzeInvPt.cxx:575
 AliPerfAnalyzeInvPt.cxx:576
 AliPerfAnalyzeInvPt.cxx:577
 AliPerfAnalyzeInvPt.cxx:578
 AliPerfAnalyzeInvPt.cxx:579
 AliPerfAnalyzeInvPt.cxx:580
 AliPerfAnalyzeInvPt.cxx:581
 AliPerfAnalyzeInvPt.cxx:582
 AliPerfAnalyzeInvPt.cxx:583
 AliPerfAnalyzeInvPt.cxx:584
 AliPerfAnalyzeInvPt.cxx:585
 AliPerfAnalyzeInvPt.cxx:586
 AliPerfAnalyzeInvPt.cxx:587
 AliPerfAnalyzeInvPt.cxx:588
 AliPerfAnalyzeInvPt.cxx:589
 AliPerfAnalyzeInvPt.cxx:590
 AliPerfAnalyzeInvPt.cxx:591
 AliPerfAnalyzeInvPt.cxx:592
 AliPerfAnalyzeInvPt.cxx:593
 AliPerfAnalyzeInvPt.cxx:594
 AliPerfAnalyzeInvPt.cxx:595
 AliPerfAnalyzeInvPt.cxx:596
 AliPerfAnalyzeInvPt.cxx:597
 AliPerfAnalyzeInvPt.cxx:598
 AliPerfAnalyzeInvPt.cxx:599
 AliPerfAnalyzeInvPt.cxx:600
 AliPerfAnalyzeInvPt.cxx:601
 AliPerfAnalyzeInvPt.cxx:602
 AliPerfAnalyzeInvPt.cxx:603
 AliPerfAnalyzeInvPt.cxx:604
 AliPerfAnalyzeInvPt.cxx:605
 AliPerfAnalyzeInvPt.cxx:606
 AliPerfAnalyzeInvPt.cxx:607
 AliPerfAnalyzeInvPt.cxx:608