ROOT logo
Double_t ApplyCorrections_PbPb(const char* datafile, const char* datatask, const char* corrfile, const char* idstring ,const char* outfile, const char* gifdir = 0)
//Double_t ApplyCorrections_PbPb()
{

// tmp setting
//      const char* datafile = "/lustre/alice/train/V006.PbPb/2011-03-15_0009.5917/mergedPeriods/PbPb/2.76ATeV/LHC10h.pass1/mknichel_dNdPtPbPb_TPCITS_VZERO1.root";     
//      const char* datatask = "mknichel_dNdPtPbPb_TPCITS_VZERO";
//      const char* corrfile = "/u/mknichel/alice/dNdPt_PbPb/2011-03-15/corrMatr_LHC10h8_TPCITS.root";     
//      const char* idstring = "c0";
//      const char* outfile = "/u/mknichel/alice/dNdPt_PbPb/2011-03-15/finalSpectra_LHC10h.pass1_TPCITS.root";     
//      const char* gifdir = "/u/mknichel/alice/dNdPt_PbPb/2011-03-15/LHC10h.pass1";
 
    
Int_t c_first = 1;
Int_t c_last = 11;

TString id = TString(idstring);
if ( id.Contains("c0-5") ) { c_first = c_last = 1; }
if ( id.Contains("c5-10") ) { c_first = c_last = 2; }
if ( id.Contains("c10-20") ) { c_first = c_last = 3; }
if ( id.Contains("c20-30") ) { c_first = c_last = 4; }
if ( id.Contains("c30-40") ) { c_first = c_last = 5; }
if ( id.Contains("c40-50") ) { c_first = c_last = 6; }
if ( id.Contains("c50-60") ) { c_first = c_last = 7; }
if ( id.Contains("c60-70") ) { c_first = c_last = 8; }
if ( id.Contains("c70-80") ) { c_first = c_last = 9; }
if ( id.Contains("c80-90") ) { c_first = c_last = 10; }
if ( id.Contains("c90-100") ) { c_first = c_last = 11; }
    
    // settings vor zVertex cut (event and track level)
    Double_t zVert = 10.0;
    
    // setting on eta cut (track level)
    Double_t eta = 0.8;
    
    //load required libraries
    //load required libraries    
    gSystem->AddIncludePath("-I$ROOTSYS/include -I$ALICE_ROOT/ -I$ALICE_ROOT/include -I$ALICE_ROOT/STEER  -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/PWG0 -I$ALICE_ROOT/PWGPP -I$ALICE_ROOT/PWG2 -I$ALICE_ROOT/PWG3 -I$ALICE_ROOT/PWG3/vertexingHF -I$ALICE_ROOT/PWG4 -I$ALICE_ROOT/CORRFW -I$ALICE_ROOT/TPC -I$ALICE_ROOT/TRD -I$ALICE_ROOT/PWG3/muon -I$ALICE_ROOT/JETAN -I$ALICE_ROOT/ANALYSIS/Tender");
    
  gSystem->Load("libCore");
  gSystem->Load("libPhysics");
  gSystem->Load("libMinuit");
  gSystem->Load("libGui");
  gSystem->Load("libXMLParser");

  gSystem->Load("libGeom");
  gSystem->Load("libVMC");

  gSystem->Load("libNet");

  gSystem->Load("libSTEERBase");
  gSystem->Load("libESD");
  gSystem->Load("libCDB");
  gSystem->Load("libRAWDatabase");
  gSystem->Load("libRAWDatarec");
  gSystem->Load("libANALYSIS");

    
    
    gSystem->Load("libANALYSIS.so");
    gSystem->Load("libANALYSISalice.so");
    gSystem->Load("libTENDER.so");
    gSystem->Load("libCORRFW.so");
    gSystem->Load("libPWG0base.so");    
    gSystem->Load("libPWG0dep"); 
    gSystem->Load("libPWG0selectors.so");
    

    // make plots nicer
    gROOT->SetStyle("Plain");
    gStyle->SetPalette(1);
    
    // array for all histograms to be saved
    TObjArray* Hists = new TObjArray();
    
    // open file with correction matrices
    TFile *fcorr = TFile::Open(corrfile,"READ");
    if (!fcorr) return -2;
    
    // load data
    TFile* fdata = TFile::Open(datafile,"READ");
    if (!fdata) return -1;
    TList* ldata = dynamic_cast<TList*>(fdata->Get(datatask));
    if (!ldata) return -1;
    AlidNdPtAnalysisPbPb *obj = dynamic_cast<AlidNdPtAnalysisPbPb*>(ldata->FindObject("dNdPtAnalysisPbPb"));
    if (!obj) return -1;
    
    //Event statistics
    THnSparse *fRecEventHist2 = obj->GetRecEventHist2(); //reconstructed events	
    fRecEventHist2->GetAxis(2)->SetRange(c_first,c_last); // select centrality    
    TH2D* h2RecEvent2All = (TH2D*) fRecEventHist2->Projection(0,1)->Clone("h2RecEvent2All");
    fRecEventHist2->GetAxis(0)->SetRangeUser(-zVert, zVert-0.01);//zVer
    TH2D* h2RecEvent2 = (TH2D*) fRecEventHist2->Projection(0,1)->Clone("h2RecEvent2");
    
    Double_t ReconstructedEvents = h2RecEvent2->Integral();
    Double_t ReconstructedEventsAll = h2RecEvent2All->Integral();
    
    Hists->Add(h2RecEvent2);
    Hists->Add(h2RecEvent2All);
  
    printf("=== Number of events from DATA                      %lf ===\n",ReconstructedEvents);
    printf("=== Number of events from DATA (before zVertex cut) %lf ===\n",ReconstructedEventsAll);        
  
    TH1D* h1ReconstructedEvents = new TH1D("h1ReconstructedEvents","h1ReconstructedEvents",1,0,1);
    TH1D* h1ReconstructedEventsAll = new TH1D("h1ReconstructedEventsAll","h1ReconstructedEventsAll",1,0,1);
    
    h1ReconstructedEvents->Fill(0,ReconstructedEvents);
    h1ReconstructedEvents->SetEntries(ReconstructedEvents);
    h1ReconstructedEventsAll->Fill(0,ReconstructedEventsAll);
    h1ReconstructedEventsAll->SetEntries(ReconstructedEventsAll);
        
    Hists->Add(h1ReconstructedEvents);
    Hists->Add(h1ReconstructedEventsAll);

     // retrieve tracks
    THnSparse* fRecTrackHist2 = obj->GetRecTrackHist2(2); //after all cuts (2)
    fRecTrackHist2->GetAxis(3)->SetRange(c_first,c_last); // select centrality    
    fRecTrackHist2->GetAxis(0)->SetRangeUser(-zVert, zVert-0.01); //zVertex
    fRecTrackHist2->GetAxis(2)->SetRangeUser(-eta, eta-0.01); // eta   
   
    TH1D* h1RecTrackHist2_zv = fRecTrackHist2->Projection(0)->Clone("h1RecTrackHist2_zv");
    TH1D* h1RecTrackHist2_pt = fRecTrackHist2->Projection(1)->Clone("h1RecTrackHist2_pt");
    TH1D* h1RecTrackHist2_eta = fRecTrackHist2->Projection(2)->Clone("h1RecTrackHist2_eta");
   
    Hists->Add(h1RecTrackHist2_zv);
    Hists->Add(h1RecTrackHist2_pt);
    Hists->Add(h1RecTrackHist2_eta);

    // retrieve correction matrices for tracking efficiency (note different binning!)
    TH1D* h1TrackCorr_pt  = (TH1D*)fcorr->Get("h1TrackCorr_pt");  
    TH1D* h1TrackCorr_eta = (TH1D*)fcorr->Get("h1TrackCorr_eta");
        
    // retrieve correction matrices for secondaries (note different binning!)
    TH1D* h1SecCorr_pt  = (TH1D*)fcorr->Get("h1SecCorr_pt");  
    TH1D* h1SecCorr_eta = (TH1D*)fcorr->Get("h1SecCorr_eta");

    // create corrected spectra (as clone of raw data)
    TH1D* h1Corrected_pt  = h1RecTrackHist2_pt->Clone("h1Corrected_pt");
    TH1D* h1Corrected_eta  = h1RecTrackHist2_eta->Clone("h1Corrected_eta");

    // secondaries correction for pt spectrum
    for (int i=1; i <= h1Corrected_pt->GetNbinsX() ; i++) {
        Double_t pt = h1Corrected_pt->GetBinCenter(i);
        Double_t val = h1Corrected_pt->GetBinContent(i);
        Double_t err = h1Corrected_pt->GetBinError(i);
        if (pt >= 50) { pt = 49.5; }  // above 50 GeV corr matr have low statistics
        Double_t secCorr    = h1SecCorr_pt->GetBinContent(h1SecCorr_pt->FindBin(pt));
        Double_t secCorrErr = h1SecCorr_pt->GetBinError(h1SecCorr_pt->FindBin(pt));
        Double_t effCorr    = h1TrackCorr_pt->GetBinContent(h1TrackCorr_pt->FindBin(pt));
        Double_t effCorrErr = h1TrackCorr_pt->GetBinError(h1TrackCorr_pt->FindBin(pt));        
        Double_t corr    = effCorr*secCorr;
        Double_t corrErr = effCorr*secCorrErr + secCorr*effCorrErr; // errors are correlated        
        Double_t cval = val*corr;
        Double_t cerr = TMath::Sqrt(val*val*corrErr*corrErr + err*err*corr*corr);        
        h1Corrected_pt->SetBinContent(i,cval);
        h1Corrected_pt->SetBinError(i,cerr);
    }

    
    // for eta the correction is simpler because of same binning
    h1Corrected_eta->Multiply(h1SecCorr_eta);
    h1Corrected_eta->Multiply(h1TrackCorr_eta);
    
    Hists->Add(h1Corrected_pt);
    Hists->Add(h1Corrected_eta);

    // create final spectra (as clone of corrected data)
    TH1D* dNdPt   = h1Corrected_pt->Clone("dNdPt");
    TH1D* dNdEta  = h1Corrected_eta->Clone("dNdEta");
       
    // also uncorrected spectra (as clone of raw data)
    TH1D* dNdPt_raw   = h1RecTrackHist2_pt->Clone("dNdPt_raw");
    TH1D* dNdEta_raw  = h1RecTrackHist2_eta->Clone("dNdEta_raw");
    
    TH1D* dNdPt_nores   = h1Corrected_pt->Clone("dNdPt_nores");    
       

//TF1 *fperi  = new TF1("fperi","1.00343-0.000608425*x-6.7038e-05*x*x",5.,40.);
//TF1 *fcent  = new TF1("cent","1.01074e+00-1.98127e-03*x-1.19903e-04*x*x",5.,40.);
TFile* fptcorr = TFile::Open("ptcorrPbPb_150511.root");

TF1 * fun = 0;

  TF1 *fcent  = new TF1("fcent","1.01074e+00-1.98127e-03*x-1.19903e-04*x*x",5.,50.);    
  TF1 *fperi  = new TF1("fperi","1.00343-0.000608425*x-6.7038e-05*x*x",5.,50.);
Double_t downscale = 1.;
            if (c_first != c_last) {
             cout << "++++++++++++++++++++++++++++++++++++++++" << endl;
             cout << "WARNING: pt resolution correction error!" << endl;
             cout << " (works only for single centraliy bins) " << endl;
             cout << "++++++++++++++++++++++++++++++++++++++++" << endl;
        }
        if (c_first == 1) {
		fun = (TF1*) fptcorr->Get("ptcorr_c0");
		downscale = 0.8;
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "0-5% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	
        } else if (c_first == 2) { 
        	downscale = 0.8;
		fun =(TF1*) fptcorr->Get("ptcorr_c5");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "5-10% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	        
        } else if (c_first == 3) { 
        	downscale = 0.8;
		fun =(TF1*) fptcorr->Get("ptcorr_c10");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "10-20% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	        
        } else if (c_first == 4) { 
        	downscale = 0.9;
		fun =(TF1*) fptcorr->Get("ptcorr_c20");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "20-30% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	        
        } else if (c_first == 5) { 
		fun =(TF1*) fptcorr->Get("ptcorr_c30");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "30-40% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	        
        } else if (c_first == 6) { 
		fun =(TF1*) fptcorr->Get("ptcorr_c40");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "40-50% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	        
        } else if (c_first == 7) { 
		fun =(TF1*) fptcorr->Get("ptcorr_c50");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "50-60% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	                
	} else if (c_first == 8) { 
		fun =(TF1*) fptcorr->Get("ptcorr_c60");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;
 		cout << "60-70% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++" << endl;   	                   
        } else {
        	fun =(TF1*) fptcorr->Get("ptcorr_c70");
  		cout << "+++++++++++++++++++++++++++++++++++++++++++++" << endl;  		
 		cout << "70-80% central pt-resolution correction used!" << endl;
 		cout << "+++++++++++++++++++++++++++++++++++++++++++++" << endl;   
        }    
    

    // normalization and finalization
    // 1/N_evt 1/(2 pi pt) 1/width 1/etarange    
    
   for (int i=1; i <= dNdPt->GetNbinsX() ;i++) {
        Double_t pt = dNdPt->GetBinCenter(i);
        Double_t width = dNdPt->GetBinWidth(i);
        Double_t val = dNdPt->GetBinContent(i);
        Double_t err = dNdPt->GetBinError(i);
        Double_t corrPtResol = 1.0;     
        corrPtResol = 1.-((1.-fun->Eval(pt))*downscale );
        if (pt < 10.) { corrPtResol = 1.0; }        
        Double_t cval = (val * corrPtResol)/(width * 2.0 * TMath::Pi() * 1.6 * ReconstructedEvents * pt);
        Double_t cerr = (err * corrPtResol)/(width * 2.0 * TMath::Pi() * 1.6 * ReconstructedEvents * pt);
        dNdPt->SetBinContent(i,cval);
        dNdPt->SetBinError(i,cerr);
    }
    // for dndeta again simpler
    dNdEta->Scale(1,"width");
    dNdEta->Scale(1./ReconstructedEvents);
    
    // normalization and finalization without resolution correction
    // 1/N_evt 1/(2 pi pt) 1/width 1/etarange
   for (int i=1; i <= dNdPt_nores->GetNbinsX() ;i++) {
        Double_t pt = dNdPt_nores->GetBinCenter(i);
        Double_t width = dNdPt_nores->GetBinWidth(i);
        Double_t val = dNdPt_nores->GetBinContent(i);
        Double_t err = dNdPt_nores->GetBinError(i);
        Double_t cval = (val)/(width * 2.0 * TMath::Pi() * 1.6 * ReconstructedEvents * pt);
        Double_t cerr = (err)/(width * 2.0 * TMath::Pi() * 1.6 * ReconstructedEvents * pt);
        dNdPt_nores->SetBinContent(i,cval);
        dNdPt_nores->SetBinError(i,cerr);
    }    
    
    // normalization and finalization
    // 1/N_evt 1/(2 pi pt) 1/width 1/etarange
   for (int i=1; i <= dNdPt_raw->GetNbinsX() ;i++) {
        Double_t pt = dNdPt_raw->GetBinCenter(i);
        Double_t width = dNdPt_raw->GetBinWidth(i);
        Double_t val = dNdPt_raw->GetBinContent(i);
        Double_t err = dNdPt_raw->GetBinError(i);
        Double_t cval = val/(width * 2.0 * TMath::Pi() * 1.6 * ReconstructedEvents * pt);
        Double_t cerr = err/(width * 2.0 * TMath::Pi() * 1.6 * ReconstructedEvents * pt);
        dNdPt_raw->SetBinContent(i,cval);
        dNdPt_raw->SetBinError(i,cerr);
    }
    // for dndeta again simpler
    dNdEta_raw->Scale(1,"width");
    dNdEta_raw->Scale(1./ReconstructedEvents);
     
    dNdEta->SetMarkerStyle(21);
    dNdPt->SetMarkerStyle(21);
    dNdPt->SetTitle("; p_{T} (GeV/c) ; 1/N_{evt} 1/(2#pi p_{T}) (d^{2}N_{ch})/(d#eta dp_{T}) (GeV/c)^{-2}");
    dNdEta->SetTitle("; #eta ; 1/N_{evt} (d^{2}N_{ch})/(d#eta)");
    
    dNdPt_raw->SetTitle("; p_{T} (GeV/c) ; 1/N_{evt} 1/(2#pi p_{T}) (d^{2}N_{ch})/(d#eta dp_{T}) (GeV/c)^{-2}");
    dNdEta_raw->SetTitle("; #eta ; 1/N_{evt} (d^{2}N_{ch})/(d#eta)");
    
    Hists->Add(dNdEta_raw);
    Hists->Add(dNdPt_raw);
    Hists->Add(dNdEta);
    Hists->Add(dNdPt);
    Hists->Add(dNdPt_nores);
    
    
   // plot pictures and save to gifdir
    for (i=0; i < Hists->LastIndex(); i++) {    
        TCanvas* ctmp = PlotHist(Hists->At(i),idstring);
        if (gifdir && ctmp) {
            TString gif(gifdir);
            gif += '/';
            gif += ctmp->GetName();
            gif += ".gif";
            ctmp->SaveAs(gif.Data(),"gif");     
            delete ctmp;
        }
    }  

    // save all correction matrices and control histograms to file
    if (!outfile) { return; }
    TFile *out = TFile::Open(outfile,"RECREATE");
    Hists->Write();
    out->Close();    

    return ReconstructedEvents;

}

