ROOT logo
/*
 *

 .L $ALICE_ROOT/TPC/Upgrade/macros/finalPlots.C+g
 finalPlots("eps10/medStat/*.debug.root","eps20/medStat/*.debug.root")

 finalPlots("eps10/medStat/*.debug.root","eps20/medStat/*.debug.root","/data/Work/software/svncern/papers/TDR/08-Monitoring_calib/figs")

 
*/

#include "TLegend.h"
#include "TCanvas.h"
#include "TString.h"
#include "TStyle.h"
#include "TColor.h"
#include "TPaveStats.h"
#include "TH1.h"
#include "TFile.h"
#include "TTree.h"
#include "TROOT.h"
#include "TSystem.h"
#include "AliToyMCReconstruction.h"

void SetStyle();
TCanvas *GetCanvas(TString name, TString title, Float_t nx=1, Float_t ny=1);
void SaveCanvas(TCanvas *c);
void DrawOnTop(TPad *c, TObjArray &arrHists, Bool_t stats);

TString fSaveDir;

//void finalPlots(const char* filesEps10, const char* filesEps20, TString saveDir="")
void finalPlots(const char* filesEps20, TString saveDir="")
{
  fSaveDir=saveDir;
  
  TString idealUndistorted("t1_0_0_130_10.");
  TString idealDistorted("t1_1_3_130_10.");
  TString distorted("t0_1_0_130_10.");
  TString realTracking("t0_1_2_130_10.");
//  TString realTrackingPreT0("t0_1_4_130_10.");
  
  SetStyle();
  
//   TTree *tEps10=AliToyMCReconstruction::ConnectTrees(filesEps10);
  TTree *tEps20=AliToyMCReconstruction::ConnectTrees(filesEps20);

  TString test(tEps20->GetCurrentFile()->GetName());
  if (!test.Contains("0_0_0_")) {
    printf("ERROR: default file is not '0_0_0'\n");
    return;
  }

  if (/*tEps10->GetListOfFriends()->GetEntries()!=5 ||*/ tEps20->GetListOfFriends()->GetEntries()!=5) {
    printf("ERROR: wrong number of entries in the friends, not default\n");
    return;
  }

  TString drawStr;
  
  //
  // T0seed resolution
  //
  TCanvas *cT0res=GetCanvas("T0seedResolution","T0 seed resolution");
  //ideal undistorted
  TH1F *hT0resI = new TH1F("hT0resI","T0 resolution;(#it{t}_{0}^{seed}-#it{t}_{0}) #upoint #it{v}_{drift};#tracks",100,-50.1,50.1);
  drawStr=Form("(%sfTime0-t0)*vDrift",idealUndistorted.Data());
  tEps20->Draw(drawStr+">>hT0resI","","goff");
  //fully distorted
  TH1F *hT0resD = new TH1F("hT0resD","T0 resolution;(#it{t}_{0}^{seed}-#it{t}_{0}) #upoint #it{v}_{drift};#tracks",100,-50.1,50.1);
  hT0resD->SetLineColor(kRed);
  drawStr=Form("(%sfTime0-t0)*vDrift",distorted.Data());
  tEps20->Draw(drawStr+">>hT0resD","","goff");
  //distorted and average correction
  TH1F *hT0resDC = new TH1F("hT0resDC","T0 resolution;(#it{t}_{0}^{seed}-#it{t}_{0}) #upoint #it{v}_{d} (cm);#tracks",100,-50.1,50.1);
//   hT0resDC->SetLineColor(kGreen+2);
  drawStr=Form("(%sfTime0-t0)*vDrift",realTracking.Data());
  tEps20->Draw(drawStr+">>hT0resDC","","goff");

//  TH1F *hT0resDCPreT0 = new TH1F("hT0resDCPreT0","T0 resolution;(#it{t}_{0}^{seed}-#it{t}_{0}) #upoint #it{v}_{drift};#tracks",100,-50.1,50.1);
//  drawStr=Form("(%sfTime0-t0)*vDrift",realTrackingPreT0.Data());
//  tEps20->Draw(drawStr+">>hT0resDCPreT0","","goff");
  
  //   hT0resI->Draw();
  //   hT0resD->Draw("same");
  hT0resDC->Draw(/*"same"*/);
  //hT0resDCPreT0->Draw(/*"same"*/);
  
  SaveCanvas(cT0res);

  //
  // Track parameter resolution (y) with ideal clusters at the ITS and inner wall of the TPC
  //
  TCanvas *cYresComparison=GetCanvas("YresComparison","Comparison of Yres for ideal clusters");
  //ideal clusters at the ITS outermost point
  TH1F *hYresITS = new TH1F("hYresITS",";#it{y}_{TPC}-#it{y}_{ITS} (cm);#tracks",100,-0.21,0.21);
  drawStr=Form("%strackITS.fP[0]-%stRealITS.fP[0]",idealUndistorted.Data(),idealUndistorted.Data());
  tEps20->Draw(drawStr+">>hYresITS","","goff");
  hYresITS->SetLineColor(kRed);

  TH1F *hYresTPC = new TH1F("hYresTPC",";#it{y}_{TPC}-#it{y}_{ITS} (cm);#tracks",100,-0.21,0.21);
  drawStr=Form("%strackITS2.fP[0]-%stRealITS2.fP[0]",idealUndistorted.Data(),idealUndistorted.Data());
  tEps20->Draw(drawStr+">>hYresTPC","","goff");

  hYresTPC->Draw();
  hYresITS->Draw("same");

  SaveCanvas(cYresComparison);

  //
  //  Track parameter resolution (y) with fully distorted clusters at the inner wall of the TPC
  //

  TCanvas *cYresDistorted=GetCanvas("YresDistorted","Yres for fully distorted clusters");
  //ideal clusters at the ITS outermost point
  TH1F *hYresDist = new TH1F("hYresDist",";#it{y}_{TPC}-#it{y}_{ITS} (cm);#tracks",100,-15.5,5.5);
  drawStr=Form("%strackITS2.fP[0]-%stRealITS2.fP[0]",distorted.Data(),distorted.Data());
  tEps20->Draw(drawStr+">>hYresDist","","goff");
  
  hYresDist->Draw();
  
  SaveCanvas(cYresDistorted);
  
  //
  //  Track parameter resolution (y) with fully distorted and corrected clusters (Tzero seed)
  //  at the inner wall of the TPC
  //
  
  TCanvas *cYresDistCorrTzeroSeed=GetCanvas("YresDistCorrTzeroSeed","Yres for fully distorted/corrected clusters (Tzero seed)");
  //ideal clusters at the ITS outermost point
  TH1F *hYresDistCorrTzeroSeed = new TH1F("hYresDistCorrTzeroSeed",";#it{y}_{TPC}-#it{y}_{ITS} (cm);#tracks",100,-.85,1.15);
  drawStr=Form("%strackITS2.fP[0]-%stRealITS2.fP[0]",realTracking.Data(),realTracking.Data());
  tEps20->Draw(drawStr+">>hYresDistCorrTzeroSeed","","goff");
  
  hYresDistCorrTzeroSeed->Draw();
  
  SaveCanvas(cYresDistCorrTzeroSeed);

  //
  //  Track parameter resolution (y) with fully distorted and corrected clusters (Tzero seed)
  //  at the inner wall of the TPC
  //
  
  TCanvas *cYresDistCorrTzero=GetCanvas("YresDistCorrTzero","Yres for fully distorted/corrected clusters (Tzero)");
  //ideal clusters at the ITS outermost point
  TH1F *hYresDistCorrTzero = new TH1F("hYresDistCorrTzero",";#it{y}_{TPC}-#it{y}_{ITS} (cm);#tracks",100,-.5,.85);
  drawStr=Form("%strackITS2.fP[0]-%stRealITS2.fP[0]",idealDistorted.Data(),idealDistorted.Data());
  tEps20->Draw(drawStr+">>hYresDistCorrTzero","","goff");
  
  hYresDistCorrTzero->Draw();
  
  SaveCanvas(cYresDistCorrTzero);


  //
  // plot all params
  //

  TString titles[5]={"#it{y}_{TPC}-#it{y}_{ITS} (cm)","#it{z}_{TPC}-#it{z}_{ITS} (cm)","sin(#it{#alpha})_{TPC}-sin(#it{#alpha})_{ITS}","tan(#it{#lambda})_{TPC}-tan(#it{#lambda})_{ITS}","1/#it{p}_{T TPC}-1/#it{p}_{T ITS} ((GeV/#it{c})^{-1})"};
  //Double_t min[5]={-.85,-15,-.009,-.005,-.05};
  //Double_t max[5]={ .85, 15, .009, .005, .05};
  Double_t min[5]={-.85,-15,-.015,-.005,-.075};
  Double_t max[5]={1.15, 15, .015, .005, .075};
  TString type[3]={idealUndistorted,idealDistorted,realTracking};
  Int_t colors[3]={kBlack,kGreen-2,kRed};

  TLegend *leg=new TLegend(.1,.55,.95,.95);
  leg->SetTextSize(0.075);
  leg->SetBorderSize(1);
  leg->SetFillColor(10);
  TCanvas *cResParams=GetCanvas("ResParams","Resolution of parameters",1.2,1.8);
  cResParams->Divide(2,3);
  for (Int_t i=0;i<5;++i){
    TPad *pad=(TPad*)cResParams->cd(i+1);
    TObjArray arr;
    for (Int_t it=0; it<3; ++it) {
      TH1F *hResParams=new TH1F(Form("hResParams_%d_%d",i,it),
                                Form(";%s;#tracks",titles[i].Data()),
                                100,min[i],max[i]);
      drawStr=Form("%strackITS2.fP[%d]-tRealITS2.fP[%d]",type[it].Data(),i,i);
      tEps20->Draw(drawStr+Form(">>hResParams_%d_%d",i,it),"","goff");
      hResParams->SetLineColor(colors[it]);
      arr.Add(hResParams);
    }
    if (i==0) {
      leg->AddEntry(arr.At(0),"no distortions (ideal)","l");
      leg->AddEntry(arr.At(1),"distorted/corrected (t_{0})","l");
      leg->AddEntry(arr.At(2),"distorted/corrected (t_{0}^{seed})","l");
    }
    DrawOnTop(pad,arr,kTRUE);
  }

  cResParams->cd(6);
  leg->Draw();
  SaveCanvas(cResParams);

  TCanvas *cResRPhi=GetCanvas("ResRPhi","Resolution of rPhi");
  TLegend *leg2=new TLegend(.12,.7,.48,.95);
  TObjArray arr;
  Int_t i=0;
  for (Int_t it=0; it<3; ++it) {
    TH1F *hResParams=new TH1F(Form("hResParams_%d_%d",i,it),
                              Form(";%s;#tracks",titles[i].Data()),
                              100,min[i],max[i]);
    drawStr=Form("%strackITS2.fP[%d]-tRealITS2.fP[%d]",type[it].Data(),i,i);
    tEps20->Draw(drawStr+Form(">>hResParams_%d_%d",i,it),"","goff");
    hResParams->SetLineColor(colors[it]);
    arr.Add(hResParams);
  }
  leg2->AddEntry(arr.At(0),"no distortions (ideal)","l");
  leg2->AddEntry(arr.At(1),"distorted/corrected (t_{0})","l");
  leg2->AddEntry(arr.At(2),"distorted/corrected (t_{0}^{seed})","l");
  DrawOnTop(cResRPhi,arr,kTRUE);
  leg2->Draw("same");
  SaveCanvas(cResRPhi);
  
}


