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

// tmp setting
// const char* mcfile = "/d/alice09/mknichel/train/V007.MC_pp/2011-05-05_2347.7147/mergedPeriods/MC_pp/7TeV/LHC10f6a/mknichel_dNdPtpp_TPCITS.root";
// const char* mctask = "mknichel_dNdPtpp_TPCITS";
// const char* idstring = "TPCITS";
// const char* gifdir = "/u/mknichel/alice/dNdPt_pp/temp";
// const char* datafile = "/d/alice09/mknichel/train/V007.MC_pp/2011-05-05_2347.7147/mergedPeriods/MC_pp/7TeV/LHC10f6a/mknichel_dNdPtpp_TPCITS.root";
// const char* outfile = "/u/mknichel/alice/dNdPt_pp/temp/FinalSpectra.root";
// const char* corrfile = "/u/mknichel/alice/dNdPt_pp/temp/corrMatr_LHC10f6a_TPCITS.root";
// const char* gifdir = "/u/mknichel/alice/dNdPt_pp/temp";

TString fname (datafile);

TString id (idstring);
TString taskname = "mknichel_dNdPtpp_" + id;
TString objname = "dNdPtAnalysis_" + id;

// tmp setting
 //     const char* datatask = "jotwinow_dNdPtAnalysis_TPCITS";
