ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <fstream>
#include <TFile.h>
#include <TString.h>
#include <TH2F.h>
#include <TH1F.h>
#include <TF1.h>
#include <TGraph.h>
#include <TDirectoryFile.h>
#include <TList.h>
#include <TCanvas.h>
#include <TLegend.h>
#include <TPaveText.h>
#include <TPaveStats.h>
#include <TStyle.h>
#include <TClass.h>
#include <TDatabasePDG.h>
#include <TParameter.h>
#include <AliCounterCollection.h>
#include <AliRDHFCuts.h>

#include "MakePIDqaReport.C"

#endif

/* $Id$ */ 

TString *periodsname;

//read the file and take list and stat

Bool_t ReadFile(TList* &list,TList* &hstat, TString listname,TString partname,TString path="./",TString filename=/*"AnalysisResults.root"*/"PWG3histograms.root", TString dirname="PWG3_D2H_QA");
Bool_t ReadFileMore(TList* &list,TList* &hstat, AliRDHFCuts* &cutobj, TString listname,TString partname,TString path="./",TString filename=/*"AnalysisResults.root"*/"PWG3histograms.root", TString dirname="PWG3_D2H_QA");
void SuperimposeBBToTPCSignal(Int_t period /*0=LHC10bc, 1=LHC10d, 2=LHC10h*/,TCanvas* cpid, Int_t set);
void TPCBetheBloch(Int_t set);
Bool_t ReadFilesForCompilation(TString inputtextfile, TList**& lists, Int_t&numb, TString*& legend);
void CompilationEvSelection(Int_t n,TList** lists, TString* legend);
void CompilationTrackSelection(Int_t n,TList** lists, TString* legend);

Bool_t ReadFile(TList* &list,TList* &lstat, TString listname,TString partname,TString path,TString filename, TString dirname){

  TString lstatname="nEntriesQA", cutobjname="";
  filename.Prepend(path);
  listname+=partname;
  lstatname+=partname;

  TFile* f=new TFile(filename.Data());
  if(!f->IsOpen()){
    cout<<filename.Data()<<" not found"<<endl;
    return kFALSE;
  }
  TDirectoryFile* dir=(TDirectoryFile*)f->Get(dirname);
  if(!dir){
    cout<<dirname.Data()<<" not found in "<<filename.Data()<<endl;
    f->ls();
    return kFALSE;
  }

  list=(TList*)dir->Get(listname);
  if(!list){
    cout<<"List "<<listname.Data()<<" not found"<<endl;
    dir->ls();
    return kFALSE;
  }

  lstat=(TList*)dir->Get(lstatname);
  if(!lstat){
    cout<<lstatname.Data()<<" not found"<<endl;
    return kFALSE;
  }

  return kTRUE;
}

Bool_t ReadFileMore(TList* &list,TList* &lstat, AliRDHFCuts* &cutobj, TString listname,TString partname,TString path,TString filename,TString dirname){

  TString lstatname="nEntriesQA", cutobjname="";
  filename.Prepend(path);
  listname+=partname;
  lstatname+=partname;

  if(partname.Contains("Dplus")) cutobjname="AnalysisCuts";//"DplustoKpipiCutsStandard";
  else{
    if(partname.Contains("D0")) cutobjname="D0toKpiCutsStandard";//"D0toKpiCuts"
    else{
      if(partname.Contains("Dstar")) cutobjname="DStartoKpipiCuts";
      else{
	if(partname.Contains("Ds")) cutobjname="DstoKKpiCuts";
	else{
	  if(partname.Contains("D04")) cutobjname="D0toKpipipiCuts";
	  else{
	    if(partname.Contains("Lc")) cutobjname="LctopKpiAnalysisCuts";
	  }
	}
      }
    }
  }

  TFile* f=new TFile(filename.Data());
  if(!f->IsOpen()){
    cout<<filename.Data()<<" not found"<<endl;
    return kFALSE;
  }
  TDirectoryFile* dir=(TDirectoryFile*)f->Get(dirname);
  if(!dir){
    cout<<dirname.Data()<<" not found  in "<<filename.Data()<<endl;
    return kFALSE;
  }

  list=(TList*)dir->Get(listname);
  if(!list){
    cout<<"List "<<listname.Data()<<" not found"<<endl;
    dir->ls();
    return kFALSE;
  }

  lstat=(TList*)dir->Get(lstatname);
  if(!lstat){
    cout<<lstatname.Data()<<" not found"<<endl;
    return kFALSE;
  }

  cutobj=(AliRDHFCuts*)dir->Get(cutobjname);
  if(!cutobj){
    cout<<cutobjname.Data()<<" not found"<<endl;
    return kFALSE;
  }

  return kTRUE;
}

//draw "track related" histograms (list "outputTrack")
void DrawOutputTrack(TString partname="D00100",TString textleg="",TString path="./", Bool_t superimpose=kFALSE, TString suffixdir="",TString filename="AnalysisResults.root", Bool_t normint=kTRUE /*normalize at integral, or at nevents*/){
  gStyle->SetCanvasColor(0);
  gStyle->SetTitleFillColor(0);
  gStyle->SetStatColor(0);
  gStyle->SetPalette(1);

  TString listname="outputTrack",name1="",name2="",path2="",filename2="PWG3histograms.root",legtext1="",legtext2="",suffixdir2="";
  TString tmp="y";
  name1=suffixdir;

  if(superimpose){
    cout<<"Enter the names:\n>";
    cin>>name1;
    cout<<">";
    cin>>name2;
    cout<<"Are they in the same output file? (y/n)"<<endl;
    cin>>tmp;
    if(tmp=="n"){
      cout<<"Path: \n";
      cout<<">";
      cin>>path2;
      cout<<"Filename: "<<endl;
      cout<<">";
      cin>>filename2;
      cout<<"Suffix in the dir name, if any (otherwhise write no)\n>";
      cin>>suffixdir2;
      if(suffixdir2=="no") suffixdir2="";
      cout<<"Text in the legend:\n 1)";
      cin>>legtext1;
      cout<<"2)";
      cin>>legtext2;
    }
    
  }

  Float_t nevents=0,nevents2=0;
  TList* list = NULL;
  TList * lstat = NULL;
  TH1F * hEntr = NULL;
  TH1F* hHasFilterBit = NULL;

  TString dirname="PWG3_D2H_QA";
  //  dirname+=suffixdir;
  Bool_t isRead=ReadFile(list,lstat,listname,Form("%s%s",partname.Data(),name1.Data()),path,filename,Form("%s%s",dirname.Data(),suffixdir.Data()));
  if(!isRead) return;
  if(!list || !lstat){
    cout<<":-( null pointers..."<<endl;
    return;
  }
  hEntr = (TH1F*) lstat->FindObject("hNentries");
  hHasFilterBit = (TH1F*) lstat->FindObject("HasSelBit");

  nevents=hEntr->GetBinContent(1);
  TPaveText *pvtxt=new TPaveText(0.6,0.6,0.9,0.9,"NDC");
  pvtxt->SetBorderSize(0);
  pvtxt->SetFillStyle(0);
  pvtxt->AddText(legtext1);

  TList* llist = NULL;
  TList* llstat = NULL;
  TH1F* hEntr1 = NULL;
  TH1F* hHasFilterBit1 = NULL;

  if(superimpose){
    isRead=ReadFile(llist,llstat,listname,Form("%s%s",partname.Data(),name2.Data()),path2,filename2,Form("%s%s",dirname.Data(),suffixdir2.Data()));
    if(!isRead) return;
    if(!llist || !llstat){
      cout<<":-( null pointers..."<<endl;
      return;
    }
    hEntr1 = (TH1F*) llstat->FindObject("hNentries");
    hHasFilterBit1 = (TH1F*) llstat->FindObject("HasSelBit");

    nevents2=hEntr1->GetBinContent(1);
    TText *redtext=pvtxt->AddText(legtext2);
    redtext->SetTextColor(kRed);
    hEntr1->Scale(hEntr->Integral()/hEntr1->Integral());
    hHasFilterBit1->Scale(hEntr->Integral()/hEntr1->Integral());
  }

  for(Int_t i=0;i<list->GetEntries();i++){
    TH1F* h=(TH1F*)list->At(i);
    TH1F* hh=0x0;
    TH1F* hr=0x0;
    if(superimpose){
      hh=(TH1F*)llist->At(i);
      hr=(TH1F*)hh->Clone(Form("%s_ratio",hh->GetName()));
      if(hh && TMath::Abs(hh->Integral()) > 1e-6)hh->Scale(h->Integral()/hh->Integral());
    }
    if(!h || (superimpose && !hh)){
      cout<<"Histogram "<<i<<" not found"<<endl;
      continue;
    }
    if(superimpose){
      if(normint) hh->Scale(h->Integral()/hh->Integral());
      else hh->Scale(nevents/nevents2);
      hEntr1->SetLineColor(kRed);
      hh->SetLineColor(kRed);
      hr->Divide(h);
    }

    TCanvas* c=new TCanvas(Form("c%s",h->GetName()),h->GetName());
    c->cd();
    c->SetGrid();
    TString hname=h->GetName();
    if(!hname.Contains("nCls")){
      c->SetLogy();
      if(hname.Contains("Layer")){
	for(Int_t ibin=1;ibin<=h->GetNbinsX();ibin++){
	  h->GetXaxis()->SetBinLabel(ibin+1,Form("%d",ibin));
	}
	h->GetXaxis()->SetLabelSize(0.06);
	h->GetXaxis()->SetRangeUser(0,6); //comment to see ntracks!
      }
      //h->SetMinimum(1);
      if(hname.Contains("vs")||hname.Contains("dauphi")|| hname.Contains("dauphi_filt")){
	h->Draw("colz");
      }else h->Draw();

      if(superimpose) 
	{
	  hh->Draw("sames");
	  TCanvas* c2=new TCanvas(Form("c2%s",h->GetName()),h->GetName());
	  c2->cd();
	  c2->SetGrid();
	  hr->Draw();
	  c2->SaveAs(Form("%s%s%s%sRatio.png",c->GetName(),name1.Data(),name2.Data(),textleg.Data()));

	}
    } else {
      h->Draw("htext0");
      if(superimpose)hh->Draw("htext0sames");
    }
    c->cd();
    pvtxt->Draw();
    c->SaveAs(Form("%s%s%s%s.png",c->GetName(),name1.Data(),name2.Data(),textleg.Data()));
    c->SaveAs(Form("%s%s%s%s.eps",c->GetName(),name1.Data(),name2.Data(),textleg.Data()));
  }
  

  TCanvas* cstFilter=new TCanvas("cstFilter","Stat_HasFilterBit");
  cstFilter->SetGridy();
  cstFilter->cd();
  hHasFilterBit->Draw("htext0");

  if(superimpose) {
    hHasFilterBit1->Draw("htext0sames");
    pvtxt->Draw();
  }
  cstFilter->SaveAs(Form("%s%s.png",hHasFilterBit->GetName(),textleg.Data()));
  cstFilter->SaveAs(Form("%s%s.eps",hHasFilterBit->GetName(),textleg.Data()));



  TCanvas* cst=new TCanvas("cst","Stat");
  cst->SetGridy();
  cst->cd();
  hEntr->Draw("htext0");

  if(superimpose) {
    hEntr1->Draw("htext0sames");
    pvtxt->Draw();
  }
  cst->SaveAs(Form("%s%s.png",hEntr->GetName(),textleg.Data()));
  cst->SaveAs(Form("%s%s.eps",hEntr->GetName(),textleg.Data()));

  TH1F* hd0fb4=(TH1F*)list->FindObject("hd0TracksFilterBit4");
  TH1F* hd0SPD1=(TH1F*)list->FindObject("hd0TracksSPDin");
  TH1F* hd0SPDany=(TH1F*)list->FindObject("hd0TracksSPDany");
  TH1F* hd0TPCITScuts=(TH1F*)list->FindObject("hd0TracksTPCITSSPDany");
  TH1F* hhd0fb4=0x0; TH1F* hhd0SPD1=0x0; TH1F* hhd0SPDany=0x0; TH1F* hhd0TPCITScuts=0x0;
  if(superimpose){
    hhd0fb4=(TH1F*)llist->FindObject("hd0TracksFilterBit4");
    hhd0SPD1=(TH1F*)llist->FindObject("hd0TracksSPDin");
    hhd0SPDany=(TH1F*)llist->FindObject("hd0TracksSPDany");
    hhd0TPCITScuts=(TH1F*)llist->FindObject("hd0TracksTPCITSSPDany");

  }
  if(hd0fb4 && hd0SPD1 && hd0SPDany && hd0TPCITScuts){
    TCanvas* ctrsel=new TCanvas("ctrsel","Track Sel");
    ctrsel->SetLogy();
    hd0SPD1->SetLineColor(kCyan+3);
    hd0SPD1->Draw();
    ctrsel->Update();
    TPaveStats *st1=(TPaveStats*)hd0SPD1->GetListOfFunctions()->FindObject("stats");
    st1->SetTextColor(kCyan+3);
    st1->SetY1NDC(0.71);
    st1->SetY2NDC(0.9);
    hd0SPDany->SetLineColor(4);
    hd0SPDany->Draw("sames");
    ctrsel->Update();
    TPaveStats *st2=(TPaveStats*)hd0SPDany->GetListOfFunctions()->FindObject("stats");
    st2->SetY1NDC(0.51);
    st2->SetY2NDC(0.7);
    st2->SetTextColor(4);
    hd0fb4->SetLineColor(2);
    hd0fb4->Draw("sames");
    ctrsel->Update();
    TPaveStats *st3=(TPaveStats*)hd0fb4->GetListOfFunctions()->FindObject("stats");
    st3->SetY1NDC(0.31);
    st3->SetY2NDC(0.5);
    st3->SetTextColor(2);
    hd0TPCITScuts->SetLineColor(kGreen+1);
    hd0TPCITScuts->Draw("sames");
    ctrsel->Update();
    TPaveStats *st4=(TPaveStats*)hd0TPCITScuts->GetListOfFunctions()->FindObject("stats");
    st4->SetY1NDC(0.71);
    st4->SetY2NDC(0.9);
    st4->SetX1NDC(0.55);
    st4->SetX2NDC(0.75);
    st4->SetTextColor(kGreen+1);
    ctrsel->Modified();
    TLegend* leg=new TLegend(0.15,0.5,0.45,0.78);
    leg->SetFillStyle(0);
    leg->SetBorderSize(0);
    leg->AddEntry(hd0SPD1,"kITSrefit+SPD inner","L");
    leg->AddEntry(hd0SPDany,"kITSrefit+SPD any","L");
    leg->AddEntry(hd0TPCITScuts,"TPC+ITS cuts+SPD any","L");
    leg->AddEntry(hd0fb4,"Filter Bit 4","L");
    leg->Draw();
    
    if(superimpose && hhd0fb4 && hhd0SPD1 && hhd0SPDany && hhd0TPCITScuts){
      hhd0SPD1->SetLineColor(kCyan+3);
      hhd0SPD1->SetStats(0);
      hhd0SPD1->SetLineStyle(3);
      hhd0SPDany->SetLineColor(4);
      hhd0SPDany->SetStats(0);
      hhd0SPDany->SetLineStyle(3);
      hhd0TPCITScuts->SetLineColor(kGreen+1);
      hhd0TPCITScuts->SetStats(0);
      hhd0TPCITScuts->SetLineStyle(3);
      hhd0fb4->SetLineColor(2);
      hhd0fb4->SetStats(0);
      hhd0fb4->SetLineStyle(3);
      ctrsel->cd();
      hhd0SPD1->Draw("sames");
      hhd0SPDany->Draw("sames");
      hhd0TPCITScuts->Draw("sames");
      hhd0fb4->Draw("sames");

    }
    ctrsel->SaveAs("ImpactParameterTrackSel.eps");
    ctrsel->SaveAs("ImpactParameterTrackSel.png");
    
  }
}