//___________________________________________________________________________
TCanvas* PlotHist(TObject* hobj, const char* label=0)
{
    TH1* h = dynamic_cast<TH1*>(hobj);
    if (!h) return 0;
    if (h->GetDimension() > 2) return 0;
    h->SetStats(0);
    if ( TString(h->GetName()).Contains("Events")) { h->SetStats(1); } 
    TString t(label);
    if (label) t += "_";
    t += h->GetName();
    h->SetTitle(t.Data());
    TCanvas* c = new TCanvas(t.Data(),t.Data());
    if (h->GetDimension() >= 1) {
        TString xlabel(h->GetXaxis()->GetTitle());
        if (xlabel.Contains("Pt")) { c->SetLogx();  c->SetLogy();  h->GetXaxis()->SetRangeUser(0.1 , 100.); }
        if (xlabel.Contains("p_{T}")) { c->SetLogx();  c->SetLogy();  h->GetXaxis()->SetRangeUser(0.1 , 100.); }        
    }
    if (h->GetDimension() == 2) {  
        TString ylabel(h->GetYaxis()->GetTitle());
        if (ylabel.Contains("Pt")) { c->SetLogy(); h->GetYaxis()->SetRangeUser(0.1 , 100.); }
        if (ylabel.Contains("p_{T}")) { c->SetLogy(); h->GetYaxis()->SetRangeUser(0.1 , 100.); }
        h->Draw("COLZ");
    }        
    if (h->GetDimension() == 1) {
        h->Draw();
    }
    return c;

}
 ApplyCorrections_PbPb.C:1
 ApplyCorrections_PbPb.C:2
 ApplyCorrections_PbPb.C:3
 ApplyCorrections_PbPb.C:4
 ApplyCorrections_PbPb.C:5
 ApplyCorrections_PbPb.C:6
 ApplyCorrections_PbPb.C:7
 ApplyCorrections_PbPb.C:8
 ApplyCorrections_PbPb.C:9
 ApplyCorrections_PbPb.C:10
 ApplyCorrections_PbPb.C:11
 ApplyCorrections_PbPb.C:12
 ApplyCorrections_PbPb.C:13
 ApplyCorrections_PbPb.C:14
 ApplyCorrections_PbPb.C:15
 ApplyCorrections_PbPb.C:16
 ApplyCorrections_PbPb.C:17
 ApplyCorrections_PbPb.C:18
 ApplyCorrections_PbPb.C:19
 ApplyCorrections_PbPb.C:20
 ApplyCorrections_PbPb.C:21
 ApplyCorrections_PbPb.C:22
 ApplyCorrections_PbPb.C:23
 ApplyCorrections_PbPb.C:24
 ApplyCorrections_PbPb.C:25
 ApplyCorrections_PbPb.C:26
 ApplyCorrections_PbPb.C:27
 ApplyCorrections_PbPb.C:28
 ApplyCorrections_PbPb.C:29
 ApplyCorrections_PbPb.C:30
 ApplyCorrections_PbPb.C:31
 ApplyCorrections_PbPb.C:32
 ApplyCorrections_PbPb.C:33
 ApplyCorrections_PbPb.C:34
 ApplyCorrections_PbPb.C:35
 ApplyCorrections_PbPb.C:36
 ApplyCorrections_PbPb.C:37
 ApplyCorrections_PbPb.C:38
 ApplyCorrections_PbPb.C:39
 ApplyCorrections_PbPb.C:40
 ApplyCorrections_PbPb.C:41
 ApplyCorrections_PbPb.C:42
 ApplyCorrections_PbPb.C:43
 ApplyCorrections_PbPb.C:44
 ApplyCorrections_PbPb.C:45
 ApplyCorrections_PbPb.C:46
 ApplyCorrections_PbPb.C:47
 ApplyCorrections_PbPb.C:48
 ApplyCorrections_PbPb.C:49
 ApplyCorrections_PbPb.C:50
 ApplyCorrections_PbPb.C:51
 ApplyCorrections_PbPb.C:52
 ApplyCorrections_PbPb.C:53
 ApplyCorrections_PbPb.C:54
 ApplyCorrections_PbPb.C:55
 ApplyCorrections_PbPb.C:56
 ApplyCorrections_PbPb.C:57
 ApplyCorrections_PbPb.C:58
 ApplyCorrections_PbPb.C:59
 ApplyCorrections_PbPb.C:60
 ApplyCorrections_PbPb.C:61
 ApplyCorrections_PbPb.C:62
 ApplyCorrections_PbPb.C:63
 ApplyCorrections_PbPb.C:64
 ApplyCorrections_PbPb.C:65
 ApplyCorrections_PbPb.C:66
 ApplyCorrections_PbPb.C:67
 ApplyCorrections_PbPb.C:68
 ApplyCorrections_PbPb.C:69
 ApplyCorrections_PbPb.C:70
 ApplyCorrections_PbPb.C:71
 ApplyCorrections_PbPb.C:72
 ApplyCorrections_PbPb.C:73
 ApplyCorrections_PbPb.C:74
 ApplyCorrections_PbPb.C:75
 ApplyCorrections_PbPb.C:76
 ApplyCorrections_PbPb.C:77
 ApplyCorrections_PbPb.C:78
 ApplyCorrections_PbPb.C:79
 ApplyCorrections_PbPb.C:80
 ApplyCorrections_PbPb.C:81
 ApplyCorrections_PbPb.C:82
 ApplyCorrections_PbPb.C:83
 ApplyCorrections_PbPb.C:84
 ApplyCorrections_PbPb.C:85
 ApplyCorrections_PbPb.C:86
 ApplyCorrections_PbPb.C:87
 ApplyCorrections_PbPb.C:88
 ApplyCorrections_PbPb.C:89
 ApplyCorrections_PbPb.C:90
 ApplyCorrections_PbPb.C:91
 ApplyCorrections_PbPb.C:92
 ApplyCorrections_PbPb.C:93
 ApplyCorrections_PbPb.C:94
 ApplyCorrections_PbPb.C:95
 ApplyCorrections_PbPb.C:96
 ApplyCorrections_PbPb.C:97
 ApplyCorrections_PbPb.C:98
 ApplyCorrections_PbPb.C:99
 ApplyCorrections_PbPb.C:100
 ApplyCorrections_PbPb.C:101
 ApplyCorrections_PbPb.C:102
 ApplyCorrections_PbPb.C:103
 ApplyCorrections_PbPb.C:104
 ApplyCorrections_PbPb.C:105
 ApplyCorrections_PbPb.C:106
 ApplyCorrections_PbPb.C:107
 ApplyCorrections_PbPb.C:108
 ApplyCorrections_PbPb.C:109
 ApplyCorrections_PbPb.C:110
 ApplyCorrections_PbPb.C:111
 ApplyCorrections_PbPb.C:112
 ApplyCorrections_PbPb.C:113
 ApplyCorrections_PbPb.C:114
 ApplyCorrections_PbPb.C:115
 ApplyCorrections_PbPb.C:116
 ApplyCorrections_PbPb.C:117
 ApplyCorrections_PbPb.C:118
 ApplyCorrections_PbPb.C:119
 ApplyCorrections_PbPb.C:120
 ApplyCorrections_PbPb.C:121
 ApplyCorrections_PbPb.C:122
 ApplyCorrections_PbPb.C:123
 ApplyCorrections_PbPb.C:124
 ApplyCorrections_PbPb.C:125
 ApplyCorrections_PbPb.C:126
 ApplyCorrections_PbPb.C:127
 ApplyCorrections_PbPb.C:128
 ApplyCorrections_PbPb.C:129
 ApplyCorrections_PbPb.C:130
 ApplyCorrections_PbPb.C:131
 ApplyCorrections_PbPb.C:132
 ApplyCorrections_PbPb.C:133
 ApplyCorrections_PbPb.C:134
 ApplyCorrections_PbPb.C:135
 ApplyCorrections_PbPb.C:136
 ApplyCorrections_PbPb.C:137
 ApplyCorrections_PbPb.C:138
 ApplyCorrections_PbPb.C:139
 ApplyCorrections_PbPb.C:140
 ApplyCorrections_PbPb.C:141
 ApplyCorrections_PbPb.C:142
 ApplyCorrections_PbPb.C:143
 ApplyCorrections_PbPb.C:144
 ApplyCorrections_PbPb.C:145
 ApplyCorrections_PbPb.C:146
 ApplyCorrections_PbPb.C:147
 ApplyCorrections_PbPb.C:148
 ApplyCorrections_PbPb.C:149
 ApplyCorrections_PbPb.C:150
 ApplyCorrections_PbPb.C:151
 ApplyCorrections_PbPb.C:152
 ApplyCorrections_PbPb.C:153
 ApplyCorrections_PbPb.C:154
 ApplyCorrections_PbPb.C:155
 ApplyCorrections_PbPb.C:156
 ApplyCorrections_PbPb.C:157
 ApplyCorrections_PbPb.C:158
 ApplyCorrections_PbPb.C:159
 ApplyCorrections_PbPb.C:160
 ApplyCorrections_PbPb.C:161
 ApplyCorrections_PbPb.C:162
 ApplyCorrections_PbPb.C:163
 ApplyCorrections_PbPb.C:164
 ApplyCorrections_PbPb.C:165
 ApplyCorrections_PbPb.C:166
 ApplyCorrections_PbPb.C:167
 ApplyCorrections_PbPb.C:168
 ApplyCorrections_PbPb.C:169
 ApplyCorrections_PbPb.C:170
 ApplyCorrections_PbPb.C:171
 ApplyCorrections_PbPb.C:172
 ApplyCorrections_PbPb.C:173
 ApplyCorrections_PbPb.C:174
 ApplyCorrections_PbPb.C:175
 ApplyCorrections_PbPb.C:176
 ApplyCorrections_PbPb.C:177
 ApplyCorrections_PbPb.C:178
 ApplyCorrections_PbPb.C:179
 ApplyCorrections_PbPb.C:180
 ApplyCorrections_PbPb.C:181
 ApplyCorrections_PbPb.C:182
 ApplyCorrections_PbPb.C:183
 ApplyCorrections_PbPb.C:184
 ApplyCorrections_PbPb.C:185
 ApplyCorrections_PbPb.C:186
 ApplyCorrections_PbPb.C:187
 ApplyCorrections_PbPb.C:188
 ApplyCorrections_PbPb.C:189
 ApplyCorrections_PbPb.C:190
 ApplyCorrections_PbPb.C:191
 ApplyCorrections_PbPb.C:192
 ApplyCorrections_PbPb.C:193
 ApplyCorrections_PbPb.C:194
 ApplyCorrections_PbPb.C:195
 ApplyCorrections_PbPb.C:196
 ApplyCorrections_PbPb.C:197
 ApplyCorrections_PbPb.C:198
 ApplyCorrections_PbPb.C:199
 ApplyCorrections_PbPb.C:200
 ApplyCorrections_PbPb.C:201
 ApplyCorrections_PbPb.C:202
 ApplyCorrections_PbPb.C:203
 ApplyCorrections_PbPb.C:204
 ApplyCorrections_PbPb.C:205
 ApplyCorrections_PbPb.C:206
 ApplyCorrections_PbPb.C:207
 ApplyCorrections_PbPb.C:208
 ApplyCorrections_PbPb.C:209
 ApplyCorrections_PbPb.C:210
 ApplyCorrections_PbPb.C:211
 ApplyCorrections_PbPb.C:212
 ApplyCorrections_PbPb.C:213
 ApplyCorrections_PbPb.C:214
 ApplyCorrections_PbPb.C:215
 ApplyCorrections_PbPb.C:216
 ApplyCorrections_PbPb.C:217
 ApplyCorrections_PbPb.C:218
 ApplyCorrections_PbPb.C:219
 ApplyCorrections_PbPb.C:220
 ApplyCorrections_PbPb.C:221
 ApplyCorrections_PbPb.C:222
 ApplyCorrections_PbPb.C:223
 ApplyCorrections_PbPb.C:224
 ApplyCorrections_PbPb.C:225
 ApplyCorrections_PbPb.C:226
 ApplyCorrections_PbPb.C:227
 ApplyCorrections_PbPb.C:228
 ApplyCorrections_PbPb.C:229
 ApplyCorrections_PbPb.C:230
 ApplyCorrections_PbPb.C:231
 ApplyCorrections_PbPb.C:232
 ApplyCorrections_PbPb.C:233
 ApplyCorrections_PbPb.C:234
 ApplyCorrections_PbPb.C:235
 ApplyCorrections_PbPb.C:236
 ApplyCorrections_PbPb.C:237
 ApplyCorrections_PbPb.C:238
 ApplyCorrections_PbPb.C:239
 ApplyCorrections_PbPb.C:240
 ApplyCorrections_PbPb.C:241
 ApplyCorrections_PbPb.C:242
 ApplyCorrections_PbPb.C:243
 ApplyCorrections_PbPb.C:244
 ApplyCorrections_PbPb.C:245
 ApplyCorrections_PbPb.C:246
 ApplyCorrections_PbPb.C:247
 ApplyCorrections_PbPb.C:248
 ApplyCorrections_PbPb.C:249
 ApplyCorrections_PbPb.C:250
 ApplyCorrections_PbPb.C:251
 ApplyCorrections_PbPb.C:252
 ApplyCorrections_PbPb.C:253
 ApplyCorrections_PbPb.C:254
 ApplyCorrections_PbPb.C:255
 ApplyCorrections_PbPb.C:256
 ApplyCorrections_PbPb.C:257
 ApplyCorrections_PbPb.C:258
 ApplyCorrections_PbPb.C:259
 ApplyCorrections_PbPb.C:260
 ApplyCorrections_PbPb.C:261
 ApplyCorrections_PbPb.C:262
 ApplyCorrections_PbPb.C:263
 ApplyCorrections_PbPb.C:264
 ApplyCorrections_PbPb.C:265
 ApplyCorrections_PbPb.C:266
 ApplyCorrections_PbPb.C:267
 ApplyCorrections_PbPb.C:268
 ApplyCorrections_PbPb.C:269
 ApplyCorrections_PbPb.C:270
 ApplyCorrections_PbPb.C:271
 ApplyCorrections_PbPb.C:272
 ApplyCorrections_PbPb.C:273
 ApplyCorrections_PbPb.C:274
 ApplyCorrections_PbPb.C:275
 ApplyCorrections_PbPb.C:276
 ApplyCorrections_PbPb.C:277
 ApplyCorrections_PbPb.C:278
 ApplyCorrections_PbPb.C:279
 ApplyCorrections_PbPb.C:280
 ApplyCorrections_PbPb.C:281
 ApplyCorrections_PbPb.C:282
 ApplyCorrections_PbPb.C:283
 ApplyCorrections_PbPb.C:284
 ApplyCorrections_PbPb.C:285
 ApplyCorrections_PbPb.C:286
 ApplyCorrections_PbPb.C:287
 ApplyCorrections_PbPb.C:288
 ApplyCorrections_PbPb.C:289
 ApplyCorrections_PbPb.C:290
 ApplyCorrections_PbPb.C:291
 ApplyCorrections_PbPb.C:292
 ApplyCorrections_PbPb.C:293
 ApplyCorrections_PbPb.C:294
 ApplyCorrections_PbPb.C:295
 ApplyCorrections_PbPb.C:296
 ApplyCorrections_PbPb.C:297
 ApplyCorrections_PbPb.C:298
 ApplyCorrections_PbPb.C:299
 ApplyCorrections_PbPb.C:300
 ApplyCorrections_PbPb.C:301
 ApplyCorrections_PbPb.C:302
 ApplyCorrections_PbPb.C:303
 ApplyCorrections_PbPb.C:304
 ApplyCorrections_PbPb.C:305
 ApplyCorrections_PbPb.C:306
 ApplyCorrections_PbPb.C:307
 ApplyCorrections_PbPb.C:308
 ApplyCorrections_PbPb.C:309
 ApplyCorrections_PbPb.C:310
 ApplyCorrections_PbPb.C:311
 ApplyCorrections_PbPb.C:312
 ApplyCorrections_PbPb.C:313
 ApplyCorrections_PbPb.C:314
 ApplyCorrections_PbPb.C:315
 ApplyCorrections_PbPb.C:316
 ApplyCorrections_PbPb.C:317
 ApplyCorrections_PbPb.C:318
 ApplyCorrections_PbPb.C:319
 ApplyCorrections_PbPb.C:320
 ApplyCorrections_PbPb.C:321
 ApplyCorrections_PbPb.C:322
 ApplyCorrections_PbPb.C:323
 ApplyCorrections_PbPb.C:324
 ApplyCorrections_PbPb.C:325
 ApplyCorrections_PbPb.C:326
 ApplyCorrections_PbPb.C:327
 ApplyCorrections_PbPb.C:328
 ApplyCorrections_PbPb.C:329
 ApplyCorrections_PbPb.C:330
 ApplyCorrections_PbPb.C:331
 ApplyCorrections_PbPb.C:332
 ApplyCorrections_PbPb.C:333
 ApplyCorrections_PbPb.C:334
 ApplyCorrections_PbPb.C:335
 ApplyCorrections_PbPb.C:336
 ApplyCorrections_PbPb.C:337
 ApplyCorrections_PbPb.C:338
 ApplyCorrections_PbPb.C:339
 ApplyCorrections_PbPb.C:340
 ApplyCorrections_PbPb.C:341
 ApplyCorrections_PbPb.C:342
 ApplyCorrections_PbPb.C:343
 ApplyCorrections_PbPb.C:344
 ApplyCorrections_PbPb.C:345
 ApplyCorrections_PbPb.C:346
 ApplyCorrections_PbPb.C:347
 ApplyCorrections_PbPb.C:348
 ApplyCorrections_PbPb.C:349
 ApplyCorrections_PbPb.C:350
 ApplyCorrections_PbPb.C:351
 ApplyCorrections_PbPb.C:352
 ApplyCorrections_PbPb.C:353
 ApplyCorrections_PbPb.C:354
 ApplyCorrections_PbPb.C:355
 ApplyCorrections_PbPb.C:356
 ApplyCorrections_PbPb.C:357
 ApplyCorrections_PbPb.C:358
 ApplyCorrections_PbPb.C:359
 ApplyCorrections_PbPb.C:360
 ApplyCorrections_PbPb.C:361
 ApplyCorrections_PbPb.C:362