//      const char* corrfile = "/u/mknichel/alice/dNdPt_pp/2011-04-04_1251/corrMatr_LHC10f6a_TPCITS.root";
//      const char* idstring = "";
//      const char* outfile = "/u/mknichel/alice/dNdPt_pp/2011-04-04_1251/finalSpectra_LHC11a_TPCITS.root";
//      const char* gifdir = "/u/mknichel/alice/dNdPt_pp/2011-04-04_1251/plots";
    
    // 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("libOADB.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 saves
    TObjArray* Hists = new TObjArray();
    
    // open file with correction matrices
    TFile *fcorr = TFile::Open(corrfile,"READ");
    if (!fcorr) return -2;
    
    TH1D* dNdPt_MC      =  (TH1D*) fcorr->Get("dNdPt_MC");
    TH1D* dNdEta_MC      = (TH1D*) fcorr->Get("dNdEta_MC");
    Hists->Add(dNdPt_MC);
    Hists->Add(dNdEta_MC);
    
    // load data
    TFile* fdata = TFile::Open(datafile,"READ");
    if (!fdata) return -1;
    TList* ldata = dynamic_cast<TList*>(fdata->Get(taskname.Data()));
    if (!ldata) return -1;
    AlidNdPtAnalysis *obj = dynamic_cast<AlidNdPtAnalysis*>(ldata->FindObject(objname.Data()));
    if (!obj) return -1;
    
    //Event statistics
    obj->GetRecEventHist2()->GetAxis(0)->SetRange();
    THnSparse *fRecEventHist2 = obj->GetRecEventHist2(); //reconstructed events	
    TH1D* h1RecEventHist2_zv = (TH1D*) fRecEventHist2->Projection(0)->Clone("h1RecEventHist2_zv");  // zvertex distribution
    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");
    TH2D* h2RecEvent2Corrected = (TH2D*) fRecEventHist2->Projection(0,1)->Clone("h2RecEvent2Corrected"); //will be corrected
    
    THnSparse* fEventCount = obj->GetEventCount(); 
    Hists->Add(fEventCount);
    Double_t TriggeredEventsNoVertex = fEventCount->Projection(0)->GetBinContent(2) -  fEventCount->Projection(1)->GetBinContent(2); // all triggered events without rec. vertex
    Double_t AllTriggeredEvents = fEventCount->Projection(0)->GetBinContent(2); // all
    
    Double_t ReconstructedEvents = h2RecEvent2->Integral();
    Double_t ReconstructedEventsAll = h2RecEvent2All->Integral();
    Double_t TriggerEffInel = 0.864; //numeber from michele floris for 7TeV (I use it also for 2.76)
    TriggerEffInel = 0.9379; //mc value from mc
    if ( fname.Contains("900GeV") ) { TriggerEffInel = 0.9156; } 
    if ( fname.Contains("2.76TeV") ) { TriggerEffInel = 0.883; } 
    if ( fname.Contains("7TeV") ) { TriggerEffInel = 0.8524; } 
    
    cout << "Using Trigger_to_Inel efficiecy: " << TriggerEffInel <<endl;
    
    
    Double_t ReconstructedEventsFraction = (ReconstructedEventsAll-ReconstructedEvents) / ReconstructedEventsAll;
    Double_t SelectedEventsFraction = ReconstructedEvents / ReconstructedEventsAll;
    Double_t InelasticEventsSimple = AllTriggeredEvents/TriggerEffInel*SelectedEventsFraction;
    
    Hists->Add(h2RecEvent2);
    Hists->Add(h2RecEvent2All);
    Hists->Add(h2RecEvent2Corrected);
  
    printf("=== Number of events from DATA                      %lf ===\n",ReconstructedEvents);
    printf("=== Number of events from DATA (before zVertex cut) %lf ===\n",ReconstructedEventsAll);
    printf("=== Number of events from DATA (all triggered)      %lf ===\n",AllTriggeredEvents);
  
    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 corrections (event level)
     TH2D* h2EventTriggerEffAll   = (TH2D*)fcorr->Get("h2EventTriggerEffAll");  
     TH2D* h2EventTriggerCorrAll  = (TH2D*)fcorr->Get("h2EventTriggerCorrAll");  
     TH2D* h2EventTriggerEff      = (TH2D*)fcorr->Get("h2EventTriggerEff");  
     TH2D* h2EventTriggerCorr     = (TH2D*)fcorr->Get("h2EventTriggerCorr");  
     TH2D* h2EventRecEffAll       = (TH2D*)fcorr->Get("h2EventRecEffAll");  
     TH2D* h2EventRecCorrAll      = (TH2D*)fcorr->Get("h2EventRecCorrAll");  
     TH2D* h2EventRecEff          = (TH2D*)fcorr->Get("h2EventRecEff");  
     TH2D* h2EventRecCorr         = (TH2D*)fcorr->Get("h2EventRecCorr");  
     TH2D* h2EventEffAll          = (TH2D*)fcorr->Get("h2EventEffAll");  
     TH2D* h2EventCorrAll         = (TH2D*)fcorr->Get("h2EventCorrAll");  
     TH2D* h2EventEff             = (TH2D*)fcorr->Get("h2EventEff");  
     TH2D* h2EventCorr            = (TH2D*)fcorr->Get("h2EventCorr"); 
     TH1D* h1TriggerEff_bin0_zv   = (TH1D*)fcorr->Get("h1TriggerEff_bin0_zv"); 
     TH1D* h1TriggerCorr_bin0_zv  = (TH1D*)fcorr->Get("h1TriggerCorr_bin0_zv"); 
     TH1D* h1Ratio_zv             = (TH1D*)fcorr->Get("h1Ratio_zv"); 
     TH1D* corr_shape_trig0_zv    = (TH1D*)fcorr->Get("corr_shape_trig0_zv"); 
     TH1D* corr_shape_notrig0_zv  = (TH1D*)fcorr->Get("corr_shape_notrig0_zv"); 
     
     
    Double_t corrTrackMatch = 1.0;
   //tracking efficiency is 2% to low in MC LHC10e13 900GeV as compared to data
   if ( fname.Contains("900GeV") ) {   
       corrTrackMatch = 1.02;
       cout << "900 GeV: correct tracking matching efficiency " <<endl;
   }

     
    // correct bin0
    //h1RecEventHist2_zv->Scale(1./h1RecEventHist2_zv->Integral());
    /*
    TH1D* h1Bin0_zv =  (TH1D*) h1RecEventHist2_zv->Clone("h1Bin0_zv");
    h1Bin0_zv->Multiply(h1Ratio_zv);
    h1Bin0_zv->Scale(1./h1Bin0_zv->Integral());
    h1Bin0_zv->Scale(TriggeredEventsNoVertex);
    //h1Bin0_zv->Multiply(h1TriggerCorr_bin0_zv);
    h1Bin0_zv->GetXaxis()->SetRangeUser(-zVert, zVert-0.01); //zVertex
    Double_t bin0EventsCorrected =  h1Bin0_zv->Integral();
    */
    // this is what is used for normalization
    Double_t InelasticEventsAll =  AllTriggeredEvents/TriggerEffInel; 
    Double_t Bin0EventsAll = TriggeredEventsNoVertex;
    Double_t UntriggeredEventsAll = InelasticEventsAll - AllTriggeredEvents;
    cout << "cross check: INEL Events 1 " << InelasticEventsAll <<endl;
    cout << "cross check: INEL Events 2 " << (ReconstructedEventsAll+Bin0EventsAll+UntriggeredEventsAll) <<endl;
    
    // correct bin0
    TH1D* h1Bin0_zv =  (TH1D*) h1RecEventHist2_zv->Clone("h1Bin0_zv");
    h1Bin0_zv->Multiply(corr_shape_trig0_zv);     //correct for shape
    h1Bin0_zv->Scale(1./h1Bin0_zv->Integral());    //normalize    
    h1Bin0_zv->Scale(Bin0EventsAll);
    Double_t Bin0Events = h1Bin0_zv->Integral(5,8);
    
    //correct untriggered
    TH1D* h1NoTrig_zv =  (TH1D*) h1RecEventHist2_zv->Clone("h1NoTrig_zv");
    h1NoTrig_zv->Multiply(corr_shape_notrig0_zv);     //correct for shape
    h1NoTrig_zv->Scale(1./h1NoTrig_zv->Integral());    //normalize    
    h1NoTrig_zv->Scale(UntriggeredEventsAll);
    Double_t UntriggeredEvents = h1NoTrig_zv->Integral(5,8);
    
    
    Double_t InelasticEvents = ReconstructedEvents + Bin0Events + UntriggeredEvents;
    
    /*
    // my way (old)
    TH1D* h1Bin0_zv =  (TH1D*) h1RecEventHist2_zv->Clone("h1Bin0_zv");
    h1Bin0_zv->Multiply(h1Ratio_zv);
    h1Bin0_zv->Multiply(h1TriggerEff_bin0_zv);
    h1Bin0_zv->Scale(1./h1Bin0_zv->Integral());
    h1Bin0_zv->Scale(TriggeredEventsNoVertex);
    h1Bin0_zv->Multiply(h1TriggerCorr_bin0_zv);
    Double_t bin0EventsCorrected = h1Bin0_zv->Integral(5,8);
     */

    /*
    //jaceks way (?)
    h1RecEventHist2_zv->Scale(1./h1RecEventHist2_zv->Integral());
    h1RecEventHist2_zv->Scale(TriggeredEventsNoVertex); 
    Double_t bin0EventsCorrected = h1RecEventHist2_zv->Integral(5,8);    
*/
     // retrieve tracks
    THnSparse* hSRecTrack; // = obj->GetRecTrackHist()->Clone("hsRecTrack"); //thnsparse to be corrected
    THnSparse* fRecTrackHist2 = obj->GetRecTrackHist(); //after all cuts (2)
    fRecTrackHist2->GetAxis(0)->SetRangeUser(-zVert, zVert-0.01); //zVertex
    fRecTrackHist2->GetAxis(2)->SetRangeUser(-eta, eta-0.01); // eta   
    Int_t dims[4] = {0,1,2,3};
    hSRecTrack = (THnSparse*) (fRecTrackHist2->Projection(4,dims,"e")->Clone("hSRecTrack"));        
    hSRecTrackAllMult = (THnSparse*) (fRecTrackHist2->Projection(3,dims,"e")->Clone("hSRecTrackAllMult"));
    
    TH3D* h3RecTrackHist2 = fRecTrackHist2->Projection(0,1,2)->Clone("h3RecTrackHist2");
   
    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);
    Hists->Add(h3RecTrackHist2);
    
    // generate corrections for events
    TH1D* h1MCGeneratedEvents     = (TH1D*)fcorr->Get("h1MCGeneratedEvents");  
    TH1D* h1MCReconstructedEvents = (TH1D*)fcorr->Get("h1MCReconstructedEvents");
    TH1D* h1MCTriggeredEvents0mult = (TH1D*)fcorr->Get("h1MCTriggeredEvents0mult");
    TH1D* h1MCTriggeredEventsAll0mult = (TH1D*)fcorr->Get("h1MCTriggeredEventsAll0mult");
    TH1D* h1MCTriggeredEventsAll = (TH1D*)fcorr->Get("h1MCTriggeredEventsAll");
    TH1D* h1MCTriggeredEvents = (TH1D*)fcorr->Get("h1MCTriggeredEvents");
        
    
    Double_t MCGeneratedEvents = h1MCGeneratedEvents->GetEntries();
    Double_t MCReconstructedEvents = h1MCReconstructedEvents->GetEntries();
    Double_t CorrEvent = MCGeneratedEvents / MCReconstructedEvents;
    
    Double_t MCTriggeredEvents = h1MCTriggeredEvents->GetEntries();
    Double_t MCTriggeredEventsAll = h1MCTriggeredEventsAll->GetEntries();
    Double_t MCTriggeredEvents0mult = h1MCTriggeredEvents0mult->GetEntries();
    Double_t MCTriggeredEventsAll0mult = h1MCTriggeredEventsAll0mult->GetEntries();        
    Double_t CorrVtxEvent0mult    = MCTriggeredEvents / (MCTriggeredEvents-MCTriggeredEvents0mult); //this is used
    Double_t CorrVtxEventAll0mult = MCTriggeredEventsAll / (MCTriggeredEventsAll-MCTriggeredEventsAll0mult); 
    
    // correct for trigger/vertex inefficiencies
    for (int xbin=1; xbin <= h2RecEvent2Corrected->GetNbinsX(); xbin++) {
        for (int ybin=1; ybin <= h2RecEvent2Corrected->GetNbinsY(); ybin++) {
            Double_t x = h2RecEvent2Corrected->GetXaxis()->GetBinCenter(xbin);
            Double_t y = h2RecEvent2Corrected->GetYaxis()->GetBinCenter(ybin);
            Int_t bin  = h2EventCorr->FindBin(x,y);            
            Double_t corr    = h2EventCorr->GetBinContent(bin);
            Double_t correrr = h2EventCorr->GetBinError(bin);
            if (corr < 0.01) { corr=1.; correrr=0.;} //bin empty in correction matrix            
            Double_t val     = h2RecEvent2Corrected->GetBinContent(xbin,ybin);
            Double_t err     = h2RecEvent2Corrected->GetBinError(xbin,ybin);
            h2RecEvent2Corrected->SetBinContent(xbin,ybin,corr*val);
            h2RecEvent2Corrected->SetBinError(xbin,ybin,TMath::Sqrt(val*val*correrr*correrr + err*err*corr*corr));
            
        }
    }
    //Double_t ReconstructedEventsCorrected = h2RecEvent2Corrected->Integral() * CorrVtxEvent0mult;
    //Double_t ReconstructedEventsCorrected = h2RecEvent2Corrected->Integral() + bin0EventsCorrected;
    printf("=== Number of events from DATA (final correction)   %lf ===\n",InelasticEvents); 
    printf("=== Number of events from DATA (corr, no bin0)      %lf ===\n",h2RecEvent2Corrected->Integral());
    printf("=== Number of events from DATA (simple corr. 7TeV)  %lf ===\n",InelasticEventsSimple);          
    printf("=== Number of events from DATA (simple correction)  %lf ===\n",ReconstructedEvents * CorrEvent);
    printf("=== Number of bin0events from DATA                  %lf ===\n",TriggeredEventsNoVertex); 
    //printf("=== Number of bin0events from DATA (corrected)      %lf ===\n",bin0EventsCorrected); 
    
    // retrieve 3D correction matrices for tracking efficiency and secondaries (note different binning!)
    TH3D* h3TrackEff   = (TH3D*)fcorr->Get("h3TrackEff");  
    TH3D* h3TrackCorr  = (TH3D*)fcorr->Get("h3TrackCorr");  
    TH3D* h3SecCont    = (TH3D*)fcorr->Get("h3SecCont");  
    TH3D* h3SecCorr    = (TH3D*)fcorr->Get("h3SecCorr");      
    
    // retrieve 3D thnsparse correction matrices for tracking efficiency and secondaries (note different binning!) --- this is used!!!!
    THnSparse* hSTrackEff = (THnSparse*) fcorr->Get("hSTrackEff");
    THnSparse* hSTrackCorr = (THnSparse*) fcorr->Get("hSTrackCorr");
    THnSparse* hSSecCont = (THnSparse*) fcorr->Get("hSSecCont");
    THnSparse* hSSecCorr = (THnSparse*) fcorr->Get("hSSecCorr");
        

    // 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 cval = val*secCorr;
        Double_t cerr = TMath::Sqrt(val*val*secCorrErr*secCorrErr + err*err*secCorr*secCorr);
        h1Corrected_pt->SetBinContent(i,cval);
        h1Corrected_pt->SetBinError(i,cerr);
    }

    // tracking efficiency correction 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 effCorr    = h1TrackCorr_pt->GetBinContent(h1TrackCorr_pt->FindBin(pt));
        Double_t effCorrErr = h1TrackCorr_pt->GetBinError(h1TrackCorr_pt->FindBin(pt));
        
        Double_t cval = corrTrackMatch * val * effCorr;
        Double_t cerr = corrTrackMatch * TMath::Sqrt(val*val*effCorrErr*effCorrErr + err*err*effCorr*effCorr);
        h1Corrected_pt->SetBinContent(i,cval);
        h1Corrected_pt->SetBinError(i,cerr);
    }
       
       
    
   // efficiency and contamination correction for thnsparse
   for (Long64_t j = 0; j < hSRecTrack->GetNbins(); j++) {
       Int_t tc[4];
       Double_t tval    = hSRecTrack->GetBinContent(j,tc);
       Double_t terr    = hSRecTrack->GetBinError(j);
       Double_t tzv     = hSRecTrack->GetAxis(0)->GetBinCenter(tc[0]);
       Double_t tpt     = hSRecTrack->GetAxis(1)->GetBinCenter(tc[1]);
       Double_t teta    = hSRecTrack->GetAxis(2)->GetBinCenter(tc[2]);
       Double_t tmultMB = hSRecTrack->GetAxis(3)->GetBinCenter(tc[3]);
       if (tzv >= 10.0) { tzv = 9.9; }
       if (teta >= 0.8) {teta = 0.79;}
       if (tzv < -10.0) { tzv = -10.; }
       if (teta < -0.8) { teta = -0.8; }              
       if (tpt >= 50.) { tpt = 49.5; } // above 50 GeV corr matr have low statistics 
       if (tpt < 0.15) { tpt = 0.175; } // also below 0.15       
       Double_t xvals[3];
       xvals[0] = tzv;
       xvals[1] = tpt;
       xvals[2] = teta;
       Double_t effCorr    = hSTrackCorr->GetBinContent(hSTrackCorr->GetBin(xvals,kFALSE));
       Double_t effCorrErr = hSTrackCorr->GetBinError(hSTrackCorr->GetBin(xvals,kFALSE));
       Double_t secCorr    = hSSecCont->GetBinContent(hSSecCont->GetBin(xvals,kFALSE));
       Double_t secCorrErr = hSSecCont->GetBinError(hSSecCont->GetBin(xvals,kFALSE));
//        Double_t effCorr    = h3TrackCorr->GetBinContent(h3TrackCorr->FindBin(tzv,tpt,teta));
//        Double_t effCorrErr = h3TrackCorr->GetBinError(h3TrackCorr->FindBin(tzv,tpt,teta));
//        Double_t secCorr    = 1. - h3SecCont->GetBinContent(h3SecCont->FindBin(tzv,tpt,teta));
//        Double_t secCorrErr = h3SecCont->GetBinError(h3SecCont->FindBin(tzv,tpt,teta));
       if (effCorr < 1.) { cout << "bin empty, use efficiency 1!" << endl; effCorr=1.; }
       if (secCorr < 0.001) { cout << "bin empty, use contamination 0!" << endl; }
       if (effCorrErr < 1e-9) { cout << "eff error empty!" << endl; }
       if (secCorrErr < 1e-9) { cout << "cont error empty!" << endl;}
       Double_t corr    = corrTrackMatch * effCorr*(1.-secCorr);
       //Double_t corrErr = corrTrackMatch * TMath::Sqrt(effCorr*secCorrErr + secCorr*effCorrErr); 
       Double_t ctval = tval*corr;
       Double_t cterr = terr*corr; // errors are not correlated        
       //Double_t cterr = TMath::Sqrt(tval*tval*corrErr*corrErr + terr*terr*corr*corr); // errors are not correlated       
       hSRecTrack->SetBinContent(j,ctval);
       hSRecTrack->SetBinError(j,cterr);
    }
    
    TH1D* effCorrPt = hSRecTrack->Projection(1)->Clone("effCorrPt");
    TH1D* effCorrPtErr2 = hSRecTrack->Projection(1)->Clone("effCorrPtErr2");
    TH1D* effCorrPtNorm = hSRecTrack->Projection(1)->Clone("effCorrPtNorm");
    effCorrPt->Reset();
    effCorrPtErr2->Reset();
