ROOT logo
/* $Id:  $ */
//--------------------------------------------------
//
// macro to do the final analysis step 
// uses input of analysis class AliAnalysisTaskPhiCorrelation
//
//  Author : Emilia Leogrande (University of Utrecht)
//
//-------------------------------------------------

#include <TChain.h>
#include <TList.h>
#include <TTree.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.h>
#include <THnSparse.h>
#include <TProfile.h>
#include <TCanvas.h>
#include "TRandom.h"
#include "TGraphErrors.h"
#include "TFile.h"
#include "TF1.h"
#include "TMath.h"
#include "TDirectory.h"
#include "TStyle.h" 
#include "TROOT.h"
#include "TColor.h"

#include <iostream>
using namespace std;

void analyseEmy2(Bool_t zyam = kTRUE);  // if zyam = kFALSE, fit is used
Double_t fitFunction(Double_t *x ,Double_t *par); // fit function using constant + 3 gaussians
Double_t fitFunction2Gaus(Double_t *x ,Double_t *par); // fit function using constant + 2 gaussians

//input file and mixed event removed file
TFile *fileData=0x0;
TFile *fileDataEMremoved = 0x0;

const int multclass = 20;

TH1D *fDeltaPhiNch[multclass];
TH1D *fDeltaEtaNch[multclass];
TH1D *fSignalDPhi[multclass];
TH1D *fSignalNSDPhi[multclass];
TH1D *fSignalASDPhi[multclass];
TH1D *fRidge1DPhi[multclass];
TH1D *fRidge2DPhi[multclass];
TH1D *fRidgeDPhi[multclass];
TH1D *fSymmRidgeNotScaled[multclass];
TH1D *fSymmRidge[multclass];
TH1D *fFinal1DPhi[multclass];
TH1D *fFinalDPhi[multclass];

TString flag = "R";
TF1 *fTotal2Gaus[multclass];       // fit with 2 gaussians + const
TF1 *fTotal[multclass];            // fit with 3 gaussians + const

//properties of histogram
const int bins = 72; //
Double_t binWidth=2*TMath::Pi()/bins;

const int binsDeta = 48;


Double_t max_bin_for_etagap =   1.2;
Double_t min_bin_for_etagap =   -1.2;
Double_t max_eta = 1.8;
Double_t min_eta = -1.8;

//________________________________________________________________________________________________________________
//
Double_t fitFunction(Double_t *x ,Double_t *par)
{
  // fit function for 3 gaus + constant  
  
  // parameters for Gaussian
  Double_t A1     = par[0];
  Double_t sigma1 = par[1];
  Double_t A2     = par[2];
  Double_t sigma2 = par[3];
  Double_t A3     = par[4];
  Double_t sigma3 = par[5];
  Double_t integral = par[6];

  Double_t constante = (integral-
			TMath::Sqrt(TMath::Pi()*2)/ binWidth*
			(A1 * sigma1 + A2 * sigma2 + A3*sigma3))/bins;
  Double_t q  = x[0];
  
  //fit value
  Double_t fitval = constante +
    (q>-0.5*TMath::Pi()&&q<0.5*TMath::Pi())*(
					     A1 * exp(- q * q / (2 * sigma1 *sigma1)) +
					     A1 * exp(-((q - TMath::TwoPi())) * ((q - TMath::TwoPi())) / ( 2 * sigma1 * sigma1))
					     )
    +
    (q>-0.2*TMath::Pi()&&q<0.2*TMath::Pi())*(
					     A2 * exp(- q * q / (2 * sigma2 *sigma2)) +
					     A2 * exp(-((q - TMath::TwoPi())) * ((q - TMath::TwoPi())) / ( 2 * sigma2 * sigma2))
					     )
    +
    (q>0.5*TMath::Pi()&&q<1.5*TMath::Pi())*(
					    A3 * exp(-((q - TMath::Pi())) * ((q - TMath::Pi())) / ( 2 * sigma3 * sigma3)) +
					    A3 * exp(-((q + TMath::Pi())) * ((q + TMath::Pi())) / (2 * sigma3 * sigma3))
					    );
  return fitval;
}

//________________________________________________________________________________________________________________
//
Double_t fitFunction2Gaus(Double_t *x ,Double_t *par)
{
  // fit function for 2 gaus + constant  

  // parameters for Gaussian
  Double_t A1     = par[0];
  Double_t sigma1 = par[1];
  Double_t A3     = par[2];
  Double_t sigma3 = par[3];
  Double_t integral = par[4];

  Double_t constante = (integral -
			TMath::Sqrt(TMath::Pi()*2)/ binWidth*
			(A1 * sigma1 + A3*sigma3))/bins;
  Double_t q  = x[0];
  
  //fit value
  Double_t fitval = constante +
    (q>-0.5*TMath::Pi()&&q<0.5*TMath::Pi())*(
					     A1 * exp(- q * q / (2 * sigma1 *sigma1)) +
					     A1 * exp(-((q - TMath::TwoPi())) * ((q - TMath::TwoPi())) / ( 2 * sigma1 * sigma1)) 
					     )
    +
    (q>0.5*TMath::Pi()&&q<1.5*TMath::Pi())*(
					    A3 * exp(-((q - TMath::Pi())) * ((q - TMath::Pi())) / ( 2 * sigma3 * sigma3)) +
					    A3 * exp(-((q + TMath::Pi())) * ((q + TMath::Pi())) / (2 * sigma3 * sigma3))
					    );
  return fitval;
}

//_______________________________________________________________________________________________________________
//
Double_t fline(Double_t *x, Double_t *par){
    
    if(x[0]>-1.8 && x[0]<=0){
        return par[0]+par[1]*x[0];
    }
    else if(x[0]>0 && x[0]<1.8){
        return par[2]+par[3]*x[0];
    }
    else
        return 0;
}


