ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TFile.h>
#include <TSystem.h>
#include <Riostream.h>
#include <TFile.h>
#include <TH1F.h>
#include <TH2D.h>
#include <TH2F.h>
#include <TF1.h>
#include <TStyle.h>
#include <TCanvas.h>
#include <TMath.h>
#include <TROOT.h>
#include <TLine.h>
#include <TString.h>
#include <TPaveText.h>
#endif

void ratiomodules();
void ratiochips();
void mapsinner(Bool_t isShowMaps=kFALSE);
void phiTracklet();
void phiTrackletsZ();
void foEfficiency(); 


TFile *fData=0x0;
TFile *fMc=0x0;

TList *fListData = 0x0;
TList  *fListMc  = 0x0;

TString fTitleData = "";
TString fTitleMc = "";


void PlotSPDpwgppQA(TString data, TString mc, TString titleData = "[Data]", TString titleMc = "[MC]", Bool_t isGeneralTrain = kFALSE){

  fTitleData=titleData;
  fTitleMc=titleMc;

  gROOT->SetStyle("Plain");
  gStyle->SetPalette(1);
  gStyle->SetOptStat(0);
  gStyle->SetOptFit(111);

 fData = TFile::Open(data.Data());
  if(!isGeneralTrain) fListData = (TList*)fData->Get("chist");
  else {
    TDirectoryFile *spddata = (TDirectoryFile*)fData->Get("SPD_Performance");
    spddata->cd();
    fListData = (TList*)spddata->Get("coutput1");
  }

  Double_t nevtsData = ((TH1I*)(fListData->FindObject("hEventsProcessed")))->GetEntries();
  printf("   #events in %s : %f \n",fTitleData.Data(),nevtsData);

  fMc = TFile::Open(mc.Data());
  if(!isGeneralTrain) fListMc = (TList*)fMc->Get("chist");
  else {
    TDirectoryFile *spdmc = (TDirectoryFile*)fMc->Get("SPD_Performance");
    spdmc->cd();
    fListMc = (TList*)spdmc->Get("coutput1");
  }
  Double_t nevtsMc = ((TH1I*)(fListMc->FindObject("hEventsProcessed")))->GetEntries();
  // phi projection

  printf("   #events in %s : %f \n",fTitleMc.Data(),nevtsMc);
  printf("Available functions : \n - ratiomodules() \n - ratiochips() \n - mapsinner(isShowMaps) \n - phiTracklet() \n - phiTrackletsZ() \n - foEfficiency() \n");
  phiTracklet();
}