//     effCorrPtNorm->Reset();
    /*
for (Long64_t j = 0; j < hSRecTrackAllMult->GetNbins(); j++) {
       Int_t tc[3];
       Double_t tval    = hSRecTrackAllMult->GetBinContent(j,tc);
       Double_t tzv     = hSRecTrackAllMult->GetAxis(0)->GetBinCenter(tc[0]);
       Double_t tpt     = hSRecTrackAllMult->GetAxis(1)->GetBinCenter(tc[1]);
       Double_t teta    = hSRecTrackAllMult->GetAxis(2)->GetBinCenter(tc[2]);
       if (tpt >= 50.) { tpt = 49.5; } // above 50 GeV corr matr have low statistics 
       Double_t effCorr    = h3TrackCorr->GetBinContent(h3TrackCorr->FindBin(tzv,tpt,teta));
       Double_t effCorrErr = h3TrackCorr->GetBinError(h3TrackCorr->FindBin(tzv,tpt,teta));
       Double_t secCorr    = 1. - h3SecCont->GetBinContent(h3SecCont->FindBin(tzv,tpt,teta));
       Double_t secCorrErr = h3SecCont->GetBinError(h3SecCont->FindBin(tzv,tpt,teta));
       if (effCorr < 0.1) { cout << "bin empty, use efficiency 1!" << endl; effCorr=1.; effCorrErr=0.; }
       if (secCorr < 0.1) { cout << "bin empty, use contamination 0!" << endl; secCorr=1.; secCorrErr=0.; }
       Double_t corr    = effCorr*secCorr;
       Double_t corrErr = effCorr*secCorrErr + secCorr*effCorrErr; // errors are correlated
       effCorrPt->Fill(tpt,tval*corr);
       effCorrPtErr2->Fill(tpt,tval*tval*corrErr*corrErr);
       effCorrPtNorm->Fill(tpt,tval);
    }
       
    effCorrPt->Divide(effCorrPtNorm);
    for (Int_t i = 4; i <= effCorrPtErr2->GetNbinsX(); i++) { effCorrPtErr2->SetBinContent(i,TMath::Sqrt(effCorrPtErr2->GetBinContent(i)));  }
    effCorrPtErr2->Divide(effCorrPtNorm);
    cout << effCorrPt->GetBinContent(4) << endl;
    cout << effCorrPtErr2->GetBinContent(4) << endl;
    cout << effCorrPtNorm->GetBinContent(4) << endl;
    
    
    
    TH1D* RecTrackPtCorrected = hSRecTrack->Projection(1)->Clone("RecTrackPtCorrected");
    RecTrackPtCorrected->Reset();    
    

    for (Int_t i = 4; i <= RecTrackPtCorrected->GetNbinsX(); i++) {    
       if (0 == effCorrPtErr2->GetBinContent(i)) continue;
       Double_t val     = effCorrPt->GetBinContent(i); 
       cout << (val*val/effCorrPtNorm->GetBinContent(i)) << " " << effCorrPtErr2->GetBinContent(i) << endl;
       Double_t err2  = (val*val/effCorrPtNorm->GetBinContent(i)) + effCorrPtErr2->GetBinContent(i);
       RecTrackPtCorrected->SetBinContent(i,val);
       RecTrackPtCorrected->SetBinError(i,TMath::Sqrt(err2));
    }
    */
    