//draw "pid related" histograms (list "outputPID")
//period=-999 to draw the pull instead of the cut
void DrawOutputPID(TString partname="D00100", Int_t mode=0/*0=with pull, 1=with nsigma*/,TString textleg="",TString path="./",TString suffixdir="", TString filename="AnalysisResults.root"){
  gStyle->SetCanvasColor(0);
  gStyle->SetTitleFillColor(0);
  gStyle->SetOptStat(0);
  gStyle->SetPalette(1);

  Int_t period=2 ,set=0;
  if(mode==1){
    cout<<"Choose period: \n-LHC10h -> 2;\n-LHC10de -> 1;\n-LHC10bc -> 0"<<endl;
    cin>>period;
    if(period>0){
      cout<<"Choose set: "<<endl;
      if(period==2) cout<<"-pass1 -> 0;\n-pass2 -> 1"<<endl;
      cin>>set;
    }
  }

  TString listname="outputPid";
  TString dirname="PWG3_D2H_QA";
  dirname+=suffixdir;

  TList* list = NULL;
  TList * lstat = NULL;
  //needed only for mode 1
  AliRDHFCuts* cutobj;
  AliAODPidHF* aodpid;
  Double_t nsigmaTOF=0;
  Double_t nsigmaTPC[3]={},plimTPC[2]={};

  if(mode==1){
    Bool_t isRead=ReadFileMore(list,lstat,cutobj,listname,partname+suffixdir,path,filename,dirname);
    if(!isRead) return;
    if(!list || !lstat){
      cout<<":-( null pointers..."<<endl;
      return;
    }
    aodpid=(AliAODPidHF*)cutobj->GetPidHF();
    if(!aodpid){
      cout<<"PidHF object not found! cannot get the nsigma values"<<endl;
      return;
    }
    nsigmaTOF=aodpid->GetSigma(3);
  
    nsigmaTPC[0]=aodpid->GetSigma(0);
    nsigmaTPC[1]=aodpid->GetSigma(1);
    nsigmaTPC[2]=aodpid->GetSigma(2);
    aodpid->GetPLimit(plimTPC);

  }else{
    Bool_t isRead=ReadFile(list,lstat,listname,partname+suffixdir,path,filename,dirname);
    if(!isRead) return;
    if(!list || !lstat){
      cout<<":-( null pointers..."<<endl;
      return;
    }
  }


  TPaveText *txtsigmaTOF=new TPaveText(0.1,0.65,0.5,0.9,"NDC");
  txtsigmaTOF->SetBorderSize(0);
  txtsigmaTOF->SetFillStyle(0);
  txtsigmaTOF->AddText(Form("nsigmacut from cutobj = %.1f",nsigmaTOF));
  TLine lTOF;
  lTOF.SetLineColor(kMagenta+1);
  lTOF.SetLineStyle(2);
  lTOF.SetLineWidth(3);

  TPaveText *txtsigmaTPC=new TPaveText(0.3,0.6,0.6,0.9,"NDC");
  txtsigmaTPC->SetBorderSize(0);
  txtsigmaTPC->SetFillStyle(0);
  txtsigmaTPC->AddText("nsigmacut from cutobj \n");
  txtsigmaTPC->AddText(Form("p < %.1f : %.1f \n",plimTPC[0],nsigmaTPC[0]));
  txtsigmaTPC->AddText(Form("%.1f < p < %.1f : %.1f \n",plimTPC[0],plimTPC[1],nsigmaTPC[1]));
  txtsigmaTPC->AddText(Form("p > %.1f : %.1f \n",plimTPC[1],nsigmaTPC[2]));
  TLine lTPC;
  lTPC.SetLineColor(kMagenta+1);
  lTPC.SetLineStyle(2);
  lTPC.SetLineWidth(3);

  // TCanvas *ctest=new TCanvas("text","Test text");
  // ctest->cd();
  // txtsigmaTPC->Draw();
  // txtsigmaTOF->Draw();


  for(Int_t i=0;i<list->GetEntries();i++){
    TClass* objtype=list->At(i)->IsA();
    TString tpname=objtype->GetName();

    if(tpname=="TH1F"){
      TH1F* h=(TH1F*)list->At(i);

      if(!h){
	cout<<"Histogram "<<i<<" not found"<<endl;
	continue;
      }
      //h->Scale(1./h->Integral("width"));
      TCanvas* c=new TCanvas(Form("c%s",h->GetName()),h->GetName());
      c->SetLogz();
      c->cd();
      h->Draw();
    
      //write
      c->SaveAs(Form("%s%s.png",h->GetName(),textleg.Data()));
      c->SaveAs(Form("%s%s.eps",h->GetName(),textleg.Data()));
      TFile* fout=new TFile(Form("%s.root",h->GetName()),"recreate");
      fout->cd();
      c->Write();
    }
  
    if(tpname=="TH2F"){
      TH2F* h=(TH2F*)list->At(i);
      
      if(!h){
	cout<<"Histogram "<<i<<" not found"<<endl;
	continue;
      }
      TString hname=h->GetName();
      h->Sumw2();
      if(h->Integral("width")==0) {cout<<"Empty histogram, skip\n"; continue;}
      h->Scale(1./h->Integral("width"));

      Double_t maxzaxis=h->GetBinContent(h->GetMaximumBin());
      Double_t minzaxis=h->GetBinContent(h->GetMinimumBin());
      printf("Minimum = %f, maximum = %f\n",minzaxis,maxzaxis);
      TH2F* hallzrange=(TH2F*)h->Clone(Form("%swholez",hname.Data()));
      hallzrange->SetAxisRange(1e-07,maxzaxis,"Z");
      //hallzrange->SetAxisRange(minzaxis,maxzaxis,"Z");

      TCanvas* cwholez=new TCanvas(Form("c%swholez",hname.Data()),Form("%s down to lowest z",hname.Data()));
      cwholez->SetLogz();
      hallzrange->Draw("colz");
      cwholez->SaveAs(Form("%swholez.png",h->GetName()));
      cwholez->SaveAs(Form("%swholez.eps",h->GetName()));

      if(hname.Contains("hTOFtimeKaonHyptime")){
	TCanvas* cz=new TCanvas(Form("c%szoom",hname.Data()),Form("%szoom",hname.Data()));
	cz->SetLogz();
	TH2F* hz=(TH2F*)h->Clone(Form("%sz",hname.Data()));
	hz->Draw("colz");
	hz->SetAxisRange(-1500,1500,"Y");
	hz->SetAxisRange(0.,5.,"X");
	//write
	cz->SaveAs(Form("%szoom.png",h->GetName()));
	cz->SaveAs(Form("%szoom.eps",h->GetName()));
      }

      TCanvas* c=new TCanvas(Form("c%s",hname.Data()),hname.Data());
      c->SetLogz();
      //c->SetLogx();
      TCanvas* c2=new TCanvas(Form("c2%s",hname.Data()),hname.Data());
      c2->SetLogz();

      c->cd();
      h->DrawClone("colz");

      if (hname.Contains("Sig") || hname.Contains("sigma"))h->SetAxisRange(-5,5,"Y");
      c2->cd();
      //if (hname.Contains("TOFtime"))h->SetAxisRange(-1500,1500,"Y");
      h->SetAxisRange(0.,5.,"X");
     
      h->Draw("colz");
     
      //TCanvas *test=new TCanvas("test","test");
      if(mode==0){
      	 AddFit(h);	
      }else{ //mode 1

	if(hname.Contains("TOFsigma")) {

	  c->cd();
	  txtsigmaTOF->Draw();
	  lTOF.DrawLine(.2,nsigmaTOF,20,nsigmaTOF);
	  lTOF.DrawLine(.2,-1*nsigmaTOF,4.,-1*nsigmaTOF);

	}
      

	if(hname.Contains("TPCsigma")){

	  c->cd();
	  txtsigmaTPC->Draw();
	  lTPC.DrawLine(0.,nsigmaTPC[0],plimTPC[0],nsigmaTPC[0]);
	  lTPC.DrawLine(plimTPC[0],nsigmaTPC[1],plimTPC[1],nsigmaTPC[1]);
	  lTPC.DrawLine(plimTPC[1],nsigmaTPC[2],4,nsigmaTPC[2]);
	  lTPC.DrawLine(0.,-1*nsigmaTPC[0],plimTPC[0],-1*nsigmaTPC[0]);
	  lTPC.DrawLine(plimTPC[0],-1*nsigmaTPC[1],plimTPC[1],-1*nsigmaTPC[1]);
	  lTPC.DrawLine(plimTPC[1],-1*nsigmaTPC[2],4,-1*nsigmaTPC[2]);
	}

	if(hname.Contains("TPCsigvsp")){
	  SuperimposeBBToTPCSignal(period,c,set);
	}
      }
	
      //write
      c->SaveAs(Form("%s%d.png",h->GetName(),mode));
      c->SaveAs(Form("%s%d.eps",h->GetName(),mode));
      c2->SaveAs(Form("%s2%d.png",h->GetName(),mode));
      c2->SaveAs(Form("%s2%d.eps",h->GetName(),mode));

      TFile* fout=new TFile(Form("%s%d.root",h->GetName(),mode),"recreate");
      fout->cd();
      c->Write();
      c2->Write();
    }
  }
}

void SuperimposeBBToTPCSignal(Int_t period /*0=LHC10bc, 1=LHC10d, 2=LHC10h*/,TCanvas* cpid,Int_t set /*see below*/){

  TFile* fBethe=new TFile("BetheBlochTPC.root");
  if(!fBethe->IsOpen()){
    TPCBetheBloch(set);
    fBethe=new TFile("BetheBlochTPC.root");
  }
  const Int_t npart=4;
  TString partnames[npart]={"Kaon","Pion","Electron","Proton"};
  for(Int_t ipart=0;ipart<npart;ipart++){
    TString grname=Form("%sP%d",partnames[ipart].Data(),period);
    TGraph* gr=(TGraph*)fBethe->Get(grname);
    cpid->cd();
    gr->SetLineColor(1);
    gr->SetLineWidth(2);
    gr->Draw("L");
  }

  //cpid->SaveAs(Form("%sBB.png",hname.Data()));
}

//draw and save Bethe Bloch from TPC in different periods
void TPCBetheBloch(Int_t set){
  gStyle->SetOptTitle(0);
  gStyle->SetCanvasColor(0);

  AliTPCPIDResponse *tpcResp=new AliTPCPIDResponse();

  const Int_t npart=4;
  //Double_t masses[npart]={TDatabasePDG::Instance()->GetParticle(321)->Mass()/*Kaon*/,TDatabasePDG::Instance()->GetParticle(211)->Mass()/*Pion*/,TDatabasePDG::Instance()->GetParticle(11)->Mass()/*Electron*/,TDatabasePDG::Instance()->GetParticle(2212)->Mass()/*Proton*/};
  TString partnames[npart]={"Kaon","Pion","Electron","Proton"};
  //printf("%s = %.4f,%s = %.4f,%s = %.4f\n",partnames[0].Data(),masses[0],partnames[1].Data(),masses[1],partnames[2].Data(),masses[2]);
  TCanvas *cBethe=new TCanvas("cBethe","Bethe Bloch K pi e p");
  Int_t nperiods=4; //LHC10b+c, LHC10d, LHC10h, MC
  Double_t alephParameters[5]={};
  Int_t nsets=1/*LHC10bc*/+2/*LHC10de*/+2/*LHC10h*/+3/*MC*/;

  periodsname=new TString[nsets];
  cout<<"Creating the file of the Bethe Bloch"<<endl;
  TFile* fout=new TFile("BetheBlochTPC.root","recreate");

  for(Int_t iperiod=0;iperiod<nperiods;iperiod++){
    cout<<"Period "<<iperiod<<" : ";
    if(iperiod==0){ //LHC10bc
      
      alephParameters[0] = 0.0283086/0.97;
      alephParameters[1] = 2.63394e+01;
      alephParameters[2] = 5.04114e-11;
      alephParameters[3] = 2.12543e+00;
      alephParameters[4] = 4.88663e+00;
      periodsname[0]="dataLHC10bc";  
    }
    if(iperiod==1){ //LHC10de,low energy
      if(set==0){   
	alephParameters[0] = 1.63246/50.;
	alephParameters[1] = 2.20028e+01;
	alephParameters[2] = TMath::Exp(-2.48879e+01);
	alephParameters[3] = 2.39804e+00;
	alephParameters[4] = 5.12090e+00;
	periodsname[1]="dataLHC10deold"; 
      }
      if(set==1){
	alephParameters[0] = 1.34490e+00/50.;
	alephParameters[1] =  2.69455e+01;
	alephParameters[2] =  TMath::Exp(-2.97552e+01);
	alephParameters[3] = 2.35339e+00;
	alephParameters[4] = 5.98079e+00;
	periodsname[2]="dataLHC10denew";
      }
    }

    if(iperiod==2){//LHC10h
      if(set==0){//pass1 
	alephParameters[0]=1.25202/50.;
	alephParameters[1]=2.74992e+01;
	alephParameters[2]=TMath::Exp(-3.31517e+01);
	alephParameters[3]=2.46246;
	alephParameters[4]=6.78938;
	periodsname[3]="dataLHC10hpass1";
      }
      if (set==1){//pass2 (AOD044)
	alephParameters[0]=1.25202/50.;
	alephParameters[1]=2.74992e+01;
	alephParameters[2]=TMath::Exp(-3.31517e+01);
	alephParameters[3]=2.46246;
	alephParameters[4]=6.78938;
	periodsname[4]="dataLHC10hpass2";
      }
    }
    if(iperiod==3){ //MC
      if(set==0){
	alephParameters[0] = 2.15898e+00/50.;
	alephParameters[1] = 1.75295e+01;
	alephParameters[2] = 3.40030e-09;
	alephParameters[3] = 1.96178e+00;
	alephParameters[4] = 3.91720e+00;
	periodsname[5]="MCold";
      }
      if(set==1){ //new
	alephParameters[0] = 1.44405/50;
	alephParameters[1] = 2.35409e+01;
	alephParameters[2] = TMath::Exp(-2.90330e+01);
	alephParameters[3] = 2.10681;
	alephParameters[4] = 4.62254;
	periodsname[6]="MCnew";
      }

      if(set==2){ //new BB from Francesco
	alephParameters[0] = 0.029021;
	alephParameters[1] = 25.4181;
	alephParameters[2] = 4.66596e-08;
	alephParameters[3] = 1.90008;
	alephParameters[4] = 4.63783;
	periodsname[7]="MCBBFrancesco";
      }

      if(set==3){ //low energy 2011
	alephParameters[0] = 0.0207667;
	alephParameters[1] = 29.9936;
	alephParameters[2] = 3.87866e-11;
	alephParameters[3] = 2.17291;
	alephParameters[4] = 7.1623;
	//periodsname[8]="MClowen2011";
      }


    }
    //cout<<periodsname[iperiod]<<endl;
    tpcResp->SetBetheBlochParameters(alephParameters[0],alephParameters[1],alephParameters[2],alephParameters[3],alephParameters[4]);
    cout<<"here"<<endl;
    for(Int_t ipart=0;ipart<npart;ipart++){

      const Int_t n=1000;
      Double_t p[n],bethe[n];

      for(Int_t k=0;k<n;k++){ //loop on the momentum steps
	p[k]=0.0001+k*4./n; //limits 0.-4. GeV/c
	//cout<<p[k]<<"\t";
	//bethe[k]=-tpcResp->Bethe(p[k]/masses[ipart]);
	AliPID::EParticleType ptype=AliPID::kKaon;
	if(ipart==1) ptype=AliPID::kPion;
	if(ipart==2) ptype=AliPID::kElectron;
	if(ipart==3) ptype=AliPID::kProton;
	bethe[k]=tpcResp->GetExpectedSignal(p[k],ptype);
      }
      //cout<<endl;
      TGraph *gr=new TGraph(n,p,bethe);
      gr->SetName(Form("%sP%d",partnames[ipart].Data(),iperiod));
      gr->SetTitle(Form("%sP%d;p (GeV/c);",partnames[ipart].Data(),iperiod));
      gr->SetLineColor(ipart+1);
      gr->SetMarkerColor(ipart+1);
      gr->GetYaxis()->SetRangeUser(35,100);
      cBethe->cd();
      if(iperiod==0 && ipart==0)gr->DrawClone("AL");
      else gr->DrawClone("L");

      fout->cd();
      gr->Write();
    }

  }
  TParameter<int> sett;
  sett.SetVal(set);
  fout->cd();
  sett.Write();

  fout->Close();
}