//________________________________________________________________________________________________________________
//
void analyseEmy2(Bool_t zyam){


  // plot style
  gStyle->SetOptStat(0);
  const Int_t NRGBs = 5;
  const Int_t NCont = 500;
  Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
  Double_t red[NRGBs]   = { 0.00, 0.00, 0.87, 1.00, 0.51 };
  Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
  Double_t blue[NRGBs]  = { 0.51, 1.00, 0.12, 0.00, 0.00 };
  TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
  gStyle->SetNumberContours(NCont);
    
  //style
  gROOT->SetStyle("Plain");
  gStyle->SetOptStat(0);
  gStyle->SetPalette(1);
    
  //-------------- TRIGGERS AND EVENTS
  
  TH2D *dphideta[multclass];
  TH1D * trigger = 0x0;
  TH1D * event = 0x0;
  
  fileData = TFile::Open("dphi_corr.root");
  trigger = (TH1D*)fileData->Get("triggers_0");
  event = (TH1D*)fileData->Get("events");
    
  // get average trigger particles per event
  TProfile *p0 = (TProfile*)trigger->Clone();
  TProfile *p1 = (TProfile*)event->Clone();
  p0->Sumw2();
  p1->Sumw2();
  p0->Divide(p0,p1,1,1,"B");
    
  // copy triggers and events in the new dphi_corr with the Mixed Event removed
  TH1D *triggerCopy = 0x0;
  TH1D *eventCopy = 0x0;
    
  triggerCopy = (TH1D*)trigger->Clone();
  eventCopy = (TH1D*)event->Clone();
    
  fileDataEMremoved = TFile::Open("dphi_corr_MEremoved.root","RECREATE");
  triggerCopy->SetName("triggers_0");
  triggerCopy->Write();
  eventCopy->SetName("events");
  eventCopy->Write();
  fileDataEMremoved->Close();
  
    
  //-------------- MIXED EVENT REMOVAL: restores the right number of particles in the detector acceptance but keeps the detector azimuthal unefficiencies corrections and cures the dip in (0,0) from two-trak cuts
  // Removing the event mixing: S/M (from dphi_corr) * M (from the triangle)
    
    Double_t triangle_factor[binsDeta]={0};

    TH2D *s_over_m[multclass];
    TH1D *s_m_deta[multclass];
    TH2D *s_over_m_x_m[multclass];
    
    for(Int_t i=0;i<multclass;i++){
        s_over_m[i] = (TH2D*)fileData->Get(Form("dphi_0_0_%d",i));
        s_m_deta[i] = (TH1D*)s_over_m[i]->ProjectionY()->Clone();
        s_over_m_x_m[i] = (TH2D*)s_over_m[i]->Clone();
        s_over_m_x_m[i]->Reset();
    }
    
    
    TF1 *f2 = new TF1("f2",fline,min_eta,max_eta,4);
    
    f2->FixParameter(0,1);
    f2->FixParameter(1,1/max_eta);
    f2->FixParameter(2,1);
    f2->FixParameter(3,-1/max_eta);
    
    for(Int_t i=0;i<binsDeta;i++){
        
        triangle_factor[i] = f2->Eval(s_m_deta[0]->GetBinCenter(i+1));

    }
    


    //--scale each deta bin of the old TH2 with the triangle_factor[deta]
    
    for(Int_t i=0;i<multclass;i++){
        for(Int_t j=0;j<binsDeta;j++){
            for(Int_t k=0;k<bins;k++){
                    s_over_m_x_m[i] -> SetBinContent(k+1,j+1,(s_over_m[i]->GetBinContent(k+1,j+1))*triangle_factor[j]);
                    s_over_m_x_m[i]->SetBinError(k+1,j+1,(s_over_m[i]->GetBinError(k+1,j+1))*triangle_factor[j]);
            }
        }
    }
    
    fileDataEMremoved = TFile::Open("dphi_corr_MEremoved.root","UPDATE");
    
    for(Int_t i=0;i<multclass;i++){
        
        s_over_m_x_m[i]->SetName(Form("dphiNoMixed_%d",i));
        s_over_m_x_m[i]->Write();
        
    }
    
    

    //-------------- DOUBLE RIDGE SUBTRACTION: gets rid of no-jet related components (v3 is still kept => effect added to the systematics) 
    
    // the ridge, estimated via an etagap, has to be scaled since it sits on the triangle 
    Double_t scale_for_ridge_NS = 0, scale_for_ridge_AS = 0;
    
        
    scale_for_ridge_NS = f2->Integral(min_bin_for_etagap,max_bin_for_etagap)/(f2->Integral(min_eta,min_bin_for_etagap)+f2->Integral(max_bin_for_etagap,max_eta)); //there is etagap in the NS
    cout<<"scaling NS:"<<scale_for_ridge_NS<<endl;
        
    scale_for_ridge_AS = f2->Integral(min_eta,max_eta)/(f2->Integral(min_eta,min_bin_for_etagap)+f2->Integral(max_bin_for_etagap,max_eta)); // there is no etagap in the AS
    cout<<"scaling AS:"<<scale_for_ridge_AS<<endl;
    
  // Double ridge subtraction
    
  TCanvas *c = new TCanvas();
  c->Divide(5,4);
  
  for(Int_t i=0;i<multclass;i++){
  c->cd(i+1);
        
        
      dphideta[i] = (TH2D*)fileDataEMremoved->Get(Form("dphiNoMixed_%d",i));

        
      // phi and eta projections
      fDeltaPhiNch[i] = (TH1D*)dphideta[i]->ProjectionX()->Clone();
      if(!zyam)
          fDeltaPhiNch[i]->Scale(binWidth);    //gaussians include the binwidth, so when using the fit, the histograms must be scaled first
      fDeltaPhiNch[i]->Draw();
    
      fDeltaEtaNch[i] = (TH1D*)dphideta[i]->ProjectionY()->Clone();
    
      // signal NS: |DEta|<max_bin_for_etagap; signal AS: |DEta|<max_eta
      fSignalNSDPhi[i] = (TH1D*)dphideta[i]->ProjectionX(Form("|DEta|<%f",max_bin_for_etagap),fDeltaEtaNch[i]->FindBin(min_bin_for_etagap+0.0001),fDeltaEtaNch[i]->FindBin(max_bin_for_etagap-0.0001))->Clone();
      fSignalASDPhi[i] = (TH1D*)dphideta[i]->ProjectionX(Form("|DEta|<%f",max_eta))->Clone();
      
      fSignalDPhi[i] = (TH1D*)fSignalASDPhi[i]->Clone();
      fSignalDPhi[i]->Reset();
      fSignalDPhi[i]->Sumw2();
      
      for(Int_t k=0;k<bins/2;k++){
          fSignalDPhi[i]->SetBinContent(k+1,fSignalNSDPhi[i]->GetBinContent(k+1));
          fSignalDPhi[i]->SetBinError(k+1, fSignalNSDPhi[i]->GetBinError(k+1));
      }
      for(Int_t k=bins/2;k<bins;k++){
          fSignalDPhi[i]->SetBinContent(k+1,fSignalASDPhi[i]->GetBinContent(k+1));
          fSignalDPhi[i]->SetBinError(k+1, fSignalASDPhi[i]->GetBinError(k+1));
      }
      if(!zyam)
          fSignalDPhi[i]->Scale(binWidth);
        
      // ridge1 DEta<min_bin_for_etagap
      fRidge1DPhi[i] = (TH1D*)dphideta[i]->ProjectionX(Form("DEta<%f",min_bin_for_etagap),1,fDeltaEtaNch[i]->FindBin(min_bin_for_etagap-0.0001))->Clone();
      if(!zyam)
          fRidge1DPhi[i]->Scale(binWidth);
      fRidge1DPhi[i]->SetMarkerColor(kRed);

      // ridge2 DEta>max_bin_for_etagap
      fRidge2DPhi[i] = (TH1D*)dphideta[i]->ProjectionX(Form("DEta>%f",max_bin_for_etagap),fDeltaEtaNch[i]->FindBin(max_bin_for_etagap+0.0001),fDeltaEtaNch[i]->GetNbinsX())->Clone();
      if(!zyam)
          fRidge2DPhi[i]->Scale(binWidth);
      fRidge2DPhi[i]->SetMarkerColor(kBlue);

      // ridge = ridge1 + ridge2
      fRidgeDPhi[i] = (TH1D*)fRidge1DPhi[i]->Clone("fRidge");
      fRidgeDPhi[i]->Reset();
      fRidgeDPhi[i]->Sumw2();
      fRidgeDPhi[i]->Add(fRidge1DPhi[i],fRidge2DPhi[i],1,1);
      //fRidgeDPhi[i]->Scale(scale_for_ridge);

      // symmetrize NS ridge in the AS
      fSymmRidgeNotScaled[i] = (TH1D*)fRidgeDPhi[i]->Clone("fSymmRidgeNotScaled");
      
      for(Int_t k=fSymmRidgeNotScaled[i]->GetNbinsX()/2+1;k<=fSymmRidgeNotScaled[i]->GetNbinsX();k++){
 
          fSymmRidgeNotScaled[i]->SetBinContent(k,fSymmRidgeNotScaled[i]->GetBinContent(fSymmRidgeNotScaled[i]->GetNbinsX()+1-k));

      }
      
      // scale the symmetrized ridge according to NS or AS
      fSymmRidge[i] = (TH1D*)fSymmRidgeNotScaled[i]->Clone("fSymmRidge");

      for(Int_t k=0;k<bins/2;k++){
          fSymmRidge[i]->SetBinContent(k+1,(fSymmRidgeNotScaled[i]->GetBinContent(k+1))*scale_for_ridge_NS);
      }
      for(Int_t k=bins/2;k<bins;k++){
          fSymmRidge[i]->SetBinContent(k+1,(fSymmRidgeNotScaled[i]->GetBinContent(k+1))*scale_for_ridge_AS);
      }

      
      // signal - symmetric ridge
      
      if(zyam){
          fFinal1DPhi[i] = new TH1D(Form("fFinal1DPhi[%d]",i),Form("fFinal1DPhi[%d]",i),bins,-0.5*TMath::Pi(),1.5*TMath::Pi());
          fFinal1DPhi[i]->Add(fSignalDPhi[i],fSymmRidge[i],1,-1);
          fFinal1DPhi[i]->Sumw2();
          fFinalDPhi[i] = (TH1D*)fFinal1DPhi[i]->Clone("fFinal"); // zyam: average between the two min values => sum first half of NS in the second half and second half of AS in the first half, so zyam = min/2
          fFinalDPhi[i]->Reset();
          fFinalDPhi[i]->Sumw2();
      
          for(Int_t k=1;k<=bins/4;k++){
              fFinalDPhi[i]->SetBinContent(k,0.);
              fFinalDPhi[i]->SetBinContent(k+bins/4,fFinal1DPhi[i]->GetBinContent(k+bins/4)+fFinal1DPhi[i]->GetBinContent(bins/4+1-k));
              fFinalDPhi[i]->SetBinError(k+bins/4,TMath::Sqrt(pow(fFinal1DPhi[i]->GetBinError(k+bins/4),2)+pow(fFinal1DPhi[i]->GetBinError(bins/4+1-k),2)));
              fFinalDPhi[i]->SetBinContent(k+bins/2,fFinal1DPhi[i]->GetBinContent(k+bins/2)+fFinal1DPhi[i]->GetBinContent(bins+1-k));
              fFinalDPhi[i]->SetBinError(k+bins/2,TMath::Sqrt(pow(fFinal1DPhi[i]->GetBinError(k+bins/2),2)+pow(fFinal1DPhi[i]->GetBinError(bins+1-k),2)));
              fFinalDPhi[i]->SetBinContent(k+bins/4*3,0.);
          
          }
      }
      
      else{

          fFinalDPhi[i] = (TH1D*)fSignalDPhi[i]->Clone();
          fFinalDPhi[i]->Reset();
          fFinalDPhi[i]->Sumw2();
          fFinalDPhi[i]->Add(fSignalDPhi[i],fSymmRidge[i],1,-1);
      }
      
  }

  // store the pair yields in a file (the yields are *not* normalized to the Ntriggers)
    
  TFile* file_yields = 0x0;
  if(zyam)
      file_yields = TFile::Open("PairYields_zyam.root","RECREATE");
  else
      file_yields = TFile::Open("PairYields_fit.root","RECREATE");


  for(Int_t i=0;i<multclass;i++){
      fDeltaEtaNch[i]->SetName(Form("DeltaEta_0_0_%d",i));
      fDeltaEtaNch[i]->Write();
      fDeltaPhiNch[i]->SetName(Form("Correlation bin %d in dphi",i));
      fDeltaPhiNch[i]->Write();
      fSignalDPhi[i]->SetName(Form("Signal_0_0_%d",i));
      fSignalDPhi[i]->Write();
      fRidgeDPhi[i]->SetName(Form("Ridge_0_0_%d",i));
      fRidgeDPhi[i]->Write();
      fSymmRidgeNotScaled[i]->SetName(Form("Symmetric_Ridge_NotScaled_0_0_%d",i));
      fSymmRidgeNotScaled[i]->Write();
      fSymmRidge[i]->SetName(Form("Symmetric_Ridge_0_0_%d",i));
      fSymmRidge[i]->Write();
      fFinalDPhi[i]->SetName(Form("Pure_Signal_0_0_%d",i));
      fFinalDPhi[i]->Write();
  }
  file_yields->Close();

  //-------------- CORRELATION OBSERVABLES: per-trigger yields, triggers and uncorrelated seeds
    
  Float_t baseline[multclass]={0};
  
  TGraphErrors *fNearSideIntegral = new TGraphErrors();
  fNearSideIntegral->SetName("fNearSideIntegral");
  fNearSideIntegral->SetMarkerColor(kGreen+2);
  fNearSideIntegral->SetLineColor(kGreen+2);
  fNearSideIntegral->SetLineWidth(1);
  fNearSideIntegral->SetMarkerStyle(4);

  TGraphErrors *fAwaySideIntegral = new TGraphErrors();
  fAwaySideIntegral->SetName("fAwaySideIntegral");
  fAwaySideIntegral->SetMarkerColor(kBlue);
  fAwaySideIntegral->SetLineColor(kBlue);
  fAwaySideIntegral->SetLineWidth(1);
  fAwaySideIntegral->SetMarkerStyle(4);

  TGraphErrors *fBothSideIntegral = new TGraphErrors();
  fBothSideIntegral->SetName("fBothSideIntegral");
  fBothSideIntegral->SetMarkerColor(kMagenta);
  fBothSideIntegral->SetLineColor(kMagenta);
  fBothSideIntegral->SetLineWidth(1);
  fBothSideIntegral->SetMarkerStyle(4);

    
  TGraphErrors *fNjets = new TGraphErrors();
  fNjets->SetName("fNjets");
  fNjets->SetMarkerColor(kCyan+2);
  fNjets->SetLineColor(kCyan+2);
  fNjets->SetLineWidth(1);
  fNjets->SetMarkerStyle(4);

  TGraphErrors *fTriggerAverage = new TGraphErrors();
  fTriggerAverage->SetName("fTriggerAverage");
  fTriggerAverage->SetMarkerColor(kBlack);
  fTriggerAverage->SetLineColor(kBlack);
  fTriggerAverage->SetLineWidth(1);
  fTriggerAverage->SetMarkerStyle(4);

  Int_t points=0;
  Double_t minbin[multclass] = {0};
  
  //  extract information out of dphi histograms
  TCanvas * cYields= new TCanvas("cYields", "cYields", 150, 150, 820, 620);
  cYields->Divide(5,4);
    
  for(Int_t i=0;i<multclass;i++){
  cYields->cd(i+1);
      

  if(zyam) {
      
      if(fFinalDPhi[i]->Integral()>0){
          fFinalDPhi[i]->GetXaxis()->SetRange(bins/4+1,bins/4*3);
          baseline[i]=fFinalDPhi[i]->GetMinimum()/2;
          minbin[i] = fFinalDPhi[i]->GetMinimumBin();
          fFinalDPhi[i]->GetXaxis()->UnZoom();
          
          for(Int_t k=0;k<bins;k++){
              if(fFinalDPhi[i]->GetBinContent(k+1)!=0)
                  fFinalDPhi[i]->SetBinContent(k+1,fFinalDPhi[i]->GetBinContent(k+1)-baseline[i]);
              else
                  fFinalDPhi[i]->SetBinContent(k+1,0.);
          }
          
          fFinalDPhi[i]->DrawClone("");
          
          fFinalDPhi[i]->SetTitle(Form("0.7<p_{T,trig}<5.0 - 0.7<p_{T,assoc}<5.0 - %d-%d %",i*5,(i+1)*5));
          fFinalDPhi[i]->SetTitle("1/N_{trig} dN_{assoc}/d#Delta#varphi (rad^{-1})");          
          //-
          Double_t errorNS = 0;
          Double_t nearSideResult = (fFinalDPhi[i]->IntegralAndError(0,minbin[i],errorNS,"width"))/trigger->GetBinContent(i+1);
          Double_t nearSideError = errorNS/trigger->GetBinContent(i+1); 
          fNearSideIntegral->SetPoint(points,i, nearSideResult);
          fNearSideIntegral->SetPointError(points,0.5,errorNS/trigger->GetBinContent(i+1));
          //-
          
          //--
          Double_t errorAS = 0;
          Double_t awaySideResult = (fFinalDPhi[i]->IntegralAndError(minbin[i],bins,errorAS,"width"))/trigger->GetBinContent(i+1);
          Double_t awaySideError = errorAS/trigger->GetBinContent(i+1); 
          fAwaySideIntegral->SetPoint(points,i, awaySideResult );
          fAwaySideIntegral->SetPointError(points,0.5, errorAS/trigger->GetBinContent(i+1));
          //--
          
          //---
          Double_t bothSideResult = nearSideResult + awaySideResult;
          Double_t bothSideError = bothSideResult * TMath::Sqrt(pow(errorNS,2)+pow(errorAS,2))/trigger->GetBinContent(i+1);
          fBothSideIntegral->SetPoint(points,i, bothSideResult );
          fBothSideIntegral->SetPointError(points,0.5, bothSideError );      
          //---
          

          
      }
      else{
          fNearSideIntegral->SetPoint(points,i, 0);
          fAwaySideIntegral->SetPoint(points,i, 0);
          fBothSideIntegral->SetPoint(points,i,0);
      }
      Double_t p0BinContent=p0->GetBinContent(i+1);
      Double_t p0BinError=p0->GetBinError(i+1);
      
      //--------
      Double_t njets =  p0BinContent/(1+bothSideResult); 
      Double_t njetsError = njets*TMath::Sqrt(bothSideError*bothSideError/(1+bothSideResult)/(1+bothSideResult)+p0BinError*p0BinError/p0BinContent/p0BinContent);
      fNjets->SetPoint(points,i, njets );
      fNjets->SetPointError(points,0.5,njetsError );
      
      //-------
      
      fTriggerAverage->SetPoint(points,i, p0BinContent);
      fTriggerAverage->SetPointError(points,0.5, p0BinError);
      
  }
      
  else if (!zyam){ 

      if(fFinalDPhi[i]->Integral()>0){

          //first fit function: 2 gauss + const
          fTotal2Gaus[i] = new TF1(Form("gaus3and2_%d",i), fitFunction2Gaus , -0.5*TMath::Pi(), 1.5*TMath::Pi(), 5);
          fTotal2Gaus[i]->SetName(Form("gaus3_%d",i));
          fTotal2Gaus[i]->SetParNames ("A1","sigma1","A3", "sigma3");
          fTotal2Gaus[i]->SetLineColor(kRed);
          fTotal2Gaus[i]->SetLineWidth(2);
    
          baseline[i]=fFinalDPhi[i]->GetMinimum();
          Double_t integr_for_const_2 = fFinalDPhi[i]->Integral();
        
          fTotal2Gaus[i]->FixParameter(4,integr_for_const_2);
          fTotal2Gaus[i]->SetParameters( fFinalDPhi[i]->GetBinContent(fFinalDPhi[i]->GetXaxis()->FindFixBin(0)) - baseline[i] , 0.6 , fFinalDPhi[i]->GetBinContent(fFinalDPhi[i]->GetXaxis()->FindFixBin(TMath::Pi()))-baseline[i] , 0.6);
      
          fTotal2Gaus[i]->SetParLimits(0, 0, (fFinalDPhi[i]->GetBinContent(fFinalDPhi[i]->GetXaxis()->FindFixBin(0))-baseline[i])*2);
          fTotal2Gaus[i]->SetParLimits(1, 0.01, 10);
          fTotal2Gaus[i]->SetParLimits(2, 0, (fFinalDPhi[i]->GetBinContent(fFinalDPhi[i]->GetXaxis()->FindFixBin(TMath::Pi()))-baseline[i])*2);
          fTotal2Gaus[i]->SetParLimits(3, 0.01, 10);
      
          fTotal2Gaus[i]->SetLineColor(kRed);
          fTotal2Gaus[i]->SetLineWidth(2);

          fFinalDPhi[i]->Fit(fTotal2Gaus[i],flag);
          fFinalDPhi[i]->SetMinimum(0);
          fFinalDPhi[i]->DrawClone("");
          fTotal2Gaus[i] ->DrawClone("same");
        
          Double_t A11     = fTotal2Gaus[i]->GetParameter(0);
          Double_t sigma11 = fTotal2Gaus[i]->GetParameter(1);
          Double_t A31     = fTotal2Gaus[i]->GetParameter(2);
          Double_t sigma31 = fTotal2Gaus[i]->GetParameter(3);

          Double_t a1e1 = fTotal2Gaus[i]->GetParError(0);
          Double_t s1e1 = fTotal2Gaus[i]->GetParError(1);
          Double_t a3e1 = fTotal2Gaus[i]->GetParError(2);
          Double_t s3e1 = fTotal2Gaus[i]->GetParError(3);
        
      
          Double_t T11 = A11*sigma11; 
          Double_t T31 = A31*sigma31;
          Double_t t11 = T11*TMath::Sqrt(a1e1*a1e1/A11/A11 + s1e1*s1e1/sigma11/sigma11); 
          Double_t t31 = T31*TMath::Sqrt(a3e1*a3e1/A31/A31 + s3e1*s3e1/sigma31/sigma31);
  

          //second fit: 3 gauss + const
          fTotal[i] = new TF1(Form("gaus3_%d",i), fitFunction , -0.5*TMath::Pi(), 1.5*TMath::Pi(), 7);
          fTotal[i]->SetName(Form("gaus3_%d",i));
          fTotal[i]->SetParNames ("A1","sigma1","A2","sigma2", "A3", "sigma3","integral");
          fTotal[i]->SetLineColor(kRed);
          fTotal[i]->SetLineWidth(2);
    
          Double_t integr_for_const = fFinalDPhi[i]->Integral();
    
        
          fTotal[i]->FixParameter(0,A11);
          fTotal[i]->FixParameter(1,sigma11*1.2);
          fTotal[i]->FixParameter(2,A11);
          fTotal[i]->FixParameter(3,sigma11*0.7);
          fTotal[i]->FixParameter(4,A31);
          fTotal[i]->FixParameter(5,sigma31);
          fTotal[i]->FixParameter(6,integr_for_const);

          fTotal[i]->SetParLimits(0, 0, (fFinalDPhi[i]->GetBinContent(fFinalDPhi[i]->GetXaxis()->FindFixBin(0))-baseline[i])*2);
          fTotal[i]->SetParLimits(1, 0.3, 10); 
          fTotal[i]->SetParLimits(2, 0, (fFinalDPhi[i]->GetBinContent(fFinalDPhi[i]->GetXaxis()->FindFixBin(0))-baseline[i])*2);
          fTotal[i]->SetParLimits(3, 0.12, 0.4);
          fTotal[i]->SetParLimits(4, 0, (fFinalDPhi[i]->GetBinContent(fFinalDPhi[i]->
							      GetXaxis()->FindFixBin(TMath::Pi()))-baseline[i])*2);
          fTotal[i]->SetParLimits(5, 0.01, 10);
    
          fTotal[i]->SetLineColor(kRed);
          fTotal[i]->SetLineWidth(2);


          fFinalDPhi[i]->Fit(fTotal[i],flag);
          fFinalDPhi[i]->SetMinimum(0);
          fFinalDPhi[i]->DrawClone("");
          fFinalDPhi[i]->SetTitle(Form("0.7<p_{T,trig}<5.0 - 0.7<p_{T,assoc}<5.0 - %d-%d %",i*5,(i+1)*5));
          fFinalDPhi[i]->SetTitle("1/N_{trig} dN_{assoc}/d#Delta#varphi (rad^{-1})");
          fTotal[i]->DrawClone("same");
        
          Double_t A1     = fTotal[i]->GetParameter(0);
          Double_t sigma1 = fTotal[i]->GetParameter(1);
          Double_t A2     = fTotal[i]->GetParameter(2);
          Double_t sigma2 = fTotal[i]->GetParameter(3);
          Double_t A3     = fTotal[i]->GetParameter(4);
          Double_t sigma3 = fTotal[i]->GetParameter(5);

      
          //define each gaussian and constant to be drawn with different colors on top of each other
        
          TF1 * fConstant = new TF1("konst", "pol0(0)",-0.5*TMath::Pi(), 1.5*TMath::Pi());
          fConstant->SetParameter(0,(integr_for_const - TMath::Sqrt(TMath::Pi()*2)/binWidth*(A1*sigma1+A2*sigma2+A3*sigma3))/bins);
          fConstant->SetLineColor(kBlue);
          fConstant->Draw("same");
      
          //gaus 1 NS
          TF1 * fGaussian1 = new TF1("fGaussian1", "[0]*exp(-x*x/(2*[1]*[1])) +[0] * exp(-(x-TMath::TwoPi())*(x-TMath::TwoPi())/(2*[1]*[1]))",-0.5*TMath::Pi(), 1.5*TMath::Pi());
          fGaussian1->SetParameters(fTotal[i]->GetParameter(0),fTotal[i]->GetParameter(1));
          fGaussian1->SetLineColor(kMagenta);
          fGaussian1->SetLineStyle(1);
          fGaussian1->Draw("same");
      
          //gaus 2 NS
          TF1 * fGaussian2 = new TF1("fGaussian2", "[0]*exp(-x*x/(2*[1]*[1])) +[0] * exp(-(x-TMath::TwoPi())*(x-TMath::TwoPi())/(2*[1]*[1]))",-0.5*TMath::Pi(), 1.5*TMath::Pi());
          fGaussian2->SetLineColor(kGreen+2);
          fGaussian2->SetParameters(fTotal[i]->GetParameter(2),fTotal[i]->GetParameter(3));
          fGaussian2->Draw("same");
      
          //gaus 3 AS
          TF1 * fGaussian3 = new TF1("fGaussian3", "[0] * exp(-((x-TMath::Pi()))*((x-TMath::Pi()))/(2*[1]*[1]))+[0] * exp(-((x+TMath::Pi()))*((x+TMath::Pi()))/(2*[1]*[1]))",-0.5*TMath::Pi(), 1.5*TMath::Pi());
          fGaussian3->SetLineColor(kCyan);
          fGaussian3->SetParameters(fTotal[i]->GetParameter(4), fTotal[i]->GetParameter(5));
          fGaussian3->Draw("same");
        
        
          Double_t a1e = fTotal[i]->GetParError(0);
          Double_t s1e = fTotal[i]->GetParError(1);
          Double_t a2e = fTotal[i]->GetParError(2);
          Double_t s2e = fTotal[i]->GetParError(3);
          Double_t a3e = fTotal[i]->GetParError(4);
          Double_t s3e = fTotal[i]->GetParError(5);

          Double_t T1 = A1*sigma1;
          Double_t T2 = A2*sigma2;
          Double_t T3 = A3*sigma3;
          Double_t t1 = T1*TMath::Sqrt(a1e*a1e/A1/A1 + s1e*s1e/sigma1/sigma1);
          Double_t t2 = T2*TMath::Sqrt(a2e*a2e/A2/A2 + s2e*s2e/sigma2/sigma2);
          Double_t t3 = T3*TMath::Sqrt(a3e*a3e/A3/A3 + s3e*s3e/sigma3/sigma3);
              
          //-
          Double_t nearSideResult = TMath::Sqrt(TMath::Pi()*2)/ binWidth* (A1 * sigma1 + A2 * sigma2)/trigger->GetBinContent(i+1);
          Double_t nearSideError = nearSideResult * TMath::Sqrt((t1*t1 + t2*t2)/(T1+T2)/(T1+T2)+ 1./trigger->GetBinContent(i+1));
          fNearSideIntegral->SetPoint(points,i, nearSideResult);
          fNearSideIntegral->SetPointError(points,0.5,nearSideError);
        
          //-

          //--
          Double_t awaySideResult = TMath::Sqrt(TMath::Pi()*2)/ binWidth* 
        (A3 * sigma3)/trigger->GetBinContent(i+1);
          Double_t awaySideError = awaySideResult*TMath::Sqrt(a3e*a3e/A3/A3 + s3e*s3e/sigma3/sigma3 + 1/trigger->GetBinContent(i+1));
          fAwaySideIntegral->SetPoint(points,i, awaySideResult );
          fAwaySideIntegral->SetPointError(points,0.5, awaySideError );         
          //--

          //---
          bothSideResult = TMath::Sqrt(TMath::Pi()*2)/ binWidth* (A1 * sigma1 + A2 * sigma2 + A3 * sigma3 )/trigger->GetBinContent(i+1); 
          bothSideError = nearSideResult *  TMath::Sqrt((t1*t1 + t2*t2 + t3*t3)/(T1+T2+T3)/(T1+T2+T3)+ 1./trigger->GetBinContent(i+1));
          fBothSideIntegral->SetPoint(points,i, bothSideResult );
          fBothSideIntegral->SetPointError(points,0.5, bothSideError );      
          //---
            
    }
    else{
        
        fNearSideIntegral->SetPoint(points,i, 0);
        fAwaySideIntegral->SetPoint(points,i, 0);
        fBothSideIntegral->SetPoint(points,i,0);
    
    }
    Double_t p0BinContent=p0->GetBinContent(i+1);
    Double_t p0BinError=p0->GetBinError(i+1);
    
    //--------
    Double_t njets =  p0BinContent/(1+bothSideResult); 
    Double_t njetsError = njets*TMath::Sqrt(bothSideError*bothSideError/(1+bothSideResult)/(1+bothSideResult) + p0BinError*p0BinError/p0BinContent/p0BinContent);
    fNjets->SetPoint(points,i, njets );
    fNjets->SetPointError(points,0.5,njetsError );
    //-------
      
    fTriggerAverage->SetPoint(points,i, p0BinContent);
    fTriggerAverage->SetPointError(points,0.5, p0BinError);
      
    
  }
      points++;
  }


  TFile* file = 0x0;
  if(zyam)
      file = TFile::Open("njet_zyam.root","RECREATE");
  else
      file = TFile::Open("njet_fit.root","RECREATE");

  fNearSideIntegral->Write();
  fAwaySideIntegral->Write();
  fBothSideIntegral->Write();
  fNjets->Write();
  fTriggerAverage->Write();

  file->Close();



}


 analyse_pA.C:1
 analyse_pA.C:2
 analyse_pA.C:3
 analyse_pA.C:4
 analyse_pA.C:5
 analyse_pA.C:6
 analyse_pA.C:7
 analyse_pA.C:8
 analyse_pA.C:9
 analyse_pA.C:10
 analyse_pA.C:11
 analyse_pA.C:12
 analyse_pA.C:13
 analyse_pA.C:14
 analyse_pA.C:15
 analyse_pA.C:16
 analyse_pA.C:17
 analyse_pA.C:18
 analyse_pA.C:19
 analyse_pA.C:20
 analyse_pA.C:21
 analyse_pA.C:22
 analyse_pA.C:23
 analyse_pA.C:24
 analyse_pA.C:25
 analyse_pA.C:26
 analyse_pA.C:27
 analyse_pA.C:28
 analyse_pA.C:29
 analyse_pA.C:30
 analyse_pA.C:31
 analyse_pA.C:32
 analyse_pA.C:33
 analyse_pA.C:34
 analyse_pA.C:35
 analyse_pA.C:36
 analyse_pA.C:37
 analyse_pA.C:38
 analyse_pA.C:39
 analyse_pA.C:40
 analyse_pA.C:41
 analyse_pA.C:42
 analyse_pA.C:43
 analyse_pA.C:44
 analyse_pA.C:45
 analyse_pA.C:46
 analyse_pA.C:47
 analyse_pA.C:48
 analyse_pA.C:49
 analyse_pA.C:50
 analyse_pA.C:51
 analyse_pA.C:52
 analyse_pA.C:53
 analyse_pA.C:54
 analyse_pA.C:55
 analyse_pA.C:56
 analyse_pA.C:57
 analyse_pA.C:58
 analyse_pA.C:59
 analyse_pA.C:60
 analyse_pA.C:61
 analyse_pA.C:62
 analyse_pA.C:63
 analyse_pA.C:64
 analyse_pA.C:65
 analyse_pA.C:66
 analyse_pA.C:67
 analyse_pA.C:68
 analyse_pA.C:69
 analyse_pA.C:70
 analyse_pA.C:71
 analyse_pA.C:72
 analyse_pA.C:73
 analyse_pA.C:74
 analyse_pA.C:75
 analyse_pA.C:76
 analyse_pA.C:77
 analyse_pA.C:78
 analyse_pA.C:79
 analyse_pA.C:80
 analyse_pA.C:81
 analyse_pA.C:82
 analyse_pA.C:83
 analyse_pA.C:84
 analyse_pA.C:85
 analyse_pA.C:86
 analyse_pA.C:87
 analyse_pA.C:88
 analyse_pA.C:89
 analyse_pA.C:90
 analyse_pA.C:91
 analyse_pA.C:92
 analyse_pA.C:93
 analyse_pA.C:94
 analyse_pA.C:95
 analyse_pA.C:96
 analyse_pA.C:97
 analyse_pA.C:98
 analyse_pA.C:99
 analyse_pA.C:100
 analyse_pA.C:101
 analyse_pA.C:102
 analyse_pA.C:103
 analyse_pA.C:104
 analyse_pA.C:105
 analyse_pA.C:106
 analyse_pA.C:107
 analyse_pA.C:108
 analyse_pA.C:109
 analyse_pA.C:110
 analyse_pA.C:111
 analyse_pA.C:112
 analyse_pA.C:113
 analyse_pA.C:114
 analyse_pA.C:115
 analyse_pA.C:116
 analyse_pA.C:117
 analyse_pA.C:118
 analyse_pA.C:119
 analyse_pA.C:120
 analyse_pA.C:121
 analyse_pA.C:122
 analyse_pA.C:123
 analyse_pA.C:124
 analyse_pA.C:125
 analyse_pA.C:126
 analyse_pA.C:127
 analyse_pA.C:128
 analyse_pA.C:129
 analyse_pA.C:130
 analyse_pA.C:131
 analyse_pA.C:132
 analyse_pA.C:133
 analyse_pA.C:134
 analyse_pA.C:135
 analyse_pA.C:136
 analyse_pA.C:137
 analyse_pA.C:138
 analyse_pA.C:139
 analyse_pA.C:140
 analyse_pA.C:141
 analyse_pA.C:142
 analyse_pA.C:143
 analyse_pA.C:144
 analyse_pA.C:145
 analyse_pA.C:146
 analyse_pA.C:147
 analyse_pA.C:148
 analyse_pA.C:149
 analyse_pA.C:150
 analyse_pA.C:151
 analyse_pA.C:152
 analyse_pA.C:153
 analyse_pA.C:154
 analyse_pA.C:155
 analyse_pA.C:156
 analyse_pA.C:157
 analyse_pA.C:158
 analyse_pA.C:159
 analyse_pA.C:160
 analyse_pA.C:161
 analyse_pA.C:162
 analyse_pA.C:163
 analyse_pA.C:164
 analyse_pA.C:165
 analyse_pA.C:166
 analyse_pA.C:167
 analyse_pA.C:168
 analyse_pA.C:169
 analyse_pA.C:170
 analyse_pA.C:171
 analyse_pA.C:172
 analyse_pA.C:173
 analyse_pA.C:174
 analyse_pA.C:175
 analyse_pA.C:176
 analyse_pA.C:177
 analyse_pA.C:178
 analyse_pA.C:179
 analyse_pA.C:180
 analyse_pA.C:181
 analyse_pA.C:182
 analyse_pA.C:183
 analyse_pA.C:184
 analyse_pA.C:185
 analyse_pA.C:186
 analyse_pA.C:187
 analyse_pA.C:188
 analyse_pA.C:189
 analyse_pA.C:190
 analyse_pA.C:191
 analyse_pA.C:192
 analyse_pA.C:193
 analyse_pA.C:194
 analyse_pA.C:195
 analyse_pA.C:196
 analyse_pA.C:197
 analyse_pA.C:198
 analyse_pA.C:199
 analyse_pA.C:200
 analyse_pA.C:201
 analyse_pA.C:202
 analyse_pA.C:203
 analyse_pA.C:204
 analyse_pA.C:205
 analyse_pA.C:206
 analyse_pA.C:207
 analyse_pA.C:208
 analyse_pA.C:209
 analyse_pA.C:210
 analyse_pA.C:211
 analyse_pA.C:212
 analyse_pA.C:213
 analyse_pA.C:214
 analyse_pA.C:215
 analyse_pA.C:216
 analyse_pA.C:217
 analyse_pA.C:218
 analyse_pA.C:219
 analyse_pA.C:220
 analyse_pA.C:221
 analyse_pA.C:222
 analyse_pA.C:223
 analyse_pA.C:224
 analyse_pA.C:225
 analyse_pA.C:226
 analyse_pA.C:227
 analyse_pA.C:228
 analyse_pA.C:229
 analyse_pA.C:230
 analyse_pA.C:231
 analyse_pA.C:232
 analyse_pA.C:233
 analyse_pA.C:234
 analyse_pA.C:235
 analyse_pA.C:236
 analyse_pA.C:237
 analyse_pA.C:238
 analyse_pA.C:239
 analyse_pA.C:240
 analyse_pA.C:241
 analyse_pA.C:242
 analyse_pA.C:243
 analyse_pA.C:244
 analyse_pA.C:245
 analyse_pA.C:246
 analyse_pA.C:247
 analyse_pA.C:248
 analyse_pA.C:249
 analyse_pA.C:250
 analyse_pA.C:251
 analyse_pA.C:252
 analyse_pA.C:253
 analyse_pA.C:254
 analyse_pA.C:255
 analyse_pA.C:256
 analyse_pA.C:257
 analyse_pA.C:258
 analyse_pA.C:259
 analyse_pA.C:260
 analyse_pA.C:261
 analyse_pA.C:262
 analyse_pA.C:263
 analyse_pA.C:264
 analyse_pA.C:265
 analyse_pA.C:266
 analyse_pA.C:267
 analyse_pA.C:268
 analyse_pA.C:269
 analyse_pA.C:270
 analyse_pA.C:271
 analyse_pA.C:272
 analyse_pA.C:273
 analyse_pA.C:274
 analyse_pA.C:275
 analyse_pA.C:276
 analyse_pA.C:277
 analyse_pA.C:278
 analyse_pA.C:279
 analyse_pA.C:280
 analyse_pA.C:281
 analyse_pA.C:282
 analyse_pA.C:283
 analyse_pA.C:284
 analyse_pA.C:285
 analyse_pA.C:286
 analyse_pA.C:287
 analyse_pA.C:288
 analyse_pA.C:289
 analyse_pA.C:290
 analyse_pA.C:291
 analyse_pA.C:292
 analyse_pA.C:293
 analyse_pA.C:294
 analyse_pA.C:295
 analyse_pA.C:296
 analyse_pA.C:297
 analyse_pA.C:298
 analyse_pA.C:299
 analyse_pA.C:300
 analyse_pA.C:301
 analyse_pA.C:302
 analyse_pA.C:303
 analyse_pA.C:304
 analyse_pA.C:305
 analyse_pA.C:306
 analyse_pA.C:307
 analyse_pA.C:308
 analyse_pA.C:309
 analyse_pA.C:310
 analyse_pA.C:311
 analyse_pA.C:312
 analyse_pA.C:313
 analyse_pA.C:314
 analyse_pA.C:315
 analyse_pA.C:316
 analyse_pA.C:317
 analyse_pA.C:318
 analyse_pA.C:319
 analyse_pA.C:320
 analyse_pA.C:321
 analyse_pA.C:322
 analyse_pA.C:323
 analyse_pA.C:324
 analyse_pA.C:325
 analyse_pA.C:326
 analyse_pA.C:327
 analyse_pA.C:328
 analyse_pA.C:329
 analyse_pA.C:330
 analyse_pA.C:331
 analyse_pA.C:332
 analyse_pA.C:333
 analyse_pA.C:334
 analyse_pA.C:335
 analyse_pA.C:336
 analyse_pA.C:337
 analyse_pA.C:338
 analyse_pA.C:339
 analyse_pA.C:340
 analyse_pA.C:341
 analyse_pA.C:342
 analyse_pA.C:343
 analyse_pA.C:344
 analyse_pA.C:345
 analyse_pA.C:346
 analyse_pA.C:347
 analyse_pA.C:348
 analyse_pA.C:349
 analyse_pA.C:350
 analyse_pA.C:351
 analyse_pA.C:352
 analyse_pA.C:353
 analyse_pA.C:354
 analyse_pA.C:355
 analyse_pA.C:356
 analyse_pA.C:357
 analyse_pA.C:358
 analyse_pA.C:359
 analyse_pA.C:360
 analyse_pA.C:361
 analyse_pA.C:362
 analyse_pA.C:363
 analyse_pA.C:364
 analyse_pA.C:365
 analyse_pA.C:366
 analyse_pA.C:367
 analyse_pA.C:368
 analyse_pA.C:369
 analyse_pA.C:370
 analyse_pA.C:371
 analyse_pA.C:372
 analyse_pA.C:373
 analyse_pA.C:374
 analyse_pA.C:375
 analyse_pA.C:376
 analyse_pA.C:377
 analyse_pA.C:378
 analyse_pA.C:379
 analyse_pA.C:380
 analyse_pA.C:381
 analyse_pA.C:382
 analyse_pA.C:383
 analyse_pA.C:384
 analyse_pA.C:385
 analyse_pA.C:386
 analyse_pA.C:387
 analyse_pA.C:388
 analyse_pA.C:389
 analyse_pA.C:390
 analyse_pA.C:391
 analyse_pA.C:392
 analyse_pA.C:393
 analyse_pA.C:394
 analyse_pA.C:395
 analyse_pA.C:396
 analyse_pA.C:397
 analyse_pA.C:398
 analyse_pA.C:399
 analyse_pA.C:400
 analyse_pA.C:401
 analyse_pA.C:402
 analyse_pA.C:403
 analyse_pA.C:404
 analyse_pA.C:405
 analyse_pA.C:406
 analyse_pA.C:407
 analyse_pA.C:408
 analyse_pA.C:409
 analyse_pA.C:410
 analyse_pA.C:411
 analyse_pA.C:412
 analyse_pA.C:413
 analyse_pA.C:414
 analyse_pA.C:415
 analyse_pA.C:416
 analyse_pA.C:417
 analyse_pA.C:418
 analyse_pA.C:419
 analyse_pA.C:420
 analyse_pA.C:421
 analyse_pA.C:422
 analyse_pA.C:423
 analyse_pA.C:424
 analyse_pA.C:425
 analyse_pA.C:426
 analyse_pA.C:427
 analyse_pA.C:428
 analyse_pA.C:429
 analyse_pA.C:430
 analyse_pA.C:431
 analyse_pA.C:432
 analyse_pA.C:433
 analyse_pA.C:434
 analyse_pA.C:435
 analyse_pA.C:436
 analyse_pA.C:437
 analyse_pA.C:438
 analyse_pA.C:439
 analyse_pA.C:440
 analyse_pA.C:441
 analyse_pA.C:442
 analyse_pA.C:443
 analyse_pA.C:444
 analyse_pA.C:445
 analyse_pA.C:446
 analyse_pA.C:447
 analyse_pA.C:448
 analyse_pA.C:449
 analyse_pA.C:450
 analyse_pA.C:451
 analyse_pA.C:452
 analyse_pA.C:453
 analyse_pA.C:454
 analyse_pA.C:455
 analyse_pA.C:456
 analyse_pA.C:457
 analyse_pA.C:458
 analyse_pA.C:459
 analyse_pA.C:460
 analyse_pA.C:461
 analyse_pA.C:462
 analyse_pA.C:463
 analyse_pA.C:464
 analyse_pA.C:465
 analyse_pA.C:466
 analyse_pA.C:467
 analyse_pA.C:468
 analyse_pA.C:469
 analyse_pA.C:470
 analyse_pA.C:471
 analyse_pA.C:472
 analyse_pA.C:473
 analyse_pA.C:474
 analyse_pA.C:475
 analyse_pA.C:476
 analyse_pA.C:477
 analyse_pA.C:478
 analyse_pA.C:479
 analyse_pA.C:480
 analyse_pA.C:481
 analyse_pA.C:482
 analyse_pA.C:483
 analyse_pA.C:484
 analyse_pA.C:485
 analyse_pA.C:486
 analyse_pA.C:487
 analyse_pA.C:488
 analyse_pA.C:489
 analyse_pA.C:490
 analyse_pA.C:491
 analyse_pA.C:492
 analyse_pA.C:493
 analyse_pA.C:494
 analyse_pA.C:495
 analyse_pA.C:496
 analyse_pA.C:497
 analyse_pA.C:498
 analyse_pA.C:499
 analyse_pA.C:500
 analyse_pA.C:501
 analyse_pA.C:502
 analyse_pA.C:503
 analyse_pA.C:504
 analyse_pA.C:505
 analyse_pA.C:506
 analyse_pA.C:507
 analyse_pA.C:508
 analyse_pA.C:509
 analyse_pA.C:510
 analyse_pA.C:511
 analyse_pA.C:512
 analyse_pA.C:513
 analyse_pA.C:514
 analyse_pA.C:515
 analyse_pA.C:516
 analyse_pA.C:517
 analyse_pA.C:518
 analyse_pA.C:519
 analyse_pA.C:520
 analyse_pA.C:521
 analyse_pA.C:522
 analyse_pA.C:523
 analyse_pA.C:524
 analyse_pA.C:525
 analyse_pA.C:526
 analyse_pA.C:527
 analyse_pA.C:528
 analyse_pA.C:529
 analyse_pA.C:530
 analyse_pA.C:531
 analyse_pA.C:532
 analyse_pA.C:533
 analyse_pA.C:534
 analyse_pA.C:535
 analyse_pA.C:536
 analyse_pA.C:537
 analyse_pA.C:538
 analyse_pA.C:539
 analyse_pA.C:540
 analyse_pA.C:541
 analyse_pA.C:542
 analyse_pA.C:543
 analyse_pA.C:544
 analyse_pA.C:545
 analyse_pA.C:546
 analyse_pA.C:547
 analyse_pA.C:548
 analyse_pA.C:549
 analyse_pA.C:550
 analyse_pA.C:551
 analyse_pA.C:552
 analyse_pA.C:553
 analyse_pA.C:554
 analyse_pA.C:555
 analyse_pA.C:556
 analyse_pA.C:557
 analyse_pA.C:558
 analyse_pA.C:559
 analyse_pA.C:560
 analyse_pA.C:561
 analyse_pA.C:562
 analyse_pA.C:563
 analyse_pA.C:564
 analyse_pA.C:565
 analyse_pA.C:566
 analyse_pA.C:567
 analyse_pA.C:568
 analyse_pA.C:569
 analyse_pA.C:570
 analyse_pA.C:571
 analyse_pA.C:572
 analyse_pA.C:573
 analyse_pA.C:574
 analyse_pA.C:575
 analyse_pA.C:576
 analyse_pA.C:577
 analyse_pA.C:578
 analyse_pA.C:579
 analyse_pA.C:580
 analyse_pA.C:581
 analyse_pA.C:582
 analyse_pA.C:583
 analyse_pA.C:584
 analyse_pA.C:585
 analyse_pA.C:586
 analyse_pA.C:587
 analyse_pA.C:588
 analyse_pA.C:589
 analyse_pA.C:590
 analyse_pA.C:591
 analyse_pA.C:592
 analyse_pA.C:593
 analyse_pA.C:594
 analyse_pA.C:595
 analyse_pA.C:596
 analyse_pA.C:597
 analyse_pA.C:598
 analyse_pA.C:599
 analyse_pA.C:600
 analyse_pA.C:601
 analyse_pA.C:602
 analyse_pA.C:603
 analyse_pA.C:604
 analyse_pA.C:605
 analyse_pA.C:606
 analyse_pA.C:607
 analyse_pA.C:608
 analyse_pA.C:609
 analyse_pA.C:610
 analyse_pA.C:611
 analyse_pA.C:612
 analyse_pA.C:613
 analyse_pA.C:614
 analyse_pA.C:615
 analyse_pA.C:616
 analyse_pA.C:617
 analyse_pA.C:618
 analyse_pA.C:619
 analyse_pA.C:620
 analyse_pA.C:621
 analyse_pA.C:622
 analyse_pA.C:623
 analyse_pA.C:624
 analyse_pA.C:625
 analyse_pA.C:626
 analyse_pA.C:627
 analyse_pA.C:628
 analyse_pA.C:629
 analyse_pA.C:630
 analyse_pA.C:631
 analyse_pA.C:632
 analyse_pA.C:633
 analyse_pA.C:634
 analyse_pA.C:635
 analyse_pA.C:636
 analyse_pA.C:637
 analyse_pA.C:638
 analyse_pA.C:639
 analyse_pA.C:640
 analyse_pA.C:641
 analyse_pA.C:642
 analyse_pA.C:643
 analyse_pA.C:644
 analyse_pA.C:645
 analyse_pA.C:646
 analyse_pA.C:647
 analyse_pA.C:648
 analyse_pA.C:649
 analyse_pA.C:650
 analyse_pA.C:651
 analyse_pA.C:652
 analyse_pA.C:653
 analyse_pA.C:654
 analyse_pA.C:655
 analyse_pA.C:656
 analyse_pA.C:657
 analyse_pA.C:658
 analyse_pA.C:659
 analyse_pA.C:660
 analyse_pA.C:661
 analyse_pA.C:662
 analyse_pA.C:663
 analyse_pA.C:664
 analyse_pA.C:665
 analyse_pA.C:666
 analyse_pA.C:667
 analyse_pA.C:668
 analyse_pA.C:669
 analyse_pA.C:670
 analyse_pA.C:671
 analyse_pA.C:672
 analyse_pA.C:673
 analyse_pA.C:674
 analyse_pA.C:675
 analyse_pA.C:676
 analyse_pA.C:677
 analyse_pA.C:678
 analyse_pA.C:679
 analyse_pA.C:680
 analyse_pA.C:681
 analyse_pA.C:682
 analyse_pA.C:683
 analyse_pA.C:684
 analyse_pA.C:685
 analyse_pA.C:686
 analyse_pA.C:687
 analyse_pA.C:688
 analyse_pA.C:689
 analyse_pA.C:690
 analyse_pA.C:691
 analyse_pA.C:692
 analyse_pA.C:693
 analyse_pA.C:694
 analyse_pA.C:695
 analyse_pA.C:696
 analyse_pA.C:697
 analyse_pA.C:698
 analyse_pA.C:699
 analyse_pA.C:700
 analyse_pA.C:701
 analyse_pA.C:702
 analyse_pA.C:703
 analyse_pA.C:704
 analyse_pA.C:705
 analyse_pA.C:706
 analyse_pA.C:707
 analyse_pA.C:708
 analyse_pA.C:709
 analyse_pA.C:710
 analyse_pA.C:711
 analyse_pA.C:712
 analyse_pA.C:713
 analyse_pA.C:714
 analyse_pA.C:715
 analyse_pA.C:716
 analyse_pA.C:717
 analyse_pA.C:718
 analyse_pA.C:719
 analyse_pA.C:720
 analyse_pA.C:721
 analyse_pA.C:722
 analyse_pA.C:723
 analyse_pA.C:724
 analyse_pA.C:725
 analyse_pA.C:726
 analyse_pA.C:727
 analyse_pA.C:728
 analyse_pA.C:729
 analyse_pA.C:730
 analyse_pA.C:731
 analyse_pA.C:732