for (Long64_t j = 0; j < hSRecTrackAllMult->GetNbins(); j++) {
       Int_t tc[3];
       Double_t tval    = hSRecTrackAllMult->GetBinContent(j,tc);
       Double_t terr    = TMath::Sqrt(tval); //hSRecTrackAllMult->GetBinError(j);
       Double_t tzv     = hSRecTrackAllMult->GetAxis(0)->GetBinCenter(tc[0]);
       Double_t tpt     = hSRecTrackAllMult->GetAxis(1)->GetBinCenter(tc[1]);
       Double_t teta    = hSRecTrackAllMult->GetAxis(2)->GetBinCenter(tc[2]);
       Double_t tmultMB = hSRecTrack->GetAxis(3)->GetBinCenter(tc[3]);
       if (tzv >= 10.0) { tzv = 9.9; }
       if (teta >= 0.8) {teta = 0.79;}
       if (tzv < -10.0) { tzv = -10.; }
       if (teta < -0.8) { teta = -0.8; }              
       if (tpt >= 50.) { tpt = 49.5; } // above 50 GeV corr matr have low statistics 
       if (tpt < 0.15) { tpt = 0.175; } // also below 0.15       
      Double_t xvals[3];
       xvals[0] = tzv;
       xvals[1] = tpt;
       xvals[2] = teta;
       Double_t effCorr    = hSTrackCorr->GetBinContent(hSTrackCorr->GetBin(xvals,kFALSE));
       Double_t effCorrErr = hSTrackCorr->GetBinError(hSTrackCorr->GetBin(xvals,kFALSE));
       Double_t secCont    = hSSecCont->GetBinContent(hSSecCont->GetBin(xvals,kFALSE));
       Double_t secContErr = hSSecCont->GetBinError(hSSecCont->GetBin(xvals,kFALSE));       
//        Double_t effCorr    = h3TrackCorr->GetBinContent(h3TrackCorr->FindBin(tzv,tpt,teta));
//        Double_t effCorrErr = h3TrackCorr->GetBinError(h3TrackCorr->FindBin(tzv,tpt,teta));
//        Double_t secCorr    = 1. - h3SecCont->GetBinContent(h3SecCont->FindBin(tzv,tpt,teta));
//        Double_t secCorrErr = h3SecCont->GetBinError(h3SecCont->FindBin(tzv,tpt,teta));       
       if (effCorr < 1.) { cout << "bin empty, use efficiency 1!" << endl; effCorr=1.; }
       if (secCont < 0.001) { cout << "bin empty, use contamination 0!" << endl; }
       if (effCorrErr < 1e-9) { cout << "eff error empty!" << endl; }
       if (secContErr < 1e-9) { cout << "cont error empty!" << endl;}
       Double_t secCorr = (1.-secCont);
       Double_t corr    = corrTrackMatch * (effCorr*secCorr);
       Double_t corrErr = corrTrackMatch *  TMath::Sqrt(effCorr*secCorrErr + secCorr*effCorrErr); 
       Double_t ctval = tval*corr;
       Double_t cterr = terr*corr; // errors are not correlated        
       //Double_t cterr = TMath::Sqrt(tval*tval*corrErr*corrErr + terr*terr*corr*corr); // errors are not correlated       
       hSRecTrackAllMult->SetBinContent(j,ctval);
       hSRecTrackAllMult->SetBinError(j,cterr);
    }
    
    // create final spectrum in multiplicity bins
    TH2D* dNdPtMult = hSRecTrack->Projection(3,1)->Clone("dNdPtMult");
    
    // create final spectra (as clone of corrected data)
    TH1D* dNdPt = hSRecTrackAllMult->Projection(1)->Clone("dNdPt");