void DrawOutputCentrality(TString partname="D0",TString textleg="",TString path="./", Bool_t superimpose=kFALSE,TString suffixdir="",TString filename=/*"AnalysisResults.root"*/"PWG3histograms.root"){
  gStyle->SetCanvasColor(0);
  gStyle->SetTitleFillColor(0);
  gStyle->SetStatColor(0);
  gStyle->SetPalette(1);

  TString listname="outputCentrCheck",partname2="",path2="",suffixdir2="",filename2="PWG3histograms.root";

  // if(superimpose){
  //   cout<<"Enter the names:\n>";
  //   cin>>name1;
  //   cout<<">";
  //   cin>>name2;
  // }
  // TString listname="outputTrack",name1="",name2="";
  TString tmp="y";

  if(superimpose){
    cout<<"##Second file\n";
    cout<<"Enter the name:\n";
    cout<<">";
    cin>>partname2;
    cout<<"Are they in the same output file? (y/n)"<<endl;
    cin>>tmp;
    if(tmp=="n"){
      cout<<"Path: \n";
      cout<<">";
      cin>>path2;
      cout<<"Dir name:\n";
      cout<<">";
      cin>>suffixdir2;
      cout<<"Filename: "<<endl;
      cout<<">";
      cin>>filename2;
    }
    
  }
  // Int_t nhist=1;
  // TString *name=0x0;
  // if(superimpose){
  //   cout<<"Number of histogram to superimpose: ";
  //   cin>>nhist;
  //   name=new TString[nhist];
  //   for (Int_t j=0;j<nhist;j++){
  //     cout<<">";
  //     cin>>name[j];
  //   }
  // }

  TList* list = NULL;
  TList * lstat = NULL;
  TH1F* hEntr = NULL;

  TString dirname="PWG3_D2H_QA",dirname2=dirname;
  dirname+=suffixdir;
  dirname2+=suffixdir2;
  Bool_t isRead=ReadFile(list,lstat,listname,partname.Data(),path,filename,dirname);
  if(!isRead) return;
  if(!list || !lstat){
    cout<<":-( null pointers..."<<endl;
    return;
  }

  TPaveText *pvtxt=new TPaveText(0.6,0.6,0.9,0.9,"NDC");
  pvtxt->SetBorderSize(0);
  pvtxt->SetFillStyle(0);
  pvtxt->AddText(partname);

  TList* llist = NULL;
  TList* llstat = NULL;
  TH1F* hEntr1 = NULL;

  if(superimpose){
    isRead=ReadFile(llist,llstat,listname,partname2.Data(),path2,filename2,dirname2);
    if(!isRead) return;
    if(!llist || !llstat){
      cout<<":-( null pointers..."<<endl;
      return;
    }
    TText *redtext=pvtxt->AddText(partname2);
    redtext->SetTextColor(kRed);

  }


  TCanvas* cst=new TCanvas("cst","Stat");
  cst->SetGridy();
  cst->cd();
  hEntr=(TH1F*)lstat->FindObject("hNentries");
  hEntr1=(TH1F*)llstat->FindObject("hNentries");
  Int_t nevents=hEntr->GetBinContent(1);
  hEntr->Draw("htext0");
  cst->SaveAs(Form("%s%s.png",hEntr->GetName(),textleg.Data()));
  cst->SaveAs(Form("%s%s.eps",hEntr->GetName(),textleg.Data()));
  Int_t nevents080=1,nnevents080=1;

  //TCanvas *spare=new TCanvas("sparecv","Spare");

  for(Int_t i=0;i<list->GetEntries();i++){

    TClass* objtype=list->At(i)->IsA();
    TString tpname=objtype->GetName();

    if(tpname=="TH1F"){

      TH1F* h=(TH1F*)list->At(i);
      TH1F* hh=0x0;
      if(superimpose){
	hh=(TH1F*)llist->At(i);
      }
      if(!h || (superimpose && !hh)){
	cout<<"Histogram "<<i<<" not found"<<endl;
	continue;
      }
      if(superimpose){
	hEntr1->SetLineColor(kRed);
	hh->SetLineColor(kRed);
      }

      TCanvas* c=new TCanvas(Form("c%s",h->GetName()),h->GetName());
      TPaveText *pvtxt2=new TPaveText(0.6,0.6,0.9,0.9,"NDC");
      pvtxt2->SetBorderSize(0);
      pvtxt2->SetFillStyle(0);

      c->cd();
      c->SetGrid();
      c->SetLogy();
      Int_t entries=h->Integral();
      pvtxt2->AddText(Form("%.1f %s of the events",(Double_t)entries/(Double_t)nevents*100,"%"));
      h->Draw();
      if(superimpose) {
	hh->Draw("sames");
	pvtxt->Draw();
      }
      pvtxt2->Draw();
      c->SaveAs(Form("%s%s.pdf",c->GetName(),textleg.Data()));
      c->SaveAs(Form("%s%s.eps",c->GetName(),textleg.Data()));
    }
    if(tpname=="TH2F"){
      TH2F* hhh=(TH2F*)list->At(i);
      if(!hhh){
	cout<<"Histogram "<<i<<" not found"<<endl;
	continue;
      }
      TCanvas* c=new TCanvas(Form("c%s",hhh->GetName()),hhh->GetName());
      TPaveText *pvtxt3=new TPaveText(0.6,0.6,0.9,0.9,"NDC");
      pvtxt3->SetBorderSize(0);
      pvtxt3->SetFillStyle(0);

      c->cd();
      c->SetGrid();
      Int_t entries=hhh->Integral();
      pvtxt3->AddText(Form("%.1f %s of the events",(Double_t)entries/(Double_t)nevents*100,"%"));
      hhh->Draw("colz");
      c->SetLogz();
      pvtxt3->Draw();
      c->SaveAs(Form("%s%s.pdf",c->GetName(),textleg.Data()));
      c->SaveAs(Form("%s%s.eps",c->GetName(),textleg.Data()));
    }
  }
  
  
  listname="countersCentrality";

  isRead=ReadFile(list,lstat,listname,partname.Data(),path,filename,dirname);
  if(!isRead) return;
  if(!list || !lstat){
    cout<<":-( null pointers..."<<endl;
    return;
  }


  if(superimpose){
    isRead=ReadFile(llist,llstat,listname,partname2.Data(),path2,filename2,dirname2);
    if(!isRead) return;
    if(!llist || !llstat){
      cout<<":-( null pointers..."<<endl;
      return;
    }
    TText *redtext=pvtxt->AddText(partname2);
    redtext->SetTextColor(kRed);

  }

  TH1F* hallcntr=0x0;
  TH1F* hhallcntr=0x0;
  cout<<"normalizing to 0-80% as a check"<<endl;
  Int_t ncentr=10;//check this
  TH1F* h020=0x0;
  TH1F* h2080=0x0;
  TH1F* hh020=0x0;
  TH1F* hh2080=0x0;

  TCanvas *cvnocnt=new TCanvas("cvnocnt","No Centrality estimation",800,400);
  cvnocnt->Divide(2,1);
  TCanvas *ccent=0x0;

  for(Int_t i=0;i<list->GetEntries();i++){
    AliCounterCollection* coll=(AliCounterCollection*)list->At(i);
    AliCounterCollection* colle=0x0;
    if(superimpose) colle=(AliCounterCollection*)llist->At(i);
    coll->SortRubric("run");//sort by run number

    h020=0x0;
    h2080=0x0;
    hh020=0x0;
    hh2080=0x0;
    
    hallcntr=0x0; 
    hhallcntr=0x0; 

    TH1F* hbad=(TH1F*)coll->Get("run",Form("centralityclass:-990_-980"));
    cvnocnt->cd(i+1);
    if(hbad) hbad->Draw();

    ccent=new TCanvas(Form("ccent%s",coll->GetName()),Form("Centrality vs Run (%s)",coll->GetName()),1400,800);
    ccent->SetTicky();
    ccent->Divide(4,2);
    
    TH1F* hh=0x0;

    for(Int_t ic=0;ic<8/*ncentr*/;ic++){ //normalizing to 0-80% as a check

      TH1F* h=(TH1F*)coll->Get("run",Form("centralityclass:%d_%d",ic*10,ic*10+10));
      h->SetName(Form("h%d%d",i,ic));
      if(!hallcntr) {
	hallcntr=(TH1F*)h->Clone("hallcntr");
	hallcntr->Sumw2();
      } else {
	hallcntr->Add(h);
      }
      
      nevents080+=h->Integral();

      if(superimpose){
	hh=(TH1F*)colle->Get("run",Form("centralityclass:%d_%d",ic*10,ic*10+10));
	hh->SetName(Form("hh%d%d",i,ic));
	if(!hhallcntr) {
	  hhallcntr=(TH1F*)hh->Clone("hhallcntr");
	  hhallcntr->Sumw2();
	}else hhallcntr->Add(hh);

	nnevents080+=hh->Integral();
	
      }
    }

    for(Int_t ic=0;ic<ncentr;ic++){

      TH1F* h=(TH1F*)coll->Get("run",Form("centralityclass:%d_%d",ic*10,ic*10+10));
      h->SetName(Form("h%d%d",i,ic));
      h->Sumw2();
      
      if(ic>=0 && ic<=1){ //0-20
	if(!h020) {
	  h020=(TH1F*)h->Clone(Form("h020%s",coll->GetName()));
	  h020->SetTitle(Form("Centrality 0-20 %s",coll->GetName()));
	  if(superimpose){
	    hh020=(TH1F*)hh->Clone(Form("hh020%s",coll->GetName()));
	    hh020->SetTitle(Form("Centrality 0-20 %s",coll->GetName()));
	  }
	}
	else {
	  h020->Add(h);
	  if(superimpose)hh020->Add(hh);
	}
      }
      if(ic>=2 && ic<=7){ //20-80
	if(!h2080) {
	  h2080=(TH1F*)h->Clone(Form("h2080%s",coll->GetName()));
	  h2080->SetTitle(Form("Centrality 20-80 %s",coll->GetName()));
	  if(superimpose){
	    hh2080=(TH1F*)hh->Clone(Form("hh2080%s",coll->GetName()));
	    hh2080->SetTitle(Form("Centrality 20-80 %s",coll->GetName()));
	  }
	}
	else {
	  h2080->Add(h);
	  if(superimpose)hh2080->Add(hh);
	}
	
      }

      h->Divide(hallcntr);

      if(ic<8){
	ccent->cd(ic+1);
	h->GetYaxis()->SetLabelSize(0.05);
	h->GetYaxis()->SetTitleOffset(1.5);
	h->SetMinimum(0);
	//h->GetYaxis()->SetRangeUser(0.,0.15);
	h->DrawClone();
      }
      /*
	if(ic==0&&i==0){
	spare->cd();
	h->Draw();
	}
      */
      // ccent->cd(1);
      // h->SetLineColor(ic+1);
      // if(ic==0)h->DrawClone();
      // else h->DrawClone("sames");
    }
    h020->Divide(hallcntr);
    if(superimpose){
      hh020->Divide(hhallcntr);
      hh020->SetLineColor(2);
      hh020->SetMarkerColor(2);
    }

    /*//draw 0-20 and 20-80 in the multi pad canvas (increase divisions before uncommenting)
    ccent->cd(ncentr+1);
    h020->DrawClone();
    if(superimpose){
      hh020->DrawClone("sames");
    }
    */
    TCanvas* cv020=new TCanvas(Form("cv020-%d",i),"0-20% vs run number",1400,600);
    cv020->cd();
    cv020->SetTicky();
    h020->GetYaxis()->SetRangeUser(0.,1.);
    h020->DrawClone();
    if(superimpose)hh020->DrawClone("sames");
    cv020->SaveAs(Form("cv020-%d.pdf",i));
    cv020->SaveAs(Form("cv020-%d.eps",i));

    h2080->Divide(hallcntr);
    if(superimpose) {
      hh2080->Divide(hhallcntr);
      hh2080->SetLineColor(2);
      hh2080->SetMarkerColor(2);
    }

    /*
    ccent->cd(ncentr+2);
    h2080->DrawClone();
   
    if(superimpose){
      hh2080->DrawClone("sames");
    }
    */
    TCanvas* cv2080=new TCanvas(Form("cv2080-%d",i),"20-80% vs run number",1400,600);
    cv2080->cd();
    cv2080->SetTicky();
    h2080->GetYaxis()->SetRangeUser(0.,1.);
    h2080->DrawClone();
    if(superimpose)hh2080->DrawClone("sames");
    cv2080->SaveAs(Form("cv2080-%d.pdf",i));
    cv2080->SaveAs(Form("cv2080-%d.eps",i));

    ccent->SaveAs(Form("%s%s.pdf",ccent->GetName(),textleg.Data()));
    ccent->SaveAs(Form("%s%s.eps",ccent->GetName(),textleg.Data()));
  }
  
}

void DrawProjections(TString partname="D0",TString h2dname="hMultvsPercentile",Int_t groupnbins=5,Float_t fitmin=15,Float_t fitmax=50,TString direction="X",TString path="./",TString suffixdir="", TString filename="AnalysisResults.root", TString fitfunc="pol0"/*option "nofit" does not fit*/){
  gStyle->SetCanvasColor(0);
  gStyle->SetTitleFillColor(0);
  gStyle->SetStatColor(0);
  gStyle->SetPalette(1);

  TString listname="outputCentrCheck";
  TString dirname="PWG3_D2H_QA";
  dirname+=suffixdir;

  TList* list = NULL;
  TList * lstat = NULL;
  TH1F* hEntr = NULL;

  Bool_t isRead=ReadFile(list,lstat,listname,partname,path,filename,dirname);
  if(!isRead) return;
  if(!list || !lstat){
    cout<<":-( null pointers..."<<endl;
    return;
  }
  hEntr = (TH1F*) lstat->FindObject("hNentries");
  Double_t nevents=hEntr->GetBinContent(5); //ev good vertex

  TH2F* h2=(TH2F*)list->FindObject(h2dname);
  if(!h2){
    cout<<h2dname.Data()<<" not found"<<endl;
    list->ls();
    return;
  }
  TCanvas* cv2d=new TCanvas("cv2d",h2->GetName());
  cv2d->cd();
  cv2d->SetLogz();
  cv2d->SetGrid();
  h2->Draw("colz");
  TPaveText *pvst=new TPaveText(0.6,0.2,0.9,0.7,"NDC");
  pvst->SetBorderSize(0);
  pvst->SetFillStyle(0);
  pvst->AddText("Bin -> Cont/nEvVtx");

  //nsteps=group bins in the Y(X) direction if projecting on the X(Y) direction
  Int_t nsteps=0;

  if(direction=="X") nsteps=h2->GetNbinsY()/groupnbins;
  if(direction=="Y") nsteps=h2->GetNbinsX()/groupnbins;
  cout<<"Grouping bins by " <<groupnbins<<" I obtaine "<<nsteps<<" projections"<<endl;

  TCanvas *cvpj=new TCanvas(Form("cvpj%s%s",direction.Data(),h2dname.Data()),Form("cvpj%s",direction.Data()),1200,800);
  cvpj->Divide((Int_t)(nsteps/3)+1,3);
  TFile* fout=new TFile(Form("proj%s%s.root",direction.Data(),h2dname.Data()), "recreate");
  //Float_t maxx[nsteps];
  //Float_t maxx[12]={9000,9000,6000,4000,2000,1400,800,500,200,100,40,25};
  Double_t integralpernev[nsteps];

  Double_t minx=0,maxx=0;
  if(direction=="X"){
    minx=h2->GetYaxis()->GetXmin();
    maxx=h2->GetYaxis()->GetXmax();
  }
  if(direction=="Y"){
    minx=h2->GetXaxis()->GetXmin();
    maxx=h2->GetXaxis()->GetXmax();
  }
  printf("Plotting from %.1f to %.1f\n",minx,maxx);
  TCanvas *cintegral=new TCanvas("cintegral","Integral of each projection");
  TH1F* hint=new TH1F("hint","Integral of each projection;Centrality (%);Entries",nsteps,minx,maxx);
  Double_t minint=999999999,maxint=0;

  for(Int_t i=0;i<nsteps;i++){
    TH1F* h=0x0;
    // if(direction=="X")h=(TH1F*)h2->ProjectionX(Form("px%d",i),i+kbins,i+2*kbins);
    // if(direction=="Y")h=(TH1F*)h2->ProjectionY(Form("py%d",i),i+kbins,i+2*kbins);
    if(direction=="X")h=(TH1F*)h2->ProjectionX(Form("px%d",i),groupnbins*i+1,groupnbins*(i+1));
    if(direction=="Y")h=(TH1F*)h2->ProjectionY(Form("py%d",i),groupnbins*i+1,groupnbins*(i+1));
    Double_t projint=h->Integral();
    cout<<"Integral of projection "<<i<<" = "<<projint<<endl;
    hint->SetBinContent(i+1,projint);
    hint->SetBinError(i+1,TMath::Sqrt(projint));

    if(projint<1e-7) continue;
    if(minint>projint) minint=projint;
    if(projint>maxint) maxint=projint;
    integralpernev[i]=h->Integral()/nevents;

    TPaveText *pvtxt=new TPaveText(0.6,0.6,0.9,0.9,"NDC");
    pvtxt->SetBorderSize(0);
    pvtxt->SetFillStyle(0);
    pvtxt->AddText(Form("%.0f - %.0f",h2->GetYaxis()->GetBinLowEdge(groupnbins*i+1),h2->GetYaxis()->GetBinLowEdge(groupnbins*(i+1))));
    pvst->AddText(Form("%.0f - %.0f -> %.2f",h2->GetYaxis()->GetBinLowEdge(groupnbins*i+1),h2->GetYaxis()->GetBinLowEdge((groupnbins*(i+1))),integralpernev[i]));

    cvpj->cd(i+1);
    //h->GetXaxis()->SetRangeUser(0,maxx[i]);
    h->Draw();
    pvtxt->Draw();
    fout->cd();
    h->Write();
  }
  cvpj->SaveAs(Form("cvpj%s%s.pdf",direction.Data(),h2dname.Data()));
  cvpj->SaveAs(Form("cvpj%s%s.eps",direction.Data(),h2dname.Data()));

  cv2d->cd();
  pvst->Draw();
  cv2d->SaveAs(Form("%s.pdf",h2->GetName()));
  cv2d->SaveAs(Form("%s.eps",h2->GetName()));

  cintegral->cd();
  hint->SetMarkerStyle(20);
  hint->Draw("PE");
  if(!fitfunc.Contains("nofit")){
    hint->Fit(fitfunc.Data(),"RL","PE",fitmin,fitmax);
    TF1* fpolfit=hint->GetFunction(fitfunc.Data());
    TPaveText *txtvar=new TPaveText(0.3,0.1,0.9,0.4,"NDC");
    txtvar->SetBorderSize(0);
    txtvar->SetFillStyle(0);
    //txtvar->AddText(Form("Full spread %.0f- %.0f",maxint,minint));
    txtvar->AddText(Form("Fit in %.1f-%.1f; ",fitmin,fitmax));
    for(Int_t ipar=0;ipar<fpolfit->GetNpar();ipar++){
      txtvar->AddText(Form("par%d = %.0f, ",ipar, fpolfit->GetParameter(ipar)));
    }
    txtvar->AddText(Form("#tilde{#chi}^{2} = %.2f",fpolfit->GetChisquare()/fpolfit->GetNDF()));
    txtvar->AddText(Form("bin width = %.1f %s",hint->GetBinWidth(3),"%"));
    txtvar->Draw();
  }
  fout->cd();
  hint->Write();
  cintegral->SaveAs(Form("%s.pdf",hint->GetName()));
  cintegral->SaveAs(Form("%s.eps",hint->GetName()));
}

