ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TH1F.h>
#include <TH2F.h>
#include <TF1.h>
#include <TPad.h>
#include <TGraphErrors.h>
#include <TROOT.h>
#include <TFile.h>
#include <TTree.h>
#include <TGrid.h>
#include <TGridResult.h>
#include <TMath.h>
#include <TCanvas.h>
#include <TStyle.h>
#include <TLatex.h>
#include "AliITSgeomTGeo.h"
#endif

Double_t LangausFun(Double_t *x, Double_t *par) {

  //Fit parameters:
  //par[0]=Width (scale) parameter of Landau density
  //par[1]=Most Probable (MP, location) parameter of Landau density
  //par[2]=Total area (integral -inf to inf, normalization constant)
  //par[3]=Width (sigma) of convoluted Gaussian function
  //
  //In the Landau distribution (represented by the CERNLIB approximation), 
  //the maximum is located at x=-0.22278298 with the location parameter=0.
  //This shift is corrected within this function, so that the actual
  //maximum is identical to the MP parameter.

  // Numeric constants
  Double_t invsq2pi = 0.3989422804014;   // (2 pi)^(-1/2)
  Double_t mpshift  = -0.22278298;       // Landau maximum location

  // Control constants
  Double_t np = 100.0;      // number of convolution steps
  Double_t sc =   5.0;      // convolution extends to +-sc Gaussian sigmas

  // Variables
  Double_t xx;
  Double_t mpc;
  Double_t fland;
  Double_t sum = 0.0;
  Double_t xlow,xupp;
  Double_t step;
  Double_t i;


  // MP shift correction
  mpc = par[1] - mpshift * par[0]; 

  // Range of convolution integral
  xlow = x[0] - sc * par[3];
  xupp = x[0] + sc * par[3];

  step = (xupp-xlow) / np;

  // Convolution integral of Landau and Gaussian by sum
  for(i=1.0; i<=np/2; i++) {
    xx = xlow + (i-.5) * step;
    fland = TMath::Landau(xx,mpc,par[0]) / par[0];
    sum += fland * TMath::Gaus(x[0],xx,par[3]);

    xx = xupp - (i-.5) * step;
    fland = TMath::Landau(xx,mpc,par[0]) / par[0];
    sum += fland * TMath::Gaus(x[0],xx,par[3]);
  }

  return (par[2] * step * sum * invsq2pi / par[3]);
}