/*
    // errors on pt spectrum from corrections
    for (int i=1; i <= dNdPt->GetNbinsX() ; i++) {
        Double_t pt = dNdPt->GetBinCenter(i);
        Double_t val = dNdPt->GetBinContent(i);
        Double_t err = dNdPt->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*secCorr;
        Double_t cerr = TMath::Sqrt(val*val*corrErr*corrErr + err*err*corr*corr);
        dNdPt->SetBinError(i,cerr);
    }
    
    // errors on pt spectrum from corrections
    for (int i=1; i <= dNdPtMult->GetNbinsX() ; i++) {
    for (int k=1; k <= dNdPtMult->GetNbinsY() ; k++) {
        Double_t pt = dNdPt->GetBinCenter(i);
        Double_t val = dNdPtMult->GetBinContent(i,k);
        Double_t err = dNdPtMult->GetBinError(i,k);
        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*secCorr;
        Double_t cerr = TMath::Sqrt(val*val*corrErr*corrErr + err*err*corr*corr);
        dNdPtMult->SetBinError(i,k,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);


    TH1D* dNdPt_simple = (TH1D*) h1Corrected_pt->Clone("dNdPt_simple");
    TH1D* dNdPt_simple_nores  = (TH1D*) h1Corrected_pt->Clone("dNdPt_simple_nores");
    
    
    TH1D* dNdEta  = hSRecTrackAllMult->Projection(2)->Clone("dNdEta");
    TH1D* dNdEta_simple  = h1Corrected_eta->Clone("dNdEta_simple");
       
    // also uncorrected spectra (as clone of raw data)
    TH1D* dNdPt_raw   = (TH1D*) h1RecTrackHist2_pt->Clone("dNdPt_raw");
    TH1D* dNdEta_raw  = (TH1D*) h1RecTrackHist2_eta->Clone("dNdEta_raw");
    
    // also uncorrected spectra (as clone of raw data)
    TH1D* dNdPt_nores          = (TH1D*) dNdPt->Clone("dNdPt_nores");    
    //TH1D* dNdEta_nores  = h1Corrected_eta->Clone("dNdEta_nores");
    
       

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

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