void DrawEventSelection(TString partname="D0", TString path="./",TString suffixdir="",TString filename="AnalysisResults.root"){
  gStyle->SetCanvasColor(0);
  gStyle->SetTitleFillColor(0);
  gStyle->SetStatColor(0);
  gStyle->SetPalette(1);
  gStyle->SetOptStat(0);

  TString listname="outputEvSel";
  TString dirname="PWG3_D2H_QA";
  dirname+=suffixdir;

  TList* list= NULL;
  TList * lstat = NULL;
  TH1F* hEntr= NULL;
  

  Bool_t isRead=ReadFile(list,lstat,listname,partname,path,filename,dirname);
  if(!isRead) return;
  if(!list || !lstat){
    cout<<":-( null pointers..."<<endl;
    return;
  }
  hEntr =(TH1F *)lstat->FindObject("hNentries");
  //Double_t neventsgv=hstat->Integral(5,5); //ev good vertex

  for(Int_t i=0;i<list->GetEntries();i++){

    TClass* objtype=list->At(i)->IsA();
    TString tpname=objtype->GetName();

    if(tpname=="TH1F"){
      TH1F* htmp=(TH1F*)list->At(i);
      TCanvas* c=new TCanvas(Form("c%s",htmp->GetName()),Form("c%s",htmp->GetName()));
      c->cd();
      htmp->Draw();
      c->SaveAs(Form("%s.pdf",htmp->GetName()));
      c->SaveAs(Form("%s.eps",htmp->GetName()));
    }

    if(tpname=="TH2F"){
      TH2F* htmp=(TH2F*)list->At(i);
      TCanvas* c=new TCanvas(Form("c%s",htmp->GetName()),Form("c%s",htmp->GetName()),1200,800);
      c->cd();
      htmp->SetMarkerSize(1.3);
      htmp->Draw("colzhtext45");
      c->SaveAs(Form("%s.pdf",htmp->GetName()));
      c->SaveAs(Form("%s.eps",htmp->GetName()));
    }
  }

  AliCounterCollection* coll=(AliCounterCollection*)list->FindObject("trigCounter");
  if(!coll) {
    cout<<"Trigger counter not found"<<endl;
    return;
  }
  
  coll->SortRubric("run");//sort by run number

  TString collname=coll->GetName();

  TString keywords=coll->GetKeyWords("triggertype");

  Int_t nkeys=keywords.CountChar(',')+1;

  TString *words = new TString[nkeys];
  for(Int_t k=0;k<nkeys;k++) words[k]="";
  printf("Keywords: ");
  Int_t count=0;
  for(Int_t l=0;l<keywords.Length();l++){
    if(keywords[l] != ',') words[count]+=keywords[l];
    else {
      printf("%s ",words[count].Data());
      count++;
    }
  }
  cout<<endl;

  TH1D** htrig=new TH1D*[nkeys]; //each trigger type in one histogram of counts vs run
  TH1D** htrignormAll=new TH1D*[nkeys]; //normalized to the counts in kAll
  TH1D** htrignormAny=new TH1D*[nkeys]; //normalized to the counts in kAny
  TCanvas* ctrigfractionAll=new TCanvas("cvtrigfrac","Fraction of given trigger type vs run (kAll)",1400,800);
  TCanvas* ctrigfractionAny=new TCanvas("cvtrigfracAll","Fraction of given trigger type vs run (kAny)",1400,800);
  TLegend* legtr=new TLegend(0.15,0.5,0.35,0.8);
  legtr->SetBorderSize(0);
  legtr->SetFillStyle(0);

  TH1D* htrigkAny=new TH1D();
  htrigkAny = coll->Get("run",Form("triggertype:%s","ANY"));
  htrigkAny->SetName(Form("h%s","ANY"));
  htrigkAny->SetTitle("Trigger type;RUN; counts");
  htrigkAny->Sumw2();
  TH1D* htrigkAll=new TH1D();
  htrigkAll = coll->Get("run",Form("triggertype:%s","ALL"));
  htrigkAll->SetName(Form("h%s","ALL"));
  htrigkAll->SetTitle("Trigger type;RUN; counts");
  htrigkAll->Sumw2();

  for(Int_t k=0;k<nkeys;k++){
    htrig[k]=coll->Get("run",Form("triggertype:%s",words[k].Data()));
    htrig[k]->SetName(Form("h%s",words[k].Data()));
    htrig[k]->SetTitle("Trigger type;RUN; counts");
    htrig[k]->SetMarkerColor(k+1);
    htrig[k]->SetMarkerStyle(k+20);
    htrig[k]->Sumw2();
    legtr->AddEntry(htrig[k],Form("%s",words[k].Data()),"P");
    //drawings
    //1) counts of a given trigger over counts in kAll
    htrignormAll[k]=(TH1D*)htrig[k]->Clone(Form("h%snormAll",words[k].Data()));
    htrignormAll[k]->SetTitle("Trigger type over ALL trigger;RUN; counts/countsALL");
    htrignormAll[k]->Divide(htrig[k],htrigkAll,1.,1.,"B");
    htrignormAll[k]->GetXaxis()->SetRangeUser(0,1.1);

    ctrigfractionAll->cd();
    if(k>0)htrignormAll[k]->Draw("PEsames");
    else htrignormAll[k]->Draw("PE");

    //1) counts of a given trigger over counts in kAny
    htrignormAny[k]=(TH1D*)htrig[k]->Clone(Form("h%snormAny",words[k].Data()));
    htrignormAny[k]->SetTitle("Trigger type over ANY trigger;RUN; counts/countsANY");
    htrignormAny[k]->Divide(htrig[k],htrigkAny,1.,1.,"B");
    htrignormAny[k]->GetXaxis()->SetRangeUser(0,1.1);
    
    ctrigfractionAny->cd();
    if(k>0)htrignormAny[k]->Draw("PEsames");
    else htrignormAny[k]->Draw("PE");
  }

  ctrigfractionAll->cd();
  legtr->Draw();
  ctrigfractionAll->SaveAs("TrgFractionOverALL.pdf");
  ctrigfractionAll->SaveAs("TrgFractionOverALL.eps");
  
  ctrigfractionAny->cd();
  legtr->Draw();
  ctrigfractionAny->SaveAs("TrgFractionOverANY.pdf");
  ctrigfractionAny->SaveAs("TrgFractionOverANY.eps");

  delete [] words;
  delete htrigkAll; delete htrigkAny;

  //draw number of events per trigger
  TH2F* hTrigMul=(TH2F*)list->FindObject("hTrigMul");

  TH1F *hnEvPerTrig=(TH1F*)hTrigMul->ProjectionX("hnEvPerTrig");
  hnEvPerTrig->SetTitle("Number of events per trigger");
  TCanvas* cnev=new TCanvas("cnev","Number of events",1400,800);
  cnev->cd();
  hnEvPerTrig->Draw("htext0");
  cnev->SaveAs(Form("%s.pdf",cnev->GetName()));
  cnev->SaveAs(Form("%s.eps",cnev->GetName()));

  //draw number of events selected per trigger
  TH2F* hTrigMulSel=(TH2F*)list->FindObject("hTrigMulSel");

  TH1F *hnEvPerTrigSel=(TH1F*)hTrigMulSel->ProjectionX("hnEvPerTrigSel");
  hnEvPerTrigSel->SetTitle("Number of events selected per trigger");
  TCanvas* cnevs=new TCanvas("cnevs","Number of events selected",1400,800);
  cnevs->cd();
  hnEvPerTrigSel->Draw("htext0");
  cnevs->SaveAs(Form("%s%s.pdf",cnevs->GetName(),suffixdir.Data()));
  cnevs->SaveAs(Form("%s%s.eps",cnevs->GetName(),suffixdir.Data()));

  TH1F* hnEvSelPerc=(TH1F*)hnEvPerTrigSel->Clone("hnEvSelFrac");
  hnEvSelPerc->SetTitle("Fraction of event selected per trigger");
  hnEvSelPerc->Divide(hnEvPerTrig);
  TCanvas* cnevsp=new TCanvas("cnevsp","Fraction of events selected",1400,800);
  cnevsp->cd();
  hnEvSelPerc->Draw("htext0");
  cnevsp->SaveAs(Form("%s%s.pdf",cnevsp->GetName(),suffixdir.Data()));
  cnevsp->SaveAs(Form("%s%s.eps",cnevsp->GetName(),suffixdir.Data()));
}

void WriteTextFileForCompilation(TString inputtextfile, Int_t analysistype){
   //This method writes a text file with the name given in input containing the path of the QA output file, the directories and the lists of histograms to be read to perform a comparison of QA outputs
   // analysistype = 1 is the OutputTrack
   // analysistype = 2 is the OutputEventSelection
   // other outputs can be implemented

   // The paths and trigger type (or more in general the suffix of the directories to be read have to be set in this method)
   // The legend is set either equal to the trigger type if they are different, or it should be set manually
   // Run this methos before CompilationOfTriggeredEvents unless the text file has been already produced
   
  Printf("WARNING! Did you customize the parameters in the macro?");
  const Int_t n=8; //customize this
  TString prepath="/data/Work/HFQA/LHC12QATrainOutputs/";//"./";
  TString pathname[n]={"LHC12a/Train165/","LHC12b/Train166/","LHC12d/Train168/","LHC12e/Train170/","LHC12f/Train171/","LHC12g/Train172/"};

  TString dirname[n];
  TString listname[n];
  ofstream myfile;
  myfile.open(inputtextfile);
  myfile<<n<<endl;

  TString filename="AnalysisResults.root";
  TString basedirname="PWG3_D2H_QA";
  TString trgnames[n];//={"INT7","EMC7","EMCJET7","EMCGAMMA7","INT8","EMC8","EMCJET8","EMCGAMMA8"}; //customize this
  TString baselistname="", partname="D00100";
  TString legend[n]={"LHC12a165","LHC12b166","LHC12d168","LHC12e170","LHC12f171","LHC12g172"}; //Customize this if want it to be different from trgnames
  if(analysistype==1) baselistname="outputTrack";
  if(analysistype==2) baselistname="outputEvSel";
  //... others could be added

  //All in the same directory on your computer
  for(Int_t i=0;i<n;i++){
    //set
    pathname[i]=prepath+pathname[i];//"./";
    trgnames[i]="EMC7";
    dirname[i]=basedirname+trgnames[i];
    listname[i]=baselistname+partname+trgnames[i];
    if(legend[i]=="") legend[i]=trgnames[i];
    
    //Printf("Trigger name is %s",trgnames[i].Data());
    //Printf("Legend is %s",legend[i].Data());
    
    //write text file
    myfile<<endl;
    myfile<<endl;
    myfile<<pathname[i].Data()<<filename.Data()<<endl;
    myfile<<dirname[i].Data()<<endl;
    myfile<<listname[i].Data()<<endl;
    myfile<<legend[i].Data()<<endl;
      
  }
  myfile.close();

}

Bool_t ReadFilesForCompilation(TString inputtextfile, TList**& lists, Int_t& numb, TString*& legend){

   //Method to read the QA files indicated in the text file in input (to be written with WriteTextFileForCompilation() method)
  ifstream myfile;
  myfile.open(inputtextfile);
  if(!myfile.is_open()) Printf("No files found, did you make it correctly?");
  Int_t n; 
  myfile >> n;
  lists=new TList*[n];
  legend= new TString[n];
  numb=n;

  Int_t k=0;

  while(myfile){
   
    TString filename;
    myfile>>filename;
    //Printf("Filename = %s",filename.Data());
    TFile *fin=new TFile(filename);
    if(!fin->IsOpen()){
      Printf("File %s not found",filename.Data());
      return kFALSE;
    }
   
    TString dirname;
    myfile>>dirname;
    //Printf("Dirname = %s",dirname.Data());
    TDirectoryFile* dir=(TDirectoryFile*)fin->Get(dirname);
    if(!dir){
      Printf("Directory %s not found in %s",dirname.Data(),filename.Data());
      fin->ls();
      return kFALSE;
    }
   
    TString listname;
    myfile>>listname;
    //Printf("Listname = %s",listname.Data());
    lists[k]=(TList*)dir->Get(listname);
    if(!lists[k]){
      Printf("List %s not found in %s",listname.Data(),dirname.Data());
      dir->ls();
      return kFALSE;
    }
    
    TString temp;
    myfile>>temp;
    legend[k]=temp;
    Printf("Legend = %s",legend[k].Data());
    if(!legend[k]){
      Printf("Legend %s not found",filename.Data());
      return kFALSE;
    }
    

    k++;
    if(k==n)return kTRUE;// Needed as the while loop does not always realise the end is reached. 
  }
  return kTRUE;
}

void CompilationOfTriggeredEvents(TString inputtextfile,Int_t analysistype){
   //This method draws the histograms superimposed

   // analysistype = 1 is the OutputTrack
   // analysistype = 2 is the OutputEventSelection
   // other outputs can be implemented

  TList **lists=0x0;
  Int_t n;
  TString* legend=0x0;
  Bool_t okread=ReadFilesForCompilation(inputtextfile,lists,n,legend);
  if(!okread){
    Printf("Did you write %s with  WriteTextFileForCompilation(%s)?",inputtextfile.Data(),inputtextfile.Data());
    return;
  }

  if(analysistype==2){CompilationEvSelection(n,lists,legend);}
  if(analysistype==1){CompilationTrackSelection(n,lists,legend);}
}

void CompilationEvSelection(Int_t n,TList** lists, TString* legend){
   // Specific method for EventSelection output (2)

  TCanvas *cnevs=new TCanvas("cnevs","Number of events selected",1400,800);
  TCanvas *cnevsp=new TCanvas("cnevsp","Fraction of events selected",1400,800);
  TH1F** hnEvPerTrig=new TH1F*[n];
  TH1F** hnEvPerTrigSel=new TH1F*[n];
  TH1F** hnEvSelPerc=new TH1F*[n];
  
  TLegend* leg=new TLegend(0.15,0.5,0.45,0.78);
  leg->SetFillStyle(0);
  leg->SetBorderSize(0);
  
  Bool_t first=kTRUE;
  Int_t nentriesl=lists[0]->GetEntries();
  TCanvas** c=new TCanvas*[nentriesl];
  Int_t nth1f=0;
  
  for(Int_t i=0;i<n;i++){
   
    TH2F* hTrigMul=(TH2F*)lists[i]->FindObject("hTrigMul");

    hnEvPerTrig[i]=(TH1F*)hTrigMul->ProjectionX(Form("hnEvPerTrig%d",i));
    hnEvPerTrig[i]->SetTitle("Number of events selected per trigger");
   

    TH2F* hTrigMulSel=(TH2F*)lists[i]->FindObject("hTrigMulSel");
    
    hnEvPerTrigSel[i]=(TH1F*)hTrigMulSel->ProjectionX(Form("hnEvPerTrigSel%d",i));
    hnEvPerTrigSel[i]->SetTitle("Number of events selected per trigger");
    hnEvPerTrigSel[i]->SetLineColor(i+1);
    hnEvPerTrigSel[i]->SetLineWidth(2);

    cnevs->cd();
    if(i==0) hnEvPerTrigSel[i]->Draw();
    else  hnEvPerTrigSel[i]->Draw("sames");

    hnEvSelPerc[i]=(TH1F*)hnEvPerTrigSel[i]->Clone(Form("hnEvSelFrac%d",i));
    hnEvSelPerc[i]->SetTitle("Fraction of event selected per trigger");
    hnEvSelPerc[i]->SetLineColor(i+1);
    hnEvSelPerc[i]->SetLineWidth(2);
    hnEvSelPerc[i]->Divide(hnEvPerTrig[i]);
    cnevsp->cd();
    if(i==0) hnEvSelPerc[i]->Draw("htext0");
    else  hnEvSelPerc[i]->Draw("htext0sames");
    nth1f=0; //restart counting per each file 
    
    //fill legend
    leg->AddEntry(hnEvSelPerc[i],legend[i],"L"); 
    
    for(Int_t j=0; j<nentriesl; j++){
       TClass* objtype=lists[i]->At(j)->IsA();
       TString tpname=objtype->GetName();
       
       if (tpname=="TH1F"){
       	  TH1F* htmp=(TH1F*)lists[i]->At(j);
       	  
       	  htmp->SetLineColor(1+i);
       	  if(htmp->Integral()>0) htmp->Scale(1./htmp->Integral());

       	  if(first) {
       	     c[nth1f]=new TCanvas(Form("c%s",htmp->GetName()),Form("c%s",htmp->GetName()));       	     
       	     c[nth1f]->cd();
       	     htmp->Draw();
       	       
       	  }
       	  else {
       	     c[nth1f]->cd();
       	     htmp->Draw("sames");
       	  }
       	  nth1f++;
       }
    }

    first=kFALSE;
 
  }
  
  for(Int_t j=0;j<nth1f;j++){
     c[j]->cd();
     leg->Draw();
     c[j]->SaveAs(Form("%s.pdf",c[j]->GetName()));
     c[j]->SaveAs(Form("%s.eps",c[j]->GetName()));
  }
  
  cnevs->cd();
  leg->Draw();
  cnevs->SaveAs(Form("%s.eps",cnevs->GetName()));
  cnevs->SaveAs(Form("%s.pdf",cnevs->GetName()));
  
  cnevsp->cd();
  leg->Draw();
  cnevsp->SaveAs(Form("%s.eps",cnevsp->GetName()));
  cnevsp->SaveAs(Form("%s.pdf",cnevsp->GetName()));
  TCanvas *test=new TCanvas();
  test->cd(); leg->Draw();
}