TCanvas *GetCanvas(TString name, TString title, Float_t nx, Float_t ny)
{
  TCanvas *c=(TCanvas*)gROOT->GetListOfCanvases()->FindObject(name.Data());
  if (!c) c=new TCanvas(name,title,nx*700,ny*500);
  c->Clear();
  c->cd();
  return c;
}

void SaveCanvas(TCanvas *c)
{
  //
  //
  //
  
  if (fSaveDir.IsNull()) return;
  
  c->SaveAs(Form("/tmp/%s.eps",c->GetName()));
  c->SaveAs(Form("%s/%s.png",fSaveDir.Data(),c->GetName()));
  gSystem->Exec(Form("ps2pdf -dEPSCrop /tmp/%s.eps %s/%s.pdf",c->GetName(),fSaveDir.Data(),c->GetName()));
}

void DrawOnTop(TPad *c, TObjArray &arrHists, Bool_t /*stats*/)
{
  Double_t min=0,max=0;
  Double_t ystatMax=gStyle->GetStatY();
  Double_t ystatH  =gStyle->GetStatH()*2./3.;
  const Int_t nHists=arrHists.GetEntriesFast();
  for (Int_t iHist=0; iHist<nHists; ++iHist) {
    TH1 *h=(TH1*)arrHists.UncheckedAt(iHist);
    TPad *pad = new TPad(Form("%s_%d",c->GetName(),iHist+1),"",0,0,1,1);
    pad->SetFillStyle(4000);
    pad->SetFrameFillStyle(0);
    pad->Draw();
    pad->cd();
    if (iHist>0) {
      h->SetMinimum(min);
      h->SetMaximum(max);
      pad->SetTicky(0);
      pad->SetTickx(0);
    }
    h->Draw((iHist==0)?"":"AH");
    pad->Update();
    if (iHist==0){
      min=pad->GetUymin();
      max=pad->GetUymax();
      printf("min: %.2f %.2f\n",min,max);
    }
    TPaveStats *ps = (TPaveStats*)h->GetListOfFunctions()->FindObject("stats");
    if (!ps) printf("shitttt %s\n",h->GetName());
    else {
    ps->SetTextColor(h->GetLineColor());
    ps->SetY2NDC(ystatMax-iHist*ystatH);
    ps->SetY1NDC(ystatMax-(iHist+1)*ystatH);}
  }
}

