ROOT logo

// 05.2013 new functionality: Status Bar
// 07.2014 updated to steer most of this from the qaConfig.C
// 09.2014 new functions to produce status lines from aliases and to write status infos to a tree for later use (see TStatToolkit).
// To create the Status Bar, the following is done in principle. more info & examples in the TStatToolkit and qaConfig.C.
/*{
 TStatToolkit::SetStatusAlias(tree, "meanTPCncl",    "", "varname_Out:(abs(varname-MeanEF)>6.*RMSEF):0.8");
 TStatToolkit::SetStatusAlias(tree, "tpcItsMatchA",  "", "varname_Out:(abs(varname-MeanEF)>6.*RMSEF):0.8");
 TStatToolkit::SetStatusAlias(tree, "meanTPCncl",    "", "varname_Warning:(abs(varname-MeanEF)>3.*RMSEF):0.8");
 TStatToolkit::SetStatusAlias(tree, "tpcItsMatchA",  "", "varname_Warning:(abs(varname-MeanEF)>3.*RMSEF):0.8");
 TObjArray* oaMultGr = new TObjArray(); int igr=0;
 oaMultGr->Add( TStatToolkit::MakeStatusMultGr(tree, "tpcItsMatchA:run",  "", "(1):(meanTPCncl>0):(varname_Warning):(varname_Outlier):", igr) ); igr++;
 oaMultGr->Add( TStatToolkit::MakeStatusMultGr(tree, "meanTPCncl:run",    "", "(1):(meanTPCncl>0):(varname_Warning):(varname_Outlier):", igr) ); igr++;
 TCanvas *c1 = new TCanvas("c1","c1");
 TStatToolkit::AddStatusPad(c1, 0.30, 0.40);
 TStatToolkit::DrawStatusGraphs(oaMultGr);
 }*/


TTree *tree;
TTree *statusTree;

drawPerformanceTPCQAMatchTrends(const char* inFile = "trending.root", const char* runType="pp") {
  //
  if (gSystem->Exec("ls qaConfig.C")==0)
    gROOT->LoadMacro(  "qaConfig.C");
  else {
    printf("now loading $ALICE_ROOT/PWGPP/TPC/macros/qaConfig.C\n");
    gROOT->LoadMacro(  "$ALICE_ROOT/PWGPP/TPC/macros/qaConfig.C");
  }
  
  //
  // colors & markers:
  Int_t colPosA=kGreen+2; //kRed;
  Int_t colPosC=kMagenta+1; //kAzure-4;
  Int_t colNegA=kGreen+2; //kRed;//kOrange;
  Int_t colNegC=kMagenta+1; //kAzure-4;//kGreen;
  Int_t colSum=kBlack;
  Int_t marA1=20;
  Int_t marA2=24;
  Int_t marC1=20;
  Int_t marC2=24;
  Int_t marSum=34;//full cross
  Int_t marCorr=31;//snowflake
  // shifting of graphs within one run for better visibility:
	Float_t sh_gr0=-0.3;
	Float_t sh_gr1=-0.1;
	Float_t sh_gr2=+0.1;
	Float_t sh_gr3=+0.3;
  // properties of status lines:
  // currently set in 'MakeStatusLines()'
  
  gROOT->Reset();
  gROOT->SetStyle("Plain");
  gStyle->SetPalette(1);
  gStyle->SetLabelSize(0.04,"x");
  gStyle->SetPadTickX(1);
	gStyle->SetPadTickY(1);
  
  float  ncl_min = 80, ncl_max = 140;
  float  ratio_min = 0.6, ratio_max = 1.2;
  float  mip_min = 30, mip_max = 60;
  float  mipr_min = 0, mipr_max = 0.3;
  float  vx_min = -0.3, vx_max = 0.3;
  float  vy_min = -0.45, vy_max = 0.45;
  float  vz_min = -3, vz_max = 3;
  float  dca_min = -1.2, dca_max = 1.2;
  float  mult_min = 1, mult_max = 35;
  float  pt_min = 0, pt_max = 1.6;
  
  if( strcmp(runType,"PbPb") == 0){
    ncl_min = 90;  ncl_max = 140;
    ratio_min = 0.5;  ratio_max = 1.1;
    mip_min = 35;  mip_max = 70;
    mipr_min = 0;  mipr_max = 0.15;
    vx_min = -0.3;  vx_max = 0.3;
    vy_min = -0.45;  vy_max = 0.45;
    vz_min = -3;  vz_max = 3;
    dca_min = -1;  dca_max = 1;
    mult_min = 5; mult_max = 700;
  }
  if ( strcmp(runType,"PbPbCentr0") == 0){
    ncl_min = 95;  ncl_max = 125;
    ratio_min = 0.5;  ratio_max = 1.1;
    mip_min = 45;  mip_max = 60;
    mipr_min = 0;  mipr_max = 0.15;
    vx_min = -0.3;  vx_max = 0.3;
    vy_min = -0.45;  vy_max = 0.45;
    vz_min = -3;  vz_max = 3;
    dca_min = -0.6;  dca_max = 0.6;
    mult_min = 5; mult_max = 2000;
  }
  if ( strcmp(runType,"PbPbCentr30") == 0){
    ncl_min = 95;  ncl_max = 125;
    ratio_min = 0.5;  ratio_max = 1.1;
    mip_min = 45;  mip_max = 60;
    mipr_min = 0;  mipr_max = 0.15;
    vx_min = -0.3;  vx_max = 0.3;
    vy_min = -0.45;  vy_max = 0.45;
    vz_min = -3;  vz_max = 3;
    dca_min = -0.6;  dca_max = 0.6;
    mult_min = 5; mult_max = 500;
  }
  if ( strcmp(runType,"PbPbCentr70") == 0){
    ncl_min = 95;  ncl_max = 125;
    ratio_min = 0.5;  ratio_max = 1.1;
    mip_min = 45;  mip_max = 60;
    mipr_min = 0;  mipr_max = 0.15;
    vx_min = -0.3;  vx_max = 0.3;
    vy_min = -0.45;  vy_max = 0.45;
    vz_min = -3;  vz_max = 3;
    dca_min = -0.6;  dca_max = 0.6;
    mult_min = 5; mult_max = 50;
  }
  
  // make backup of rootfile
  //
  TString sBackupfile(inFile);
  sBackupfile.ReplaceAll(".root",".backup.root");
  gSystem->Exec(Form("cp %s %s", inFile, sBackupfile.Data()));
  
  // open input file
  //
  TFile *_file0 = TFile::Open(inFile, "UPDATE");
  if(!_file0) return;
  _file0->cd();
  
  //
  tree = (TTree*)_file0->Get("tpcQA");
  //TTree *tree = ch->GetTree();
  if(!tree) return;
  int const entries_tree = tree->GetEntries();
  cout<<"number of tree entries: "<<entries_tree<<endl; 
  
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanTPCncl:run","");
  int const entries = gr->GetN();
  cout<<"number of graph entries: "<<entries<<endl;
  cout<<"(multiple occurences of runs removed)"<<endl;
  
  if(entries<3)
    const float norm_runs = 8.0; 
  else if(entries<20)
    const float norm_runs = 20.0;
  else if(entries<35)
    const float norm_runs = 35.0;
  else 
    const float norm_runs = 50.0;
  // 50 is the max number of runs that shall be viewed on a 1700-wide canvas
  // only when there are more runs, the canvas shall become wider than that.
  
  int const canvas_width  = int(((entries*1.0)/norm_runs)*1700.0);
  int const canvas_height = 600;
  gStyle->SetPadLeftMargin(0.12*900/canvas_width);
  gStyle->SetPadRightMargin(0.01);
  
  if(entries>50){
    gStyle->SetTickLength(0.03*norm_runs/(entries*1.0),"Y");
    gStyle->SetTitleYOffset((norm_runs/(entries*1.0))*0.8);
    gStyle->SetPadLeftMargin(0.12*norm_runs/(entries*1.0));
    gStyle->SetPadRightMargin(0.01*norm_runs/(entries*1.0));
  }
  
  TCanvas *c1 = new TCanvas("can","can",canvas_width,canvas_height);
  c1->SetGrid(3);
  c1->cd();
  
  //
  // process config file qaConfig.C to initialize status aliases (outliers etc.), status bar criteria, status lines, ...
  //
  TString returnStrings[3];
  qaConfig(tree, returnStrings);
  // configures outlier criteria and descriptions for the needed TPC variables, as specified in the qaConfig.C.
  // defines aliases according to these criteria.
  
  TString sStatusbarVars  = returnStrings[0];
  TString sStatusbarNames = returnStrings[1];
  TString sCriteria       = returnStrings[2];
  cout << "sStatusbarVars = " << sStatusbarVars.Data() << endl;
  cout << "sCriteria      = " << sCriteria.Data() << endl;
  
  //
  // compute TPC status graphs
  //
  TObjArray* oaStatusbarVars = sStatusbarVars.Tokenize(";");
  TObjArray* oaStatusbarNames = sStatusbarNames.Tokenize(";");
  TObjArray* oaMultGr = new TObjArray();
  int igr=0;
  
  for (Int_t vari=oaStatusbarVars->GetEntriesFast()-1; vari>=0; vari--) // invert the order of the status graphs
  {
    TString sVar = Form("%s:run", oaStatusbarVars->At(vari)->GetName()); //e.g. -> dcar:run
    oaMultGr->Add( TStatToolkit::MakeStatusMultGr(tree, sVar.Data(),  "", sCriteria.Data(), igr) );
    TString sYtitle = oaStatusbarNames->At(vari)->GetName(); // set better name for y axis of statuspad
    ((TMultiGraph*) oaMultGr->At(igr))->SetTitle(sYtitle.Data());
    igr++;
  }
  
  //
  // save status into Tree and write to rootfile
  // we update the original rootfile trending.root, as it is complicated to 'copy-paste' a TTree...
  //
  statusTree = TStatToolkit::WriteStatusToTree(oaMultGr);
  statusTree->BuildIndex("run");
  tree->AddFriend(statusTree,"Tstatus");
//  tree->Write("", TObject::kOverwrite);
//  statusTree->Write();
  // if we save statusTree to file here, then the run number in the plots will be always the same run. no idea why.
  // so we do it at the end...
  //
  // alternative: write statusTree to different rootfile: (same problem)
//  TFile* file_out = new TFile("trendingStatusTree.root","RECREATE");
//  file_out->cd();
//  statusTree->Write();
//  file_out->Close();
//  Printf("Status tree written to file '%s'", file_out->GetName());
  
  //afterwards one can open the rootfile and correlate the trees:
  /*
   // read the trees and draw tests:
   // [terminal]$ aliroot -l trending.root
   TTree* tree = (TTree*)_file0->Get("tpcQA");
   tree->Draw("meanMIP:run","run>0","*");
   TTree* statusTree = (TTree*)_file0->Get("statusTree");
   statusTree->Draw("MIPquality_Warning:run","run>0","*");
   
   // correlate:
   tree->Draw("meanMIP:Tstatus.MIPquality_Warning","run>0","*");
   
   TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"Tstatus.MIPquality_Warning:run","",20,kRed,1.0);
   gr->Draw("AP");
  */
  
  
  cout << "Start plotting of trending graphs... " << endl;
  // configure the pad in which the status graphs are plotted ('status bar')
  Float_t statPadHeight=0.30; //fraction of canvas height (was 0.25 until Aug 2014)
  Float_t statPadBotMar=0.40; //bottom margin of pad for run numbers
  //
  // automatic plot ranges based on outlier bands, computed for each variable later.
  Float_t plotmean;
  Float_t plotoutlier;
  //
  c1->cd();
  
  /****** Number of TPC Clusters vs run number ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanTPCncl:run","",marA1,colPosA,1.0);
  gr->SetName("meanTPCncl:run");
  gr->GetHistogram()->SetYTitle("Number of TPC Clusters");
  gr->GetHistogram()->SetTitle("p_{T} > 0.25GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 1.0");
  ComputeRange(tree, "meanTPCncl", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr->GetHistogram()->SetMinimum(ncl_min);
//  gr->GetHistogram()->SetMaximum(ncl_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"meanTPCncl:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meanTPCncl_vs_run.png");
  c1->Clear();
  
  /****** Ratio of findable TPC clusters vs run number ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanTPCnclF:run","",marA1,colPosA,1.0);
  gr->SetName("meanTPCnclF:run");
  gr->GetHistogram()->SetYTitle("# of Found Clusters/ # of Findable Clusters");
  gr->GetHistogram()->SetTitle("p_{T} > 0.25GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 1.0");
  ComputeRange(tree, "meanTPCnclF", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr->GetHistogram()->SetMinimum(ratio_min);
//  gr->GetHistogram()->SetMaximum(ratio_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
	PlotStatusLines(tree,"meanTPCnclF:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meanTPCnclF_vs_run.png");
  c1->Clear();
  
  /****** Mean MIPs ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanMIP:run","",marA1,colPosA,1.0);
  gr->SetName("meanMIP:run");
  gr->GetHistogram()->SetYTitle("Mean of MIPs");
  gr->GetHistogram()->SetTitle("0,4<p<0.55GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 1.0, 80<#Cluster<160, 35<dE/dx<60");
  ComputeRange(tree, "meanMIP", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr->GetHistogram()->SetMinimum(mip_min);
//  gr->GetHistogram()->SetMaximum(mip_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
	PlotStatusLines(tree,"meanMIP:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meanMIP_vs_run.png");
  c1->Clear();
  
  /****** Mean MIP Resolution ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"resolutionMIP:run","",marA1,colPosA,1.0);
  gr->SetName("resolutionMIP:run");
  gr->GetHistogram()->SetYTitle("Resolution of MIPs");
  gr->GetHistogram()->SetTitle("0,4<p<0.55GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 1.0, 80<#Cluster<160, 35<dE/dx<60");
  ComputeRange(tree, "resolutionMIP", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr->GetHistogram()->SetMinimum(mipr_min);
//  gr->GetHistogram()->SetMaximum(mipr_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"resolutionMIP:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("resolutionMIP_vs_run.png");
  c1->Clear();
  
  /****** Mean energy loss for electrons ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanMIPele:run","",marA1,colPosA,1.0);
  gr->SetName("meanMIPele:run");
  gr->GetHistogram()->SetYTitle("Mean of electron dEdx");
  gr->GetHistogram()->SetTitle("0,32<p<0.38GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 1.0, 80<#Cluster<160, 70<dE/dx<100");
  ComputeRange(tree, "meanMIPele", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr->GetHistogram()->SetMinimum(40);
//  gr->GetHistogram()->SetMaximum(110);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"meanMIPele:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meandEdxele_vs_run.png");
  c1->Clear();
  
  /****** Mean Energy loss electron Resolution ******/
  
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"resolutionMIPele:run","",marA1,colPosA,1.0);
  gr->SetName("resolutionMIPele:run");
  gr->GetHistogram()->SetYTitle("Resolution of electrons dEdx");
  //gr->GetHistogram()->SetTitle("0,4<p<0.55GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 1.0, 80<#Cluster<160, 35<dE/dx<60");
  gr->GetHistogram()->SetTitle("0,32<p<0.38GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 1.0, 80<#Cluster<160, 70<dE/dx<100");
  ComputeRange(tree, "resolutionMIPele", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr->GetHistogram()->SetMinimum(mipr_min);
//  gr->GetHistogram()->SetMaximum(mipr_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"resolutionMIPele:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("resolutionMeandEdxEle_vs_run.png");
  c1->Clear();
  
  ////////////////////////////////////////////////////////////////////////////////////////////////
  
  
  
  /****** Mean VertX ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanVertX:run","",marA1,colPosA,1.0);
  gr->SetName("meanVertX:run");
  gr->GetHistogram()->SetYTitle("Mean of Vert_{X} / [cm]");
  gr->GetHistogram()->SetTitle("");
//  ComputeRange(tree, "meanVertX", plotmean, plotoutlier);
//  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
//  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
  gr->GetHistogram()->SetMinimum(vx_min);
  gr->GetHistogram()->SetMaximum(vx_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"meanVertX:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meanVertX_vs_run.png");
  c1->Clear();
  
  /****** Mean VertY ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanVertY:run","",marA1,colPosA,1.0);
  gr->SetName("meanVertY:run");
  gr->GetHistogram()->SetYTitle("Mean of Vert_{Y} / [cm]");
  gr->GetHistogram()->SetTitle("");
//  ComputeRange(tree, "meanVertY", plotmean, plotoutlier);
//  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
//  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
  gr->GetHistogram()->SetMinimum(vy_min);
  gr->GetHistogram()->SetMaximum(vy_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"meanVertY:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meanVertY_vs_run.png");
  c1->Clear();
  
  /****** Mean VertZ ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanVertZ:run","",marA1,colPosA,1.0);
  gr->SetName("meanVertZ:run");
  gr->GetHistogram()->SetYTitle("Mean of Vert_{Z} / [cm]");
  gr->GetHistogram()->SetTitle("");
//  ComputeRange(tree, "meanVertZ", plotmean, plotoutlier);
//  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
//  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
  gr->GetHistogram()->SetMinimum(vz_min);
  gr->GetHistogram()->SetMaximum(vz_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"meanVertZ:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meanVertZ_vs_run.png");
  c1->Clear();
  
  
  /****** Offset DCA  ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"offsetdRA:run:offsetdRAErr","",marA1,colPosA,1.0,sh_gr0);
	gr->SetName("offsetdRA:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"offsetdZA:run:offsetdZAErr","",marA2,colNegA,1.0,sh_gr1);
  gr1->SetName("gr1");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"offsetdRC:run:offsetdRCErr","",marC1,colPosC,1.0,sh_gr2);
  gr2->SetName("gr2");
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"offsetdZC:run:offsetdZCErr","",marC2,colNegC,1.0,sh_gr3);
  gr3->SetName("gr3");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"offsetd_comb4:run","",marSum,colSum,1.2);
  grComb->SetName("grComb");

  gr->GetHistogram()->SetYTitle("DCAs / [cm]");
  gr->GetHistogram()->SetTitle("p_{T} > 0.25GeV/c, |DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, |#eta| < 0.8");
  ComputeRange(tree, "offsetd_comb4", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr->GetHistogram()->SetMinimum(dca_min);
//  gr->GetHistogram()->SetMaximum(dca_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  gr1->Draw("P");
  gr2->Draw("P");
  gr3->Draw("P");
  grComb->Draw("P");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("offsetdRA:run","DCA_{R}, A Side","p");
  leg->AddEntry("gr1","DCA_{Z}, A Side","p");
  leg->AddEntry("gr2","DCA_{R}, C Side","p");
  leg->AddEntry("gr3","DCA_{Z}, C Side","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"offsetd_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
	c1->SaveAs("DCAOffset_vs_run.png");
  c1->Clear();
  
  
  /****** Mean Mult  ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanMultPos:run:rmsMultPos","",marA1,colPosA,1.0,sh_gr1);
  gr->SetName("meanMultPos:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanMultNeg:run:rmsMultPos","",marA2,colNegA,1.0,sh_gr2);
  gr1->SetName("gr1");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"meanMult_comb2:run","",marSum,colSum,1.2);
  grComb->SetName("grComb");
  
  gr->GetHistogram()->SetYTitle("Multiplicites of Primary Tracks");
  gr->GetHistogram()->SetTitle("|DCA_{R}| < 3cm, |DCA_{Z}| < 3cm, #Cluster > 70");
  ComputeRange(tree, "meanMult_comb2", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr->GetHistogram()->SetMinimum(0);  //gr->GetHistogram()->SetMinimum(mult_min);
//  gr->GetHistogram()->SetMaximum(100);  //gr->GetHistogram()->SetMaximum(mult_max);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  gr1->Draw("P");
  grComb->Draw("P");

  TLegend *leg = new TLegend(0.6,0.80,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("meanMultPos:run","Positive Charged Tracks","p");
  leg->AddEntry("gr1","Negative Charged Tracks","p");
  leg->AddEntry("grComb","combined = (#Sigma x_{i})/N","p");
  leg->Draw();
  
  PlotStatusLines(tree,"meanMult_comb2:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("meanMult_vs_run.png");
  c1->Clear();
  
  /****** TPC-ITS matching Efficiency  ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcItsMatchA:run","",marA1,colPosA,1.0,sh_gr0);
  gr->SetName("tpcItsMatchA:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcItsMatchHighPtA:run","",marA2,colNegA,1.0,sh_gr1);
  gr1->SetName("gr1");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcItsMatchC:run","",marC1,colPosC,1.0,sh_gr2);
  gr2->SetName("gr2");
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcItsMatchHighPtC:run","",marC2,colNegC,1.0,sh_gr3);
  gr3->SetName("gr3");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcItsMatch_comb4:run","",marSum,colSum,1.2);
  grComb->SetName("grComb");
  
  gr->GetHistogram()->SetYTitle("Matching Efficiencies");
  gr->GetHistogram()->SetTitle("TPC-ITS Matching Efficiency");
  ComputeRange(tree, "tpcItsMatch_comb4", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(1.2);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  gr1->Draw("P");
  gr2->Draw("P");
  gr3->Draw("P");
  grComb->Draw("P");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("tpcItsMatchA:run","TPC-ITS matching, A Side","p");
  leg->AddEntry("gr1","TPC-ITS matching ( p_{T}>4GeV/c ), A Side","p");
  leg->AddEntry("gr2","TPC-ITS matching, C Side","p");
  leg->AddEntry("gr3","TPC-ITS matching ( p_{T}>4GeV/c ), C Side","p");
  leg->AddEntry("grComb","combined = (#Sigma x_{i})/N","p");
  leg->Draw();
  
  PlotStatusLines(tree,"tpcItsMatch_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("TPC-ITS-matching-efficiency_vs_run.png");
  c1->Clear();
  
  /****** ITS-TPC matching quality  ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"lambdaPull:run","",marA1,colPosA,1.0,sh_gr0);
  gr->SetName("lambdaPull:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"ptPull:run","",marA2,colNegA,1.0,sh_gr1);
  gr1->SetName("gr1");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"yPull:run","",marC1,colPosC,1.0,sh_gr2);
  gr2->SetName("gr2");
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"zPull:run","",marC2,colNegC,1.0,sh_gr3);
  gr3->SetName("gr3");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"itsTpcPulls_comb4:run","",marSum,colSum,1.2);
  grComb->SetName("grComb");

  gr->GetHistogram()->SetYTitle("Pulls");
  gr->GetHistogram()->SetTitle("ITS-TPC Matching Quality");
//  ComputeRange(tree, "itsTpcPulls_comb4", plotmean, plotoutlier);
//  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
//  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
  gr->GetHistogram()->SetMinimum(-3);
  gr->GetHistogram()->SetMaximum(3);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  gr1->Draw("P");
  gr2->Draw("P");
  gr3->Draw("P");
  grComb->Draw("P");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("lambdaPull:run","Tan#lambda pull bias","p");
  leg->AddEntry("gr1","q/p_{T} pull bias","p");
  leg->AddEntry("gr2","y pull bias","p");
  leg->AddEntry("gr3","z pull bias","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"itsTpcPulls_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
	c1->SaveAs("ITS-TPC-matching-quality_vs_run.png");
  c1->Clear();
  
  /****** pullPhi for TPC Constrain  ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcConstrainPhiA:run","",marA1,colPosA,1.0,sh_gr1);
  gr->SetName("tpcConstrainPhiA:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcConstrainPhiC:run","",marC1,colPosC,1.0,sh_gr2);
  gr1->SetName("gr1");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"tpcConstrainPhi_comb2:run","",marSum,colSum,1.2);
  grComb->SetName("grComb");
  
  gr->GetHistogram()->SetYTitle("(sin#phi_{TPC} - sin#phi_{Global})/#sigma");
  gr->GetHistogram()->SetTitle("");
  ComputeRange(tree, "tpcConstrainPhi_comb2", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr->GetHistogram()->SetMinimum(-1);
//  gr->GetHistogram()->SetMaximum(1);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  gr1->Draw("P");
  grComb->Draw("P");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("tpcConstrainPhiA:run","A Side","p");
  leg->AddEntry("gr1","C Side","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"tpcConstrainPhi_comb2:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("pullPhiConstrain_vs_run.png");
  c1->Clear();
  
  
	/****** 1/Pt  ******/
  //  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"deltaPt:run","");
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"deltaPt:run:deltaPt_Err","",1,1,1);
  DrawPlot(gr0, "deltaPt:run", marSum, 1.2, colSum, "AP");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"deltaPtA:run:deltaPtA_Err","",1,1,1, +sh_gr1);
  DrawPlot(gr2, "deltaPtA:run", marA1, 1.0, colPosA, "P");
  TGraphErrors *gr4 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"deltaPtC:run:deltaPtC_Err","",1,1,1, -sh_gr1);
  DrawPlot(gr4, "deltaPtC:run", marC1, 1.0, colPosC, "P");
  
  gr0->GetHistogram()->SetYTitle("delta (q/pt) ");
  gr0->GetHistogram()->SetTitle("delta (q/pt)");
  ComputeRange(tree, "deltaPt", plotmean, plotoutlier);
  gr0->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr0->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