void ratiomodules(){

  TH1F *data_module = ((TH1F*)fListData->FindObject("hClusterModYield"));
  data_module->Sumw2();

  TH1F *mc_module = ((TH1F*)fListMc->FindObject("hClusterModYield"));
  mc_module->Sumw2();

  TCanvas *c1 = new TCanvas("c1","c1",1200,600);
  c1->Divide(2,1);
  c1->cd(1);
  data_module->SetTitle(Form("cluster yield in %s",fTitleData.Data()));
  data_module->DrawCopy();
  c1->cd(2);
  mc_module->SetTitle(Form("cluster yield in %s",fTitleMc.Data()));
  mc_module->DrawCopy();


  TH1D *ratiomodule  = new TH1D("ratiomod",Form("Module cluster ratio %s / %s  - scaling : Integral",fTitleData.Data(),fTitleMc.Data()),mc_module->GetNbinsX(),mc_module->GetXaxis()->GetXmin(),mc_module->GetXaxis()->GetXmax());
  ratiomodule->GetXaxis()->SetTitle("module number");
  printf("data_module %f     -  mc_module %f    \n",data_module->GetEntries(),mc_module->GetEntries());
  ratiomodule->Divide(data_module,mc_module,mc_module->Integral(),data_module->Integral(),"e");

  TCanvas *ratiofit = new TCanvas("ratiofit","ratiofit",1200,600);
  ratiofit->cd();
 
  TF1 *f1inner = new TF1("f1inner", "pol0", 0, 79);
  f1inner->SetLineColor(kBlue);
  TF1 *f1outer = new TF1("f1outer", "pol0", 80, 223);
  f1outer->SetLineColor(kGreen);
  
  printf("------------- Fitting standard normalized ratio  ----------------\n");
  ratiomodule->Fit("f1inner", "R+"); 
  ratiomodule->Fit("f1outer", "R+");
  ratiomodule->GetListOfFunctions()->Print();
   
  f1inner->Draw("same");
  f1outer->Draw("same");
  
  TPaveText *parsFitEntries = new TPaveText(0.3,0.23,0.6,0.55,"NDC"); 
  parsFitEntries->AddText("Inner ");
  parsFitEntries->AddText(Form("#chi2 / ndf    %4.3f / %2.1i",f1inner->GetChisquare(),f1inner->GetNDF()));
  parsFitEntries->AddText(Form("Fit :    %4.4f +- %4.4f",f1inner->GetParameter(0),f1inner->GetParError(0)));
  parsFitEntries->AddText("");
  parsFitEntries->AddText("Outer ");
  parsFitEntries->AddText(Form("#chi2 / ndf    %4.3f / %3.1i",f1outer->GetChisquare(),f1outer->GetNDF()));
  parsFitEntries->AddText(Form("Fit :    %4.4f +- %4.4f",f1outer->GetParameter(0),f1outer->GetParError(0)));
  ratiomodule->GetListOfFunctions()->Add(parsFitEntries);




  TCanvas *ratiofitEvents = new TCanvas("ratiofitEvents","ratiofitEvents",1200,600);

  ratiofitEvents->cd();
  TH1D *ratiomoduleEvents  = new TH1D("ratiomodEvents",Form("Module cluster ratio %s / %s  - scaling : # events",fTitleData.Data(),fTitleMc.Data()),mc_module->GetNbinsX(),mc_module->GetXaxis()->GetXmin(),mc_module->GetXaxis()->GetXmax());
  ratiomoduleEvents->GetXaxis()->SetTitle("module number");
  Double_t nEvData = ((TH1I*)(fListData->FindObject("hEventsProcessed")))->GetEntries();
  Double_t nEvMc= ((TH1I*)(fListMc->FindObject("hEventsProcessed")))->GetEntries();
  ratiomoduleEvents->Divide(data_module,mc_module,nEvMc,nEvData,"e");
  ratiomoduleEvents->Draw();

  TF1 *fInner = new TF1("fInner", "pol0", 0, 79);
  fInner->SetLineColor(kBlue);
  TF1 *fOuter = new TF1("fOuter", "pol0", 80, 223);
  fOuter->SetLineColor(kGreen);
  printf("------------- Fitting #evts normalized ratio  ----------------\n");
  ratiomoduleEvents->Fit("fInner", "R");
  ratiomoduleEvents->Fit("fOuter", "R+");
  fInner->Draw("same");
  fOuter->Draw("same");
  
  
  
  TPaveText *parsFitEvents = new TPaveText(0.3,0.23,0.6,0.55,"NDC"); 
  parsFitEvents->AddText("Inner ");
  parsFitEvents->AddText(Form("#chi2 / ndf    %4.3f / %2.1i",fInner->GetChisquare(),fInner->GetNDF()));
  parsFitEvents->AddText(Form("Fit :    %4.4f +- %4.4f",fInner->GetParameter(0),fInner->GetParError(0)));
  parsFitEvents->AddText("");
  parsFitEvents->AddText("Outer ");
  parsFitEvents->AddText(Form("#chi2 / ndf    %4.3f / %3.1i",fOuter->GetChisquare(),fOuter->GetNDF()));
  parsFitEvents->AddText(Form("Fit :    %4.4f +- %4.4f",fOuter->GetParameter(0),fOuter->GetParError(0)));
  ratiomoduleEvents->GetListOfFunctions()->Add(parsFitEvents);
  

}
void mapsinner(Bool_t isShowMaps){
  TH2D *data_mapL1 = (TH2D*)fListData->FindObject("hLocalMapL1");
  // ------------ phi projection ---------------------
  TH1D *data_projyL1 = data_mapL1->ProjectionY();

  TString titleDataL1  = data_projyL1->GetTitle();
  titleDataL1+=fTitleData.Data();
  data_projyL1->SetTitle(titleDataL1.Data());
  //data_projyL1->Rebin(10);
  data_projyL1->SetYTitle(Form("entries / %1.2f cm",data_projyL1->GetBinWidth(0)));

  TH2D *data_mapL2 = (TH2D*)fListData->FindObject("hLocalMapL2");
  TH1D *data_projyL2 = data_mapL2->ProjectionY();
  TString titleDataL2  = data_projyL2->GetTitle();
  titleDataL2+=fTitleData.Data();
  data_projyL2->SetTitle(titleDataL2.Data());
  //data_projyL2 ->Rebin(10);
  data_projyL2->SetYTitle(Form("entries / %1.2f cm",data_projyL2->GetBinWidth(0)));

  // ------- z projection Data -----------
  TH1D *data_projyL1z = data_mapL1->ProjectionX();
  TString titleDataL1z  = data_projyL1z->GetTitle();
  titleDataL1z+=fTitleData.Data();
  data_projyL1z->SetTitle(titleDataL1z.Data());
  //data_projyL1z->Rebin(10);
  data_projyL1z->SetYTitle(Form("entries / %1.2f cm",data_projyL1z->GetBinWidth(0)));
  TH1D *data_projyL2z = data_mapL2->ProjectionX();
  TString titleDataL2z  = data_projyL2z->GetTitle();
  titleDataL2z+=fTitleData.Data();
  data_projyL2z->SetTitle(titleDataL2.Data());
  //data_projyL2z ->Rebin(10);
  data_projyL2z->SetYTitle(Form("entries / %1.2f cm",data_projyL2z->GetBinWidth(0)));

  // ------------ phi projection MC ---------------------
  TH2D *mc_mapL1 = (TH2D*)fListMc->FindObject("hLocalMapL1");
  TH1D *mc_projyL1 = mc_mapL1->ProjectionY();
  TString titleMCL1  = mc_projyL1->GetTitle();
  titleMCL1+=fTitleMc.Data();
  mc_projyL1->SetTitle(titleMCL1.Data());
  //mc_projyL1->Rebin(10);
  mc_projyL1->SetYTitle(Form("entries / %1.2f cm",mc_projyL1->GetBinWidth(0)));

  TH2D *mc_mapL2 = (TH2D*)fListMc->FindObject("hLocalMapL2");
  TH1D *mc_projyL2 = mc_mapL2->ProjectionY();
  TString titleMCL2  = mc_projyL2->GetTitle();
  titleMCL2+=fTitleMc.Data();
  mc_projyL2->SetTitle(titleMCL2.Data());
  //mc_projyL2->Rebin(10);
  mc_projyL2->SetYTitle(Form("entries / %1.2f cm",mc_projyL2->GetBinWidth(0)));

  // ------- z projection MC -----------

  TH1D *mc_projyL1z = mc_mapL1->ProjectionX();
  TString titleMCL1z  = mc_projyL1z->GetTitle();
  titleMCL1z+=fTitleMc.Data();
  mc_projyL1z->SetTitle(titleMCL1z.Data());
  //mc_projyL1z->Rebin(10);
  mc_projyL1z->SetYTitle(Form("entries / %1.2f cm",mc_projyL1z->GetBinWidth(0)));

  TH1D *mc_projyL2z = mc_mapL2->ProjectionX();
  TString titleMCL2z  = mc_projyL2z->GetTitle();
  titleMCL2z+="  [ MC ]";
  mc_projyL2z->SetTitle(titleMCL2z.Data());
  //mc_projyL2z->Rebin(10);
  mc_projyL2z->SetYTitle(Form("entries / %1.2f cm",mc_projyL2z->GetBinWidth(0)));

  if(isShowMaps) {


    TCanvas *cmapData = new TCanvas("cmapData","cmapData",1200,600);
    cmapData->Divide(2,1);
    cmapData->cd(1);
    TString titledata1 = data_mapL1->GetTitle();
    titledata1+=fTitleData.Data();
    data_mapL1->SetTitle(titledata1.Data());
    data_mapL1->Draw("colz");
    cmapData->cd(2);
    TString titledata2 = data_mapL2->GetTitle();
    titledata2+=fTitleData.Data();
    data_mapL2->SetTitle(titledata2.Data());
    data_mapL2->Draw("colz");

    TCanvas *cmapMc = new TCanvas("cmapMc","cmapMc",1200,600);
    cmapMc->Divide(2,1);

    cmapMc->cd(1);
    TString titlemc1 = mc_mapL1->GetTitle();
    titlemc1+=fTitleMc.Data();
    mc_mapL1->SetTitle(titlemc1.Data());
    mc_mapL1->Draw("colz");
    cmapMc->cd(2);
    TString titlemc2 = mc_mapL2->GetTitle();
    titlemc2+=fTitleMc.Data();
    mc_mapL2->SetTitle(titlemc2.Data());
    mc_mapL2->Draw("colz");
  }
  // booking ratios 
  // projection phi

  TH1D *ratioL1 = new TH1D("ratioL1","Data / MC - Layer 1",mc_projyL1->GetNbinsX(),mc_projyL1->GetXaxis()->GetXmin(),mc_projyL1->GetXaxis()->GetXmax());
  ratioL1->SetXTitle("(NOT GLOBAL)       direction #varphi [cm]");
  TH1D *ratioL2 = new TH1D("ratioL2","Data / MC - Layer 2",mc_projyL2->GetNbinsX(),mc_projyL2->GetXaxis()->GetXmin(),mc_projyL2->GetXaxis()->GetXmax());
  ratioL2->SetXTitle("(NOT GLOBAL)       direction #varphi [cm]");
  // projection z 
 
  TH1D *ratioL1z = new TH1D("ratioL1z","Data / MC - Layer 1",mc_projyL1z->GetNbinsX(),mc_projyL1z->GetXaxis()->GetXmin(),mc_projyL1z->GetXaxis()->GetXmax());
  ratioL1z->SetXTitle("(NOT GLOBAL)       direction z [cm]");
  TH1D *ratioL2z = new TH1D("ratioL2z","Data / MC - Layer 2",mc_projyL2z->GetNbinsX(),mc_projyL2z->GetXaxis()->GetXmin(),mc_projyL2z->GetXaxis()->GetXmax());
  ratioL2->SetXTitle("(NOT GLOBAL)       direction z [cm]");

  // making the ratios
  ratioL1->Divide(data_projyL1,mc_projyL1,mc_projyL1->GetEntries(),data_projyL1->GetEntries(),"e");
  ratioL2->Divide(data_projyL2,mc_projyL2,mc_projyL2->GetEntries(),data_projyL2->GetEntries(),"e");

  ratioL1z->Divide(data_projyL1z,mc_projyL1z,mc_projyL1z->GetEntries(),data_projyL1z->GetEntries(),"e");
  ratioL2z->Divide(data_projyL2z,mc_projyL2z,mc_projyL2z->GetEntries(),data_projyL2z->GetEntries(),"e");

  TCanvas *c = new TCanvas("cRatioPhi","cRatioPhi",1200,600);
  c->Divide(2,1);
  c->cd(1);
  ratioL1->SetYTitle(Form("ratio / %2.2f cm",ratioL1->GetBinWidth(0)));
  ratioL1->Draw();
  c->cd(2);
  ratioL2->SetYTitle(Form("ratio / %2.2f cm",ratioL2->GetBinWidth(0)));
  ratioL2->Draw();

  //TLine *l1z = new TLine(-16.5,1,16.5,1);
  //TLine *l2z = new TLine(-16.5,1,16.5,1);
  TCanvas *cz = new TCanvas("cRatioZ","cRatioZ",1200,600);
  cz->Divide(2,1);
  cz->cd(1);
  ratioL1z->SetYTitle(Form("ratio / %2.2f cm",ratioL1z->GetBinWidth(0)));
  ratioL1z->Draw();
  cz->cd(2);
  ratioL2z->SetYTitle(Form("ratio / %2.2f cm",ratioL2z->GetBinWidth(0)));
  ratioL2z->Draw();

}
void phiTracklet(){

  TCanvas *rawDist = new TCanvas("rawDist"," raw distributions ",1200,800);
  rawDist->Divide(2,2);

  TH2F *trackData = (TH2F*)fListData->FindObject("hSPDphivsSPDeta");
  trackData->SetTitle(Form("%s %s",trackData->GetTitle(),fTitleData.Data()));
  TH1D *trackDataPhi = trackData->ProjectionY();
  if(!trackDataPhi) printf("NO 1 \n");
  //trackDataPhi->SetTitle(Form("%s %s",trackDataPhi->GetTitle(),fTitleData.Data()));
  rawDist->cd(1);
  trackDataPhi->SetLineColor(kRed);
  trackDataPhi->DrawCopy();
  TH1D *trackDataEta = trackData->ProjectionX();
  if(!trackDataEta) printf("NO 2 \n");
  //trackDataEta->SetTitle(Form("%s %s",trackDataEta->GetTitle(),fTitleData.Data()));
  rawDist->cd(2);
  trackDataEta->SetLineColor(kRed);
  trackDataEta->DrawCopy();

  TH1F etaData, phiData;
  trackDataEta->Copy(etaData);
  trackDataPhi->Copy(phiData);

  TH1F etaFrac, phiFrac, mcEta, mcPhi;
  trackDataEta->Copy(etaFrac);
  trackDataPhi->Copy(phiFrac);

  TH2F *trackMc = (TH2F*)fListMc->FindObject("hSPDphivsSPDeta");
  trackMc->SetTitle(Form("%s %s",trackMc->GetTitle(),fTitleMc.Data()));

  TCanvas *tracklets = new TCanvas("tracklets","tracklets",1200,600);
  tracklets->Divide(2,1);
  tracklets->cd(1);
  tracklets->cd(1)->SetRightMargin(0.15);
  //trackData->SetTitle(Form("%s %s",trackData->GetTitle(),fTitleData.Data()));
  trackData->DrawCopy("colz");
  tracklets->cd(2);
  tracklets->cd(2)->SetRightMargin(0.15);
  //trackMc->SetTitle(Form("%s %s",trackMc->GetTitle(),fTitleMc.Data()));
  TH1D *h = (TH1D*)trackMc->DrawCopy("colz");
  fTitleData.ReplaceAll(" ","");
  fTitleMc.ReplaceAll(" ","");
  tracklets->SaveAs(Form("trackletsPhiEtaMaps_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));

  TH1D *trackMcPhi = trackMc->ProjectionY();
  trackMcPhi->SetTitle(Form("%s",h->GetTitle()));
  rawDist->cd(3);
  trackMcPhi->DrawCopy();
  TH1D *trackMcEta = trackMc->ProjectionX();
  trackMcEta->SetTitle(Form("%s",h->GetTitle()));
  rawDist->cd(4);
  trackMcEta->DrawCopy();

  rawDist->SaveAs(Form("trackletsPhiEtaRaw_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));

  TH1F etaMc, phiMc;
  trackMcEta->Copy(etaMc);
  trackMcPhi->Copy(phiMc);

  trackMcEta->Copy(mcEta);
  trackMcPhi->Copy(mcPhi);

  etaFrac.Scale(1./etaFrac.GetEntries());
  mcEta.Scale(1./mcEta.GetEntries());
  etaFrac.Add(&mcEta,-1);
  etaFrac.Divide(&mcEta);

  phiFrac.Scale(1./phiFrac.GetEntries());
  mcPhi.Scale(1./mcPhi.GetEntries());
  phiFrac.Add(&mcPhi,-1);
  phiFrac.Divide(&mcPhi);


  TCanvas *track = new TCanvas("track","track",1200,600);
  track->Divide(2,1);
  track->cd(1);
  phiData.SetLineColor(kRed);
  phiData.SetLineWidth(2);
  phiData.Scale(1./phiData.GetEntries());
  phiData.DrawCopy();
  phiMc.Scale(1./phiMc.GetEntries());
  phiMc.DrawCopy("same");
  track->cd(2);
  etaData.SetLineColor(kRed);
  etaData.SetLineWidth(2);
  etaData.Scale(1./etaData.GetEntries());
  etaData.DrawCopy();
  etaMc.Scale(1./etaMc.GetEntries());
  etaMc.DrawCopy("same");
  track->SaveAs(Form("trackletsPhiEtaNorm_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));

  TCanvas *frac = new TCanvas("frac","fractions",1200,600);
  frac->Divide(2,1);
  frac->cd(1);
  etaFrac.SetTitle(Form(" #Delta#eta/#eta_{%s}   %s - %s ",fTitleMc.Data(),fTitleData.Data(),fTitleMc.Data()));
  etaFrac.SetLineColor(1);
  etaFrac.DrawCopy();
  frac->cd(2);
  phiFrac.SetTitle(Form(" #Delta#varphi/#varphi_{%s}   %s - %s ",fTitleMc.Data(),fTitleData.Data(),fTitleMc.Data()));
  phiFrac.SetLineColor(1);
  phiFrac.DrawCopy();

  frac->SaveAs(Form("relativeRatios_%s_%s.png",fTitleData.Data(),fTitleMc.Data()));

}

void foEfficiency(){
  TH2F *firedFoData = (TH2F*)fListData->FindObject("hFOgoodPerBCmod4");
  TH2F *firedChipsData = (TH2F*)fListData->FindObject("hFiredChipsPerBCmod4");
  TH2F mapBCmod;
  firedFoData->Copy(mapBCmod); 
  mapBCmod.Divide(firedChipsData);
  mapBCmod.SetTitle(Form("FO eff per BCmod4 in %s ",fTitleData.Data()));
  mapBCmod.GetYaxis()->SetNdivisions(4,kFALSE);
  TCanvas *c = new TCanvas("mapFo"," FO eff map",800,800);
  c->cd();
  c->cd()->SetGridy();
  mapBCmod.DrawCopy("colz");

  TH1F bcmod[4];

  TH1F *hbc = new TH1F("bc","bc",firedFoData->GetNbinsX(),(firedFoData->GetXaxis())->GetXmin(),(firedFoData->GetXaxis())->GetXmax());

  for(Int_t bc=0; bc<4; bc++){
    hbc->Clear();
    hbc->Reset();
    for(Int_t iBin=0; iBin<firedFoData->GetNbinsX(); iBin++){
      hbc->SetBinContent(iBin+1,mapBCmod.GetBinContent(iBin+1,bc+1)); 
    }
    hbc->Copy(bcmod[bc]);
    bcmod[bc].SetLineColor(bc+1); 
  }


  TH1F *h[4];
  TCanvas *bceff = new TCanvas("bceff");
  bceff->Divide(2,2);
  for(Int_t iPad=0; iPad<4; iPad++){
   TVirtualPad *pad = bceff->cd(iPad+1);
    if(iPad<2){
      pad->Divide(2,1);
      Int_t idx = -1;
      if(iPad==0) idx=0;
      if(iPad==1) idx=2;  
      pad->cd(1); bcmod[idx].DrawCopy();
      pad->cd(2); bcmod[idx+1].DrawCopy();
    }

    if(iPad==2){
      h[0]= (TH1F*)(bcmod[0].DrawCopy());
      for(Int_t bb=1; bb<4; bb++){
	h[bb] = (TH1F*)(bcmod[bb].DrawCopy("same"));
      }
    }

    TH1F *hdiff[3];

    if(iPad==3){
      hdiff[0]=(TH1F*)(h[1]->Clone());   
      hdiff[0]->Add(h[0],-1);
      hdiff[0]->DrawCopy();
      hdiff[1]=(TH1F*)(h[2]->Clone());   
      hdiff[1]->Add(h[0],-1);
      hdiff[1]->DrawCopy("same");
      hdiff[2]=(TH1F*)(h[3]->Clone());   
      hdiff[2]->Add(h[0],-1);
      hdiff[2]->DrawCopy("same");
    }
  }
}

void phiTrackletsZ(){

  TH1F* phiZposData = (TH1F*)fListData->FindObject("hSPDphiZpos");
  phiZposData->SetLineColor(kRed);
  phiZposData->SetLineWidth(2);
  TH1F* phiZnegData = (TH1F*)fListData->FindObject("hSPDphiZneg");
  phiZnegData->SetLineColor(kRed);
  phiZnegData->SetLineWidth(2);
  TCanvas *cZ = new TCanvas("cZ","cZ",1000,600);

  cZ->Divide(2,1);
  cZ->cd(1);
  phiZposData->Scale(1./phiZposData->GetEntries());
  phiZposData->DrawCopy();
  cZ->cd(2);
  phiZnegData->Scale(1./phiZnegData->GetEntries());
  phiZnegData->DrawCopy();

  TH1F* phiZposMc = (TH1F*)fListMc->FindObject("hSPDphiZpos");
  TH1F* phiZnegMc = (TH1F*)fListMc->FindObject("hSPDphiZneg");
  cZ->cd(1);
  phiZposMc->Scale(1./phiZposMc->GetEntries());
  phiZposMc->DrawCopy("same");
  cZ->cd(2);
  phiZnegMc->Scale(1./phiZnegMc->GetEntries());
  phiZnegMc->DrawCopy("same");

} 

void ratiochips(){

  TH1F *data_chip = ((TH1F*)fListData->FindObject("hClusterYield"));
  data_chip->Sumw2();

  TH1F *mc_chip = ((TH1F*)fListMc->FindObject("hClusterYield"));
  mc_chip->Sumw2();

  TCanvas *c1chip = new TCanvas("c1chip","c1chip",1200,600);
  c1chip->Divide(2,1);
  c1chip->cd(1);
  data_chip->SetTitle(Form("chip cluster yield in %s",fTitleData.Data()));
  data_chip->DrawCopy();
  c1chip->cd(2);
  mc_chip->SetTitle(Form("chip cluster yield in %s",fTitleMc.Data()));
  mc_chip->DrawCopy();


  TH1D *ratiochip  = new TH1D("ratiochip",Form("Chip cluster ratio %s / %s  - scaling : Integral",fTitleData.Data(),fTitleMc.Data()),mc_chip->GetNbinsX(),mc_chip->GetXaxis()->GetXmin(),mc_chip->GetXaxis()->GetXmax());
  ratiochip->GetXaxis()->SetTitle("chip number");
  printf("data_chip %f     -  mc_chip %f    \n",data_chip->GetEntries(),mc_chip->GetEntries());
  ratiochip->Divide(data_chip,mc_chip,mc_chip->Integral(),data_chip->Integral(),"e");
  ratiochip->SetMarkerStyle(20);
  ratiochip->SetMarkerSize(0.7);
  ratiochip->SetMarkerColor(2);

  TCanvas *ratiofitchip = new TCanvas("ratiofitchip","ratiofit",1200,600);
  ratiofitchip->cd();
  TF1 *f1innerChip = new TF1("f1innerChip", "pol0", 0, 399);
  f1innerChip->SetLineColor(kBlue);
  TF1 *f1outerChip = new TF1("f1outerChip", "pol0", 400, 1199);
  f1outerChip->SetLineColor(kGreen);
  
  printf("------------- Fitting standard normalized ratio  ----------------\n");
  ratiochip->Fit("f1innerChip", "R");
  ratiochip->Fit("f1outerChip", "R+");
  //f1inner->GetParameters(&par[0]);
  //f1outer->GetParameters(&par[1]);
  //f1->SetParameters(par);
  //ratiomodule->Fit(f1, "R+");
  f1innerChip->Draw("same");
  f1outerChip->Draw("same");

  TPaveText *parsFitChip= new TPaveText(0.3,0.23,0.6,0.55,"NDC"); 
  parsFitChip->AddText("Inner ");
  parsFitChip->AddText(Form("#chi2 / ndf    %4.3f / %3.1i",f1innerChip->GetChisquare(),f1innerChip->GetNDF()));
  parsFitChip->AddText(Form("Fit :    %4.4f +- %4.4f",f1innerChip->GetParameter(0),f1innerChip->GetParError(0)));
  parsFitChip->AddText("");
  parsFitChip->AddText("Outer ");
  parsFitChip->AddText(Form("#chi2 / ndf    %4.3f / %3.1i",f1outerChip->GetChisquare(),f1outerChip->GetNDF()));
  parsFitChip->AddText(Form("Fit :    %4.4f +- %4.4f",f1outerChip->GetParameter(0),f1outerChip->GetParError(0)));
  ratiochip->GetListOfFunctions()->Add(parsFitChip);



  TCanvas *ratiofitChipEvents = new TCanvas("ratiofitChipEvents","ratiofitEvents",1200,600);

  ratiofitChipEvents->cd();
  TH1D *ratiochipEvents  = new TH1D("ratiochipEvents",Form("Chip cluster ratio %s / %s  - scaling : # events",fTitleData.Data(),fTitleMc.Data()),mc_chip->GetNbinsX(),mc_chip->GetXaxis()->GetXmin(),mc_chip->GetXaxis()->GetXmax());
  ratiochipEvents->GetXaxis()->SetTitle("chip number");
  Double_t nEvData = ((TH1I*)(fListData->FindObject("hEventsProcessed")))->GetEntries();
  Double_t nEvMc= ((TH1I*)(fListMc->FindObject("hEventsProcessed")))->GetEntries();
  ratiochipEvents->Divide(data_chip,mc_chip,nEvMc,nEvData,"e");
  ratiochipEvents->Draw();
  ratiochipEvents->SetMarkerStyle(20);
  ratiochipEvents->SetMarkerSize(0.7);
  ratiochipEvents->SetMarkerColor(2);

  TF1 *fInnerChip = new TF1("fInnerChip", "pol0", 0, 399);
  fInnerChip->SetLineColor(kBlue);
  TF1 *fOuterChip = new TF1("fOuterChip", "pol0", 400, 1199);
  fOuterChip->SetLineColor(kGreen);
  ratiochipEvents->Fit("fInnerChip", "R");
  ratiochipEvents->Fit("fOuterChip", "R+");
  fInnerChip->Draw("same");
  fOuterChip->Draw("same");
  
  
  TPaveText *parsFit= new TPaveText(0.3,0.23,0.6,0.55,"NDC"); 
  parsFit->AddText("Inner ");
  parsFit->AddText(Form("#chi2 / ndf    %4.3f / %3.1i",fInnerChip->GetChisquare(),fInnerChip->GetNDF()));
  parsFit->AddText(Form("Fit :    %4.4f +- %4.4f",fInnerChip->GetParameter(0),fInnerChip->GetParError(0)));
  parsFit->AddText("");
  parsFit->AddText("Outer ");
  parsFit->AddText(Form("#chi2 / ndf    %4.3f / %3.1i",fOuterChip->GetChisquare(),fOuterChip->GetNDF()));
  parsFit->AddText(Form("Fit :    %4.4f +- %4.4f",fOuterChip->GetParameter(0),fOuterChip->GetParError(0)));
  ratiochipEvents ->GetListOfFunctions()->Add(parsFit);
  
  
  //------------------------------------------
  
  TH1D * diffsClus[2];
  diffsClus[0]= new TH1D("diffsL1Clus"," ",80,-0.2,0.2);
  diffsClus[1]= new TH1D("diffsL2Clus"," ",80,-0.2,0.2);
  for(Int_t ibin=0; ibin<1200; ibin++){

    if(ibin<400){
      if(ratiochip->GetBinContent(ibin+1)>0) diffsClus[0]->Fill(ratiochip->GetBinContent(ibin+1)-f1innerChip->GetParameter(0));
    }else {

      if(ratiochip->GetBinContent(ibin+1)>0) diffsClus[1]->Fill(ratiochip->GetBinContent(ibin+1)-f1outerChip->GetParameter(0));

    }


  }


  TCanvas * pullsClus = new TCanvas("pullsClus","pullsClus",1200,600);
  pullsClus->Divide(2,1);
  pullsClus->cd(1);
  diffsClus[0]->SetTitle("dispersion Layer 1");
  diffsClus[0]->Rebin(2);
  diffsClus[0]->Fit("gaus","","",-0.2,0.2);
  if(diffsClus[0]->GetFunction("gaus")) diffsClus[0]->GetFunction("gaus")->SetLineColor(kBlue);
  diffsClus[0]->Draw();
  pullsClus->cd(2);
  diffsClus[1]->SetTitle("dispersion Layer 2");
  diffsClus[1]->Rebin(2);
  diffsClus[1]->Fit("gaus","","",-0.2,0.2);
  if(diffsClus[1]->GetFunction("gaus")) diffsClus[1]->GetFunction("gaus")->SetLineColor(kBlue);
  diffsClus[1]->Draw();

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