void SetStyle()
{
  const Int_t NCont=255;
  //const Int_t NCont=50;
  TH1::AddDirectory();
  TStyle *st = new TStyle("mystyle","mystyle");
  gROOT->GetStyle("Plain")->Copy((*st));
  st->SetTitleX(0.1);
  st->SetTitleW(0.8);
  st->SetTitleH(0.08);
  st->SetStatX(.95);
  st->SetStatY(.95);
  st->SetStatW(.25);
  st->SetStatH(.25);
  st->SetNumberContours(NCont);
  st->SetPalette(1,0);
  st->SetOptStat("rm");
  st->SetOptTitle(0);
  st->SetOptFit(0);
  st->SetGridColor(kGray+1);
//   st->SetPadGridX(kTRUE);
//   st->SetPadGridY(kTRUE);
  st->SetPadTickX(kTRUE);
  st->SetPadTickY(kTRUE);
  st->SetMarkerStyle(20);
  st->SetMarkerSize(.5);

  st->SetPadLeftMargin(0.12);
  st->SetPadBottomMargin(0.12);
  st->SetPadRightMargin(0.05);
  st->SetPadTopMargin(0.05);
  st->cd();
  
  Int_t nimTPCFont=42; //or 62 for sans serif font
  //default definitions
  st->SetTextFont(nimTPCFont);
  st->SetTitleFont(nimTPCFont, "T");
  st->SetTitleFont(nimTPCFont, "XYZ");
  st->SetLabelFont(nimTPCFont,"XYZ");
  st->SetLabelSize(0.045,"XYZ");
  st->SetTitleSize(0.05,"XYZ");
  st->SetTitleOffset(1.1,"XZ");
  st->SetTitleOffset(1.3,"Y");
  st->SetStatFont(nimTPCFont);
  st->SetOptTitle(0);
  st->SetPalette(1,0);
  st->SetStatBorderSize(1);
  new TColor(2001,1,1,1);
  st->SetFillColor(2001);
  st->SetTickLength(gStyle->GetTickLength()/696.*472.,"y");
  
  const Int_t NRGBs = 5;
  Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
  Double_t red[NRGBs]   = { 0.00, 0.00, 0.87, 1.00, 0.51 };
  Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
  Double_t blue[NRGBs]  = { 0.51, 1.00, 0.12, 0.00, 0.00 };
  //grey
  //  Double_t       stops[5] = {0.00, 0.34, 0.61, 0.84, 1.00};
  //  Double_t         red[5]   = {1.00, 0.84, 0.61, 0.34, 0.00};
  //  Double_t         green[5]   = {1.00, 0.84, 0.61, 0.34, 0.00};
  //  Double_t         blue[5]   = {1.00, 0.84, 0.61, 0.34, 0.00};
  
  TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
  
  st->cd();
}

 finalPlots.C:1
 finalPlots.C:2
 finalPlots.C:3
 finalPlots.C:4
 finalPlots.C:5
 finalPlots.C:6
 finalPlots.C:7
 finalPlots.C:8
 finalPlots.C:9
 finalPlots.C:10
 finalPlots.C:11
 finalPlots.C:12
 finalPlots.C:13
 finalPlots.C:14
 finalPlots.C:15
 finalPlots.C:16
 finalPlots.C:17
 finalPlots.C:18
 finalPlots.C:19
 finalPlots.C:20
 finalPlots.C:21
 finalPlots.C:22
 finalPlots.C:23
 finalPlots.C:24
 finalPlots.C:25
 finalPlots.C:26
 finalPlots.C:27
 finalPlots.C:28
 finalPlots.C:29
 finalPlots.C:30
 finalPlots.C:31
 finalPlots.C:32
 finalPlots.C:33
 finalPlots.C:34
 finalPlots.C:35
 finalPlots.C:36
 finalPlots.C:37
 finalPlots.C:38
 finalPlots.C:39
 finalPlots.C:40
 finalPlots.C:41
 finalPlots.C:42
 finalPlots.C:43
 finalPlots.C:44
 finalPlots.C:45
 finalPlots.C:46
 finalPlots.C:47
 finalPlots.C:48
 finalPlots.C:49
 finalPlots.C:50
 finalPlots.C:51
 finalPlots.C:52
 finalPlots.C:53
 finalPlots.C:54
 finalPlots.C:55
 finalPlots.C:56
 finalPlots.C:57
 finalPlots.C:58
 finalPlots.C:59
 finalPlots.C:60
 finalPlots.C:61
 finalPlots.C:62
 finalPlots.C:63
 finalPlots.C:64
 finalPlots.C:65
 finalPlots.C:66
 finalPlots.C:67
 finalPlots.C:68
 finalPlots.C:69
 finalPlots.C:70
 finalPlots.C:71
 finalPlots.C:72
 finalPlots.C:73
 finalPlots.C:74
 finalPlots.C:75
 finalPlots.C:76
 finalPlots.C:77
 finalPlots.C:78
 finalPlots.C:79
 finalPlots.C:80
 finalPlots.C:81
 finalPlots.C:82
 finalPlots.C:83
 finalPlots.C:84
 finalPlots.C:85
 finalPlots.C:86
 finalPlots.C:87
 finalPlots.C:88
 finalPlots.C:89
 finalPlots.C:90
 finalPlots.C:91
 finalPlots.C:92
 finalPlots.C:93
 finalPlots.C:94
 finalPlots.C:95
 finalPlots.C:96
 finalPlots.C:97
 finalPlots.C:98
 finalPlots.C:99
 finalPlots.C:100
 finalPlots.C:101
 finalPlots.C:102
 finalPlots.C:103
 finalPlots.C:104
 finalPlots.C:105
 finalPlots.C:106
 finalPlots.C:107
 finalPlots.C:108
 finalPlots.C:109
 finalPlots.C:110
 finalPlots.C:111
 finalPlots.C:112
 finalPlots.C:113
 finalPlots.C:114
 finalPlots.C:115
 finalPlots.C:116
 finalPlots.C:117
 finalPlots.C:118
 finalPlots.C:119
 finalPlots.C:120
 finalPlots.C:121
 finalPlots.C:122
 finalPlots.C:123
 finalPlots.C:124
 finalPlots.C:125
 finalPlots.C:126
 finalPlots.C:127
 finalPlots.C:128
 finalPlots.C:129
 finalPlots.C:130
 finalPlots.C:131
 finalPlots.C:132
 finalPlots.C:133
 finalPlots.C:134
 finalPlots.C:135
 finalPlots.C:136
 finalPlots.C:137
 finalPlots.C:138
 finalPlots.C:139
 finalPlots.C:140
 finalPlots.C:141
 finalPlots.C:142
 finalPlots.C:143
 finalPlots.C:144
 finalPlots.C:145
 finalPlots.C:146
 finalPlots.C:147
 finalPlots.C:148
 finalPlots.C:149
 finalPlots.C:150
 finalPlots.C:151
 finalPlots.C:152
 finalPlots.C:153
 finalPlots.C:154
 finalPlots.C:155
 finalPlots.C:156
 finalPlots.C:157
 finalPlots.C:158
 finalPlots.C:159
 finalPlots.C:160
 finalPlots.C:161
 finalPlots.C:162
 finalPlots.C:163
 finalPlots.C:164
 finalPlots.C:165
 finalPlots.C:166
 finalPlots.C:167
 finalPlots.C:168
 finalPlots.C:169
 finalPlots.C:170
 finalPlots.C:171
 finalPlots.C:172
 finalPlots.C:173
 finalPlots.C:174
 finalPlots.C:175
 finalPlots.C:176
 finalPlots.C:177
 finalPlots.C:178
 finalPlots.C:179
 finalPlots.C:180
 finalPlots.C:181
 finalPlots.C:182
 finalPlots.C:183
 finalPlots.C:184
 finalPlots.C:185
 finalPlots.C:186
 finalPlots.C:187
 finalPlots.C:188
 finalPlots.C:189
 finalPlots.C:190
 finalPlots.C:191
 finalPlots.C:192
 finalPlots.C:193
 finalPlots.C:194
 finalPlots.C:195
 finalPlots.C:196
 finalPlots.C:197
 finalPlots.C:198
 finalPlots.C:199
 finalPlots.C:200
 finalPlots.C:201
 finalPlots.C:202
 finalPlots.C:203
 finalPlots.C:204
 finalPlots.C:205
 finalPlots.C:206
 finalPlots.C:207
 finalPlots.C:208
 finalPlots.C:209
 finalPlots.C:210
 finalPlots.C:211
 finalPlots.C:212
 finalPlots.C:213
 finalPlots.C:214
 finalPlots.C:215
 finalPlots.C:216
 finalPlots.C:217
 finalPlots.C:218
 finalPlots.C:219
 finalPlots.C:220
 finalPlots.C:221
 finalPlots.C:222
 finalPlots.C:223
 finalPlots.C:224
 finalPlots.C:225
 finalPlots.C:226
 finalPlots.C:227
 finalPlots.C:228
 finalPlots.C:229
 finalPlots.C:230
 finalPlots.C:231
 finalPlots.C:232
 finalPlots.C:233
 finalPlots.C:234
 finalPlots.C:235
 finalPlots.C:236
 finalPlots.C:237
 finalPlots.C:238
 finalPlots.C:239
 finalPlots.C:240
 finalPlots.C:241
 finalPlots.C:242
 finalPlots.C:243
 finalPlots.C:244
 finalPlots.C:245
 finalPlots.C:246
 finalPlots.C:247
 finalPlots.C:248
 finalPlots.C:249
 finalPlots.C:250
 finalPlots.C:251
 finalPlots.C:252
 finalPlots.C:253
 finalPlots.C:254
 finalPlots.C:255
 finalPlots.C:256
 finalPlots.C:257
 finalPlots.C:258
 finalPlots.C:259
 finalPlots.C:260
 finalPlots.C:261
 finalPlots.C:262
 finalPlots.C:263
 finalPlots.C:264
 finalPlots.C:265
 finalPlots.C:266
 finalPlots.C:267
 finalPlots.C:268
 finalPlots.C:269
 finalPlots.C:270
 finalPlots.C:271
 finalPlots.C:272
 finalPlots.C:273
 finalPlots.C:274
 finalPlots.C:275
 finalPlots.C:276
 finalPlots.C:277
 finalPlots.C:278
 finalPlots.C:279
 finalPlots.C:280
 finalPlots.C:281
 finalPlots.C:282
 finalPlots.C:283
 finalPlots.C:284
 finalPlots.C:285
 finalPlots.C:286
 finalPlots.C:287
 finalPlots.C:288
 finalPlots.C:289
 finalPlots.C:290
 finalPlots.C:291
 finalPlots.C:292
 finalPlots.C:293
 finalPlots.C:294
 finalPlots.C:295
 finalPlots.C:296
 finalPlots.C:297
 finalPlots.C:298
 finalPlots.C:299
 finalPlots.C:300
 finalPlots.C:301
 finalPlots.C:302
 finalPlots.C:303
 finalPlots.C:304
 finalPlots.C:305
 finalPlots.C:306
 finalPlots.C:307
 finalPlots.C:308
 finalPlots.C:309
 finalPlots.C:310
 finalPlots.C:311
 finalPlots.C:312
 finalPlots.C:313
 finalPlots.C:314
 finalPlots.C:315
 finalPlots.C:316
 finalPlots.C:317
 finalPlots.C:318
 finalPlots.C:319
 finalPlots.C:320
 finalPlots.C:321
 finalPlots.C:322
 finalPlots.C:323
 finalPlots.C:324
 finalPlots.C:325
 finalPlots.C:326
 finalPlots.C:327
 finalPlots.C:328
 finalPlots.C:329
 finalPlots.C:330
 finalPlots.C:331
 finalPlots.C:332
 finalPlots.C:333
 finalPlots.C:334
 finalPlots.C:335
 finalPlots.C:336
 finalPlots.C:337
 finalPlots.C:338
 finalPlots.C:339
 finalPlots.C:340
 finalPlots.C:341
 finalPlots.C:342
 finalPlots.C:343
 finalPlots.C:344