void CompilationTrackSelection(Int_t n,TList** lists,TString* legend)
{
   // Specific method for Track output (1)

  for(Int_t i=0;i<lists[0]->GetEntries();i++){
    TObjArray* plotseth=new TObjArray();
    TObjArray* plotsethr=new TObjArray();
    
    Bool_t is2d=false;
    is2d = lists[0]->At(i)->InheritsFrom("TH2");
    if(is2d) continue;
    
    for(Int_t j=0; j<n; j++){
      TH1F* temph=(TH1F*)lists[j]->At(i);
      TH1F * temphr=0x0;
      TH1F * ploto=0x0; //0th plot to divide by
      
      // plot ratios and scale all plots to integral
      temphr= (TH1F*)temph->Clone(Form("%s_ratio",temph->GetName()));
      if(j==0)ploto = temphr;
      else ploto = (TH1F*)plotseth->At(0);
      temphr->Divide(ploto);
      if(temphr->Integral()>0){temphr-> Scale(1./temphr->Integral());}// take out for nonscaled ratios
      if(temph->Integral()>0){ temph-> Scale(1./temph->Integral());}
      
      plotseth->AddLast(new TH1F(*temph));
      plotsethr->AddLast(new TH1F(*temphr));
    }

    
    TH1F *h = (TH1F*)plotseth->At(0);
    TCanvas* c=new TCanvas(Form("c%s",h->GetName()),h->GetName());
    c->cd();
    c->SetGrid();
    TString hname=h->GetName();
    
    if(!hname.Contains("nCls")){
      c->SetLogy();
      if(hname.Contains("Layer")){
	for(Int_t ibin=1;ibin<=h->GetNbinsX();ibin++){
	  h->GetXaxis()->SetBinLabel(ibin+1,Form("%d",ibin));
	}
	h->GetXaxis()->SetLabelSize(0.06);
	h->GetXaxis()->SetRangeUser(0,6); //comment to see ntracks!
      }
      //h->SetMinimum(1);
      h->Draw();
      
      TLegend* leg=new TLegend(0.15,0.5,0.45,0.78);
      leg->SetFillStyle(0);
      leg->SetBorderSize(0);
      leg->AddEntry(h,legend[0],"L");
      
      for(Int_t j=1; j<n; j++){
	TH1F * h2 = (TH1F*)plotseth->At(j);
	h2->SetLineColor(1+j);
	h2->Draw("sames");
	leg->AddEntry(h2,legend[j],"L");
      }
      
      leg->Draw();
      
      TCanvas* c2=new TCanvas(Form("c2%s",h->GetName()),h->GetName());
      c2->cd();
      c2->SetGrid();
      TH1F *hr = (TH1F*)plotsethr->At(1);
      hr->SetLineColor(2);
      hr->Draw();
      TLegend* leg2=new TLegend(0.15,0.5,0.45,0.78);
      leg2->SetFillStyle(0);
      leg2->SetBorderSize(0);
      
      TString ratioleg;
      ratioleg+=legend[1];
      ratioleg+="/";
      ratioleg+=legend[0];
    
      leg2->AddEntry(hr,ratioleg,"L");
      
      for(Int_t j=2; j<n; j++){
	TH1F * hr2 = (TH1F*)plotsethr->At(j);
	hr2->SetLineColor(1+j);
	hr2->Draw("sames");
      
	TString ratioleg2;
	ratioleg2+=legend[j];
	ratioleg2+="/";
	ratioleg2+=legend[0];

	leg2->AddEntry(hr2,ratioleg2,"L");
      }
      leg2->Draw();
      c2->SaveAs(Form("%s%s%sRatio.pdf",c->GetName(),legend[0].Data(), legend[n-1].Data()));
      c2->SaveAs(Form("%s%s%sRatio.eps",c->GetName(),legend[0].Data(), legend[n-1].Data()));
    } 
    else {
      h->Draw("htext0");
    
      TLegend* leg=new TLegend(0.15,0.5,0.45,0.78);
      leg->SetFillStyle(0);
      leg->SetBorderSize(0);
      leg->AddEntry(h,legend[0],"L");
      
      for(Int_t j=1; j<n; j++){
	TH1F * h2 = (TH1F*)plotseth->At(j);
	h2->SetLineColor(1+j);
	leg->AddEntry(h2,legend[j],"L");
	h2->Draw("htext0sames");
      }
      
      leg->Draw();
    }
    c->cd();
    c->SaveAs(Form("%s%s%s.eps",c->GetName(),legend[0].Data(), legend[n-1].Data()));
    c->SaveAs(Form("%s%s%s.pdf",c->GetName(),legend[0].Data(), legend[n-1].Data()));		
  }
  
  Int_t check=0;
  Int_t maxfa=1;
  if(n<=10)maxfa=n;
  else cout<<"Warning: To many files for combinationplot, show only original"<<endl;
  TLegend* leg3=new TLegend(0.15,0.5,0.45,0.78);
  leg3->SetFillStyle(0);
  leg3->SetBorderSize(0);
  TCanvas* ctrsel=new TCanvas("ctrsel","Track Sel");
  ctrsel->SetLogy();
  for(Int_t i=0; i<maxfa; i++){
    TH1F* hd0fb4=(TH1F*)lists[i]->FindObject("hd0TracksFilterBit4");
    TH1F* hd0SPD1=(TH1F*)lists[i]->FindObject("hd0TracksSPDin");
    TH1F* hd0SPDany=(TH1F*)lists[i]->FindObject("hd0TracksSPDany");
    TH1F* hd0TPCITScuts=(TH1F*)lists[i]->FindObject("hd0TracksTPCITSSPDany");
    if(hd0fb4 && hd0SPD1 && hd0SPDany && hd0TPCITScuts){
      if(i==0){check=1;}
      else{if(check==0)return;}
      ctrsel->cd();
      hd0SPD1->SetLineColor(kCyan+3);
      hd0SPDany->SetLineColor(4);
      hd0TPCITScuts->SetLineColor(kGreen+1);
      hd0fb4->SetLineColor(2);
      if(i==0){
	hd0SPD1->Draw();
	ctrsel->Update();
	TPaveStats *st1=(TPaveStats*)hd0SPD1->GetListOfFunctions()->FindObject("stats");
	st1->SetTextColor(kCyan+3);
	st1->SetY1NDC(0.71);
	st1->SetY2NDC(0.9);
	hd0SPDany->Draw("sames");
	ctrsel->Update();
	TPaveStats *st2=(TPaveStats*)hd0SPDany->GetListOfFunctions()->FindObject("stats");
	st2->SetY1NDC(0.51);
	st2->SetY2NDC(0.7);
	st2->SetTextColor(4);
	hd0fb4->Draw("sames");
	ctrsel->Update();
	TPaveStats *st3=(TPaveStats*)hd0fb4->GetListOfFunctions()->FindObject("stats");
	st3->SetY1NDC(0.31);
	st3->SetY2NDC(0.5);
	st3->SetTextColor(2);
	hd0TPCITScuts->Draw("sames");
	ctrsel->Update();
	TPaveStats *st4=(TPaveStats*)hd0TPCITScuts->GetListOfFunctions()->FindObject("stats");
       st4->SetY1NDC(0.71);
       st4->SetY2NDC(0.9);
       st4->SetX1NDC(0.55);
       st4->SetX2NDC(0.75);
       st4->SetTextColor(kGreen+1);
       ctrsel->Modified();
       leg3->AddEntry(hd0SPD1,"kITSrefit+SPD inner","L");
       leg3->AddEntry(hd0SPDany,"kITSrefit+SPD any","L");
       leg3->AddEntry(hd0TPCITScuts,"TPC+ITS cuts+SPD any","L");
       leg3->AddEntry(hd0fb4,"Filter Bit 4","L");
       leg3->AddEntry(hd0SPD1, legend[i], "L");
      }
     else{	
       hd0SPD1->SetStats(0);
       hd0SPD1->SetLineStyle(i+1);
       hd0SPD1->Draw("sames"); 
       hd0SPDany->SetStats(0);
       hd0SPDany->SetLineStyle(i+1);
       hd0TPCITScuts->SetStats(0);
       hd0TPCITScuts->SetLineStyle(i+1);
       hd0fb4->SetStats(0);
       hd0fb4->SetLineStyle(i+1);
       ctrsel->cd();
       hd0SPD1->Draw("sames");
       hd0SPDany->Draw("sames");
       hd0TPCITScuts->Draw("sames");
       hd0fb4->Draw("sames");
       leg3->AddEntry(hd0SPD1, legend[i], "L");				
     }
     
    }
  }
  leg3->Draw();
  ctrsel->SaveAs("ImpactParameterTrackSel.eps");
  ctrsel->SaveAs("ImpactParameterTrackSel.pdf");
}

 DrawQAoutput.C:1
 DrawQAoutput.C:2
 DrawQAoutput.C:3
 DrawQAoutput.C:4
 DrawQAoutput.C:5
 DrawQAoutput.C:6
 DrawQAoutput.C:7
 DrawQAoutput.C:8
 DrawQAoutput.C:9
 DrawQAoutput.C:10
 DrawQAoutput.C:11
 DrawQAoutput.C:12
 DrawQAoutput.C:13
 DrawQAoutput.C:14
 DrawQAoutput.C:15
 DrawQAoutput.C:16
 DrawQAoutput.C:17
 DrawQAoutput.C:18
 DrawQAoutput.C:19
 DrawQAoutput.C:20
 DrawQAoutput.C:21
 DrawQAoutput.C:22
 DrawQAoutput.C:23
 DrawQAoutput.C:24
 DrawQAoutput.C:25
 DrawQAoutput.C:26
 DrawQAoutput.C:27
 DrawQAoutput.C:28
 DrawQAoutput.C:29
 DrawQAoutput.C:30
 DrawQAoutput.C:31
 DrawQAoutput.C:32
 DrawQAoutput.C:33
 DrawQAoutput.C:34
 DrawQAoutput.C:35
 DrawQAoutput.C:36
 DrawQAoutput.C:37
 DrawQAoutput.C:38
 DrawQAoutput.C:39
 DrawQAoutput.C:40
 DrawQAoutput.C:41
 DrawQAoutput.C:42
 DrawQAoutput.C:43
 DrawQAoutput.C:44
 DrawQAoutput.C:45
 DrawQAoutput.C:46
 DrawQAoutput.C:47
 DrawQAoutput.C:48
 DrawQAoutput.C:49
 DrawQAoutput.C:50
 DrawQAoutput.C:51
 DrawQAoutput.C:52
 DrawQAoutput.C:53
 DrawQAoutput.C:54
 DrawQAoutput.C:55
 DrawQAoutput.C:56
 DrawQAoutput.C:57
 DrawQAoutput.C:58
 DrawQAoutput.C:59
 DrawQAoutput.C:60
 DrawQAoutput.C:61
 DrawQAoutput.C:62
 DrawQAoutput.C:63
 DrawQAoutput.C:64
 DrawQAoutput.C:65
 DrawQAoutput.C:66
 DrawQAoutput.C:67
 DrawQAoutput.C:68
 DrawQAoutput.C:69
 DrawQAoutput.C:70
 DrawQAoutput.C:71
 DrawQAoutput.C:72
 DrawQAoutput.C:73
 DrawQAoutput.C:74
 DrawQAoutput.C:75
 DrawQAoutput.C:76
 DrawQAoutput.C:77
 DrawQAoutput.C:78
 DrawQAoutput.C:79
 DrawQAoutput.C:80
 DrawQAoutput.C:81
 DrawQAoutput.C:82
 DrawQAoutput.C:83
 DrawQAoutput.C:84
 DrawQAoutput.C:85
 DrawQAoutput.C:86
 DrawQAoutput.C:87
 DrawQAoutput.C:88
 DrawQAoutput.C:89
 DrawQAoutput.C:90
 DrawQAoutput.C:91
 DrawQAoutput.C:92
 DrawQAoutput.C:93
 DrawQAoutput.C:94
 DrawQAoutput.C:95
 DrawQAoutput.C:96
 DrawQAoutput.C:97
 DrawQAoutput.C:98
 DrawQAoutput.C:99
 DrawQAoutput.C:100
 DrawQAoutput.C:101
 DrawQAoutput.C:102
 DrawQAoutput.C:103
 DrawQAoutput.C:104
 DrawQAoutput.C:105
 DrawQAoutput.C:106
 DrawQAoutput.C:107
 DrawQAoutput.C:108
 DrawQAoutput.C:109
 DrawQAoutput.C:110
 DrawQAoutput.C:111
 DrawQAoutput.C:112
 DrawQAoutput.C:113
 DrawQAoutput.C:114
 DrawQAoutput.C:115
 DrawQAoutput.C:116
 DrawQAoutput.C:117
 DrawQAoutput.C:118
 DrawQAoutput.C:119
 DrawQAoutput.C:120
 DrawQAoutput.C:121
 DrawQAoutput.C:122
 DrawQAoutput.C:123
 DrawQAoutput.C:124
 DrawQAoutput.C:125
 DrawQAoutput.C:126
 DrawQAoutput.C:127
 DrawQAoutput.C:128
 DrawQAoutput.C:129
 DrawQAoutput.C:130
 DrawQAoutput.C:131
 DrawQAoutput.C:132
 DrawQAoutput.C:133
 DrawQAoutput.C:134
 DrawQAoutput.C:135
 DrawQAoutput.C:136
 DrawQAoutput.C:137
 DrawQAoutput.C:138
 DrawQAoutput.C:139
 DrawQAoutput.C:140
 DrawQAoutput.C:141
 DrawQAoutput.C:142
 DrawQAoutput.C:143
 DrawQAoutput.C:144
 DrawQAoutput.C:145
 DrawQAoutput.C:146
 DrawQAoutput.C:147
 DrawQAoutput.C:148
 DrawQAoutput.C:149
 DrawQAoutput.C:150
 DrawQAoutput.C:151
 DrawQAoutput.C:152
 DrawQAoutput.C:153
 DrawQAoutput.C:154
 DrawQAoutput.C:155
 DrawQAoutput.C:156
 DrawQAoutput.C:157
 DrawQAoutput.C:158
 DrawQAoutput.C:159
 DrawQAoutput.C:160
 DrawQAoutput.C:161
 DrawQAoutput.C:162
 DrawQAoutput.C:163
 DrawQAoutput.C:164
 DrawQAoutput.C:165
 DrawQAoutput.C:166
 DrawQAoutput.C:167
 DrawQAoutput.C:168
 DrawQAoutput.C:169
 DrawQAoutput.C:170
 DrawQAoutput.C:171
 DrawQAoutput.C:172
 DrawQAoutput.C:173
 DrawQAoutput.C:174
 DrawQAoutput.C:175
 DrawQAoutput.C:176
 DrawQAoutput.C:177
 DrawQAoutput.C:178
 DrawQAoutput.C:179
 DrawQAoutput.C:180
 DrawQAoutput.C:181
 DrawQAoutput.C:182
 DrawQAoutput.C:183
 DrawQAoutput.C:184
 DrawQAoutput.C:185
 DrawQAoutput.C:186
 DrawQAoutput.C:187
 DrawQAoutput.C:188
 DrawQAoutput.C:189
 DrawQAoutput.C:190
 DrawQAoutput.C:191
 DrawQAoutput.C:192
 DrawQAoutput.C:193
 DrawQAoutput.C:194
 DrawQAoutput.C:195
 DrawQAoutput.C:196
 DrawQAoutput.C:197
 DrawQAoutput.C:198
 DrawQAoutput.C:199
 DrawQAoutput.C:200
 DrawQAoutput.C:201
 DrawQAoutput.C:202
 DrawQAoutput.C:203
 DrawQAoutput.C:204
 DrawQAoutput.C:205
 DrawQAoutput.C:206
 DrawQAoutput.C:207
 DrawQAoutput.C:208
 DrawQAoutput.C:209
 DrawQAoutput.C:210
 DrawQAoutput.C:211
 DrawQAoutput.C:212
 DrawQAoutput.C:213
 DrawQAoutput.C:214
 DrawQAoutput.C:215
 DrawQAoutput.C:216
 DrawQAoutput.C:217
 DrawQAoutput.C:218
 DrawQAoutput.C:219
 DrawQAoutput.C:220
 DrawQAoutput.C:221
 DrawQAoutput.C:222
 DrawQAoutput.C:223
 DrawQAoutput.C:224
 DrawQAoutput.C:225
 DrawQAoutput.C:226
 DrawQAoutput.C:227
 DrawQAoutput.C:228
 DrawQAoutput.C:229
 DrawQAoutput.C:230
 DrawQAoutput.C:231
 DrawQAoutput.C:232
 DrawQAoutput.C:233
 DrawQAoutput.C:234
 DrawQAoutput.C:235
 DrawQAoutput.C:236
 DrawQAoutput.C:237
 DrawQAoutput.C:238
 DrawQAoutput.C:239
 DrawQAoutput.C:240
 DrawQAoutput.C:241
 DrawQAoutput.C:242
 DrawQAoutput.C:243
 DrawQAoutput.C:244
 DrawQAoutput.C:245
 DrawQAoutput.C:246
 DrawQAoutput.C:247
 DrawQAoutput.C:248
 DrawQAoutput.C:249
 DrawQAoutput.C:250
 DrawQAoutput.C:251
 DrawQAoutput.C:252
 DrawQAoutput.C:253
 DrawQAoutput.C:254
 DrawQAoutput.C:255
 DrawQAoutput.C:256
 DrawQAoutput.C:257
 DrawQAoutput.C:258
 DrawQAoutput.C:259
 DrawQAoutput.C:260
 DrawQAoutput.C:261
 DrawQAoutput.C:262
 DrawQAoutput.C:263
 DrawQAoutput.C:264
 DrawQAoutput.C:265
 DrawQAoutput.C:266
 DrawQAoutput.C:267
 DrawQAoutput.C:268
 DrawQAoutput.C:269
 DrawQAoutput.C:270
 DrawQAoutput.C:271
 DrawQAoutput.C:272
 DrawQAoutput.C:273
 DrawQAoutput.C:274
 DrawQAoutput.C:275
 DrawQAoutput.C:276
 DrawQAoutput.C:277
 DrawQAoutput.C:278
 DrawQAoutput.C:279
 DrawQAoutput.C:280
 DrawQAoutput.C:281
 DrawQAoutput.C:282
 DrawQAoutput.C:283
 DrawQAoutput.C:284
 DrawQAoutput.C:285
 DrawQAoutput.C:286
 DrawQAoutput.C:287
 DrawQAoutput.C:288
 DrawQAoutput.C:289
 DrawQAoutput.C:290
 DrawQAoutput.C:291
 DrawQAoutput.C:292
 DrawQAoutput.C:293
 DrawQAoutput.C:294
 DrawQAoutput.C:295
 DrawQAoutput.C:296
 DrawQAoutput.C:297
 DrawQAoutput.C:298
 DrawQAoutput.C:299
 DrawQAoutput.C:300
 DrawQAoutput.C:301
 DrawQAoutput.C:302
 DrawQAoutput.C:303
 DrawQAoutput.C:304
 DrawQAoutput.C:305
 DrawQAoutput.C:306
 DrawQAoutput.C:307
 DrawQAoutput.C:308
 DrawQAoutput.C:309
 DrawQAoutput.C:310
 DrawQAoutput.C:311
 DrawQAoutput.C:312
 DrawQAoutput.C:313
 DrawQAoutput.C:314
 DrawQAoutput.C:315
 DrawQAoutput.C:316
 DrawQAoutput.C:317
 DrawQAoutput.C:318
 DrawQAoutput.C:319
 DrawQAoutput.C:320
 DrawQAoutput.C:321
 DrawQAoutput.C:322
 DrawQAoutput.C:323
 DrawQAoutput.C:324
 DrawQAoutput.C:325
 DrawQAoutput.C:326
 DrawQAoutput.C:327
 DrawQAoutput.C:328
 DrawQAoutput.C:329
 DrawQAoutput.C:330
 DrawQAoutput.C:331
 DrawQAoutput.C:332
 DrawQAoutput.C:333
 DrawQAoutput.C:334
 DrawQAoutput.C:335
 DrawQAoutput.C:336
 DrawQAoutput.C:337
 DrawQAoutput.C:338
 DrawQAoutput.C:339
 DrawQAoutput.C:340
 DrawQAoutput.C:341
 DrawQAoutput.C:342
 DrawQAoutput.C:343
 DrawQAoutput.C:344
 DrawQAoutput.C:345
 DrawQAoutput.C:346
 DrawQAoutput.C:347
 DrawQAoutput.C:348
 DrawQAoutput.C:349
 DrawQAoutput.C:350
 DrawQAoutput.C:351
 DrawQAoutput.C:352
 DrawQAoutput.C:353
 DrawQAoutput.C:354
 DrawQAoutput.C:355
 DrawQAoutput.C:356
 DrawQAoutput.C:357
 DrawQAoutput.C:358
 DrawQAoutput.C:359
 DrawQAoutput.C:360
 DrawQAoutput.C:361
 DrawQAoutput.C:362
 DrawQAoutput.C:363
 DrawQAoutput.C:364
 DrawQAoutput.C:365
 DrawQAoutput.C:366
 DrawQAoutput.C:367
 DrawQAoutput.C:368
 DrawQAoutput.C:369
 DrawQAoutput.C:370
 DrawQAoutput.C:371
 DrawQAoutput.C:372
 DrawQAoutput.C:373
 DrawQAoutput.C:374
 DrawQAoutput.C:375
 DrawQAoutput.C:376
 DrawQAoutput.C:377
 DrawQAoutput.C:378
 DrawQAoutput.C:379
 DrawQAoutput.C:380
 DrawQAoutput.C:381
 DrawQAoutput.C:382
 DrawQAoutput.C:383
 DrawQAoutput.C:384
 DrawQAoutput.C:385
 DrawQAoutput.C:386
 DrawQAoutput.C:387
 DrawQAoutput.C:388
 DrawQAoutput.C:389
 DrawQAoutput.C:390
 DrawQAoutput.C:391
 DrawQAoutput.C:392
 DrawQAoutput.C:393
 DrawQAoutput.C:394
 DrawQAoutput.C:395
 DrawQAoutput.C:396
 DrawQAoutput.C:397
 DrawQAoutput.C:398
 DrawQAoutput.C:399
 DrawQAoutput.C:400
 DrawQAoutput.C:401
 DrawQAoutput.C:402
 DrawQAoutput.C:403
 DrawQAoutput.C:404
 DrawQAoutput.C:405
 DrawQAoutput.C:406
 DrawQAoutput.C:407
 DrawQAoutput.C:408
 DrawQAoutput.C:409
 DrawQAoutput.C:410
 DrawQAoutput.C:411
 DrawQAoutput.C:412
 DrawQAoutput.C:413
 DrawQAoutput.C:414
 DrawQAoutput.C:415
 DrawQAoutput.C:416
 DrawQAoutput.C:417
 DrawQAoutput.C:418
 DrawQAoutput.C:419
 DrawQAoutput.C:420
 DrawQAoutput.C:421
 DrawQAoutput.C:422
 DrawQAoutput.C:423
 DrawQAoutput.C:424
 DrawQAoutput.C:425
 DrawQAoutput.C:426
 DrawQAoutput.C:427
 DrawQAoutput.C:428
 DrawQAoutput.C:429
 DrawQAoutput.C:430
 DrawQAoutput.C:431
 DrawQAoutput.C:432
 DrawQAoutput.C:433
 DrawQAoutput.C:434
 DrawQAoutput.C:435
 DrawQAoutput.C:436
 DrawQAoutput.C:437
 DrawQAoutput.C:438
 DrawQAoutput.C:439
 DrawQAoutput.C:440
 DrawQAoutput.C:441
 DrawQAoutput.C:442
 DrawQAoutput.C:443
 DrawQAoutput.C:444
 DrawQAoutput.C:445
 DrawQAoutput.C:446
 DrawQAoutput.C:447
 DrawQAoutput.C:448
 DrawQAoutput.C:449
 DrawQAoutput.C:450
 DrawQAoutput.C:451
 DrawQAoutput.C:452
 DrawQAoutput.C:453
 DrawQAoutput.C:454
 DrawQAoutput.C:455
 DrawQAoutput.C:456
 DrawQAoutput.C:457
 DrawQAoutput.C:458
 DrawQAoutput.C:459
 DrawQAoutput.C:460
 DrawQAoutput.C:461
 DrawQAoutput.C:462
 DrawQAoutput.C:463
 DrawQAoutput.C:464
 DrawQAoutput.C:465
 DrawQAoutput.C:466
 DrawQAoutput.C:467
 DrawQAoutput.C:468
 DrawQAoutput.C:469
 DrawQAoutput.C:470
 DrawQAoutput.C:471
 DrawQAoutput.C:472
 DrawQAoutput.C:473
 DrawQAoutput.C:474
 DrawQAoutput.C:475
 DrawQAoutput.C:476
 DrawQAoutput.C:477
 DrawQAoutput.C:478
 DrawQAoutput.C:479
 DrawQAoutput.C:480
 DrawQAoutput.C:481
 DrawQAoutput.C:482
 DrawQAoutput.C:483
 DrawQAoutput.C:484
 DrawQAoutput.C:485
 DrawQAoutput.C:486
 DrawQAoutput.C:487
 DrawQAoutput.C:488
 DrawQAoutput.C:489
 DrawQAoutput.C:490
 DrawQAoutput.C:491
 DrawQAoutput.C:492
 DrawQAoutput.C:493
 DrawQAoutput.C:494
 DrawQAoutput.C:495
 DrawQAoutput.C:496
 DrawQAoutput.C:497
 DrawQAoutput.C:498
 DrawQAoutput.C:499
 DrawQAoutput.C:500
 DrawQAoutput.C:501
 DrawQAoutput.C:502
 DrawQAoutput.C:503
 DrawQAoutput.C:504
 DrawQAoutput.C:505
 DrawQAoutput.C:506
 DrawQAoutput.C:507
 DrawQAoutput.C:508
 DrawQAoutput.C:509
 DrawQAoutput.C:510
 DrawQAoutput.C:511
 DrawQAoutput.C:512
 DrawQAoutput.C:513
 DrawQAoutput.C:514
 DrawQAoutput.C:515
 DrawQAoutput.C:516
 DrawQAoutput.C:517
 DrawQAoutput.C:518
 DrawQAoutput.C:519
 DrawQAoutput.C:520
 DrawQAoutput.C:521
 DrawQAoutput.C:522
 DrawQAoutput.C:523
 DrawQAoutput.C:524
 DrawQAoutput.C:525
 DrawQAoutput.C:526
 DrawQAoutput.C:527
 DrawQAoutput.C:528
 DrawQAoutput.C:529
 DrawQAoutput.C:530
 DrawQAoutput.C:531
 DrawQAoutput.C:532
 DrawQAoutput.C:533
 DrawQAoutput.C:534
 DrawQAoutput.C:535
 DrawQAoutput.C:536
 DrawQAoutput.C:537
 DrawQAoutput.C:538
 DrawQAoutput.C:539
 DrawQAoutput.C:540
 DrawQAoutput.C:541
 DrawQAoutput.C:542
 DrawQAoutput.C:543
 DrawQAoutput.C:544
 DrawQAoutput.C:545
 DrawQAoutput.C:546
 DrawQAoutput.C:547
 DrawQAoutput.C:548
 DrawQAoutput.C:549
 DrawQAoutput.C:550
 DrawQAoutput.C:551
 DrawQAoutput.C:552
 DrawQAoutput.C:553
 DrawQAoutput.C:554
 DrawQAoutput.C:555
 DrawQAoutput.C:556
 DrawQAoutput.C:557
 DrawQAoutput.C:558
 DrawQAoutput.C:559
 DrawQAoutput.C:560
 DrawQAoutput.C:561
 DrawQAoutput.C:562
 DrawQAoutput.C:563
 DrawQAoutput.C:564
 DrawQAoutput.C:565
 DrawQAoutput.C:566
 DrawQAoutput.C:567
 DrawQAoutput.C:568
 DrawQAoutput.C:569
 DrawQAoutput.C:570
 DrawQAoutput.C:571
 DrawQAoutput.C:572
 DrawQAoutput.C:573
 DrawQAoutput.C:574
 DrawQAoutput.C:575
 DrawQAoutput.C:576
 DrawQAoutput.C:577
 DrawQAoutput.C:578
 DrawQAoutput.C:579
 DrawQAoutput.C:580
 DrawQAoutput.C:581
 DrawQAoutput.C:582
 DrawQAoutput.C:583
 DrawQAoutput.C:584
 DrawQAoutput.C:585
 DrawQAoutput.C:586
 DrawQAoutput.C:587
 DrawQAoutput.C:588
 DrawQAoutput.C:589
 DrawQAoutput.C:590
 DrawQAoutput.C:591
 DrawQAoutput.C:592
 DrawQAoutput.C:593
 DrawQAoutput.C:594
 DrawQAoutput.C:595
 DrawQAoutput.C:596
 DrawQAoutput.C:597
 DrawQAoutput.C:598
 DrawQAoutput.C:599
 DrawQAoutput.C:600
 DrawQAoutput.C:601
 DrawQAoutput.C:602
 DrawQAoutput.C:603
 DrawQAoutput.C:604
 DrawQAoutput.C:605
 DrawQAoutput.C:606
 DrawQAoutput.C:607
 DrawQAoutput.C:608
 DrawQAoutput.C:609
 DrawQAoutput.C:610
 DrawQAoutput.C:611
 DrawQAoutput.C:612
 DrawQAoutput.C:613
 DrawQAoutput.C:614
 DrawQAoutput.C:615
 DrawQAoutput.C:616
 DrawQAoutput.C:617
 DrawQAoutput.C:618
 DrawQAoutput.C:619
 DrawQAoutput.C:620
 DrawQAoutput.C:621
 DrawQAoutput.C:622
 DrawQAoutput.C:623
 DrawQAoutput.C:624
 DrawQAoutput.C:625
 DrawQAoutput.C:626
 DrawQAoutput.C:627
 DrawQAoutput.C:628
 DrawQAoutput.C:629
 DrawQAoutput.C:630
 DrawQAoutput.C:631
 DrawQAoutput.C:632
 DrawQAoutput.C:633
 DrawQAoutput.C:634
 DrawQAoutput.C:635
 DrawQAoutput.C:636
 DrawQAoutput.C:637
 DrawQAoutput.C:638
 DrawQAoutput.C:639
 DrawQAoutput.C:640
 DrawQAoutput.C:641
 DrawQAoutput.C:642
 DrawQAoutput.C:643
 DrawQAoutput.C:644
 DrawQAoutput.C:645
 DrawQAoutput.C:646
 DrawQAoutput.C:647
 DrawQAoutput.C:648
 DrawQAoutput.C:649
 DrawQAoutput.C:650
 DrawQAoutput.C:651
 DrawQAoutput.C:652
 DrawQAoutput.C:653
 DrawQAoutput.C:654
 DrawQAoutput.C:655
 DrawQAoutput.C:656
 DrawQAoutput.C:657
 DrawQAoutput.C:658
 DrawQAoutput.C:659
 DrawQAoutput.C:660
 DrawQAoutput.C:661
 DrawQAoutput.C:662
 DrawQAoutput.C:663
 DrawQAoutput.C:664
 DrawQAoutput.C:665
 DrawQAoutput.C:666
 DrawQAoutput.C:667
 DrawQAoutput.C:668
 DrawQAoutput.C:669
 DrawQAoutput.C:670
 DrawQAoutput.C:671
 DrawQAoutput.C:672
 DrawQAoutput.C:673
 DrawQAoutput.C:674
 DrawQAoutput.C:675
 DrawQAoutput.C:676
 DrawQAoutput.C:677
 DrawQAoutput.C:678
 DrawQAoutput.C:679
 DrawQAoutput.C:680
 DrawQAoutput.C:681
 DrawQAoutput.C:682
 DrawQAoutput.C:683
 DrawQAoutput.C:684
 DrawQAoutput.C:685
 DrawQAoutput.C:686
 DrawQAoutput.C:687
 DrawQAoutput.C:688
 DrawQAoutput.C:689
 DrawQAoutput.C:690
 DrawQAoutput.C:691
 DrawQAoutput.C:692
 DrawQAoutput.C:693
 DrawQAoutput.C:694
 DrawQAoutput.C:695
 DrawQAoutput.C:696
 DrawQAoutput.C:697
 DrawQAoutput.C:698
 DrawQAoutput.C:699
 DrawQAoutput.C:700
 DrawQAoutput.C:701
 DrawQAoutput.C:702
 DrawQAoutput.C:703
 DrawQAoutput.C:704
 DrawQAoutput.C:705
 DrawQAoutput.C:706
 DrawQAoutput.C:707
 DrawQAoutput.C:708
 DrawQAoutput.C:709
 DrawQAoutput.C:710
 DrawQAoutput.C:711
 DrawQAoutput.C:712
 DrawQAoutput.C:713
 DrawQAoutput.C:714
 DrawQAoutput.C:715
 DrawQAoutput.C:716
 DrawQAoutput.C:717
 DrawQAoutput.C:718
 DrawQAoutput.C:719
 DrawQAoutput.C:720
 DrawQAoutput.C:721
 DrawQAoutput.C:722
 DrawQAoutput.C:723
 DrawQAoutput.C:724
 DrawQAoutput.C:725
 DrawQAoutput.C:726
 DrawQAoutput.C:727
 DrawQAoutput.C:728
 DrawQAoutput.C:729
 DrawQAoutput.C:730
 DrawQAoutput.C:731
 DrawQAoutput.C:732
 DrawQAoutput.C:733
 DrawQAoutput.C:734
 DrawQAoutput.C:735
 DrawQAoutput.C:736
 DrawQAoutput.C:737
 DrawQAoutput.C:738
 DrawQAoutput.C:739
 DrawQAoutput.C:740
 DrawQAoutput.C:741
 DrawQAoutput.C:742
 DrawQAoutput.C:743
 DrawQAoutput.C:744
 DrawQAoutput.C:745
 DrawQAoutput.C:746
 DrawQAoutput.C:747
 DrawQAoutput.C:748
 DrawQAoutput.C:749
 DrawQAoutput.C:750
 DrawQAoutput.C:751
 DrawQAoutput.C:752
 DrawQAoutput.C:753
 DrawQAoutput.C:754
 DrawQAoutput.C:755
 DrawQAoutput.C:756
 DrawQAoutput.C:757
 DrawQAoutput.C:758
 DrawQAoutput.C:759
 DrawQAoutput.C:760
 DrawQAoutput.C:761
 DrawQAoutput.C:762
 DrawQAoutput.C:763
 DrawQAoutput.C:764
 DrawQAoutput.C:765
 DrawQAoutput.C:766
 DrawQAoutput.C:767
 DrawQAoutput.C:768
 DrawQAoutput.C:769
 DrawQAoutput.C:770
 DrawQAoutput.C:771
 DrawQAoutput.C:772
 DrawQAoutput.C:773
 DrawQAoutput.C:774
 DrawQAoutput.C:775
 DrawQAoutput.C:776
 DrawQAoutput.C:777
 DrawQAoutput.C:778
 DrawQAoutput.C:779
 DrawQAoutput.C:780
 DrawQAoutput.C:781
 DrawQAoutput.C:782
 DrawQAoutput.C:783
 DrawQAoutput.C:784
 DrawQAoutput.C:785
 DrawQAoutput.C:786
 DrawQAoutput.C:787
 DrawQAoutput.C:788
 DrawQAoutput.C:789
 DrawQAoutput.C:790
 DrawQAoutput.C:791
 DrawQAoutput.C:792
 DrawQAoutput.C:793
 DrawQAoutput.C:794
 DrawQAoutput.C:795
 DrawQAoutput.C:796
 DrawQAoutput.C:797
 DrawQAoutput.C:798
 DrawQAoutput.C:799
 DrawQAoutput.C:800
 DrawQAoutput.C:801
 DrawQAoutput.C:802
 DrawQAoutput.C:803
 DrawQAoutput.C:804
 DrawQAoutput.C:805
 DrawQAoutput.C:806
 DrawQAoutput.C:807
 DrawQAoutput.C:808
 DrawQAoutput.C:809
 DrawQAoutput.C:810
 DrawQAoutput.C:811
 DrawQAoutput.C:812
 DrawQAoutput.C:813
 DrawQAoutput.C:814
 DrawQAoutput.C:815
 DrawQAoutput.C:816
 DrawQAoutput.C:817
 DrawQAoutput.C:818
 DrawQAoutput.C:819
 DrawQAoutput.C:820
 DrawQAoutput.C:821
 DrawQAoutput.C:822
 DrawQAoutput.C:823
 DrawQAoutput.C:824
 DrawQAoutput.C:825
 DrawQAoutput.C:826
 DrawQAoutput.C:827
 DrawQAoutput.C:828
 DrawQAoutput.C:829
 DrawQAoutput.C:830
 DrawQAoutput.C:831
 DrawQAoutput.C:832
 DrawQAoutput.C:833
 DrawQAoutput.C:834
 DrawQAoutput.C:835
 DrawQAoutput.C:836
 DrawQAoutput.C:837
 DrawQAoutput.C:838
 DrawQAoutput.C:839
 DrawQAoutput.C:840
 DrawQAoutput.C:841
 DrawQAoutput.C:842
 DrawQAoutput.C:843
 DrawQAoutput.C:844
 DrawQAoutput.C:845
 DrawQAoutput.C:846
 DrawQAoutput.C:847
 DrawQAoutput.C:848
 DrawQAoutput.C:849
 DrawQAoutput.C:850
 DrawQAoutput.C:851
 DrawQAoutput.C:852
 DrawQAoutput.C:853
 DrawQAoutput.C:854
 DrawQAoutput.C:855
 DrawQAoutput.C:856
 DrawQAoutput.C:857
 DrawQAoutput.C:858
 DrawQAoutput.C:859
 DrawQAoutput.C:860
 DrawQAoutput.C:861
 DrawQAoutput.C:862
 DrawQAoutput.C:863
 DrawQAoutput.C:864
 DrawQAoutput.C:865
 DrawQAoutput.C:866
 DrawQAoutput.C:867
 DrawQAoutput.C:868
 DrawQAoutput.C:869
 DrawQAoutput.C:870
 DrawQAoutput.C:871
 DrawQAoutput.C:872
 DrawQAoutput.C:873
 DrawQAoutput.C:874
 DrawQAoutput.C:875
 DrawQAoutput.C:876
 DrawQAoutput.C:877
 DrawQAoutput.C:878
 DrawQAoutput.C:879
 DrawQAoutput.C:880
 DrawQAoutput.C:881
 DrawQAoutput.C:882
 DrawQAoutput.C:883
 DrawQAoutput.C:884
 DrawQAoutput.C:885
 DrawQAoutput.C:886
 DrawQAoutput.C:887
 DrawQAoutput.C:888
 DrawQAoutput.C:889
 DrawQAoutput.C:890
 DrawQAoutput.C:891
 DrawQAoutput.C:892
 DrawQAoutput.C:893
 DrawQAoutput.C:894
 DrawQAoutput.C:895
 DrawQAoutput.C:896
 DrawQAoutput.C:897
 DrawQAoutput.C:898
 DrawQAoutput.C:899
 DrawQAoutput.C:900
 DrawQAoutput.C:901
 DrawQAoutput.C:902
 DrawQAoutput.C:903
 DrawQAoutput.C:904
 DrawQAoutput.C:905
 DrawQAoutput.C:906
 DrawQAoutput.C:907
 DrawQAoutput.C:908
 DrawQAoutput.C:909
 DrawQAoutput.C:910
 DrawQAoutput.C:911
 DrawQAoutput.C:912
 DrawQAoutput.C:913
 DrawQAoutput.C:914
 DrawQAoutput.C:915
 DrawQAoutput.C:916
 DrawQAoutput.C:917
 DrawQAoutput.C:918
 DrawQAoutput.C:919
 DrawQAoutput.C:920
 DrawQAoutput.C:921
 DrawQAoutput.C:922
 DrawQAoutput.C:923
 DrawQAoutput.C:924
 DrawQAoutput.C:925
 DrawQAoutput.C:926
 DrawQAoutput.C:927
 DrawQAoutput.C:928
 DrawQAoutput.C:929
 DrawQAoutput.C:930
 DrawQAoutput.C:931
 DrawQAoutput.C:932
 DrawQAoutput.C:933
 DrawQAoutput.C:934
 DrawQAoutput.C:935
 DrawQAoutput.C:936
 DrawQAoutput.C:937
 DrawQAoutput.C:938
 DrawQAoutput.C:939
 DrawQAoutput.C:940
 DrawQAoutput.C:941
 DrawQAoutput.C:942
 DrawQAoutput.C:943
 DrawQAoutput.C:944
 DrawQAoutput.C:945
 DrawQAoutput.C:946
 DrawQAoutput.C:947
 DrawQAoutput.C:948
 DrawQAoutput.C:949
 DrawQAoutput.C:950
 DrawQAoutput.C:951
 DrawQAoutput.C:952
 DrawQAoutput.C:953
 DrawQAoutput.C:954
 DrawQAoutput.C:955
 DrawQAoutput.C:956
 DrawQAoutput.C:957
 DrawQAoutput.C:958
 DrawQAoutput.C:959
 DrawQAoutput.C:960
 DrawQAoutput.C:961
 DrawQAoutput.C:962
 DrawQAoutput.C:963
 DrawQAoutput.C:964
 DrawQAoutput.C:965
 DrawQAoutput.C:966
 DrawQAoutput.C:967
 DrawQAoutput.C:968
 DrawQAoutput.C:969
 DrawQAoutput.C:970
 DrawQAoutput.C:971
 DrawQAoutput.C:972
 DrawQAoutput.C:973
 DrawQAoutput.C:974
 DrawQAoutput.C:975
 DrawQAoutput.C:976
 DrawQAoutput.C:977
 DrawQAoutput.C:978
 DrawQAoutput.C:979
 DrawQAoutput.C:980
 DrawQAoutput.C:981
 DrawQAoutput.C:982
 DrawQAoutput.C:983
 DrawQAoutput.C:984
 DrawQAoutput.C:985
 DrawQAoutput.C:986
 DrawQAoutput.C:987
 DrawQAoutput.C:988
 DrawQAoutput.C:989
 DrawQAoutput.C:990
 DrawQAoutput.C:991
 DrawQAoutput.C:992
 DrawQAoutput.C:993
 DrawQAoutput.C:994
 DrawQAoutput.C:995
 DrawQAoutput.C:996
 DrawQAoutput.C:997
 DrawQAoutput.C:998
 DrawQAoutput.C:999
 DrawQAoutput.C:1000
 DrawQAoutput.C:1001
 DrawQAoutput.C:1002
 DrawQAoutput.C:1003
 DrawQAoutput.C:1004
 DrawQAoutput.C:1005
 DrawQAoutput.C:1006
 DrawQAoutput.C:1007
 DrawQAoutput.C:1008
 DrawQAoutput.C:1009
 DrawQAoutput.C:1010
 DrawQAoutput.C:1011
 DrawQAoutput.C:1012
 DrawQAoutput.C:1013
 DrawQAoutput.C:1014
 DrawQAoutput.C:1015
 DrawQAoutput.C:1016
 DrawQAoutput.C:1017
 DrawQAoutput.C:1018
 DrawQAoutput.C:1019
 DrawQAoutput.C:1020
 DrawQAoutput.C:1021
 DrawQAoutput.C:1022
 DrawQAoutput.C:1023
 DrawQAoutput.C:1024
 DrawQAoutput.C:1025
 DrawQAoutput.C:1026
 DrawQAoutput.C:1027
 DrawQAoutput.C:1028
 DrawQAoutput.C:1029
 DrawQAoutput.C:1030
 DrawQAoutput.C:1031
 DrawQAoutput.C:1032
 DrawQAoutput.C:1033
 DrawQAoutput.C:1034
 DrawQAoutput.C:1035
 DrawQAoutput.C:1036
 DrawQAoutput.C:1037
 DrawQAoutput.C:1038
 DrawQAoutput.C:1039
 DrawQAoutput.C:1040
 DrawQAoutput.C:1041
 DrawQAoutput.C:1042
 DrawQAoutput.C:1043
 DrawQAoutput.C:1044
 DrawQAoutput.C:1045
 DrawQAoutput.C:1046
 DrawQAoutput.C:1047
 DrawQAoutput.C:1048
 DrawQAoutput.C:1049
 DrawQAoutput.C:1050
 DrawQAoutput.C:1051
 DrawQAoutput.C:1052
 DrawQAoutput.C:1053
 DrawQAoutput.C:1054
 DrawQAoutput.C:1055
 DrawQAoutput.C:1056
 DrawQAoutput.C:1057
 DrawQAoutput.C:1058
 DrawQAoutput.C:1059
 DrawQAoutput.C:1060
 DrawQAoutput.C:1061
 DrawQAoutput.C:1062
 DrawQAoutput.C:1063
 DrawQAoutput.C:1064
 DrawQAoutput.C:1065
 DrawQAoutput.C:1066
 DrawQAoutput.C:1067
 DrawQAoutput.C:1068
 DrawQAoutput.C:1069
 DrawQAoutput.C:1070
 DrawQAoutput.C:1071
 DrawQAoutput.C:1072
 DrawQAoutput.C:1073
 DrawQAoutput.C:1074
 DrawQAoutput.C:1075
 DrawQAoutput.C:1076
 DrawQAoutput.C:1077
 DrawQAoutput.C:1078
 DrawQAoutput.C:1079
 DrawQAoutput.C:1080
 DrawQAoutput.C:1081
 DrawQAoutput.C:1082
 DrawQAoutput.C:1083
 DrawQAoutput.C:1084
 DrawQAoutput.C:1085
 DrawQAoutput.C:1086
 DrawQAoutput.C:1087
 DrawQAoutput.C:1088
 DrawQAoutput.C:1089
 DrawQAoutput.C:1090
 DrawQAoutput.C:1091
 DrawQAoutput.C:1092
 DrawQAoutput.C:1093
 DrawQAoutput.C:1094
 DrawQAoutput.C:1095
 DrawQAoutput.C:1096
 DrawQAoutput.C:1097
 DrawQAoutput.C:1098
 DrawQAoutput.C:1099
 DrawQAoutput.C:1100
 DrawQAoutput.C:1101
 DrawQAoutput.C:1102
 DrawQAoutput.C:1103
 DrawQAoutput.C:1104
 DrawQAoutput.C:1105
 DrawQAoutput.C:1106
 DrawQAoutput.C:1107
 DrawQAoutput.C:1108
 DrawQAoutput.C:1109
 DrawQAoutput.C:1110
 DrawQAoutput.C:1111
 DrawQAoutput.C:1112
 DrawQAoutput.C:1113
 DrawQAoutput.C:1114
 DrawQAoutput.C:1115
 DrawQAoutput.C:1116
 DrawQAoutput.C:1117
 DrawQAoutput.C:1118
 DrawQAoutput.C:1119
 DrawQAoutput.C:1120
 DrawQAoutput.C:1121
 DrawQAoutput.C:1122
 DrawQAoutput.C:1123
 DrawQAoutput.C:1124
 DrawQAoutput.C:1125
 DrawQAoutput.C:1126
 DrawQAoutput.C:1127
 DrawQAoutput.C:1128
 DrawQAoutput.C:1129
 DrawQAoutput.C:1130
 DrawQAoutput.C:1131
 DrawQAoutput.C:1132
 DrawQAoutput.C:1133
 DrawQAoutput.C:1134
 DrawQAoutput.C:1135
 DrawQAoutput.C:1136
 DrawQAoutput.C:1137
 DrawQAoutput.C:1138
 DrawQAoutput.C:1139
 DrawQAoutput.C:1140
 DrawQAoutput.C:1141
 DrawQAoutput.C:1142
 DrawQAoutput.C:1143
 DrawQAoutput.C:1144
 DrawQAoutput.C:1145
 DrawQAoutput.C:1146
 DrawQAoutput.C:1147
 DrawQAoutput.C:1148
 DrawQAoutput.C:1149
 DrawQAoutput.C:1150
 DrawQAoutput.C:1151
 DrawQAoutput.C:1152
 DrawQAoutput.C:1153
 DrawQAoutput.C:1154
 DrawQAoutput.C:1155
 DrawQAoutput.C:1156
 DrawQAoutput.C:1157
 DrawQAoutput.C:1158
 DrawQAoutput.C:1159
 DrawQAoutput.C:1160
 DrawQAoutput.C:1161
 DrawQAoutput.C:1162
 DrawQAoutput.C:1163
 DrawQAoutput.C:1164
 DrawQAoutput.C:1165
 DrawQAoutput.C:1166
 DrawQAoutput.C:1167
 DrawQAoutput.C:1168
 DrawQAoutput.C:1169
 DrawQAoutput.C:1170
 DrawQAoutput.C:1171
 DrawQAoutput.C:1172
 DrawQAoutput.C:1173
 DrawQAoutput.C:1174
 DrawQAoutput.C:1175
 DrawQAoutput.C:1176
 DrawQAoutput.C:1177
 DrawQAoutput.C:1178
 DrawQAoutput.C:1179
 DrawQAoutput.C:1180
 DrawQAoutput.C:1181
 DrawQAoutput.C:1182
 DrawQAoutput.C:1183
 DrawQAoutput.C:1184
 DrawQAoutput.C:1185
 DrawQAoutput.C:1186
 DrawQAoutput.C:1187
 DrawQAoutput.C:1188
 DrawQAoutput.C:1189
 DrawQAoutput.C:1190
 DrawQAoutput.C:1191
 DrawQAoutput.C:1192
 DrawQAoutput.C:1193
 DrawQAoutput.C:1194
 DrawQAoutput.C:1195
 DrawQAoutput.C:1196
 DrawQAoutput.C:1197
 DrawQAoutput.C:1198
 DrawQAoutput.C:1199
 DrawQAoutput.C:1200
 DrawQAoutput.C:1201
 DrawQAoutput.C:1202
 DrawQAoutput.C:1203
 DrawQAoutput.C:1204
 DrawQAoutput.C:1205
 DrawQAoutput.C:1206
 DrawQAoutput.C:1207
 DrawQAoutput.C:1208
 DrawQAoutput.C:1209
 DrawQAoutput.C:1210
 DrawQAoutput.C:1211
 DrawQAoutput.C:1212
 DrawQAoutput.C:1213
 DrawQAoutput.C:1214
 DrawQAoutput.C:1215
 DrawQAoutput.C:1216
 DrawQAoutput.C:1217
 DrawQAoutput.C:1218
 DrawQAoutput.C:1219
 DrawQAoutput.C:1220
 DrawQAoutput.C:1221
 DrawQAoutput.C:1222
 DrawQAoutput.C:1223
 DrawQAoutput.C:1224
 DrawQAoutput.C:1225
 DrawQAoutput.C:1226
 DrawQAoutput.C:1227
 DrawQAoutput.C:1228
 DrawQAoutput.C:1229
 DrawQAoutput.C:1230
 DrawQAoutput.C:1231
 DrawQAoutput.C:1232
 DrawQAoutput.C:1233
 DrawQAoutput.C:1234
 DrawQAoutput.C:1235
 DrawQAoutput.C:1236
 DrawQAoutput.C:1237
 DrawQAoutput.C:1238
 DrawQAoutput.C:1239
 DrawQAoutput.C:1240
 DrawQAoutput.C:1241
 DrawQAoutput.C:1242
 DrawQAoutput.C:1243
 DrawQAoutput.C:1244
 DrawQAoutput.C:1245
 DrawQAoutput.C:1246
 DrawQAoutput.C:1247
 DrawQAoutput.C:1248
 DrawQAoutput.C:1249
 DrawQAoutput.C:1250
 DrawQAoutput.C:1251
 DrawQAoutput.C:1252
 DrawQAoutput.C:1253
 DrawQAoutput.C:1254
 DrawQAoutput.C:1255
 DrawQAoutput.C:1256
 DrawQAoutput.C:1257
 DrawQAoutput.C:1258
 DrawQAoutput.C:1259
 DrawQAoutput.C:1260
 DrawQAoutput.C:1261
 DrawQAoutput.C:1262
 DrawQAoutput.C:1263
 DrawQAoutput.C:1264
 DrawQAoutput.C:1265
 DrawQAoutput.C:1266
 DrawQAoutput.C:1267
 DrawQAoutput.C:1268
 DrawQAoutput.C:1269
 DrawQAoutput.C:1270
 DrawQAoutput.C:1271
 DrawQAoutput.C:1272
 DrawQAoutput.C:1273
 DrawQAoutput.C:1274
 DrawQAoutput.C:1275
 DrawQAoutput.C:1276
 DrawQAoutput.C:1277
 DrawQAoutput.C:1278
 DrawQAoutput.C:1279
 DrawQAoutput.C:1280
 DrawQAoutput.C:1281
 DrawQAoutput.C:1282
 DrawQAoutput.C:1283
 DrawQAoutput.C:1284
 DrawQAoutput.C:1285
 DrawQAoutput.C:1286
 DrawQAoutput.C:1287
 DrawQAoutput.C:1288
 DrawQAoutput.C:1289
 DrawQAoutput.C:1290
 DrawQAoutput.C:1291
 DrawQAoutput.C:1292
 DrawQAoutput.C:1293
 DrawQAoutput.C:1294
 DrawQAoutput.C:1295
 DrawQAoutput.C:1296
 DrawQAoutput.C:1297
 DrawQAoutput.C:1298
 DrawQAoutput.C:1299
 DrawQAoutput.C:1300
 DrawQAoutput.C:1301
 DrawQAoutput.C:1302
 DrawQAoutput.C:1303
 DrawQAoutput.C:1304
 DrawQAoutput.C:1305
 DrawQAoutput.C:1306
 DrawQAoutput.C:1307
 DrawQAoutput.C:1308
 DrawQAoutput.C:1309
 DrawQAoutput.C:1310
 DrawQAoutput.C:1311
 DrawQAoutput.C:1312
 DrawQAoutput.C:1313
 DrawQAoutput.C:1314
 DrawQAoutput.C:1315
 DrawQAoutput.C:1316
 DrawQAoutput.C:1317
 DrawQAoutput.C:1318
 DrawQAoutput.C:1319
 DrawQAoutput.C:1320
 DrawQAoutput.C:1321
 DrawQAoutput.C:1322
 DrawQAoutput.C:1323
 DrawQAoutput.C:1324
 DrawQAoutput.C:1325
 DrawQAoutput.C:1326
 DrawQAoutput.C:1327
 DrawQAoutput.C:1328
 DrawQAoutput.C:1329
 DrawQAoutput.C:1330
 DrawQAoutput.C:1331
 DrawQAoutput.C:1332
 DrawQAoutput.C:1333
 DrawQAoutput.C:1334
 DrawQAoutput.C:1335
 DrawQAoutput.C:1336
 DrawQAoutput.C:1337
 DrawQAoutput.C:1338
 DrawQAoutput.C:1339
 DrawQAoutput.C:1340
 DrawQAoutput.C:1341
 DrawQAoutput.C:1342
 DrawQAoutput.C:1343
 DrawQAoutput.C:1344
 DrawQAoutput.C:1345
 DrawQAoutput.C:1346
 DrawQAoutput.C:1347
 DrawQAoutput.C:1348
 DrawQAoutput.C:1349
 DrawQAoutput.C:1350
 DrawQAoutput.C:1351
 DrawQAoutput.C:1352
 DrawQAoutput.C:1353
 DrawQAoutput.C:1354
 DrawQAoutput.C:1355
 DrawQAoutput.C:1356
 DrawQAoutput.C:1357
 DrawQAoutput.C:1358
 DrawQAoutput.C:1359
 DrawQAoutput.C:1360
 DrawQAoutput.C:1361
 DrawQAoutput.C:1362
 DrawQAoutput.C:1363
 DrawQAoutput.C:1364
 DrawQAoutput.C:1365
 DrawQAoutput.C:1366
 DrawQAoutput.C:1367
 DrawQAoutput.C:1368
 DrawQAoutput.C:1369
 DrawQAoutput.C:1370
 DrawQAoutput.C:1371
 DrawQAoutput.C:1372
 DrawQAoutput.C:1373
 DrawQAoutput.C:1374
 DrawQAoutput.C:1375
 DrawQAoutput.C:1376
 DrawQAoutput.C:1377
 DrawQAoutput.C:1378
 DrawQAoutput.C:1379
 DrawQAoutput.C:1380
 DrawQAoutput.C:1381
 DrawQAoutput.C:1382
 DrawQAoutput.C:1383
 DrawQAoutput.C:1384
 DrawQAoutput.C:1385
 DrawQAoutput.C:1386
 DrawQAoutput.C:1387
 DrawQAoutput.C:1388
 DrawQAoutput.C:1389
 DrawQAoutput.C:1390
 DrawQAoutput.C:1391
 DrawQAoutput.C:1392
 DrawQAoutput.C:1393
 DrawQAoutput.C:1394
 DrawQAoutput.C:1395
 DrawQAoutput.C:1396
 DrawQAoutput.C:1397
 DrawQAoutput.C:1398
 DrawQAoutput.C:1399
 DrawQAoutput.C:1400
 DrawQAoutput.C:1401
 DrawQAoutput.C:1402
 DrawQAoutput.C:1403
 DrawQAoutput.C:1404
 DrawQAoutput.C:1405
 DrawQAoutput.C:1406
 DrawQAoutput.C:1407
 DrawQAoutput.C:1408
 DrawQAoutput.C:1409
 DrawQAoutput.C:1410
 DrawQAoutput.C:1411
 DrawQAoutput.C:1412
 DrawQAoutput.C:1413
 DrawQAoutput.C:1414
 DrawQAoutput.C:1415
 DrawQAoutput.C:1416
 DrawQAoutput.C:1417
 DrawQAoutput.C:1418
 DrawQAoutput.C:1419
 DrawQAoutput.C:1420
 DrawQAoutput.C:1421
 DrawQAoutput.C:1422
 DrawQAoutput.C:1423
 DrawQAoutput.C:1424
 DrawQAoutput.C:1425
 DrawQAoutput.C:1426
 DrawQAoutput.C:1427
 DrawQAoutput.C:1428
 DrawQAoutput.C:1429
 DrawQAoutput.C:1430
 DrawQAoutput.C:1431
 DrawQAoutput.C:1432
 DrawQAoutput.C:1433
 DrawQAoutput.C:1434
 DrawQAoutput.C:1435
 DrawQAoutput.C:1436
 DrawQAoutput.C:1437
 DrawQAoutput.C:1438
 DrawQAoutput.C:1439
 DrawQAoutput.C:1440
 DrawQAoutput.C:1441
 DrawQAoutput.C:1442
 DrawQAoutput.C:1443
 DrawQAoutput.C:1444
 DrawQAoutput.C:1445
 DrawQAoutput.C:1446
 DrawQAoutput.C:1447
 DrawQAoutput.C:1448
 DrawQAoutput.C:1449
 DrawQAoutput.C:1450
 DrawQAoutput.C:1451
 DrawQAoutput.C:1452
 DrawQAoutput.C:1453
 DrawQAoutput.C:1454
 DrawQAoutput.C:1455
 DrawQAoutput.C:1456
 DrawQAoutput.C:1457
 DrawQAoutput.C:1458
 DrawQAoutput.C:1459
 DrawQAoutput.C:1460
 DrawQAoutput.C:1461
 DrawQAoutput.C:1462
 DrawQAoutput.C:1463
 DrawQAoutput.C:1464
 DrawQAoutput.C:1465
 DrawQAoutput.C:1466
 DrawQAoutput.C:1467
 DrawQAoutput.C:1468
 DrawQAoutput.C:1469
 DrawQAoutput.C:1470
 DrawQAoutput.C:1471
 DrawQAoutput.C:1472
 DrawQAoutput.C:1473
 DrawQAoutput.C:1474
 DrawQAoutput.C:1475
 DrawQAoutput.C:1476
 DrawQAoutput.C:1477
 DrawQAoutput.C:1478
 DrawQAoutput.C:1479
 DrawQAoutput.C:1480
 DrawQAoutput.C:1481
 DrawQAoutput.C:1482
 DrawQAoutput.C:1483
 DrawQAoutput.C:1484
 DrawQAoutput.C:1485
 DrawQAoutput.C:1486
 DrawQAoutput.C:1487
 DrawQAoutput.C:1488
 DrawQAoutput.C:1489
 DrawQAoutput.C:1490
 DrawQAoutput.C:1491
 DrawQAoutput.C:1492
 DrawQAoutput.C:1493
 DrawQAoutput.C:1494
 DrawQAoutput.C:1495
 DrawQAoutput.C:1496
 DrawQAoutput.C:1497
 DrawQAoutput.C:1498
 DrawQAoutput.C:1499
 DrawQAoutput.C:1500
 DrawQAoutput.C:1501
 DrawQAoutput.C:1502
 DrawQAoutput.C:1503
 DrawQAoutput.C:1504
 DrawQAoutput.C:1505
 DrawQAoutput.C:1506
 DrawQAoutput.C:1507
 DrawQAoutput.C:1508
 DrawQAoutput.C:1509
 DrawQAoutput.C:1510
 DrawQAoutput.C:1511
 DrawQAoutput.C:1512
 DrawQAoutput.C:1513
 DrawQAoutput.C:1514
 DrawQAoutput.C:1515
 DrawQAoutput.C:1516
 DrawQAoutput.C:1517
 DrawQAoutput.C:1518
 DrawQAoutput.C:1519
 DrawQAoutput.C:1520
 DrawQAoutput.C:1521
 DrawQAoutput.C:1522
 DrawQAoutput.C:1523
 DrawQAoutput.C:1524
 DrawQAoutput.C:1525
 DrawQAoutput.C:1526
 DrawQAoutput.C:1527
 DrawQAoutput.C:1528
 DrawQAoutput.C:1529
 DrawQAoutput.C:1530
 DrawQAoutput.C:1531
 DrawQAoutput.C:1532
 DrawQAoutput.C:1533
 DrawQAoutput.C:1534
 DrawQAoutput.C:1535
 DrawQAoutput.C:1536
 DrawQAoutput.C:1537
 DrawQAoutput.C:1538
 DrawQAoutput.C:1539
 DrawQAoutput.C:1540
 DrawQAoutput.C:1541
 DrawQAoutput.C:1542
 DrawQAoutput.C:1543
 DrawQAoutput.C:1544
 DrawQAoutput.C:1545
 DrawQAoutput.C:1546
 DrawQAoutput.C:1547
 DrawQAoutput.C:1548
 DrawQAoutput.C:1549
 DrawQAoutput.C:1550
 DrawQAoutput.C:1551
 DrawQAoutput.C:1552
 DrawQAoutput.C:1553
 DrawQAoutput.C:1554
 DrawQAoutput.C:1555
 DrawQAoutput.C:1556
 DrawQAoutput.C:1557
 DrawQAoutput.C:1558
 DrawQAoutput.C:1559
 DrawQAoutput.C:1560
 DrawQAoutput.C:1561
 DrawQAoutput.C:1562
 DrawQAoutput.C:1563
 DrawQAoutput.C:1564
 DrawQAoutput.C:1565
 DrawQAoutput.C:1566
 DrawQAoutput.C:1567
 DrawQAoutput.C:1568
 DrawQAoutput.C:1569
 DrawQAoutput.C:1570
 DrawQAoutput.C:1571
 DrawQAoutput.C:1572
 DrawQAoutput.C:1573
 DrawQAoutput.C:1574
 DrawQAoutput.C:1575
 DrawQAoutput.C:1576
 DrawQAoutput.C:1577
 DrawQAoutput.C:1578
 DrawQAoutput.C:1579
 DrawQAoutput.C:1580
 DrawQAoutput.C:1581
 DrawQAoutput.C:1582
 DrawQAoutput.C:1583
 DrawQAoutput.C:1584
 DrawQAoutput.C:1585
 DrawQAoutput.C:1586
 DrawQAoutput.C:1587
 DrawQAoutput.C:1588
 DrawQAoutput.C:1589
 DrawQAoutput.C:1590
 DrawQAoutput.C:1591
 DrawQAoutput.C:1592
 DrawQAoutput.C:1593
 DrawQAoutput.C:1594
 DrawQAoutput.C:1595
 DrawQAoutput.C:1596
 DrawQAoutput.C:1597
 DrawQAoutput.C:1598
 DrawQAoutput.C:1599
 DrawQAoutput.C:1600
 DrawQAoutput.C:1601
 DrawQAoutput.C:1602
 DrawQAoutput.C:1603
 DrawQAoutput.C:1604
 DrawQAoutput.C:1605
 DrawQAoutput.C:1606
 DrawQAoutput.C:1607
 DrawQAoutput.C:1608
 DrawQAoutput.C:1609
 DrawQAoutput.C:1610
 DrawQAoutput.C:1611
 DrawQAoutput.C:1612
 DrawQAoutput.C:1613
 DrawQAoutput.C:1614
 DrawQAoutput.C:1615
 DrawQAoutput.C:1616
 DrawQAoutput.C:1617
 DrawQAoutput.C:1618
 DrawQAoutput.C:1619
 DrawQAoutput.C:1620
 DrawQAoutput.C:1621
 DrawQAoutput.C:1622
 DrawQAoutput.C:1623
 DrawQAoutput.C:1624
 DrawQAoutput.C:1625
 DrawQAoutput.C:1626
 DrawQAoutput.C:1627
 DrawQAoutput.C:1628
 DrawQAoutput.C:1629
 DrawQAoutput.C:1630
 DrawQAoutput.C:1631
 DrawQAoutput.C:1632
 DrawQAoutput.C:1633
 DrawQAoutput.C:1634
 DrawQAoutput.C:1635
 DrawQAoutput.C:1636
 DrawQAoutput.C:1637
 DrawQAoutput.C:1638
 DrawQAoutput.C:1639
 DrawQAoutput.C:1640
 DrawQAoutput.C:1641
 DrawQAoutput.C:1642
 DrawQAoutput.C:1643
 DrawQAoutput.C:1644
 DrawQAoutput.C:1645
 DrawQAoutput.C:1646
 DrawQAoutput.C:1647
 DrawQAoutput.C:1648
 DrawQAoutput.C:1649
 DrawQAoutput.C:1650
 DrawQAoutput.C:1651
 DrawQAoutput.C:1652
 DrawQAoutput.C:1653
 DrawQAoutput.C:1654
 DrawQAoutput.C:1655
 DrawQAoutput.C:1656
 DrawQAoutput.C:1657
 DrawQAoutput.C:1658
 DrawQAoutput.C:1659
 DrawQAoutput.C:1660
 DrawQAoutput.C:1661
 DrawQAoutput.C:1662
 DrawQAoutput.C:1663
 DrawQAoutput.C:1664
 DrawQAoutput.C:1665
 DrawQAoutput.C:1666
 DrawQAoutput.C:1667
 DrawQAoutput.C:1668
 DrawQAoutput.C:1669
 DrawQAoutput.C:1670
 DrawQAoutput.C:1671
 DrawQAoutput.C:1672
 DrawQAoutput.C:1673
 DrawQAoutput.C:1674
 DrawQAoutput.C:1675
 DrawQAoutput.C:1676
 DrawQAoutput.C:1677
 DrawQAoutput.C:1678
 DrawQAoutput.C:1679
 DrawQAoutput.C:1680
 DrawQAoutput.C:1681
 DrawQAoutput.C:1682
 DrawQAoutput.C:1683
 DrawQAoutput.C:1684
 DrawQAoutput.C:1685
 DrawQAoutput.C:1686
 DrawQAoutput.C:1687
 DrawQAoutput.C:1688
 DrawQAoutput.C:1689
 DrawQAoutput.C:1690
 DrawQAoutput.C:1691
 DrawQAoutput.C:1692
 DrawQAoutput.C:1693
 DrawQAoutput.C:1694
 DrawQAoutput.C:1695
 DrawQAoutput.C:1696
 DrawQAoutput.C:1697
 DrawQAoutput.C:1698
 DrawQAoutput.C:1699
 DrawQAoutput.C:1700
 DrawQAoutput.C:1701
 DrawQAoutput.C:1702
 DrawQAoutput.C:1703
 DrawQAoutput.C:1704
 DrawQAoutput.C:1705
 DrawQAoutput.C:1706
 DrawQAoutput.C:1707
 DrawQAoutput.C:1708
 DrawQAoutput.C:1709
 DrawQAoutput.C:1710
 DrawQAoutput.C:1711
 DrawQAoutput.C:1712
 DrawQAoutput.C:1713
 DrawQAoutput.C:1714
 DrawQAoutput.C:1715
 DrawQAoutput.C:1716
 DrawQAoutput.C:1717
 DrawQAoutput.C:1718
 DrawQAoutput.C:1719
 DrawQAoutput.C:1720
 DrawQAoutput.C:1721
 DrawQAoutput.C:1722
 DrawQAoutput.C:1723
 DrawQAoutput.C:1724
 DrawQAoutput.C:1725
 DrawQAoutput.C:1726
 DrawQAoutput.C:1727
 DrawQAoutput.C:1728
 DrawQAoutput.C:1729
 DrawQAoutput.C:1730
 DrawQAoutput.C:1731
 DrawQAoutput.C:1732
 DrawQAoutput.C:1733
 DrawQAoutput.C:1734
 DrawQAoutput.C:1735
 DrawQAoutput.C:1736
 DrawQAoutput.C:1737
 DrawQAoutput.C:1738
 DrawQAoutput.C:1739
 DrawQAoutput.C:1740
 DrawQAoutput.C:1741
 DrawQAoutput.C:1742
 DrawQAoutput.C:1743
 DrawQAoutput.C:1744
 DrawQAoutput.C:1745
 DrawQAoutput.C:1746
 DrawQAoutput.C:1747
 DrawQAoutput.C:1748
 DrawQAoutput.C:1749
 DrawQAoutput.C:1750
 DrawQAoutput.C:1751
 DrawQAoutput.C:1752
 DrawQAoutput.C:1753
 DrawQAoutput.C:1754
 DrawQAoutput.C:1755
 DrawQAoutput.C:1756
 DrawQAoutput.C:1757
 DrawQAoutput.C:1758
 DrawQAoutput.C:1759
 DrawQAoutput.C:1760
 DrawQAoutput.C:1761
 DrawQAoutput.C:1762
 DrawQAoutput.C:1763
 DrawQAoutput.C:1764
 DrawQAoutput.C:1765
 DrawQAoutput.C:1766
 DrawQAoutput.C:1767
 DrawQAoutput.C:1768
 DrawQAoutput.C:1769
 DrawQAoutput.C:1770
 DrawQAoutput.C:1771
 DrawQAoutput.C:1772
 DrawQAoutput.C:1773
 DrawQAoutput.C:1774
 DrawQAoutput.C:1775
 DrawQAoutput.C:1776
 DrawQAoutput.C:1777
 DrawQAoutput.C:1778
 DrawQAoutput.C:1779
 DrawQAoutput.C:1780
 DrawQAoutput.C:1781
 DrawQAoutput.C:1782
 DrawQAoutput.C:1783
 DrawQAoutput.C:1784
 DrawQAoutput.C:1785
 DrawQAoutput.C:1786
 DrawQAoutput.C:1787
 DrawQAoutput.C:1788
 DrawQAoutput.C:1789
 DrawQAoutput.C:1790
 DrawQAoutput.C:1791
 DrawQAoutput.C:1792
 DrawQAoutput.C:1793
 DrawQAoutput.C:1794
 DrawQAoutput.C:1795
 DrawQAoutput.C:1796
 DrawQAoutput.C:1797
 DrawQAoutput.C:1798
 DrawQAoutput.C:1799
 DrawQAoutput.C:1800
 DrawQAoutput.C:1801
 DrawQAoutput.C:1802
 DrawQAoutput.C:1803
 DrawQAoutput.C:1804
 DrawQAoutput.C:1805
 DrawQAoutput.C:1806
 DrawQAoutput.C:1807
 DrawQAoutput.C:1808
 DrawQAoutput.C:1809
 DrawQAoutput.C:1810
 DrawQAoutput.C:1811
 DrawQAoutput.C:1812
 DrawQAoutput.C:1813
 DrawQAoutput.C:1814
 DrawQAoutput.C:1815
 DrawQAoutput.C:1816
 DrawQAoutput.C:1817
 DrawQAoutput.C:1818
 DrawQAoutput.C:1819
 DrawQAoutput.C:1820
 DrawQAoutput.C:1821
 DrawQAoutput.C:1822
 DrawQAoutput.C:1823
 DrawQAoutput.C:1824
 DrawQAoutput.C:1825
 DrawQAoutput.C:1826
 DrawQAoutput.C:1827
 DrawQAoutput.C:1828
 DrawQAoutput.C:1829
 DrawQAoutput.C:1830
 DrawQAoutput.C:1831
 DrawQAoutput.C:1832
 DrawQAoutput.C:1833
 DrawQAoutput.C:1834
 DrawQAoutput.C:1835
 DrawQAoutput.C:1836
 DrawQAoutput.C:1837
 DrawQAoutput.C:1838
 DrawQAoutput.C:1839
 DrawQAoutput.C:1840
 DrawQAoutput.C:1841
 DrawQAoutput.C:1842
 DrawQAoutput.C:1843
 DrawQAoutput.C:1844
 DrawQAoutput.C:1845
 DrawQAoutput.C:1846
 DrawQAoutput.C:1847
 DrawQAoutput.C:1848
 DrawQAoutput.C:1849
 DrawQAoutput.C:1850
 DrawQAoutput.C:1851