//  gr0->GetHistogram()->SetMinimum(-0.008);
//  gr0->GetHistogram()->SetMaximum(0.008);
  gr0->GetXaxis()->LabelsOption("v");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("deltaPt:run","deltaPt: both sides","ap");
  leg->AddEntry("deltaPtA:run","deltaPtA: A side only","p");
  leg->AddEntry("deltaPtC:run","deltaPtC: C side only","p");
  leg->Draw();
  
  PlotStatusLines(tree,"deltaPt:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("1overPt_vs_run.png");
  c1->Clear();
  
  
  /****** DCAr fitting parameters  ******/
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcarAP0:run","",marA1,colPosA,1.0,sh_gr0);
  gr->SetName("dcarAP0:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcarAP1:run","",marA2,colNegA,1.0,sh_gr1);
  gr1->SetName("gr1");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcarCP0:run","",marC1,colPosC,1.0,sh_gr2);
  gr2->SetName("gr2");
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcarCP1:run","",marC2,colNegC,1.0,sh_gr3);
  gr3->SetName("gr3");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcarFitpar_comb4:run","",marSum,colSum,1.2);
  grComb->SetName("grComb");
  
  gr->GetHistogram()->SetYTitle("DCAR Fitting Parameters");
  gr->GetHistogram()->SetTitle("sqrt(P0^{2} + P1^{2}/(pT^{2}))");
  ComputeRange(tree, "dcarFitpar_comb4", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(-plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(+plotmean+3*plotoutlier);
  gr->GetHistogram()->SetMinimum(-1);
  gr->GetHistogram()->SetMaximum(1);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  gr1->Draw("P");
  gr2->Draw("P");
  gr3->Draw("P");
  grComb->Draw("P");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("dcarAP0:run","P0, A Side","p");
  leg->AddEntry("gr1","P1, A Side","p");
  leg->AddEntry("gr2","P0, C Side","p");
  leg->AddEntry("gr3","P1, C Side","p");
  leg->AddEntry("grComb","combined = (#Sigma x_{i})/N","p");
  leg->Draw();
  
  PlotStatusLines(tree,"dcarFitpar_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c1, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c1->SaveAs("dcar_fitting_run.png");
  c1->Clear();
  
  ////////////////////////////////////////////////////////////////////////
  //test DCAR plots
  //DCAr first parameter _0
  
  TCanvas *c2  = new  TCanvas("can2","can2",canvas_width,canvas_height); 
  c2->cd();
  c2->Update();
  c2->SetGrid(3);
  
  //TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_posA_0:run","",1,1,1,sh_gr0);
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_posA_0:run:dcar_posA_0_Err","",1,1,1,sh_gr0);
  DrawPlot(gr0, "dcar_posA_0:run", marA1, 1.0, colPosA, "AP");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_negA_0:run:dcar_negA_0_Err","",1,1,1,sh_gr1);
  DrawPlot(gr1, "dcar_negA_0:run", marA2, 1.0, colNegA, "P");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_posC_0:run:dcar_posC_0_Err","",1,1,1,sh_gr2);
  DrawPlot(gr2, "dcar_posC_0:run", marC1, 1.0, colPosC, "P");    
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_negC_0:run:dcar_negC_0_Err","",1,1,1,sh_gr3);
  DrawPlot(gr3, "dcar_negC_0:run", marC2, 1.0, colNegC, "P");    
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar0_comb4:run","",1,1,1);
  DrawPlot(grComb, "grComb", marSum, 1.4, colSum, "P");    
  
  gr0->GetHistogram()->SetYTitle("DCARs");
  ComputeRange(tree, "dcar0_comb4", plotmean, plotoutlier);
  gr0->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr0->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr0->GetHistogram()->SetMinimum(-0.2);
//  gr0->GetHistogram()->SetMaximum(0.2);
  gr0->GetHistogram()->SetTitleOffset(10);
  gr0->GetXaxis()->LabelsOption("v");
  gr0->SetName("dcar_posA_0:run");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("dcar_posA_0:run","dcar_posA_0","p");
  leg->AddEntry("dcar_negA_0:run","dcar_negA_0","p");
  leg->AddEntry("dcar_posC_0:run","dcar_posC_0","p");
  leg->AddEntry("dcar_negC_0:run","dcar_negC_0","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"dcar0_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c2, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c2->SaveAs("dcar_0_vs_run.png");//for C,A side and pos/neg particle
  c2->Update();
  
  ////////////////////////////////////////////////////////////////////////
  //DCAr second parameter _1
  
  TCanvas *c3  = new  TCanvas("can3","can3",canvas_width,canvas_height); 
  c3->cd();
  c3->Update();
  c3->SetGrid(3);
  
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_posA_1:run:dcar_posA_1_Err","",1,1,1,sh_gr0);
  DrawPlot(gr0, "dcar_posA_1:run", marA1, 1.0, colPosA, "AP");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_negA_1:run:dcar_negA_1_Err","",1,1,1,sh_gr1);
  DrawPlot(gr1, "dcar_negA_1:run", marA2, 1.0, colNegA, "P");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_posC_1:run:dcar_posC_1_Err","",1,1,1,sh_gr2);
  DrawPlot(gr2, "dcar_posC_1:run", marC1, 1.0, colPosC, "P");    
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_negC_1:run:dcar_negC_1_Err","",1,1,1,sh_gr3);
  DrawPlot(gr3, "dcar_negC_1:run", marC2, 1.0, colNegC, "P");    
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar1_comb4:run","",1,1,1);
  DrawPlot(grComb, "grComb", marSum, 1.4, colSum, "P");    
  
  gr0->GetHistogram()->SetYTitle("DCARs");
  ComputeRange(tree, "dcar1_comb4", plotmean, plotoutlier);
  gr0->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr0->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr0->GetHistogram()->SetMinimum(-0.1);
//  gr0->GetHistogram()->SetMaximum(0.1);
  gr0->GetHistogram()->SetTitleOffset(10);
  gr0->GetXaxis()->LabelsOption("v");
  gr0->SetName("dcar_posA_1:run");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("dcar_posA_1:run","dcar_posA_1","p");
  leg->AddEntry("dcar_negA_1:run","dcar_negA_1","p");
  leg->AddEntry("dcar_posC_1:run","dcar_posC_1","p");
  leg->AddEntry("dcar_negC_1:run","dcar_negC_1","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"dcar1_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c3, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c3->SaveAs("dcar_1_vs_run.png");//for C,A side and pos/neg particle
  c3->Update();
  
  ////////////////////////////////////////////////////////////////////////
  //DCAr third parameter _2
  
  TCanvas *c5  = new  TCanvas("can5","can5",canvas_width,canvas_height); 
  c5->cd();
  c5->Update();
  c5->SetGrid(3);
  
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_posA_2:run:dcar_posA_2_Err","",1,1,1,sh_gr0);
  DrawPlot(gr0, "dcar_posA_2:run", marA1, 1.0, colPosA, "AP");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_negA_2:run:dcar_negA_2_Err","",1,1,1,sh_gr1);
  DrawPlot(gr1, "dcar_negA_2:run", marA2, 1.0, colNegA, "P");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_posC_2:run:dcar_posC_2_Err","",1,1,1,sh_gr2);
  DrawPlot(gr2, "dcar_posC_2:run", marC1, 1.0, colPosC, "P");    
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar_negC_2:run:dcar_negC_2_Err","",1,1,1,sh_gr3);
  DrawPlot(gr3, "dcar_negC_2:run", marC2, 1.0, colNegC, "P");    
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcar2_comb4:run","",1,1,1);
  DrawPlot(grComb, "grComb", marSum, 1.4, colSum, "P");    

  gr0->GetHistogram()->SetYTitle("DCARs");
  ComputeRange(tree, "dcar2_comb4", plotmean, plotoutlier);
  gr0->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr0->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr0->GetHistogram()->SetMinimum(-0.1);
//  gr0->GetHistogram()->SetMaximum(0.1);
  gr0->GetHistogram()->SetTitleOffset(10);
  gr0->GetXaxis()->LabelsOption("v");
  gr0->SetName("dcar_posA_2:run");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("dcar_posA_2:run","dcar_posA_2","p");
  leg->AddEntry("dcar_negA_2:run","dcar_negA_2","p");
  leg->AddEntry("dcar_posC_2:run","dcar_posC_2","p");
  leg->AddEntry("dcar_negC_2:run","dcar_negC_2","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"dcar2_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c5, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c5->SaveAs("dcar_2_vs_run.png");//for C,A side and pos/neg particle
  c5->Update();
  
  ////////////////////////////////////////////////////////////////////////
  //DCAz parameters
  //Dcaz first parameter _0
  
  TCanvas *c6  = new  TCanvas("can6","can6",canvas_width,canvas_height); 
  c6->cd();
  c6->Update();
  c6->SetGrid(3);
  
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_posA_0:run:dcaz_posA_0_Err","",1,1,1,sh_gr0);
  DrawPlot(gr0, "dcaz_posA_0:run", marA1, 1.0, colPosA, "AP");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_negA_0:run:dcaz_negA_0_Err","",1,1,1,sh_gr1);
  DrawPlot(gr1, "dcaz_negA_0:run", marA2, 1.0, colNegA, "P");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_posC_0:run:dcaz_posC_0_Err","",1,1,1,sh_gr2);
  DrawPlot(gr2, "dcaz_posC_0:run", marC1, 1.0, colPosC, "P");    
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_negC_0:run:dcaz_negC_0_Err","",1,1,1,sh_gr3);
  DrawPlot(gr3, "dcaz_negC_0:run", marC2, 1.0, colNegC, "P");    
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz0_comb4:run","",1,1,1);
  DrawPlot(grComb, "grComb", marSum, 1.4, colSum, "P");    

  gr0->GetHistogram()->SetYTitle("DCAZs");
  ComputeRange(tree, "dcaz0_comb4", plotmean, plotoutlier);
  gr0->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr0->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr0->GetHistogram()->SetMinimum(-2.);
//  gr0->GetHistogram()->SetMaximum(2.);
  gr0->GetHistogram()->SetTitleOffset(10);
  gr0->GetXaxis()->LabelsOption("v");
  gr0->SetName("dcaz_posA_0:run");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("dcaz_posA_0:run","dcaz_posA_0","p");
  leg->AddEntry("dcaz_negA_0:run","dcaz_negA_0","p");
  leg->AddEntry("dcaz_posC_0:run","dcaz_posC_0","p");
  leg->AddEntry("dcaz_negC_0:run","dcaz_negC_0","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"dcaz0_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c6, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c6->SaveAs("dcaz_0_vs_run.png");//for C,A side and pos/neg particle
  c6->Update();
  
  ////////////////////////////////////////////////////////////////////////
  //Dcaz second parameter _1
  
  TCanvas *c7  = new  TCanvas("can7","can7",canvas_width,canvas_height); 
  c7->cd();
  c7->Update();
  c7->SetGrid(3);
  
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_posA_1:run:dcaz_posA_1_Err","",1,1,1,sh_gr0);
  DrawPlot(gr0, "dcaz_posA_1:run", marA1, 1.0, colPosA, "AP");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_negA_1:run:dcaz_negA_1_Err","",1,1,1,sh_gr1);
  DrawPlot(gr1, "dcaz_negA_1:run", marA2, 1.0, colNegA, "P");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_posC_1:run:dcaz_posC_1_Err","",1,1,1,sh_gr2);
  DrawPlot(gr2, "dcaz_posC_1:run", marC1, 1.0, colPosC, "P");    
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_negC_1:run:dcaz_negC_1_Err","",1,1,1,sh_gr3);
  DrawPlot(gr3, "dcaz_negC_1:run", marC2, 1.0, colNegC, "P");    
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz1_comb4:run","",1,1,1);
  DrawPlot(grComb, "grComb", marSum, 1.4, colSum, "P");    

  gr0->GetHistogram()->SetYTitle("DCAZs");
  ComputeRange(tree, "dcaz1_comb4", plotmean, plotoutlier);
  gr0->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr0->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr0->GetHistogram()->SetMinimum(-0.2);
//  gr0->GetHistogram()->SetMaximum(0.2);
  gr0->GetHistogram()->SetTitleOffset(10);
  gr0->GetXaxis()->LabelsOption("v");
  gr0->SetName("dcaz_posA_1:run");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("dcaz_posA_1:run","dcaz_posA_1","p");
  leg->AddEntry("dcaz_negA_1:run","dcaz_negA_1","p");
  leg->AddEntry("dcaz_posC_1:run","dcaz_posC_1","p");
  leg->AddEntry("dcaz_negC_1:run","dcaz_negC_1","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"dcaz1_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c7, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c7->SaveAs("dcaz_1_vs_run.png");//for C,A side and pos/neg particle
  c7->Update();
  
  ////////////////////////////////////////////////////////////////////////
  //Dcaz third parameter _2
  
  TCanvas *c8  = new  TCanvas("can8","can8",canvas_width,canvas_height); 
  c8->cd();
  c8->Update();
  c8->SetGrid(3);
  
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_posA_2:run:dcaz_posA_2_Err","",1,1,1,sh_gr0);
  DrawPlot(gr0, "dcaz_posA_2:run", marA1, 1.0, colPosA, "AP");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_negA_2:run:dcaz_negA_2_Err","",1,1,1,sh_gr1);
  DrawPlot(gr1, "dcaz_negA_2:run", marA2, 1.0, colNegA, "P");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_posC_2:run:dcaz_posC_2_Err","",1,1,1,sh_gr2);
  DrawPlot(gr2, "dcaz_posC_2:run", marC1, 1.0, colPosC, "P"); 
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz_negC_2:run:dcaz_negC_2_Err","",1,1,1,sh_gr3);
  DrawPlot(gr3, "dcaz_negC_2:run", marC2, 1.0, colNegC, "P");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"dcaz2_comb4:run","",1,1,1);
  DrawPlot(grComb, "grComb", marSum, 1.4, colSum, "P");    

  gr0->GetHistogram()->SetYTitle("DCAZs");
  ComputeRange(tree, "dcaz2_comb4", plotmean, plotoutlier);
  gr0->GetHistogram()->SetMinimum(-plotmean-2*plotoutlier);
  gr0->GetHistogram()->SetMaximum(+plotmean+2*plotoutlier);
//  gr0->GetHistogram()->SetMinimum(-0.1);
//  gr0->GetHistogram()->SetMaximum(0.1);
  gr0->GetHistogram()->SetTitleOffset(10);
  gr0->GetXaxis()->LabelsOption("v");
  gr0->SetName("dcaz_posA_2:run");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("dcaz_posA_2:run","dcaz_posA_2","p");
  leg->AddEntry("dcaz_negA_2:run","dcaz_negA_2","p");
  leg->AddEntry("dcaz_posC_2:run","dcaz_posC_2","p");
  leg->AddEntry("dcaz_negC_2:run","dcaz_negC_2","p");
  leg->AddEntry("grComb","combined = #sqrt{#Sigma x_{i}^{2}}","p");
  leg->Draw();
  
  PlotStatusLines(tree,"dcaz2_comb4:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c8, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c8->SaveAs("dcaz_2_vs_run.png");//for C,A side and pos/neg particle
  c8->Update();
  
  ///////////////////////////////////////////////////////////////////////////////////////////////
  // Plot Occupancy IROC, OROC, A,C side
  
  TCanvas *c9  = new  TCanvas("can9","can9",canvas_width,canvas_height);
  c9->cd();
  c9->Update();
  c9->SetGrid(3);
  
  TGraphErrors *gr0 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"iroc_A_side:run","",marA1,colPosA,1.0,sh_gr0);
  gr0->SetName("iroc_A_side:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"oroc_A_side:run","",marA2,colNegA,1.0,sh_gr1);
  gr1->SetName("gr1");
  TGraphErrors *gr2 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"iroc_C_side:run","",marC1,colPosC,1.0,sh_gr2);
  gr2->SetName("gr2");
  TGraphErrors *gr3 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"oroc_C_side:run","",marC2,colNegC,1.0,sh_gr3);
  gr3->SetName("gr3");
  
  gr0->GetHistogram()->SetYTitle("(nr_Chamber) - (nr_Chamber_lowOcc)");
  gr0->GetHistogram()->SetMinimum(14.0);
  gr0->GetHistogram()->SetMaximum(20.0);
  gr0->GetHistogram()->SetTitleOffset(10);
  gr0->GetXaxis()->LabelsOption("v");
  gr0->SetName("occ_AC_Side_IROC_OROC:run");
  
  gr0->Draw("AP");
  gr1->Draw("P");
  gr2->Draw("P");
  gr3->Draw("P");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("occ_AC_Side_IROC_OROC:run","iroc_A_side","p");
  leg->AddEntry("gr1","oroc_A_side","p");
  leg->AddEntry("gr2","iroc_C_side","p");
  leg->AddEntry("gr3","oroc_C_side","p");
  leg->Draw();
  
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c9, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c9->SaveAs("occ_AC_Side_IROC_OROC_vs_run.png");//for C,A side and IROC,OROC                                                                                                 
  c9->Update();
  
  /****** attachment parameters for A and C side ******/
  
  TCanvas *c10  = new  TCanvas("can10","can10",canvas_width,canvas_height);
  c10->cd();
  c10->Update();
  c10->SetGrid(3);
  
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"MIPattachSlopeA:run","",marA1,colPosA,1.0,sh_gr1);
  gr->SetName("MIPattachSlopeA:run");
  TGraphErrors *gr1 = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"MIPattachSlopeC*(-1):run","",marC1,colPosC,1.0,sh_gr2);
  gr1->SetName("gr1");
  TGraphErrors *grComb = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"MIPattachSlope_comb2:run","",marSum,colSum,1.2);
  grComb->SetName("grComb");
  
  gr->GetHistogram()->SetYTitle("Attachment parameter p1");
  gr->GetHistogram()->SetTitle("showing p1 of fit: p0 + p1 * tan(#theta)"); // info from Marian, 19.11.2014. to be checked in code that produces the tree.
  ComputeRange(tree, "MIPattachSlope_comb2", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  gr1->Draw("P");
  grComb->Draw("P");
  
  TLegend *leg = new TLegend(0.6,0.75,0.62*sqrt(norm_runs/entries),0.95,"","brNDC");
  leg->SetTextSize(0.03);
  leg->SetFillColor(10);
  leg->SetBorderSize(0);
  leg->AddEntry("MIPattachSlopeA:run","A Side","p");
  leg->AddEntry("gr1","C Side *(-1)","p");
  leg->AddEntry("grComb","combined = (#Sigma x_{i})/N","p");
  leg->Draw();
  
  PlotStatusLines(tree,"MIPattachSlope_comb2:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c10, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c10->SaveAs("MIPattachSlopes_vs_run.png");
  c10->Clear();
  
//  //C side
//  TCanvas *c11  = new  TCanvas("can11","can11",canvas_width,canvas_height);
//  c11->cd();
//  c11->Update();
//  c11->SetGrid(3);
//  
//  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"MIPattachSlopeC*(-1):run","",marA1,colPosA,1.0);
//  gr->SetName("MIPattachSlopeC:run");
//  gr->GetHistogram()->SetYTitle("Attachment parameter p1");
//  gr->GetHistogram()->SetMinimum(-10);
//  gr->GetHistogram()->SetMaximum(+10);
//  gr->GetXaxis()->LabelsOption("v");
//  gr->Draw("AP");
//  
//  PlotStatusLines(tree,"MIPattachSlopeC:run","");
//  PlotTimestamp(entries,entries_tree);
//  TStatToolkit::AddStatusPad(c11, statPadHeight, statPadBotMar);
//  TStatToolkit::DrawStatusGraphs(oaMultGr);
//  c11->SaveAs("MIPattachSlopeC_vs_run.png");
//  c11->Clear();
  
  /****** electron and MIPs separation ******/
  
  TCanvas *c12  = new  TCanvas("can12","can12",canvas_width,canvas_height);
  c12->cd();
  c12->Update();
  c12->SetGrid(3);
  
  TGraphErrors *gr = (TGraphErrors*) TStatToolkit::MakeGraphSparse(tree,"electroMIPSeparation:run","",marA1,colPosA,1.0);
  gr->SetName("electroMIPSeparation:run");
  gr->GetHistogram()->SetYTitle("Electron - MIP");
  ComputeRange(tree, "electroMIPSeparation", plotmean, plotoutlier);
  gr->GetHistogram()->SetMinimum(plotmean-3*plotoutlier);
  gr->GetHistogram()->SetMaximum(plotmean+3*plotoutlier);
  gr->GetXaxis()->LabelsOption("v");
  gr->Draw("AP");
  
  PlotStatusLines(tree,"electroMIPSeparation:run","");
  PlotTimestamp(entries,entries_tree);
  TStatToolkit::AddStatusPad(c12, statPadHeight, statPadBotMar);
  TStatToolkit::DrawStatusGraphs(oaMultGr);
  c12->SaveAs("ElectroMIPSeparation_vs_run.png");
  c12->Clear();
  
  //
  // save status into Tree and write to rootfile
  //
  if (statusTree) {
    cout << "updating trending rootfile with status tree... ";
    //tree->AddFriend(statusTree,"Tstatus");
    tree->Write("", TObject::kOverwrite);
    statusTree->Write();
    cout << " successful." << endl;
  }
  
  cout << "...done with trending." << endl;
  return 1;
}


Int_t PlotStatusLines(TTree * tree, const char * expr, const char * cut)
{
  //the function plots status lines
  char* alias = "varname_OutlierMin:varname_OutlierMax:varname_WarningMin:varname_WarningMax:varname_PhysAccMin:varname_PhysAccMax:varname_RobustMean";
  TMultiGraph* mgStatusLines = TStatToolkit::MakeStatusLines(tree,expr,cut,alias);
  
  if (mgStatusLines) mgStatusLines->Draw("l");
  else { cout << " no mgStatusLines available!" << endl; return 0; }
  
  return 1;
}

Int_t PlotTimestamp(const int nruns=0, const int nentries=0)
{
  //the function plots a timestamp, the used Aliroot version, and the number of runs
  TString sTimestamp  = gSystem->GetFromPipe("date");
  TString sAlirootVer = "AliRoot " + gSystem->GetFromPipe("wdir=`pwd`; cd $ALICE_ROOT; git describe; cd $wdir;");
  TLatex* latTime = new TLatex(0.99,0.95,sTimestamp.Data());
  latTime->SetTextSize(0.03);
  latTime->SetTextAlign(31);
  latTime->SetNDC();
  latTime->Draw("same");
  TLatex* latAliroot = new TLatex(0.99,0.91,sAlirootVer.Data());
  latAliroot->SetTextSize(0.03);
  latAliroot->SetTextAlign(31);
  latAliroot->SetNDC();
  latAliroot->Draw("same");
  TLatex* latNruns = new TLatex(0.99,0.87,Form("N shown runs: %i (tree entries: %i)",nruns,nentries));
  latNruns->SetTextSize(0.03);
  latNruns->SetTextAlign(31);
  latNruns->SetNDC();
  if (nruns>0) latNruns->Draw("same");
  return 1;
}

Int_t ComputeRange(TTree* tree, const char* varname, Float_t &plotmean, Float_t &plotoutlier)
{
  //the function computes useful numbers for plot ranges from the outlier criteria
  plotmean    = (Float_t) TFormula("fcn", tree->GetAlias(Form("%s_RobustMean",varname))).Eval(0);
  plotoutlier = (Float_t) TFormula("fcn", tree->GetAlias(Form("%s_OutlierMax",varname))).Eval(0) - plotmean;
  return 1;
}

Int_t DrawPlot(TGraphErrors* gr, TString nameHisto, Int_t markerStyle, Int_t markerSize, Int_t markerColor, TString drawMode)
{
  //the function draws the plots
  gr->SetName(nameHisto);
  gr->SetMarkerStyle(markerStyle);
  gr->SetMarkerSize(markerSize);
  gr->SetMarkerColor(markerColor);
  gr->Draw(drawMode);
  return 1;
}
 drawPerformanceTPCQAMatchTrends.C:1
 drawPerformanceTPCQAMatchTrends.C:2
 drawPerformanceTPCQAMatchTrends.C:3
 drawPerformanceTPCQAMatchTrends.C:4
 drawPerformanceTPCQAMatchTrends.C:5
 drawPerformanceTPCQAMatchTrends.C:6
 drawPerformanceTPCQAMatchTrends.C:7
 drawPerformanceTPCQAMatchTrends.C:8
 drawPerformanceTPCQAMatchTrends.C:9
 drawPerformanceTPCQAMatchTrends.C:10
 drawPerformanceTPCQAMatchTrends.C:11
 drawPerformanceTPCQAMatchTrends.C:12
 drawPerformanceTPCQAMatchTrends.C:13
 drawPerformanceTPCQAMatchTrends.C:14
 drawPerformanceTPCQAMatchTrends.C:15
 drawPerformanceTPCQAMatchTrends.C:16
 drawPerformanceTPCQAMatchTrends.C:17
 drawPerformanceTPCQAMatchTrends.C:18
 drawPerformanceTPCQAMatchTrends.C:19
 drawPerformanceTPCQAMatchTrends.C:20
 drawPerformanceTPCQAMatchTrends.C:21
 drawPerformanceTPCQAMatchTrends.C:22
 drawPerformanceTPCQAMatchTrends.C:23
 drawPerformanceTPCQAMatchTrends.C:24
 drawPerformanceTPCQAMatchTrends.C:25
 drawPerformanceTPCQAMatchTrends.C:26
 drawPerformanceTPCQAMatchTrends.C:27
 drawPerformanceTPCQAMatchTrends.C:28
 drawPerformanceTPCQAMatchTrends.C:29
 drawPerformanceTPCQAMatchTrends.C:30
 drawPerformanceTPCQAMatchTrends.C:31
 drawPerformanceTPCQAMatchTrends.C:32
 drawPerformanceTPCQAMatchTrends.C:33
 drawPerformanceTPCQAMatchTrends.C:34
 drawPerformanceTPCQAMatchTrends.C:35
 drawPerformanceTPCQAMatchTrends.C:36
 drawPerformanceTPCQAMatchTrends.C:37
 drawPerformanceTPCQAMatchTrends.C:38
 drawPerformanceTPCQAMatchTrends.C:39
 drawPerformanceTPCQAMatchTrends.C:40
 drawPerformanceTPCQAMatchTrends.C:41
 drawPerformanceTPCQAMatchTrends.C:42
 drawPerformanceTPCQAMatchTrends.C:43
 drawPerformanceTPCQAMatchTrends.C:44
 drawPerformanceTPCQAMatchTrends.C:45
 drawPerformanceTPCQAMatchTrends.C:46
 drawPerformanceTPCQAMatchTrends.C:47
 drawPerformanceTPCQAMatchTrends.C:48
 drawPerformanceTPCQAMatchTrends.C:49
 drawPerformanceTPCQAMatchTrends.C:50
 drawPerformanceTPCQAMatchTrends.C:51
 drawPerformanceTPCQAMatchTrends.C:52
 drawPerformanceTPCQAMatchTrends.C:53
 drawPerformanceTPCQAMatchTrends.C:54
 drawPerformanceTPCQAMatchTrends.C:55
 drawPerformanceTPCQAMatchTrends.C:56
 drawPerformanceTPCQAMatchTrends.C:57
 drawPerformanceTPCQAMatchTrends.C:58
 drawPerformanceTPCQAMatchTrends.C:59
 drawPerformanceTPCQAMatchTrends.C:60
 drawPerformanceTPCQAMatchTrends.C:61
 drawPerformanceTPCQAMatchTrends.C:62
 drawPerformanceTPCQAMatchTrends.C:63
 drawPerformanceTPCQAMatchTrends.C:64
 drawPerformanceTPCQAMatchTrends.C:65
 drawPerformanceTPCQAMatchTrends.C:66
 drawPerformanceTPCQAMatchTrends.C:67
 drawPerformanceTPCQAMatchTrends.C:68
 drawPerformanceTPCQAMatchTrends.C:69
 drawPerformanceTPCQAMatchTrends.C:70
 drawPerformanceTPCQAMatchTrends.C:71
 drawPerformanceTPCQAMatchTrends.C:72
 drawPerformanceTPCQAMatchTrends.C:73
 drawPerformanceTPCQAMatchTrends.C:74
 drawPerformanceTPCQAMatchTrends.C:75
 drawPerformanceTPCQAMatchTrends.C:76
 drawPerformanceTPCQAMatchTrends.C:77
 drawPerformanceTPCQAMatchTrends.C:78
 drawPerformanceTPCQAMatchTrends.C:79
 drawPerformanceTPCQAMatchTrends.C:80
 drawPerformanceTPCQAMatchTrends.C:81
 drawPerformanceTPCQAMatchTrends.C:82
 drawPerformanceTPCQAMatchTrends.C:83
 drawPerformanceTPCQAMatchTrends.C:84
 drawPerformanceTPCQAMatchTrends.C:85
 drawPerformanceTPCQAMatchTrends.C:86
 drawPerformanceTPCQAMatchTrends.C:87
 drawPerformanceTPCQAMatchTrends.C:88
 drawPerformanceTPCQAMatchTrends.C:89
 drawPerformanceTPCQAMatchTrends.C:90
 drawPerformanceTPCQAMatchTrends.C:91
 drawPerformanceTPCQAMatchTrends.C:92
 drawPerformanceTPCQAMatchTrends.C:93
 drawPerformanceTPCQAMatchTrends.C:94
 drawPerformanceTPCQAMatchTrends.C:95
 drawPerformanceTPCQAMatchTrends.C:96
 drawPerformanceTPCQAMatchTrends.C:97
 drawPerformanceTPCQAMatchTrends.C:98
 drawPerformanceTPCQAMatchTrends.C:99
 drawPerformanceTPCQAMatchTrends.C:100
 drawPerformanceTPCQAMatchTrends.C:101
 drawPerformanceTPCQAMatchTrends.C:102
 drawPerformanceTPCQAMatchTrends.C:103
 drawPerformanceTPCQAMatchTrends.C:104
 drawPerformanceTPCQAMatchTrends.C:105
 drawPerformanceTPCQAMatchTrends.C:106
 drawPerformanceTPCQAMatchTrends.C:107
 drawPerformanceTPCQAMatchTrends.C:108
 drawPerformanceTPCQAMatchTrends.C:109
 drawPerformanceTPCQAMatchTrends.C:110
 drawPerformanceTPCQAMatchTrends.C:111
 drawPerformanceTPCQAMatchTrends.C:112
 drawPerformanceTPCQAMatchTrends.C:113
 drawPerformanceTPCQAMatchTrends.C:114
 drawPerformanceTPCQAMatchTrends.C:115
 drawPerformanceTPCQAMatchTrends.C:116
 drawPerformanceTPCQAMatchTrends.C:117
 drawPerformanceTPCQAMatchTrends.C:118
 drawPerformanceTPCQAMatchTrends.C:119
 drawPerformanceTPCQAMatchTrends.C:120
 drawPerformanceTPCQAMatchTrends.C:121
 drawPerformanceTPCQAMatchTrends.C:122
 drawPerformanceTPCQAMatchTrends.C:123
 drawPerformanceTPCQAMatchTrends.C:124
 drawPerformanceTPCQAMatchTrends.C:125
 drawPerformanceTPCQAMatchTrends.C:126
 drawPerformanceTPCQAMatchTrends.C:127
 drawPerformanceTPCQAMatchTrends.C:128
 drawPerformanceTPCQAMatchTrends.C:129
 drawPerformanceTPCQAMatchTrends.C:130
 drawPerformanceTPCQAMatchTrends.C:131
 drawPerformanceTPCQAMatchTrends.C:132
 drawPerformanceTPCQAMatchTrends.C:133
 drawPerformanceTPCQAMatchTrends.C:134
 drawPerformanceTPCQAMatchTrends.C:135
 drawPerformanceTPCQAMatchTrends.C:136
 drawPerformanceTPCQAMatchTrends.C:137
 drawPerformanceTPCQAMatchTrends.C:138
 drawPerformanceTPCQAMatchTrends.C:139
 drawPerformanceTPCQAMatchTrends.C:140
 drawPerformanceTPCQAMatchTrends.C:141
 drawPerformanceTPCQAMatchTrends.C:142
 drawPerformanceTPCQAMatchTrends.C:143
 drawPerformanceTPCQAMatchTrends.C:144
 drawPerformanceTPCQAMatchTrends.C:145
 drawPerformanceTPCQAMatchTrends.C:146
 drawPerformanceTPCQAMatchTrends.C:147
 drawPerformanceTPCQAMatchTrends.C:148
 drawPerformanceTPCQAMatchTrends.C:149
 drawPerformanceTPCQAMatchTrends.C:150
 drawPerformanceTPCQAMatchTrends.C:151
 drawPerformanceTPCQAMatchTrends.C:152
 drawPerformanceTPCQAMatchTrends.C:153
 drawPerformanceTPCQAMatchTrends.C:154
 drawPerformanceTPCQAMatchTrends.C:155
 drawPerformanceTPCQAMatchTrends.C:156
 drawPerformanceTPCQAMatchTrends.C:157
 drawPerformanceTPCQAMatchTrends.C:158
 drawPerformanceTPCQAMatchTrends.C:159
 drawPerformanceTPCQAMatchTrends.C:160
 drawPerformanceTPCQAMatchTrends.C:161
 drawPerformanceTPCQAMatchTrends.C:162
 drawPerformanceTPCQAMatchTrends.C:163
 drawPerformanceTPCQAMatchTrends.C:164
 drawPerformanceTPCQAMatchTrends.C:165
 drawPerformanceTPCQAMatchTrends.C:166
 drawPerformanceTPCQAMatchTrends.C:167
 drawPerformanceTPCQAMatchTrends.C:168
 drawPerformanceTPCQAMatchTrends.C:169
 drawPerformanceTPCQAMatchTrends.C:170
 drawPerformanceTPCQAMatchTrends.C:171
 drawPerformanceTPCQAMatchTrends.C:172
 drawPerformanceTPCQAMatchTrends.C:173
 drawPerformanceTPCQAMatchTrends.C:174
 drawPerformanceTPCQAMatchTrends.C:175
 drawPerformanceTPCQAMatchTrends.C:176
 drawPerformanceTPCQAMatchTrends.C:177
 drawPerformanceTPCQAMatchTrends.C:178
 drawPerformanceTPCQAMatchTrends.C:179
 drawPerformanceTPCQAMatchTrends.C:180
 drawPerformanceTPCQAMatchTrends.C:181
 drawPerformanceTPCQAMatchTrends.C:182
 drawPerformanceTPCQAMatchTrends.C:183
 drawPerformanceTPCQAMatchTrends.C:184
 drawPerformanceTPCQAMatchTrends.C:185
 drawPerformanceTPCQAMatchTrends.C:186
 drawPerformanceTPCQAMatchTrends.C:187
 drawPerformanceTPCQAMatchTrends.C:188
 drawPerformanceTPCQAMatchTrends.C:189
 drawPerformanceTPCQAMatchTrends.C:190
 drawPerformanceTPCQAMatchTrends.C:191
 drawPerformanceTPCQAMatchTrends.C:192
 drawPerformanceTPCQAMatchTrends.C:193
 drawPerformanceTPCQAMatchTrends.C:194
 drawPerformanceTPCQAMatchTrends.C:195
 drawPerformanceTPCQAMatchTrends.C:196
 drawPerformanceTPCQAMatchTrends.C:197
 drawPerformanceTPCQAMatchTrends.C:198
 drawPerformanceTPCQAMatchTrends.C:199
 drawPerformanceTPCQAMatchTrends.C:200
 drawPerformanceTPCQAMatchTrends.C:201
 drawPerformanceTPCQAMatchTrends.C:202
 drawPerformanceTPCQAMatchTrends.C:203
 drawPerformanceTPCQAMatchTrends.C:204
 drawPerformanceTPCQAMatchTrends.C:205
 drawPerformanceTPCQAMatchTrends.C:206
 drawPerformanceTPCQAMatchTrends.C:207
 drawPerformanceTPCQAMatchTrends.C:208
 drawPerformanceTPCQAMatchTrends.C:209
 drawPerformanceTPCQAMatchTrends.C:210
 drawPerformanceTPCQAMatchTrends.C:211
 drawPerformanceTPCQAMatchTrends.C:212
 drawPerformanceTPCQAMatchTrends.C:213
 drawPerformanceTPCQAMatchTrends.C:214
 drawPerformanceTPCQAMatchTrends.C:215
 drawPerformanceTPCQAMatchTrends.C:216
 drawPerformanceTPCQAMatchTrends.C:217
 drawPerformanceTPCQAMatchTrends.C:218
 drawPerformanceTPCQAMatchTrends.C:219
 drawPerformanceTPCQAMatchTrends.C:220
 drawPerformanceTPCQAMatchTrends.C:221
 drawPerformanceTPCQAMatchTrends.C:222
 drawPerformanceTPCQAMatchTrends.C:223
 drawPerformanceTPCQAMatchTrends.C:224
 drawPerformanceTPCQAMatchTrends.C:225
 drawPerformanceTPCQAMatchTrends.C:226
 drawPerformanceTPCQAMatchTrends.C:227
 drawPerformanceTPCQAMatchTrends.C:228
 drawPerformanceTPCQAMatchTrends.C:229
 drawPerformanceTPCQAMatchTrends.C:230
 drawPerformanceTPCQAMatchTrends.C:231
 drawPerformanceTPCQAMatchTrends.C:232
 drawPerformanceTPCQAMatchTrends.C:233
 drawPerformanceTPCQAMatchTrends.C:234
 drawPerformanceTPCQAMatchTrends.C:235
 drawPerformanceTPCQAMatchTrends.C:236
 drawPerformanceTPCQAMatchTrends.C:237
 drawPerformanceTPCQAMatchTrends.C:238
 drawPerformanceTPCQAMatchTrends.C:239
 drawPerformanceTPCQAMatchTrends.C:240
 drawPerformanceTPCQAMatchTrends.C:241
 drawPerformanceTPCQAMatchTrends.C:242
 drawPerformanceTPCQAMatchTrends.C:243
 drawPerformanceTPCQAMatchTrends.C:244
 drawPerformanceTPCQAMatchTrends.C:245
 drawPerformanceTPCQAMatchTrends.C:246
 drawPerformanceTPCQAMatchTrends.C:247
 drawPerformanceTPCQAMatchTrends.C:248
 drawPerformanceTPCQAMatchTrends.C:249
 drawPerformanceTPCQAMatchTrends.C:250
 drawPerformanceTPCQAMatchTrends.C:251
 drawPerformanceTPCQAMatchTrends.C:252
 drawPerformanceTPCQAMatchTrends.C:253
 drawPerformanceTPCQAMatchTrends.C:254
 drawPerformanceTPCQAMatchTrends.C:255
 drawPerformanceTPCQAMatchTrends.C:256
 drawPerformanceTPCQAMatchTrends.C:257
 drawPerformanceTPCQAMatchTrends.C:258
 drawPerformanceTPCQAMatchTrends.C:259
 drawPerformanceTPCQAMatchTrends.C:260
 drawPerformanceTPCQAMatchTrends.C:261
 drawPerformanceTPCQAMatchTrends.C:262
 drawPerformanceTPCQAMatchTrends.C:263
 drawPerformanceTPCQAMatchTrends.C:264
 drawPerformanceTPCQAMatchTrends.C:265
 drawPerformanceTPCQAMatchTrends.C:266
 drawPerformanceTPCQAMatchTrends.C:267
 drawPerformanceTPCQAMatchTrends.C:268
 drawPerformanceTPCQAMatchTrends.C:269
 drawPerformanceTPCQAMatchTrends.C:270
 drawPerformanceTPCQAMatchTrends.C:271
 drawPerformanceTPCQAMatchTrends.C:272
 drawPerformanceTPCQAMatchTrends.C:273
 drawPerformanceTPCQAMatchTrends.C:274
 drawPerformanceTPCQAMatchTrends.C:275
 drawPerformanceTPCQAMatchTrends.C:276
 drawPerformanceTPCQAMatchTrends.C:277
 drawPerformanceTPCQAMatchTrends.C:278
 drawPerformanceTPCQAMatchTrends.C:279
 drawPerformanceTPCQAMatchTrends.C:280
 drawPerformanceTPCQAMatchTrends.C:281
 drawPerformanceTPCQAMatchTrends.C:282
 drawPerformanceTPCQAMatchTrends.C:283
 drawPerformanceTPCQAMatchTrends.C:284
 drawPerformanceTPCQAMatchTrends.C:285
 drawPerformanceTPCQAMatchTrends.C:286
 drawPerformanceTPCQAMatchTrends.C:287
 drawPerformanceTPCQAMatchTrends.C:288
 drawPerformanceTPCQAMatchTrends.C:289
 drawPerformanceTPCQAMatchTrends.C:290
 drawPerformanceTPCQAMatchTrends.C:291
 drawPerformanceTPCQAMatchTrends.C:292
 drawPerformanceTPCQAMatchTrends.C:293
 drawPerformanceTPCQAMatchTrends.C:294
 drawPerformanceTPCQAMatchTrends.C:295
 drawPerformanceTPCQAMatchTrends.C:296
 drawPerformanceTPCQAMatchTrends.C:297
 drawPerformanceTPCQAMatchTrends.C:298
 drawPerformanceTPCQAMatchTrends.C:299
 drawPerformanceTPCQAMatchTrends.C:300
 drawPerformanceTPCQAMatchTrends.C:301
 drawPerformanceTPCQAMatchTrends.C:302
 drawPerformanceTPCQAMatchTrends.C:303
 drawPerformanceTPCQAMatchTrends.C:304
 drawPerformanceTPCQAMatchTrends.C:305
 drawPerformanceTPCQAMatchTrends.C:306
 drawPerformanceTPCQAMatchTrends.C:307
 drawPerformanceTPCQAMatchTrends.C:308
 drawPerformanceTPCQAMatchTrends.C:309
 drawPerformanceTPCQAMatchTrends.C:310
 drawPerformanceTPCQAMatchTrends.C:311
 drawPerformanceTPCQAMatchTrends.C:312
 drawPerformanceTPCQAMatchTrends.C:313
 drawPerformanceTPCQAMatchTrends.C:314
 drawPerformanceTPCQAMatchTrends.C:315
 drawPerformanceTPCQAMatchTrends.C:316
 drawPerformanceTPCQAMatchTrends.C:317
 drawPerformanceTPCQAMatchTrends.C:318
 drawPerformanceTPCQAMatchTrends.C:319
 drawPerformanceTPCQAMatchTrends.C:320
 drawPerformanceTPCQAMatchTrends.C:321
 drawPerformanceTPCQAMatchTrends.C:322
 drawPerformanceTPCQAMatchTrends.C:323
 drawPerformanceTPCQAMatchTrends.C:324
 drawPerformanceTPCQAMatchTrends.C:325
 drawPerformanceTPCQAMatchTrends.C:326
 drawPerformanceTPCQAMatchTrends.C:327
 drawPerformanceTPCQAMatchTrends.C:328
 drawPerformanceTPCQAMatchTrends.C:329
 drawPerformanceTPCQAMatchTrends.C:330
 drawPerformanceTPCQAMatchTrends.C:331
 drawPerformanceTPCQAMatchTrends.C:332
 drawPerformanceTPCQAMatchTrends.C:333
 drawPerformanceTPCQAMatchTrends.C:334
 drawPerformanceTPCQAMatchTrends.C:335
 drawPerformanceTPCQAMatchTrends.C:336
 drawPerformanceTPCQAMatchTrends.C:337
 drawPerformanceTPCQAMatchTrends.C:338
 drawPerformanceTPCQAMatchTrends.C:339
 drawPerformanceTPCQAMatchTrends.C:340
 drawPerformanceTPCQAMatchTrends.C:341
 drawPerformanceTPCQAMatchTrends.C:342
 drawPerformanceTPCQAMatchTrends.C:343
 drawPerformanceTPCQAMatchTrends.C:344
 drawPerformanceTPCQAMatchTrends.C:345
 drawPerformanceTPCQAMatchTrends.C:346
 drawPerformanceTPCQAMatchTrends.C:347
 drawPerformanceTPCQAMatchTrends.C:348
 drawPerformanceTPCQAMatchTrends.C:349
 drawPerformanceTPCQAMatchTrends.C:350
 drawPerformanceTPCQAMatchTrends.C:351
 drawPerformanceTPCQAMatchTrends.C:352
 drawPerformanceTPCQAMatchTrends.C:353
 drawPerformanceTPCQAMatchTrends.C:354
 drawPerformanceTPCQAMatchTrends.C:355
 drawPerformanceTPCQAMatchTrends.C:356
 drawPerformanceTPCQAMatchTrends.C:357
 drawPerformanceTPCQAMatchTrends.C:358
 drawPerformanceTPCQAMatchTrends.C:359
 drawPerformanceTPCQAMatchTrends.C:360
 drawPerformanceTPCQAMatchTrends.C:361
 drawPerformanceTPCQAMatchTrends.C:362
 drawPerformanceTPCQAMatchTrends.C:363
 drawPerformanceTPCQAMatchTrends.C:364
 drawPerformanceTPCQAMatchTrends.C:365
 drawPerformanceTPCQAMatchTrends.C:366
 drawPerformanceTPCQAMatchTrends.C:367
 drawPerformanceTPCQAMatchTrends.C:368
 drawPerformanceTPCQAMatchTrends.C:369
 drawPerformanceTPCQAMatchTrends.C:370
 drawPerformanceTPCQAMatchTrends.C:371
 drawPerformanceTPCQAMatchTrends.C:372
 drawPerformanceTPCQAMatchTrends.C:373
 drawPerformanceTPCQAMatchTrends.C:374
 drawPerformanceTPCQAMatchTrends.C:375
 drawPerformanceTPCQAMatchTrends.C:376
 drawPerformanceTPCQAMatchTrends.C:377
 drawPerformanceTPCQAMatchTrends.C:378
 drawPerformanceTPCQAMatchTrends.C:379
 drawPerformanceTPCQAMatchTrends.C:380
 drawPerformanceTPCQAMatchTrends.C:381
 drawPerformanceTPCQAMatchTrends.C:382
 drawPerformanceTPCQAMatchTrends.C:383
 drawPerformanceTPCQAMatchTrends.C:384
 drawPerformanceTPCQAMatchTrends.C:385
 drawPerformanceTPCQAMatchTrends.C:386
 drawPerformanceTPCQAMatchTrends.C:387
 drawPerformanceTPCQAMatchTrends.C:388
 drawPerformanceTPCQAMatchTrends.C:389
 drawPerformanceTPCQAMatchTrends.C:390
 drawPerformanceTPCQAMatchTrends.C:391
 drawPerformanceTPCQAMatchTrends.C:392
 drawPerformanceTPCQAMatchTrends.C:393
 drawPerformanceTPCQAMatchTrends.C:394
 drawPerformanceTPCQAMatchTrends.C:395
 drawPerformanceTPCQAMatchTrends.C:396
 drawPerformanceTPCQAMatchTrends.C:397
 drawPerformanceTPCQAMatchTrends.C:398
 drawPerformanceTPCQAMatchTrends.C:399
 drawPerformanceTPCQAMatchTrends.C:400
 drawPerformanceTPCQAMatchTrends.C:401
 drawPerformanceTPCQAMatchTrends.C:402
 drawPerformanceTPCQAMatchTrends.C:403
 drawPerformanceTPCQAMatchTrends.C:404
 drawPerformanceTPCQAMatchTrends.C:405
 drawPerformanceTPCQAMatchTrends.C:406
 drawPerformanceTPCQAMatchTrends.C:407
 drawPerformanceTPCQAMatchTrends.C:408
 drawPerformanceTPCQAMatchTrends.C:409
 drawPerformanceTPCQAMatchTrends.C:410
 drawPerformanceTPCQAMatchTrends.C:411
 drawPerformanceTPCQAMatchTrends.C:412
 drawPerformanceTPCQAMatchTrends.C:413
 drawPerformanceTPCQAMatchTrends.C:414
 drawPerformanceTPCQAMatchTrends.C:415
 drawPerformanceTPCQAMatchTrends.C:416
 drawPerformanceTPCQAMatchTrends.C:417
 drawPerformanceTPCQAMatchTrends.C:418
 drawPerformanceTPCQAMatchTrends.C:419
 drawPerformanceTPCQAMatchTrends.C:420
 drawPerformanceTPCQAMatchTrends.C:421
 drawPerformanceTPCQAMatchTrends.C:422
 drawPerformanceTPCQAMatchTrends.C:423
 drawPerformanceTPCQAMatchTrends.C:424
 drawPerformanceTPCQAMatchTrends.C:425
 drawPerformanceTPCQAMatchTrends.C:426
 drawPerformanceTPCQAMatchTrends.C:427
 drawPerformanceTPCQAMatchTrends.C:428
 drawPerformanceTPCQAMatchTrends.C:429
 drawPerformanceTPCQAMatchTrends.C:430
 drawPerformanceTPCQAMatchTrends.C:431
 drawPerformanceTPCQAMatchTrends.C:432
 drawPerformanceTPCQAMatchTrends.C:433
 drawPerformanceTPCQAMatchTrends.C:434
 drawPerformanceTPCQAMatchTrends.C:435
 drawPerformanceTPCQAMatchTrends.C:436
 drawPerformanceTPCQAMatchTrends.C:437
 drawPerformanceTPCQAMatchTrends.C:438
 drawPerformanceTPCQAMatchTrends.C:439
 drawPerformanceTPCQAMatchTrends.C:440
 drawPerformanceTPCQAMatchTrends.C:441
 drawPerformanceTPCQAMatchTrends.C:442
 drawPerformanceTPCQAMatchTrends.C:443
 drawPerformanceTPCQAMatchTrends.C:444
 drawPerformanceTPCQAMatchTrends.C:445
 drawPerformanceTPCQAMatchTrends.C:446
 drawPerformanceTPCQAMatchTrends.C:447
 drawPerformanceTPCQAMatchTrends.C:448
 drawPerformanceTPCQAMatchTrends.C:449
 drawPerformanceTPCQAMatchTrends.C:450
 drawPerformanceTPCQAMatchTrends.C:451
 drawPerformanceTPCQAMatchTrends.C:452
 drawPerformanceTPCQAMatchTrends.C:453
 drawPerformanceTPCQAMatchTrends.C:454
 drawPerformanceTPCQAMatchTrends.C:455
 drawPerformanceTPCQAMatchTrends.C:456
 drawPerformanceTPCQAMatchTrends.C:457
 drawPerformanceTPCQAMatchTrends.C:458
 drawPerformanceTPCQAMatchTrends.C:459
 drawPerformanceTPCQAMatchTrends.C:460
 drawPerformanceTPCQAMatchTrends.C:461
 drawPerformanceTPCQAMatchTrends.C:462
 drawPerformanceTPCQAMatchTrends.C:463
 drawPerformanceTPCQAMatchTrends.C:464
 drawPerformanceTPCQAMatchTrends.C:465
 drawPerformanceTPCQAMatchTrends.C:466
 drawPerformanceTPCQAMatchTrends.C:467
 drawPerformanceTPCQAMatchTrends.C:468
 drawPerformanceTPCQAMatchTrends.C:469
 drawPerformanceTPCQAMatchTrends.C:470
 drawPerformanceTPCQAMatchTrends.C:471
 drawPerformanceTPCQAMatchTrends.C:472
 drawPerformanceTPCQAMatchTrends.C:473
 drawPerformanceTPCQAMatchTrends.C:474
 drawPerformanceTPCQAMatchTrends.C:475
 drawPerformanceTPCQAMatchTrends.C:476
 drawPerformanceTPCQAMatchTrends.C:477
 drawPerformanceTPCQAMatchTrends.C:478
 drawPerformanceTPCQAMatchTrends.C:479
 drawPerformanceTPCQAMatchTrends.C:480
 drawPerformanceTPCQAMatchTrends.C:481
 drawPerformanceTPCQAMatchTrends.C:482
 drawPerformanceTPCQAMatchTrends.C:483
 drawPerformanceTPCQAMatchTrends.C:484
 drawPerformanceTPCQAMatchTrends.C:485
 drawPerformanceTPCQAMatchTrends.C:486
 drawPerformanceTPCQAMatchTrends.C:487
 drawPerformanceTPCQAMatchTrends.C:488
 drawPerformanceTPCQAMatchTrends.C:489
 drawPerformanceTPCQAMatchTrends.C:490
 drawPerformanceTPCQAMatchTrends.C:491
 drawPerformanceTPCQAMatchTrends.C:492
 drawPerformanceTPCQAMatchTrends.C:493
 drawPerformanceTPCQAMatchTrends.C:494
 drawPerformanceTPCQAMatchTrends.C:495
 drawPerformanceTPCQAMatchTrends.C:496
 drawPerformanceTPCQAMatchTrends.C:497
 drawPerformanceTPCQAMatchTrends.C:498
 drawPerformanceTPCQAMatchTrends.C:499
 drawPerformanceTPCQAMatchTrends.C:500
 drawPerformanceTPCQAMatchTrends.C:501
 drawPerformanceTPCQAMatchTrends.C:502
 drawPerformanceTPCQAMatchTrends.C:503
 drawPerformanceTPCQAMatchTrends.C:504
 drawPerformanceTPCQAMatchTrends.C:505
 drawPerformanceTPCQAMatchTrends.C:506
 drawPerformanceTPCQAMatchTrends.C:507
 drawPerformanceTPCQAMatchTrends.C:508
 drawPerformanceTPCQAMatchTrends.C:509
 drawPerformanceTPCQAMatchTrends.C:510
 drawPerformanceTPCQAMatchTrends.C:511
 drawPerformanceTPCQAMatchTrends.C:512
 drawPerformanceTPCQAMatchTrends.C:513
 drawPerformanceTPCQAMatchTrends.C:514
 drawPerformanceTPCQAMatchTrends.C:515
 drawPerformanceTPCQAMatchTrends.C:516
 drawPerformanceTPCQAMatchTrends.C:517
 drawPerformanceTPCQAMatchTrends.C:518
 drawPerformanceTPCQAMatchTrends.C:519
 drawPerformanceTPCQAMatchTrends.C:520
 drawPerformanceTPCQAMatchTrends.C:521
 drawPerformanceTPCQAMatchTrends.C:522
 drawPerformanceTPCQAMatchTrends.C:523
 drawPerformanceTPCQAMatchTrends.C:524
 drawPerformanceTPCQAMatchTrends.C:525
 drawPerformanceTPCQAMatchTrends.C:526
 drawPerformanceTPCQAMatchTrends.C:527
 drawPerformanceTPCQAMatchTrends.C:528
 drawPerformanceTPCQAMatchTrends.C:529
 drawPerformanceTPCQAMatchTrends.C:530
 drawPerformanceTPCQAMatchTrends.C:531
 drawPerformanceTPCQAMatchTrends.C:532
 drawPerformanceTPCQAMatchTrends.C:533
 drawPerformanceTPCQAMatchTrends.C:534
 drawPerformanceTPCQAMatchTrends.C:535
 drawPerformanceTPCQAMatchTrends.C:536
 drawPerformanceTPCQAMatchTrends.C:537
 drawPerformanceTPCQAMatchTrends.C:538
 drawPerformanceTPCQAMatchTrends.C:539
 drawPerformanceTPCQAMatchTrends.C:540
 drawPerformanceTPCQAMatchTrends.C:541
 drawPerformanceTPCQAMatchTrends.C:542
 drawPerformanceTPCQAMatchTrends.C:543
 drawPerformanceTPCQAMatchTrends.C:544
 drawPerformanceTPCQAMatchTrends.C:545
 drawPerformanceTPCQAMatchTrends.C:546
 drawPerformanceTPCQAMatchTrends.C:547
 drawPerformanceTPCQAMatchTrends.C:548
 drawPerformanceTPCQAMatchTrends.C:549
 drawPerformanceTPCQAMatchTrends.C:550
 drawPerformanceTPCQAMatchTrends.C:551
 drawPerformanceTPCQAMatchTrends.C:552
 drawPerformanceTPCQAMatchTrends.C:553
 drawPerformanceTPCQAMatchTrends.C:554
 drawPerformanceTPCQAMatchTrends.C:555
 drawPerformanceTPCQAMatchTrends.C:556
 drawPerformanceTPCQAMatchTrends.C:557
 drawPerformanceTPCQAMatchTrends.C:558
 drawPerformanceTPCQAMatchTrends.C:559
 drawPerformanceTPCQAMatchTrends.C:560
 drawPerformanceTPCQAMatchTrends.C:561
 drawPerformanceTPCQAMatchTrends.C:562
 drawPerformanceTPCQAMatchTrends.C:563
 drawPerformanceTPCQAMatchTrends.C:564
 drawPerformanceTPCQAMatchTrends.C:565
 drawPerformanceTPCQAMatchTrends.C:566
 drawPerformanceTPCQAMatchTrends.C:567
 drawPerformanceTPCQAMatchTrends.C:568
 drawPerformanceTPCQAMatchTrends.C:569
 drawPerformanceTPCQAMatchTrends.C:570
 drawPerformanceTPCQAMatchTrends.C:571
 drawPerformanceTPCQAMatchTrends.C:572
 drawPerformanceTPCQAMatchTrends.C:573
 drawPerformanceTPCQAMatchTrends.C:574
 drawPerformanceTPCQAMatchTrends.C:575
 drawPerformanceTPCQAMatchTrends.C:576
 drawPerformanceTPCQAMatchTrends.C:577
 drawPerformanceTPCQAMatchTrends.C:578
 drawPerformanceTPCQAMatchTrends.C:579
 drawPerformanceTPCQAMatchTrends.C:580
 drawPerformanceTPCQAMatchTrends.C:581
 drawPerformanceTPCQAMatchTrends.C:582
 drawPerformanceTPCQAMatchTrends.C:583
 drawPerformanceTPCQAMatchTrends.C:584
 drawPerformanceTPCQAMatchTrends.C:585
 drawPerformanceTPCQAMatchTrends.C:586
 drawPerformanceTPCQAMatchTrends.C:587
 drawPerformanceTPCQAMatchTrends.C:588
 drawPerformanceTPCQAMatchTrends.C:589
 drawPerformanceTPCQAMatchTrends.C:590
 drawPerformanceTPCQAMatchTrends.C:591
 drawPerformanceTPCQAMatchTrends.C:592
 drawPerformanceTPCQAMatchTrends.C:593
 drawPerformanceTPCQAMatchTrends.C:594
 drawPerformanceTPCQAMatchTrends.C:595
 drawPerformanceTPCQAMatchTrends.C:596
 drawPerformanceTPCQAMatchTrends.C:597
 drawPerformanceTPCQAMatchTrends.C:598
 drawPerformanceTPCQAMatchTrends.C:599
 drawPerformanceTPCQAMatchTrends.C:600
 drawPerformanceTPCQAMatchTrends.C:601
 drawPerformanceTPCQAMatchTrends.C:602
 drawPerformanceTPCQAMatchTrends.C:603
 drawPerformanceTPCQAMatchTrends.C:604
 drawPerformanceTPCQAMatchTrends.C:605
 drawPerformanceTPCQAMatchTrends.C:606
 drawPerformanceTPCQAMatchTrends.C:607
 drawPerformanceTPCQAMatchTrends.C:608
 drawPerformanceTPCQAMatchTrends.C:609
 drawPerformanceTPCQAMatchTrends.C:610
 drawPerformanceTPCQAMatchTrends.C:611
 drawPerformanceTPCQAMatchTrends.C:612
 drawPerformanceTPCQAMatchTrends.C:613
 drawPerformanceTPCQAMatchTrends.C:614
 drawPerformanceTPCQAMatchTrends.C:615
 drawPerformanceTPCQAMatchTrends.C:616
 drawPerformanceTPCQAMatchTrends.C:617
 drawPerformanceTPCQAMatchTrends.C:618
 drawPerformanceTPCQAMatchTrends.C:619
 drawPerformanceTPCQAMatchTrends.C:620
 drawPerformanceTPCQAMatchTrends.C:621
 drawPerformanceTPCQAMatchTrends.C:622
 drawPerformanceTPCQAMatchTrends.C:623
 drawPerformanceTPCQAMatchTrends.C:624
 drawPerformanceTPCQAMatchTrends.C:625
 drawPerformanceTPCQAMatchTrends.C:626
 drawPerformanceTPCQAMatchTrends.C:627
 drawPerformanceTPCQAMatchTrends.C:628
 drawPerformanceTPCQAMatchTrends.C:629
 drawPerformanceTPCQAMatchTrends.C:630
 drawPerformanceTPCQAMatchTrends.C:631
 drawPerformanceTPCQAMatchTrends.C:632
 drawPerformanceTPCQAMatchTrends.C:633
 drawPerformanceTPCQAMatchTrends.C:634
 drawPerformanceTPCQAMatchTrends.C:635
 drawPerformanceTPCQAMatchTrends.C:636
 drawPerformanceTPCQAMatchTrends.C:637
 drawPerformanceTPCQAMatchTrends.C:638
 drawPerformanceTPCQAMatchTrends.C:639
 drawPerformanceTPCQAMatchTrends.C:640
 drawPerformanceTPCQAMatchTrends.C:641
 drawPerformanceTPCQAMatchTrends.C:642
 drawPerformanceTPCQAMatchTrends.C:643
 drawPerformanceTPCQAMatchTrends.C:644
 drawPerformanceTPCQAMatchTrends.C:645
 drawPerformanceTPCQAMatchTrends.C:646
 drawPerformanceTPCQAMatchTrends.C:647
 drawPerformanceTPCQAMatchTrends.C:648
 drawPerformanceTPCQAMatchTrends.C:649
 drawPerformanceTPCQAMatchTrends.C:650
 drawPerformanceTPCQAMatchTrends.C:651
 drawPerformanceTPCQAMatchTrends.C:652
 drawPerformanceTPCQAMatchTrends.C:653
 drawPerformanceTPCQAMatchTrends.C:654
 drawPerformanceTPCQAMatchTrends.C:655
 drawPerformanceTPCQAMatchTrends.C:656
 drawPerformanceTPCQAMatchTrends.C:657
 drawPerformanceTPCQAMatchTrends.C:658
 drawPerformanceTPCQAMatchTrends.C:659
 drawPerformanceTPCQAMatchTrends.C:660
 drawPerformanceTPCQAMatchTrends.C:661
 drawPerformanceTPCQAMatchTrends.C:662
 drawPerformanceTPCQAMatchTrends.C:663
 drawPerformanceTPCQAMatchTrends.C:664
 drawPerformanceTPCQAMatchTrends.C:665
 drawPerformanceTPCQAMatchTrends.C:666
 drawPerformanceTPCQAMatchTrends.C:667
 drawPerformanceTPCQAMatchTrends.C:668
 drawPerformanceTPCQAMatchTrends.C:669
 drawPerformanceTPCQAMatchTrends.C:670
 drawPerformanceTPCQAMatchTrends.C:671
 drawPerformanceTPCQAMatchTrends.C:672
 drawPerformanceTPCQAMatchTrends.C:673
 drawPerformanceTPCQAMatchTrends.C:674
 drawPerformanceTPCQAMatchTrends.C:675
 drawPerformanceTPCQAMatchTrends.C:676
 drawPerformanceTPCQAMatchTrends.C:677
 drawPerformanceTPCQAMatchTrends.C:678
 drawPerformanceTPCQAMatchTrends.C:679
 drawPerformanceTPCQAMatchTrends.C:680
 drawPerformanceTPCQAMatchTrends.C:681
 drawPerformanceTPCQAMatchTrends.C:682
 drawPerformanceTPCQAMatchTrends.C:683
 drawPerformanceTPCQAMatchTrends.C:684
 drawPerformanceTPCQAMatchTrends.C:685
 drawPerformanceTPCQAMatchTrends.C:686
 drawPerformanceTPCQAMatchTrends.C:687
 drawPerformanceTPCQAMatchTrends.C:688
 drawPerformanceTPCQAMatchTrends.C:689
 drawPerformanceTPCQAMatchTrends.C:690
 drawPerformanceTPCQAMatchTrends.C:691
 drawPerformanceTPCQAMatchTrends.C:692
 drawPerformanceTPCQAMatchTrends.C:693
 drawPerformanceTPCQAMatchTrends.C:694
 drawPerformanceTPCQAMatchTrends.C:695
 drawPerformanceTPCQAMatchTrends.C:696
 drawPerformanceTPCQAMatchTrends.C:697
 drawPerformanceTPCQAMatchTrends.C:698
 drawPerformanceTPCQAMatchTrends.C:699
 drawPerformanceTPCQAMatchTrends.C:700
 drawPerformanceTPCQAMatchTrends.C:701
 drawPerformanceTPCQAMatchTrends.C:702
 drawPerformanceTPCQAMatchTrends.C:703
 drawPerformanceTPCQAMatchTrends.C:704
 drawPerformanceTPCQAMatchTrends.C:705
 drawPerformanceTPCQAMatchTrends.C:706
 drawPerformanceTPCQAMatchTrends.C:707
 drawPerformanceTPCQAMatchTrends.C:708
 drawPerformanceTPCQAMatchTrends.C:709
 drawPerformanceTPCQAMatchTrends.C:710
 drawPerformanceTPCQAMatchTrends.C:711
 drawPerformanceTPCQAMatchTrends.C:712
 drawPerformanceTPCQAMatchTrends.C:713
 drawPerformanceTPCQAMatchTrends.C:714
 drawPerformanceTPCQAMatchTrends.C:715
 drawPerformanceTPCQAMatchTrends.C:716
 drawPerformanceTPCQAMatchTrends.C:717
 drawPerformanceTPCQAMatchTrends.C:718
 drawPerformanceTPCQAMatchTrends.C:719
 drawPerformanceTPCQAMatchTrends.C:720
 drawPerformanceTPCQAMatchTrends.C:721
 drawPerformanceTPCQAMatchTrends.C:722
 drawPerformanceTPCQAMatchTrends.C:723
 drawPerformanceTPCQAMatchTrends.C:724
 drawPerformanceTPCQAMatchTrends.C:725
 drawPerformanceTPCQAMatchTrends.C:726
 drawPerformanceTPCQAMatchTrends.C:727
 drawPerformanceTPCQAMatchTrends.C:728
 drawPerformanceTPCQAMatchTrends.C:729
 drawPerformanceTPCQAMatchTrends.C:730
 drawPerformanceTPCQAMatchTrends.C:731
 drawPerformanceTPCQAMatchTrends.C:732
 drawPerformanceTPCQAMatchTrends.C:733
 drawPerformanceTPCQAMatchTrends.C:734
 drawPerformanceTPCQAMatchTrends.C:735
 drawPerformanceTPCQAMatchTrends.C:736
 drawPerformanceTPCQAMatchTrends.C:737
 drawPerformanceTPCQAMatchTrends.C:738
 drawPerformanceTPCQAMatchTrends.C:739
 drawPerformanceTPCQAMatchTrends.C:740
 drawPerformanceTPCQAMatchTrends.C:741
 drawPerformanceTPCQAMatchTrends.C:742
 drawPerformanceTPCQAMatchTrends.C:743
 drawPerformanceTPCQAMatchTrends.C:744
 drawPerformanceTPCQAMatchTrends.C:745
 drawPerformanceTPCQAMatchTrends.C:746
 drawPerformanceTPCQAMatchTrends.C:747
 drawPerformanceTPCQAMatchTrends.C:748
 drawPerformanceTPCQAMatchTrends.C:749
 drawPerformanceTPCQAMatchTrends.C:750
 drawPerformanceTPCQAMatchTrends.C:751
 drawPerformanceTPCQAMatchTrends.C:752
 drawPerformanceTPCQAMatchTrends.C:753
 drawPerformanceTPCQAMatchTrends.C:754
 drawPerformanceTPCQAMatchTrends.C:755
 drawPerformanceTPCQAMatchTrends.C:756
 drawPerformanceTPCQAMatchTrends.C:757
 drawPerformanceTPCQAMatchTrends.C:758
 drawPerformanceTPCQAMatchTrends.C:759
 drawPerformanceTPCQAMatchTrends.C:760
 drawPerformanceTPCQAMatchTrends.C:761
 drawPerformanceTPCQAMatchTrends.C:762
 drawPerformanceTPCQAMatchTrends.C:763
 drawPerformanceTPCQAMatchTrends.C:764
 drawPerformanceTPCQAMatchTrends.C:765
 drawPerformanceTPCQAMatchTrends.C:766
 drawPerformanceTPCQAMatchTrends.C:767
 drawPerformanceTPCQAMatchTrends.C:768
 drawPerformanceTPCQAMatchTrends.C:769
 drawPerformanceTPCQAMatchTrends.C:770
 drawPerformanceTPCQAMatchTrends.C:771
 drawPerformanceTPCQAMatchTrends.C:772
 drawPerformanceTPCQAMatchTrends.C:773
 drawPerformanceTPCQAMatchTrends.C:774
 drawPerformanceTPCQAMatchTrends.C:775
 drawPerformanceTPCQAMatchTrends.C:776
 drawPerformanceTPCQAMatchTrends.C:777
 drawPerformanceTPCQAMatchTrends.C:778
 drawPerformanceTPCQAMatchTrends.C:779
 drawPerformanceTPCQAMatchTrends.C:780
 drawPerformanceTPCQAMatchTrends.C:781
 drawPerformanceTPCQAMatchTrends.C:782
 drawPerformanceTPCQAMatchTrends.C:783
 drawPerformanceTPCQAMatchTrends.C:784
 drawPerformanceTPCQAMatchTrends.C:785
 drawPerformanceTPCQAMatchTrends.C:786
 drawPerformanceTPCQAMatchTrends.C:787
 drawPerformanceTPCQAMatchTrends.C:788
 drawPerformanceTPCQAMatchTrends.C:789
 drawPerformanceTPCQAMatchTrends.C:790
 drawPerformanceTPCQAMatchTrends.C:791
 drawPerformanceTPCQAMatchTrends.C:792
 drawPerformanceTPCQAMatchTrends.C:793
 drawPerformanceTPCQAMatchTrends.C:794
 drawPerformanceTPCQAMatchTrends.C:795
 drawPerformanceTPCQAMatchTrends.C:796
 drawPerformanceTPCQAMatchTrends.C:797
 drawPerformanceTPCQAMatchTrends.C:798
 drawPerformanceTPCQAMatchTrends.C:799
 drawPerformanceTPCQAMatchTrends.C:800
 drawPerformanceTPCQAMatchTrends.C:801
 drawPerformanceTPCQAMatchTrends.C:802
 drawPerformanceTPCQAMatchTrends.C:803
 drawPerformanceTPCQAMatchTrends.C:804
 drawPerformanceTPCQAMatchTrends.C:805
 drawPerformanceTPCQAMatchTrends.C:806
 drawPerformanceTPCQAMatchTrends.C:807
 drawPerformanceTPCQAMatchTrends.C:808
 drawPerformanceTPCQAMatchTrends.C:809
 drawPerformanceTPCQAMatchTrends.C:810
 drawPerformanceTPCQAMatchTrends.C:811
 drawPerformanceTPCQAMatchTrends.C:812
 drawPerformanceTPCQAMatchTrends.C:813
 drawPerformanceTPCQAMatchTrends.C:814
 drawPerformanceTPCQAMatchTrends.C:815
 drawPerformanceTPCQAMatchTrends.C:816
 drawPerformanceTPCQAMatchTrends.C:817
 drawPerformanceTPCQAMatchTrends.C:818
 drawPerformanceTPCQAMatchTrends.C:819
 drawPerformanceTPCQAMatchTrends.C:820
 drawPerformanceTPCQAMatchTrends.C:821
 drawPerformanceTPCQAMatchTrends.C:822
 drawPerformanceTPCQAMatchTrends.C:823
 drawPerformanceTPCQAMatchTrends.C:824
 drawPerformanceTPCQAMatchTrends.C:825
 drawPerformanceTPCQAMatchTrends.C:826
 drawPerformanceTPCQAMatchTrends.C:827
 drawPerformanceTPCQAMatchTrends.C:828
 drawPerformanceTPCQAMatchTrends.C:829
 drawPerformanceTPCQAMatchTrends.C:830
 drawPerformanceTPCQAMatchTrends.C:831
 drawPerformanceTPCQAMatchTrends.C:832
 drawPerformanceTPCQAMatchTrends.C:833
 drawPerformanceTPCQAMatchTrends.C:834
 drawPerformanceTPCQAMatchTrends.C:835
 drawPerformanceTPCQAMatchTrends.C:836
 drawPerformanceTPCQAMatchTrends.C:837
 drawPerformanceTPCQAMatchTrends.C:838
 drawPerformanceTPCQAMatchTrends.C:839
 drawPerformanceTPCQAMatchTrends.C:840
 drawPerformanceTPCQAMatchTrends.C:841
 drawPerformanceTPCQAMatchTrends.C:842
 drawPerformanceTPCQAMatchTrends.C:843
 drawPerformanceTPCQAMatchTrends.C:844
 drawPerformanceTPCQAMatchTrends.C:845
 drawPerformanceTPCQAMatchTrends.C:846
 drawPerformanceTPCQAMatchTrends.C:847
 drawPerformanceTPCQAMatchTrends.C:848
 drawPerformanceTPCQAMatchTrends.C:849
 drawPerformanceTPCQAMatchTrends.C:850
 drawPerformanceTPCQAMatchTrends.C:851
 drawPerformanceTPCQAMatchTrends.C:852
 drawPerformanceTPCQAMatchTrends.C:853
 drawPerformanceTPCQAMatchTrends.C:854
 drawPerformanceTPCQAMatchTrends.C:855
 drawPerformanceTPCQAMatchTrends.C:856
 drawPerformanceTPCQAMatchTrends.C:857
 drawPerformanceTPCQAMatchTrends.C:858
 drawPerformanceTPCQAMatchTrends.C:859
 drawPerformanceTPCQAMatchTrends.C:860
 drawPerformanceTPCQAMatchTrends.C:861
 drawPerformanceTPCQAMatchTrends.C:862
 drawPerformanceTPCQAMatchTrends.C:863
 drawPerformanceTPCQAMatchTrends.C:864
 drawPerformanceTPCQAMatchTrends.C:865
 drawPerformanceTPCQAMatchTrends.C:866
 drawPerformanceTPCQAMatchTrends.C:867
 drawPerformanceTPCQAMatchTrends.C:868
 drawPerformanceTPCQAMatchTrends.C:869
 drawPerformanceTPCQAMatchTrends.C:870
 drawPerformanceTPCQAMatchTrends.C:871
 drawPerformanceTPCQAMatchTrends.C:872
 drawPerformanceTPCQAMatchTrends.C:873
 drawPerformanceTPCQAMatchTrends.C:874
 drawPerformanceTPCQAMatchTrends.C:875
 drawPerformanceTPCQAMatchTrends.C:876
 drawPerformanceTPCQAMatchTrends.C:877
 drawPerformanceTPCQAMatchTrends.C:878
 drawPerformanceTPCQAMatchTrends.C:879
 drawPerformanceTPCQAMatchTrends.C:880
 drawPerformanceTPCQAMatchTrends.C:881
 drawPerformanceTPCQAMatchTrends.C:882
 drawPerformanceTPCQAMatchTrends.C:883
 drawPerformanceTPCQAMatchTrends.C:884
 drawPerformanceTPCQAMatchTrends.C:885
 drawPerformanceTPCQAMatchTrends.C:886
 drawPerformanceTPCQAMatchTrends.C:887
 drawPerformanceTPCQAMatchTrends.C:888
 drawPerformanceTPCQAMatchTrends.C:889
 drawPerformanceTPCQAMatchTrends.C:890
 drawPerformanceTPCQAMatchTrends.C:891
 drawPerformanceTPCQAMatchTrends.C:892
 drawPerformanceTPCQAMatchTrends.C:893
 drawPerformanceTPCQAMatchTrends.C:894
 drawPerformanceTPCQAMatchTrends.C:895
 drawPerformanceTPCQAMatchTrends.C:896
 drawPerformanceTPCQAMatchTrends.C:897
 drawPerformanceTPCQAMatchTrends.C:898
 drawPerformanceTPCQAMatchTrends.C:899
 drawPerformanceTPCQAMatchTrends.C:900
 drawPerformanceTPCQAMatchTrends.C:901
 drawPerformanceTPCQAMatchTrends.C:902
 drawPerformanceTPCQAMatchTrends.C:903
 drawPerformanceTPCQAMatchTrends.C:904
 drawPerformanceTPCQAMatchTrends.C:905
 drawPerformanceTPCQAMatchTrends.C:906
 drawPerformanceTPCQAMatchTrends.C:907
 drawPerformanceTPCQAMatchTrends.C:908
 drawPerformanceTPCQAMatchTrends.C:909
 drawPerformanceTPCQAMatchTrends.C:910
 drawPerformanceTPCQAMatchTrends.C:911
 drawPerformanceTPCQAMatchTrends.C:912
 drawPerformanceTPCQAMatchTrends.C:913
 drawPerformanceTPCQAMatchTrends.C:914
 drawPerformanceTPCQAMatchTrends.C:915
 drawPerformanceTPCQAMatchTrends.C:916
 drawPerformanceTPCQAMatchTrends.C:917
 drawPerformanceTPCQAMatchTrends.C:918
 drawPerformanceTPCQAMatchTrends.C:919
 drawPerformanceTPCQAMatchTrends.C:920
 drawPerformanceTPCQAMatchTrends.C:921
 drawPerformanceTPCQAMatchTrends.C:922
 drawPerformanceTPCQAMatchTrends.C:923
 drawPerformanceTPCQAMatchTrends.C:924
 drawPerformanceTPCQAMatchTrends.C:925
 drawPerformanceTPCQAMatchTrends.C:926
 drawPerformanceTPCQAMatchTrends.C:927
 drawPerformanceTPCQAMatchTrends.C:928
 drawPerformanceTPCQAMatchTrends.C:929
 drawPerformanceTPCQAMatchTrends.C:930
 drawPerformanceTPCQAMatchTrends.C:931
 drawPerformanceTPCQAMatchTrends.C:932
 drawPerformanceTPCQAMatchTrends.C:933
 drawPerformanceTPCQAMatchTrends.C:934
 drawPerformanceTPCQAMatchTrends.C:935
 drawPerformanceTPCQAMatchTrends.C:936
 drawPerformanceTPCQAMatchTrends.C:937
 drawPerformanceTPCQAMatchTrends.C:938
 drawPerformanceTPCQAMatchTrends.C:939
 drawPerformanceTPCQAMatchTrends.C:940
 drawPerformanceTPCQAMatchTrends.C:941
 drawPerformanceTPCQAMatchTrends.C:942
 drawPerformanceTPCQAMatchTrends.C:943
 drawPerformanceTPCQAMatchTrends.C:944
 drawPerformanceTPCQAMatchTrends.C:945
 drawPerformanceTPCQAMatchTrends.C:946
 drawPerformanceTPCQAMatchTrends.C:947
 drawPerformanceTPCQAMatchTrends.C:948
 drawPerformanceTPCQAMatchTrends.C:949
 drawPerformanceTPCQAMatchTrends.C:950
 drawPerformanceTPCQAMatchTrends.C:951
 drawPerformanceTPCQAMatchTrends.C:952
 drawPerformanceTPCQAMatchTrends.C:953
 drawPerformanceTPCQAMatchTrends.C:954
 drawPerformanceTPCQAMatchTrends.C:955
 drawPerformanceTPCQAMatchTrends.C:956
 drawPerformanceTPCQAMatchTrends.C:957
 drawPerformanceTPCQAMatchTrends.C:958
 drawPerformanceTPCQAMatchTrends.C:959
 drawPerformanceTPCQAMatchTrends.C:960
 drawPerformanceTPCQAMatchTrends.C:961
 drawPerformanceTPCQAMatchTrends.C:962
 drawPerformanceTPCQAMatchTrends.C:963
 drawPerformanceTPCQAMatchTrends.C:964
 drawPerformanceTPCQAMatchTrends.C:965
 drawPerformanceTPCQAMatchTrends.C:966
 drawPerformanceTPCQAMatchTrends.C:967
 drawPerformanceTPCQAMatchTrends.C:968
 drawPerformanceTPCQAMatchTrends.C:969
 drawPerformanceTPCQAMatchTrends.C:970
 drawPerformanceTPCQAMatchTrends.C:971
 drawPerformanceTPCQAMatchTrends.C:972
 drawPerformanceTPCQAMatchTrends.C:973
 drawPerformanceTPCQAMatchTrends.C:974
 drawPerformanceTPCQAMatchTrends.C:975
 drawPerformanceTPCQAMatchTrends.C:976
 drawPerformanceTPCQAMatchTrends.C:977
 drawPerformanceTPCQAMatchTrends.C:978
 drawPerformanceTPCQAMatchTrends.C:979
 drawPerformanceTPCQAMatchTrends.C:980
 drawPerformanceTPCQAMatchTrends.C:981
 drawPerformanceTPCQAMatchTrends.C:982
 drawPerformanceTPCQAMatchTrends.C:983
 drawPerformanceTPCQAMatchTrends.C:984
 drawPerformanceTPCQAMatchTrends.C:985
 drawPerformanceTPCQAMatchTrends.C:986
 drawPerformanceTPCQAMatchTrends.C:987
 drawPerformanceTPCQAMatchTrends.C:988
 drawPerformanceTPCQAMatchTrends.C:989
 drawPerformanceTPCQAMatchTrends.C:990
 drawPerformanceTPCQAMatchTrends.C:991
 drawPerformanceTPCQAMatchTrends.C:992
 drawPerformanceTPCQAMatchTrends.C:993
 drawPerformanceTPCQAMatchTrends.C:994
 drawPerformanceTPCQAMatchTrends.C:995
 drawPerformanceTPCQAMatchTrends.C:996
 drawPerformanceTPCQAMatchTrends.C:997
 drawPerformanceTPCQAMatchTrends.C:998
 drawPerformanceTPCQAMatchTrends.C:999
 drawPerformanceTPCQAMatchTrends.C:1000
 drawPerformanceTPCQAMatchTrends.C:1001
 drawPerformanceTPCQAMatchTrends.C:1002
 drawPerformanceTPCQAMatchTrends.C:1003
 drawPerformanceTPCQAMatchTrends.C:1004
 drawPerformanceTPCQAMatchTrends.C:1005
 drawPerformanceTPCQAMatchTrends.C:1006
 drawPerformanceTPCQAMatchTrends.C:1007
 drawPerformanceTPCQAMatchTrends.C:1008
 drawPerformanceTPCQAMatchTrends.C:1009
 drawPerformanceTPCQAMatchTrends.C:1010
 drawPerformanceTPCQAMatchTrends.C:1011
 drawPerformanceTPCQAMatchTrends.C:1012
 drawPerformanceTPCQAMatchTrends.C:1013
 drawPerformanceTPCQAMatchTrends.C:1014
 drawPerformanceTPCQAMatchTrends.C:1015
 drawPerformanceTPCQAMatchTrends.C:1016
 drawPerformanceTPCQAMatchTrends.C:1017
 drawPerformanceTPCQAMatchTrends.C:1018
 drawPerformanceTPCQAMatchTrends.C:1019
 drawPerformanceTPCQAMatchTrends.C:1020
 drawPerformanceTPCQAMatchTrends.C:1021
 drawPerformanceTPCQAMatchTrends.C:1022
 drawPerformanceTPCQAMatchTrends.C:1023
 drawPerformanceTPCQAMatchTrends.C:1024
 drawPerformanceTPCQAMatchTrends.C:1025
 drawPerformanceTPCQAMatchTrends.C:1026
 drawPerformanceTPCQAMatchTrends.C:1027
 drawPerformanceTPCQAMatchTrends.C:1028
 drawPerformanceTPCQAMatchTrends.C:1029
 drawPerformanceTPCQAMatchTrends.C:1030
 drawPerformanceTPCQAMatchTrends.C:1031
 drawPerformanceTPCQAMatchTrends.C:1032
 drawPerformanceTPCQAMatchTrends.C:1033
 drawPerformanceTPCQAMatchTrends.C:1034
 drawPerformanceTPCQAMatchTrends.C:1035
 drawPerformanceTPCQAMatchTrends.C:1036
 drawPerformanceTPCQAMatchTrends.C:1037
 drawPerformanceTPCQAMatchTrends.C:1038
 drawPerformanceTPCQAMatchTrends.C:1039
 drawPerformanceTPCQAMatchTrends.C:1040
 drawPerformanceTPCQAMatchTrends.C:1041
 drawPerformanceTPCQAMatchTrends.C:1042
 drawPerformanceTPCQAMatchTrends.C:1043
 drawPerformanceTPCQAMatchTrends.C:1044
 drawPerformanceTPCQAMatchTrends.C:1045
 drawPerformanceTPCQAMatchTrends.C:1046
 drawPerformanceTPCQAMatchTrends.C:1047
 drawPerformanceTPCQAMatchTrends.C:1048
 drawPerformanceTPCQAMatchTrends.C:1049
 drawPerformanceTPCQAMatchTrends.C:1050
 drawPerformanceTPCQAMatchTrends.C:1051
 drawPerformanceTPCQAMatchTrends.C:1052
 drawPerformanceTPCQAMatchTrends.C:1053
 drawPerformanceTPCQAMatchTrends.C:1054
 drawPerformanceTPCQAMatchTrends.C:1055
 drawPerformanceTPCQAMatchTrends.C:1056
 drawPerformanceTPCQAMatchTrends.C:1057
 drawPerformanceTPCQAMatchTrends.C:1058
 drawPerformanceTPCQAMatchTrends.C:1059
 drawPerformanceTPCQAMatchTrends.C:1060
 drawPerformanceTPCQAMatchTrends.C:1061
 drawPerformanceTPCQAMatchTrends.C:1062
 drawPerformanceTPCQAMatchTrends.C:1063
 drawPerformanceTPCQAMatchTrends.C:1064
 drawPerformanceTPCQAMatchTrends.C:1065
 drawPerformanceTPCQAMatchTrends.C:1066
 drawPerformanceTPCQAMatchTrends.C:1067
 drawPerformanceTPCQAMatchTrends.C:1068
 drawPerformanceTPCQAMatchTrends.C:1069
 drawPerformanceTPCQAMatchTrends.C:1070
 drawPerformanceTPCQAMatchTrends.C:1071
 drawPerformanceTPCQAMatchTrends.C:1072
 drawPerformanceTPCQAMatchTrends.C:1073
 drawPerformanceTPCQAMatchTrends.C:1074
 drawPerformanceTPCQAMatchTrends.C:1075
 drawPerformanceTPCQAMatchTrends.C:1076
 drawPerformanceTPCQAMatchTrends.C:1077
 drawPerformanceTPCQAMatchTrends.C:1078
 drawPerformanceTPCQAMatchTrends.C:1079
 drawPerformanceTPCQAMatchTrends.C:1080
 drawPerformanceTPCQAMatchTrends.C:1081
 drawPerformanceTPCQAMatchTrends.C:1082
 drawPerformanceTPCQAMatchTrends.C:1083
 drawPerformanceTPCQAMatchTrends.C:1084
 drawPerformanceTPCQAMatchTrends.C:1085
 drawPerformanceTPCQAMatchTrends.C:1086
 drawPerformanceTPCQAMatchTrends.C:1087
 drawPerformanceTPCQAMatchTrends.C:1088
 drawPerformanceTPCQAMatchTrends.C:1089
 drawPerformanceTPCQAMatchTrends.C:1090
 drawPerformanceTPCQAMatchTrends.C:1091
 drawPerformanceTPCQAMatchTrends.C:1092
 drawPerformanceTPCQAMatchTrends.C:1093
 drawPerformanceTPCQAMatchTrends.C:1094
 drawPerformanceTPCQAMatchTrends.C:1095
 drawPerformanceTPCQAMatchTrends.C:1096
 drawPerformanceTPCQAMatchTrends.C:1097
 drawPerformanceTPCQAMatchTrends.C:1098
 drawPerformanceTPCQAMatchTrends.C:1099
 drawPerformanceTPCQAMatchTrends.C:1100
 drawPerformanceTPCQAMatchTrends.C:1101
 drawPerformanceTPCQAMatchTrends.C:1102
 drawPerformanceTPCQAMatchTrends.C:1103
 drawPerformanceTPCQAMatchTrends.C:1104
 drawPerformanceTPCQAMatchTrends.C:1105
 drawPerformanceTPCQAMatchTrends.C:1106
 drawPerformanceTPCQAMatchTrends.C:1107
 drawPerformanceTPCQAMatchTrends.C:1108
 drawPerformanceTPCQAMatchTrends.C:1109
 drawPerformanceTPCQAMatchTrends.C:1110
 drawPerformanceTPCQAMatchTrends.C:1111
 drawPerformanceTPCQAMatchTrends.C:1112
 drawPerformanceTPCQAMatchTrends.C:1113
 drawPerformanceTPCQAMatchTrends.C:1114
 drawPerformanceTPCQAMatchTrends.C:1115
 drawPerformanceTPCQAMatchTrends.C:1116
 drawPerformanceTPCQAMatchTrends.C:1117
 drawPerformanceTPCQAMatchTrends.C:1118
 drawPerformanceTPCQAMatchTrends.C:1119
 drawPerformanceTPCQAMatchTrends.C:1120
 drawPerformanceTPCQAMatchTrends.C:1121
 drawPerformanceTPCQAMatchTrends.C:1122
 drawPerformanceTPCQAMatchTrends.C:1123
 drawPerformanceTPCQAMatchTrends.C:1124
 drawPerformanceTPCQAMatchTrends.C:1125
 drawPerformanceTPCQAMatchTrends.C:1126
 drawPerformanceTPCQAMatchTrends.C:1127
 drawPerformanceTPCQAMatchTrends.C:1128
 drawPerformanceTPCQAMatchTrends.C:1129
 drawPerformanceTPCQAMatchTrends.C:1130
 drawPerformanceTPCQAMatchTrends.C:1131
 drawPerformanceTPCQAMatchTrends.C:1132
 drawPerformanceTPCQAMatchTrends.C:1133
 drawPerformanceTPCQAMatchTrends.C:1134
 drawPerformanceTPCQAMatchTrends.C:1135
 drawPerformanceTPCQAMatchTrends.C:1136
 drawPerformanceTPCQAMatchTrends.C:1137
 drawPerformanceTPCQAMatchTrends.C:1138
 drawPerformanceTPCQAMatchTrends.C:1139
 drawPerformanceTPCQAMatchTrends.C:1140
 drawPerformanceTPCQAMatchTrends.C:1141
 drawPerformanceTPCQAMatchTrends.C:1142
 drawPerformanceTPCQAMatchTrends.C:1143
 drawPerformanceTPCQAMatchTrends.C:1144
 drawPerformanceTPCQAMatchTrends.C:1145
 drawPerformanceTPCQAMatchTrends.C:1146
 drawPerformanceTPCQAMatchTrends.C:1147
 drawPerformanceTPCQAMatchTrends.C:1148
 drawPerformanceTPCQAMatchTrends.C:1149
 drawPerformanceTPCQAMatchTrends.C:1150
 drawPerformanceTPCQAMatchTrends.C:1151
 drawPerformanceTPCQAMatchTrends.C:1152
 drawPerformanceTPCQAMatchTrends.C:1153
 drawPerformanceTPCQAMatchTrends.C:1154
 drawPerformanceTPCQAMatchTrends.C:1155
 drawPerformanceTPCQAMatchTrends.C:1156
 drawPerformanceTPCQAMatchTrends.C:1157
 drawPerformanceTPCQAMatchTrends.C:1158
 drawPerformanceTPCQAMatchTrends.C:1159
 drawPerformanceTPCQAMatchTrends.C:1160
 drawPerformanceTPCQAMatchTrends.C:1161
 drawPerformanceTPCQAMatchTrends.C:1162
 drawPerformanceTPCQAMatchTrends.C:1163
 drawPerformanceTPCQAMatchTrends.C:1164
 drawPerformanceTPCQAMatchTrends.C:1165
 drawPerformanceTPCQAMatchTrends.C:1166
 drawPerformanceTPCQAMatchTrends.C:1167
 drawPerformanceTPCQAMatchTrends.C:1168
 drawPerformanceTPCQAMatchTrends.C:1169
 drawPerformanceTPCQAMatchTrends.C:1170
 drawPerformanceTPCQAMatchTrends.C:1171
 drawPerformanceTPCQAMatchTrends.C:1172
 drawPerformanceTPCQAMatchTrends.C:1173
 drawPerformanceTPCQAMatchTrends.C:1174
 drawPerformanceTPCQAMatchTrends.C:1175
 drawPerformanceTPCQAMatchTrends.C:1176
 drawPerformanceTPCQAMatchTrends.C:1177
 drawPerformanceTPCQAMatchTrends.C:1178
 drawPerformanceTPCQAMatchTrends.C:1179
 drawPerformanceTPCQAMatchTrends.C:1180
 drawPerformanceTPCQAMatchTrends.C:1181
 drawPerformanceTPCQAMatchTrends.C:1182
 drawPerformanceTPCQAMatchTrends.C:1183
 drawPerformanceTPCQAMatchTrends.C:1184
 drawPerformanceTPCQAMatchTrends.C:1185
 drawPerformanceTPCQAMatchTrends.C:1186
 drawPerformanceTPCQAMatchTrends.C:1187
 drawPerformanceTPCQAMatchTrends.C:1188
 drawPerformanceTPCQAMatchTrends.C:1189
 drawPerformanceTPCQAMatchTrends.C:1190
 drawPerformanceTPCQAMatchTrends.C:1191
 drawPerformanceTPCQAMatchTrends.C:1192
 drawPerformanceTPCQAMatchTrends.C:1193
 drawPerformanceTPCQAMatchTrends.C:1194
 drawPerformanceTPCQAMatchTrends.C:1195
 drawPerformanceTPCQAMatchTrends.C:1196
 drawPerformanceTPCQAMatchTrends.C:1197
 drawPerformanceTPCQAMatchTrends.C:1198