void PlotSDDPerformance(TString option="local", 
			TString fileName="QAresults.root", 
			Int_t nRun=0,
			Int_t year=2010, 
			TString period="LHC10e"){

  gStyle->SetOptStat(0);
  //  gStyle->SetOptTitle(0);
  TFile *f;
  TString path;
  Char_t psfilename[100];
  Char_t openpsfilename[100];
  Char_t closepsfilename[100];
  sprintf(psfilename,"QAtrainRun%d.ps",nRun);
  sprintf(openpsfilename,"QAtrainRun%d.ps[",nRun);
  sprintf(closepsfilename,"QAtrainRun%d.ps]",nRun);

  if(option.Contains("local")){
    f=new TFile(fileName.Data());
  }else{
    TGrid::Connect("alien:");
    path=Form("/alice/data/%d/%s/%09d/ESDs/",year,period.Data(),nRun);
    if(!gGrid||!gGrid->IsConnected()) {
      printf("gGrid not found! exit macro\n");
      return;
    }
    TGridResult *gr = gGrid->Query(path,fileName);
    Int_t nFiles = gr->GetEntries();
    if (nFiles < 1){
      printf("QA file for run %d not found\n",nRun);
      return;
    }
    printf("================>%d files found\n", nFiles);
    Int_t theFile=0;
    Int_t maxVer=0;
    if (nFiles > 1){
      for (Int_t iFil = 0; iFil <nFiles ; iFil++) { 
	fileName=Form("%s",gr->GetKey(iFil,"turl"));
	TString cutFilename=fileName.ReplaceAll("/QAresults.root","");
	Int_t last=cutFilename.Sizeof()-3;
	cutFilename.Remove(0,last);
	Int_t qaver=atoi(cutFilename.Data());
	if(qaver>maxVer){
	  maxVer=qaver;
	  theFile=iFil;
	}
      }
    }
    fileName=Form("%s",gr->GetKey(theFile,"turl"));
    f=TFile::Open(fileName.Data());
  }

  TDirectoryFile* df=(TDirectoryFile*)f->Get("SDD_Performance");
  if(!df){
    printf("SDD_Performance MISSING -> Exit\n");
    return;
  }
  TList* l=(TList*)df->Get("coutputRP");
  if(!df){
    printf("coutputRP TList MISSING -> Exit\n");
    return;
  }

  TH1F* hcllay=(TH1F*)l->FindObject("hCluInLay");
  TH1F* hapmod=(TH1F*)l->FindObject("hAllPmod");
  TH1F* hgpmod=(TH1F*)l->FindObject("hGoodPmod");
  TH1F* hmpmod=(TH1F*)l->FindObject("hMissPmod");
  TH1F* hbrmod=(TH1F*)l->FindObject("hBadRegmod");
  TH1F* hskmod=(TH1F*)l->FindObject("hSkippedmod");
  TH1F* hoamod=(TH1F*)l->FindObject("hOutAccmod");
  TH1F* hnrmod=(TH1F*)l->FindObject("hNoRefitmod");

  //  TH1F* hapxl=(TH1F*)l->FindObject("hAllPxloc");
  TH1F* hgpxl=(TH1F*)l->FindObject("hGoodPxloc");
  TH1F* hmpxl=(TH1F*)l->FindObject("hMissPxloc");
  TH1F* hbrxl=(TH1F*)l->FindObject("hBadRegxloc");
  //  TH1F* hapzl=(TH1F*)l->FindObject("hAllPzloc");
  TH1F* hgpzl=(TH1F*)l->FindObject("hGoodPzloc");
  TH1F* hmpzl=(TH1F*)l->FindObject("hMissPzloc");
  TH1F* hbrzl=(TH1F*)l->FindObject("hBadRegzloc");

  TH2F* hdedx3=(TH2F*)l->FindObject("hdEdxL3VsP");
  TH2F* hdedx4=(TH2F*)l->FindObject("hdEdxL4VsP");
  TH2F* hdedxmod=(TH2F*)l->FindObject("hdEdxVsMod");
  

  TH1F* hmodR=(TH1F*)l->FindObject("hRPMod");
  TH1F* hmodT=(TH1F*)l->FindObject("hTPMod");
  TH1F* hgamod=(TH1F*)l->FindObject("hGAMod");

  TH2F* h2dmodR3=new TH2F("h2dmodR3","Rec Points, Layer 3",6,0.5,6.5,14,0.5,14.5);
  TH2F* h2dmodR4=new TH2F("h2dmodR4","Rec Points, Layer 4",8,0.5,8.5,22,0.5,22.5);
  TH2F* h2dmodT3=new TH2F("h2dmodT3","Track Points, Layer 3",6,0.5,6.5,14,0.5,14.5);
  TH2F* h2dmodT4=new TH2F("h2dmodT4","Track Points, Layer 4",8,0.5,8.5,22,0.5,22.5);
  TH2F* h2dmodR3N=new TH2F("h2dmodR3N","Rec Points/GoodAnode/Event, Layer 3",6,0.5,6.5,14,0.5,14.5);
  TH2F* h2dmodR4N=new TH2F("h2dmodR4N","Rec Points/GoodAnode/Event, Layer 4",8,0.5,8.5,22,0.5,22.5);
  TH2F* h2dmodT3N=new TH2F("h2dmodT3N","Track Points/GoodAnode/Event, Layer 3",6,0.5,6.5,14,0.5,14.5);
  TH2F* h2dmodT4N=new TH2F("h2dmodT4N","Track Points/GoodAnode/Event, Layer 4",8,0.5,8.5,22,0.5,22.5);
  TH1F* hmodRN=new TH1F("hmodRN","Normalized Rec Points per Module",260,239.5,499.5);
  TH1F* hmodTN=new TH1F("hmodTN","Normalized Track Points per Module",260,239.5,499.5);

  TH1F* hev=(TH1F*)l->FindObject("hNEvents");
  Int_t nTotEvents=hev->GetBinContent(2);
  Int_t nTrigEvents=hev->GetBinContent(3);
  Int_t nEvents=nTotEvents;
  printf("---- Statistics ----\n");
  printf("Number of Events = %d\n",nTotEvents);
  if(nTrigEvents>0){ 
    printf("Number of Triggered Events = %d\n",nTrigEvents);
    nEvents=nTrigEvents;
  }else{
    printf("No request on the trigger done whenrunning the task\n");
  }
  Int_t bestMod=0;
  for(Int_t iMod=0; iMod<260;iMod++){
    Int_t gda=(Int_t)hgamod->GetBinContent(iMod+1);
    if(gda>bestMod) bestMod=gda;
  }
  Int_t nChunks=1;
  if(bestMod>512){
    nChunks=(Int_t)(bestMod/512.+0.5);
  }
  printf("Chunks merged = %d\n",nChunks);
  hgamod->Scale(1./nChunks);
  TCanvas* cgan=new TCanvas("cgan","Good Anodes");
  cgan->Print(openpsfilename);
  cgan->SetTickx();
  cgan->SetTicky();
  hgamod->SetMarkerStyle(20);
  hgamod->SetMarkerSize(0.6);
  hgamod->SetMinimum(-10.);
  hgamod->Draw("P");
  hgamod->GetXaxis()->SetTitle("SDD Module Id");
  hgamod->GetYaxis()->SetTitle("Number of good anodes");
  cgan->Update();
  cgan->Print(psfilename);

  printf("---- Modules with > 2%% of bad anodes ----\n");
  for(Int_t iMod=0; iMod<260; iMod++){
    Int_t idMod=iMod+240;
    Float_t rps=hmodR->GetBinContent(iMod+1);
    Float_t tps=hmodT->GetBinContent(iMod+1);
    Float_t ga=hgamod->GetBinContent(iMod+1);
    if(ga<500){
      printf("Module %d - Good Anodes = %d\n",idMod,(Int_t)ga);
    }
    Float_t rpsN=0.;
    Float_t tpsN=0.;
    Float_t erpsN=0.;
    Float_t etpsN=0.;
    if(ga>0){
      rpsN=rps/ga/(Float_t)nEvents;
      tpsN=tps/ga/(Float_t)nEvents;
      erpsN=TMath::Sqrt(rps)/ga/(Float_t)nEvents;
      etpsN=TMath::Sqrt(tps)/ga/(Float_t)nEvents;
    }
    hmodRN->SetBinContent(iMod+1,rpsN);
    hmodTN->SetBinContent(iMod+1,tpsN);
    hmodRN->SetBinError(iMod+1,erpsN);
    hmodTN->SetBinError(iMod+1,etpsN);
    Int_t iLay,iLad,iDet;
    AliITSgeomTGeo::GetModuleId(idMod,iLay,iLad,iDet);
    if(iLay==3){
      h2dmodR3->SetBinContent(iDet,iLad,rps);
      h2dmodT3->SetBinContent(iDet,iLad,tps);
      h2dmodR3N->SetBinContent(iDet,iLad,rpsN);
      h2dmodT3N->SetBinContent(iDet,iLad,tpsN);
    }
    else if(iLay==4){
      h2dmodR4->SetBinContent(iDet,iLad,rps);
      h2dmodT4->SetBinContent(iDet,iLad,tps);
      h2dmodR4N->SetBinContent(iDet,iLad,rpsN);
      h2dmodT4N->SetBinContent(iDet,iLad,tpsN);
    }
  }

  gStyle->SetPalette(1);

  if(hmodR->GetEntries()>0){
    TCanvas* cmodR=new TCanvas("cmodR","RecPoint Occup",1200,1200);
    cmodR->Divide(2,3);
    cmodR->cd(1);
    gPad->SetLeftMargin(0.14);
    hmodR->Draw();
    hmodR->GetXaxis()->SetTitle("SDD Module Id");
    hmodR->GetYaxis()->SetTitle("RecPoints");
    hmodR->GetYaxis()->SetTitleOffset(1.55);
    cmodR->cd(2);
    gPad->SetLeftMargin(0.14);
    hmodRN->Draw("E");
    hmodRN->GetXaxis()->SetTitle("SDD Module Id");
    hmodRN->GetYaxis()->SetTitle("RecPoints/GoodAnode/Event");
    hmodRN->GetYaxis()->SetTitleOffset(1.55);
    cmodR->cd(3);
    gPad->SetLeftMargin(0.14);
    h2dmodR3->Draw("colz");
    h2dmodR3->GetXaxis()->SetTitle("Detector");
    h2dmodR3->GetYaxis()->SetTitle("Ladder");
    cmodR->cd(4);
    gPad->SetLeftMargin(0.14);
    h2dmodR3N->Draw("colz");
    h2dmodR3N->GetXaxis()->SetTitle("Detector");
    h2dmodR3N->GetYaxis()->SetTitle("Ladder");
    cmodR->cd(5);
    gPad->SetLeftMargin(0.14);
    h2dmodR4->Draw("colz");
    h2dmodR4->GetXaxis()->SetTitle("Detector");
    h2dmodR4->GetYaxis()->SetTitle("Ladder");
    cmodR->cd(6);
    gPad->SetLeftMargin(0.14);
    gPad->SetLeftMargin(0.14);
    h2dmodR4N->Draw("colz");
    h2dmodR4N->GetXaxis()->SetTitle("Detector");
    h2dmodR4N->GetYaxis()->SetTitle("Ladder");
    cmodR->Update();
    cmodR->Print(psfilename);
  }
    
  TCanvas* cmodT=new TCanvas("cmodT","TrackPoint Occup",1200,1200);
  cmodT->Divide(2,3);
  cmodT->cd(1);
  hmodT->Draw();
  hmodT->GetXaxis()->SetTitle("SDD Module Id");
  hmodT->GetYaxis()->SetTitle("TrackPoints");
  hmodT->GetYaxis()->SetTitleOffset(1.4);
  cmodT->cd(2);
  gPad->SetLeftMargin(0.14);
  hmodTN->Draw("E");
  hmodTN->GetXaxis()->SetTitle("SDD Module Id");
  hmodTN->GetYaxis()->SetTitle("TrackPoints");
  hmodTN->GetYaxis()->SetTitleOffset(1.4);
  cmodT->cd(3);
  gPad->SetLeftMargin(0.14);
  h2dmodT3->Draw("colz");
  h2dmodT3->GetXaxis()->SetTitle("Detector");
  h2dmodT3->GetYaxis()->SetTitle("Ladder");
  cmodT->cd(4);
  gPad->SetLeftMargin(0.14);
  h2dmodT3N->Draw("colz");
  h2dmodT3N->GetXaxis()->SetTitle("Detector");
  h2dmodT3N->GetYaxis()->SetTitle("Ladder");  
  cmodT->cd(5);
  gPad->SetLeftMargin(0.14);
  h2dmodT4->Draw("colz");
  h2dmodT4->GetXaxis()->SetTitle("Detector");
  h2dmodT4->GetYaxis()->SetTitle("Ladder");
  cmodT->cd(6);
  gPad->SetLeftMargin(0.14);
  h2dmodT4N->Draw("colz");
  h2dmodT4N->GetXaxis()->SetTitle("Detector");
  h2dmodT4N->GetYaxis()->SetTitle("Ladder");
  cmodT->Update();
  cmodT->Print(psfilename);

  TH1F* htplad3=(TH1F*)l->FindObject("hTPLad3");
  TH1F* htplad4=(TH1F*)l->FindObject("hTPLad4");
  TH1F* hgalad3=(TH1F*)l->FindObject("hGALad3");
  TH1F* hgalad4=(TH1F*)l->FindObject("hGALad4");
  TH1F* hnormOcc3=new TH1F("hnormOcc3","",14,-0.5,13.5);
  TH1F* hnormOcc4=new TH1F("hnormOcc4","",22,-0.5,21.5);
  for(Int_t ilad=0;ilad<14;ilad++){ 
    Float_t occ=0.;
    Float_t eocc=0.;
    Int_t gd3=hgalad3->GetBinContent(ilad+1);
    if(gd3>0){
      occ=(Float_t)htplad3->GetBinContent(ilad+1)/(Float_t)gd3/(Float_t)nEvents;
      eocc=TMath::Sqrt((Float_t)htplad3->GetBinContent(ilad+1))/(Float_t)gd3/(Float_t)nEvents;
    }
    hnormOcc3->SetBinContent(ilad+1,occ);
    hnormOcc3->SetBinError(ilad+1,eocc);
  }
  for(Int_t ilad=0;ilad<22;ilad++){ 
    Float_t occ=0.;
    Float_t eocc=0.;
    Int_t gd4=hgalad4->GetBinContent(ilad+1);
    if(gd4>0){
      occ=(Float_t)htplad4->GetBinContent(ilad+1)/(Float_t)gd4/(Float_t)nEvents;
      eocc=TMath::Sqrt((Float_t)htplad4->GetBinContent(ilad+1))/(Float_t)gd4/(Float_t)nEvents;
    }
    hnormOcc4->SetBinContent(ilad+1,occ);
    hnormOcc4->SetBinError(ilad+1,eocc);
  }
 

  TCanvas* cn0=new TCanvas("cn0","Normalized Ladder Occupancy",1400,600);
  cn0->Divide(2,1);
  cn0->cd(1);
  gPad->SetLeftMargin(0.14);
  hnormOcc3->Draw();
  hnormOcc3->GetXaxis()->SetTitle("Ladder number (layer 3)");
  hnormOcc3->GetYaxis()->SetTitle("TrackPoints/GoodAnodes/Events");
  hnormOcc3->GetYaxis()->SetTitleOffset(1.35);
  cn0->cd(2);
  gPad->SetLeftMargin(0.14);
  hnormOcc4->Draw();
  hnormOcc4->GetXaxis()->SetTitle("Ladder number (layer 4)");
  hnormOcc4->GetYaxis()->SetTitle("TrackPoints/GoodAnode/Events");
  hnormOcc4->GetYaxis()->SetTitleOffset(1.35);
  cn0->Update();
  cn0->Print(psfilename);

  if(hcllay){
    Double_t norm=hcllay->GetBinContent(1);
    hcllay->Scale(1./norm);
    hcllay->SetTitle("");
    hcllay->GetXaxis()->SetRange(2,7);
    hcllay->SetMinimum(0.);
    hcllay->SetMaximum(1.1);
    hcllay->SetMarkerStyle(23);
    TCanvas* ceffL=new TCanvas("ceffL","PointPerLayer",1000,600);
    ceffL->SetGridy();
    hcllay->Draw();
    hcllay->GetXaxis()->SetTitle("Layer");
    hcllay->GetYaxis()->SetTitle("Fraction of tracks with point in layer");
    ceffL->Update();
    ceffL->Print(psfilename);
  }

  hgpmod->SetTitle("");
  TCanvas* ceff0=new TCanvas("ceff0","ModuleIndexInfo",1000,600);
  hgpmod->Draw();
  hgpmod->GetXaxis()->SetTitle("SDD Module Id");
  hgpmod->GetYaxis()->SetTitle("Number of tracks");
  hmpmod->SetLineColor(2);
  hmpmod->SetMarkerColor(2);
  hmpmod->SetMarkerStyle(22);
  hmpmod->SetMarkerSize(0.5);
  hmpmod->Draw("psame");
  hbrmod->SetLineColor(kGreen+1);
  hbrmod->SetMarkerColor(kGreen+1);
  hbrmod->SetMarkerStyle(20);
  hbrmod->SetMarkerSize(0.5);
  hbrmod->Draw("same");
  hskmod->SetLineColor(kYellow);
  hskmod->Draw("same");
  hoamod->SetLineColor(4);
  hoamod->Draw("same");
  hnrmod->SetLineColor(6);
  hnrmod->Draw("same");
  TLatex* t1=new TLatex(0.7,0.85,"Good Point");
  t1->SetNDC();
  t1->SetTextColor(1);
  t1->Draw();
  TLatex* t2=new TLatex(0.7,0.8,"Missing Point");
  t2->SetNDC();
  t2->SetTextColor(2);
  t2->Draw();
  TLatex* t3=new TLatex(0.7,0.75,"Bad Region");
  t3->SetNDC();
  t3->SetTextColor(kGreen+1);
  t3->Draw();
  ceff0->Update();
  ceff0->Print(psfilename);

  TH1F* heff=new TH1F("heff","",260,239.5,499.5);
  for(Int_t imod=0; imod<260;imod++){
    Float_t numer=hgpmod->GetBinContent(imod+1)+hbrmod->GetBinContent(imod+1)+hoamod->GetBinContent(imod+1)+hnrmod->GetBinContent(imod+1);
    Float_t denom=hapmod->GetBinContent(imod+1);
    Float_t eff=0.;
    Float_t erreff=0.;
    if(denom>0){
      eff=numer/denom;
      erreff=TMath::Sqrt(eff*(1-eff)/denom);
    }
    heff->SetBinContent(imod+1,eff);
    heff->SetBinError(imod+1,erreff);
  }

  printf("---- Modules with efficiency < 90%% ----\n");
  TCanvas* ceff1=new TCanvas("ceff1","Efficiency",1000,600);
  heff->Draw();
  heff->GetXaxis()->SetTitle("SDD Module Id");
  heff->GetYaxis()->SetTitle("Fraction of tracks with point in good region");
  for(Int_t ibin=1; ibin<=heff->GetNbinsX(); ibin++){
    Float_t e=heff->GetBinContent(ibin);
    if(e<0.9){
      Int_t iMod=(Int_t)heff->GetBinCenter(ibin);
      Int_t lay,lad,det;
      AliITSgeomTGeo::GetModuleId(iMod,lay,lad,det);
      printf("Module %d - Layer %d Ladder %2d Det %d  -   Eff. %.3f\n",iMod,lay,lad,det,heff->GetBinContent(ibin));
    }
  }
  ceff1->Update();
  ceff1->Print(psfilename);

  if(hgpxl){
    hgpxl->SetTitle("");
    hgpzl->SetTitle("");
    TCanvas* ceff2=new TCanvas("ceff2","LocalCoord",1000,600);
    ceff2->Divide(2,1);
    ceff2->cd(1);
    hgpxl->Draw();
    hgpxl->GetXaxis()->SetTitle("Xlocal (cm)");
    hgpxl->GetYaxis()->SetTitle("Number of tracks");
    hmpxl->SetLineColor(2);
    hmpxl->SetMarkerColor(2);
    hmpxl->SetMarkerStyle(22);
    hmpxl->SetMarkerSize(0.5);
    hmpxl->Draw("psame");
    hbrxl->SetLineColor(kGreen+1);
    hbrxl->SetMarkerColor(kGreen+1);
    hbrxl->SetMarkerStyle(20);
    hbrxl->SetMarkerSize(0.5);
    hbrxl->Draw("same");
    t1->Draw();
    t2->Draw();
    t3->Draw();
    ceff2->cd(2);
    hgpzl->Draw();
    hgpzl->GetXaxis()->SetTitle("Zlocal (cm)");
    hgpzl->GetYaxis()->SetTitle("Number of tracks");
    hmpzl->SetLineColor(2);
    hmpzl->SetMarkerColor(2);
    hmpzl->SetMarkerStyle(22);
    hmpzl->SetMarkerSize(0.5);
    hmpzl->Draw("psame");
    hbrzl->SetLineColor(kGreen+1);
    hbrzl->SetMarkerColor(kGreen+1);
    hbrzl->SetMarkerStyle(20);
    hbrzl->SetMarkerSize(0.5);
    hbrzl->Draw("same");
    t1->Draw();
    t2->Draw();
    t3->Draw();
    ceff2->Update();
    ceff2->Print(psfilename);
  }

  TH1F* htimR=(TH1F*)l->FindObject("hDrTimRP");
  TH1F* htimT=(TH1F*)l->FindObject("hDrTimTPAll");
  TH1F* htimTe=(TH1F*)l->FindObject("hDrTimTPExtra");
  TH1F* htimTne=(TH1F*)l->FindObject("hDrTimTPNoExtra");
  TCanvas* ctim=new TCanvas("ctim","DriftTime",1400,600);
  ctim->Divide(2,1);
  ctim->cd(1);
  htimR->Draw(); 
  htimR->GetYaxis()->SetTitleOffset(1.2);
  htimR->GetXaxis()->SetTitle("Drift Time (ns)");
  htimR->GetYaxis()->SetTitle("RecPoints");
  ctim->cd(2);
  htimT->Draw();
  htimTe->SetLineColor(2);
  htimTe->Draw("same");
  htimTne->SetLineColor(4);
  htimTne->Draw("same");
  htimT->GetXaxis()->SetTitle("Drift Time (ns)");
  htimT->GetYaxis()->SetTitle("TrackPoints");
  htimT->GetYaxis()->SetTitleOffset(1.2);
  TLatex* ta=new TLatex(0.5,0.85,"All Clusters");
  ta->SetNDC();
  ta->SetTextColor(1);
  ta->Draw();
  TLatex* te=new TLatex(0.5,0.8,"Extra Clusters");
  te->SetNDC();
  te->SetTextColor(2);
  te->Draw();
  TLatex* tn=new TLatex(0.5,0.75,"Non-Extra Clusters");
  tn->SetNDC();
  tn->SetTextColor(4);
  tn->Draw();
  ctim->Update();
  ctim->Print(psfilename);

  TCanvas* cdedx=new TCanvas("cdedx","dedx",1400,600);
  cdedx->Divide(3,1);
  cdedx->cd(1);
  gPad->SetLogz();
  hdedx3->Draw("col");
  hdedx3->GetXaxis()->SetTitle("P (GeV/c)");
  hdedx3->GetYaxis()->SetTitle("dE/dx (keV/300 #mum) Layer 3");
  hdedx3->GetYaxis()->SetTitleOffset(1.25);
  cdedx->cd(2);
  gPad->SetLogz();
  hdedx4->Draw("col");
  hdedx4->GetXaxis()->SetTitle("P (GeV/c)");
  hdedx4->GetYaxis()->SetTitle("dE/dx (keV/300 #mum) Layer 4");
  hdedx4->GetYaxis()->SetTitleOffset(1.25);
  cdedx->cd(3);
  gPad->SetLogz();
  hdedxmod->Draw("col"); 
  hdedxmod->GetXaxis()->SetTitle("SDD Module Id");
  hdedxmod->GetYaxis()->SetTitle("dE/dx (keV/300 #mum)");
  hdedxmod->GetYaxis()->SetTitleOffset(1.25);
  cdedx->Update();
  cdedx->Print(psfilename);

  printf("---- dE/dx vs.DriftTime ----\n");
  TCanvas* csig=new TCanvas("csig","dedx vs. DriftTime",1000,700);
  csig->Divide(4,2);
  TH1F* hSigTim[8];
  TGraphErrors* gmpv=new TGraphErrors(0);
  TGraphErrors* gsigg=new TGraphErrors(0);
  TGraphErrors* gsigl=new TGraphErrors(0);
  gmpv->SetTitle("");
  gsigg->SetTitle("");
  gsigl->SetTitle("");
  Int_t iPoint=0;
  TF1 *lfun = new TF1("LangausFun",LangausFun,50.,300.,4);
  for(Int_t it=0; it<8; it++){
    hSigTim[it]=(TH1F*)l->FindObject(Form("hSigTimeInt%d",it));
    csig->cd(it+1);
    hSigTim[it]->Draw();
    if(hSigTim[it]->GetEntries()>200){
      lfun->SetLineWidth(2);
      lfun->SetParameter(0,5.);
      lfun->SetParameter(1,80.);
      lfun->SetParameter(2,hSigTim[it]->GetEntries()/10.);
      lfun->SetParameter(3,10.);
      lfun->SetParLimits(3,0.,20);

      hSigTim[it]->Fit("LangausFun","QLR");
      hSigTim[it]->GetXaxis()->SetTitle(Form("dE/dx, time interval %d",it+1));
      hSigTim[it]->GetYaxis()->SetTitle("Events");
      Float_t mpv=lfun->GetParameter(1);
      Float_t empv=lfun->GetParError(1);
      Float_t sig=lfun->GetParameter(3);
      Float_t esig=lfun->GetParError(3);
      Float_t sigl=lfun->GetParameter(0);
      Float_t esigl=lfun->GetParError(0);
      gmpv->SetPoint(iPoint,(Float_t)it,mpv);
      gmpv->SetPointError(iPoint,0.,empv);
      gsigg->SetPoint(iPoint,(Float_t)it,sig);
      gsigg->SetPointError(iPoint,0.,esig);
      gsigl->SetPoint(iPoint,(Float_t)it,sigl);
      gsigl->SetPointError(iPoint,0.,esigl);
      ++iPoint;
      gPad->Update();
      printf("Bin %d - MPV=%.3f  \t SigmaLandau=%.3f  \t SigmaGaus=%.3f\n",it,mpv,sigl,sig);
    }
  }
  csig->Print(psfilename);

  TCanvas* cpars=new TCanvas("cpars","Params",800,900);
  cpars->Divide(1,3,0.01,0.);
  cpars->cd(1);
  gPad->SetLeftMargin(0.14);
  gPad->SetFrameLineWidth(2);
  gPad->SetTickx();
  gPad->SetTicky();
  gmpv->SetMarkerStyle(20);
  //  gmpv->SetMinimum(0);
  //  gmpv->SetMaximum(120);
  gmpv->GetXaxis()->SetLimits(-0.2,6.8);
  gmpv->Draw("AP");
  //  gmpv->GetXaxis()->SetTitle("Drift Time interval number");
  gmpv->GetYaxis()->SetTitle("Landau MPV (keV)");
  gmpv->GetXaxis()->SetTitleSize(0.05);
  gmpv->GetYaxis()->SetTitleSize(0.05);
  gmpv->GetYaxis()->SetTitleOffset(1.2);
  cpars->cd(2);
  gPad->SetLeftMargin(0.14);
  gPad->SetFrameLineWidth(2);
  gPad->SetTickx();
  gPad->SetTicky();
  gsigl->SetMarkerStyle(20);
  gsigl->GetXaxis()->SetLimits(-0.2,6.8);
  gsigl->Draw("AP");
  //  gsigl->GetXaxis()->SetTitle("Drift Time interval number");
  gsigl->GetYaxis()->SetTitle("#sigma_{Landau} (keV)");
  gsigl->GetXaxis()->SetTitleSize(0.05);
  gsigl->GetYaxis()->SetTitleSize(0.05);
  gsigl->GetYaxis()->SetTitleOffset(1.2);
  cpars->cd(3);
  gPad->SetLeftMargin(0.14);
  gPad->SetFrameLineWidth(2);
  gPad->SetTickx();
  gPad->SetTicky();
  gsigg->SetMarkerStyle(20);
  gsigg->GetXaxis()->SetLimits(-0.2,6.8);
  gsigg->Draw("AP");
  gsigg->GetXaxis()->SetTitle("Drift Time interval number");
  gsigg->GetYaxis()->SetTitle("#sigma_{Gauss} (keV)");
  gsigg->GetXaxis()->SetTitleSize(0.05);
  gsigg->GetYaxis()->SetTitleSize(0.05);
  gsigg->GetYaxis()->SetTitleOffset(1.2);
  cpars->Update();
  cpars->Print(psfilename);  
  cpars->Print(closepsfilename);  

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