ROOT logo
#include "SummaryDrawer.C"

/**
 * Class to draw a summary of the AOD production
 *
 * @par Input: 
 * - The merged <tt>forward.root</tt> file.
 *   If the file isn't merged, it should still work. 
 *
 * @par Output:
 * - A PDF file named after the input, but with <tt>.root</tt>
 *   replaced with <tt>pdf</tt>
 * 
 */
class SummaryMCCorrDrawer : public SummaryDrawer
{
public:
  enum EFlags { 
    kEventInspector    = 0x001, 
    kTrackDensity      = 0x002,
    kVertexBins        = 0x004,
    kResults           = 0x008, 
    kCentral           = 0x010,
    kNormal            = 0x01F
  };
  SummaryMCCorrDrawer() 
    : SummaryDrawer(),
      fSums(0),
      fResults(0)
  {}
  virtual ~SummaryMCCorrDrawer() {}
  
  //__________________________________________________________________
  /** 
   * 
   * 
   * @param fname 
   * @param what 
   */
  void Run(const char* fname, UShort_t what=kNormal)
  {
    // --- Open the file ---------------------------------------------
    TString filename(fname);
    TFile*  file = TFile::Open(filename, "READ");
    if (!file) { 
      Error("Run", "Failed to open \"%s\"", filename.Data());
      return;
    }


    // --- Get top-level collection ----------------------------------
    fSums = GetCollection(file, "ForwardCorrSums");
    if (!fSums) return;

    // --- Make our canvas -------------------------------------------
    TString pdfName(filename);
    pdfName.ReplaceAll(".root", ".pdf");
    CreateCanvas(pdfName, what & kLandscape);

    // --- Make a Title page -------------------------------------------
    DrawTitlePage(file);
    
    // --- Possibly make a chapter here ------------------------------
    if (what & kCentral && GetCollection(file, "CentralCorrSums")) 
      MakeChapter("Forward");
    
    // --- Set pause flag --------------------------------------------
    fPause = what & kPause;

    // --- Do each sub-algorithm -------------------------------------
    if (what & kEventInspector) DrawEventInspector(fSums);
    if (what & kTrackDensity)   DrawTrackDensity(fSums);
    if (what & kVertexBins)     DrawVertexBins(true);
  
    // --- Do the results ----------------------------------------------
    fResults = GetCollection(file, "ForwardCorrResults");
    if (!fResults) fResults = fSums; // Old-style
    
    if (what & kResults) DrawResults(true);

    // --- SPD clusters ----------------------------------------------
    if (what & kCentral) { 
      // --- Get top-level collection --------------------------------
      fSums = GetCollection(file, "CentralCorrSums");
      if (fSums) {
	MakeChapter("Central");
	if (what & kEventInspector) DrawEventInspector(fSums);
	if (what & kTrackDensity)   DrawTrackDensity(fSums);
	if (what & kVertexBins)     DrawVertexBins(false);
      }
      else 
	Warning("", "No CentralCorrSums found");

      fResults = GetCollection(file, "CentralCorrResults");
      if (!fResults) fResults = fSums; // Old-style
      if (!fResults) 
	Warning("", "No CentralCorrResults found");

      if (what & kResults) DrawResults(false);
    }

    CloseCanvas();
  }
protected:
  //____________________________________________________________________
  void DrawTitlePage(TFile* file)
  {
    TCollection* c   = GetCollection(file, "ForwardCorrSums");

    fBody->cd();
    
    Double_t y = .9;
    TLatex* ltx = new TLatex(.5, y, "ESD+MC #rightarrow Corrections");
    ltx->SetTextSize(0.07);
    ltx->SetTextFont(62);
    ltx->SetTextAlign(22);
    ltx->SetNDC();
    ltx->Draw();
    y -= .075;

    TCollection* ei = GetCollection(c, "fmdEventInspector");
    if (ei) { 
      UShort_t sys=0;
      UShort_t sNN=0;
      Int_t field=0;
      ULong_t runNo=0;
      GetParameter(ei, "sys", sys);
      GetParameter(ei, "sNN", sNN);
      GetParameter(ei, "field", field);
      GetParameter(ei, "runNo", runNo);

      TString tS; SysString(sys, tS); DrawParameter(y, "System", tS);
      TString tE; SNNString(sNN, tE); DrawParameter(y, "#sqrt{s_{NN}}", tE);
      DrawParameter(y, "L3 B field", Form("%+2dkG", field));
      DrawParameter(y, "Run #", Form("%6lu", runNo));
    }

    PrintCanvas("MC Corrections");
  }
  //____________________________________________________________________
  TCollection* GetVertexList(TCollection* parent, const TAxis& axis, Int_t bin)
  {
    TString folder = TString::Format("vtx%+05.1f_%+05.1f", 
				     axis.GetBinLowEdge(bin), 
				     axis.GetBinUpEdge(bin));
    folder.ReplaceAll(".", "d");
    folder.ReplaceAll("+", "p");
    folder.ReplaceAll("-", "m");
    
    TCollection* c = GetCollection(parent, folder);
    if (!c) 
      Warning("DrawVertexBins", "List %s not found", folder.Data());
	
    return c;
  }
  //____________________________________________________________________
  void DrawVertexBins(Bool_t forward)
  {
    TH1* vtxHist = GetH1(fSums, "vtxAxis");
    if (!vtxHist) return;
    
    Info("DrawVertexBins", "Drawing %s vertex bins - %d bins",
	 forward ? "Forward" : "Central", vtxHist->GetNbinsX());

    TAxis* vtxAxis = vtxHist->GetXaxis();
    for (Int_t i = 1; i <= vtxAxis->GetNbins(); i++) {
      Info("DrawVertexBins", " - Bin %d (%+5.1f - %+5.1f)", i,
	   vtxAxis->GetBinLowEdge(i), vtxAxis->GetBinUpEdge(i));
      TCollection* c = GetVertexList(fSums, *vtxAxis, i);
      if (!c) continue;
      
      if (forward) {
	DivideForRings(true, true);
	for (UShort_t d = 1; d <= 3; d++) { 
	  for (UShort_t q = 0; q < (d == 1 ? 1 : 2); q++) { 
	    Char_t r = q == 0 ? 'I' : 'O';
	    DrawInRingPad(d,r, GetH2(c, Form("FMD%d%c_cache",d,r)), "colz");
	  }
	}
	DrawInPad(fBody, (fLandscape ? 4: 2), GetH2(c, "primary"), "colz");
      }
      else {
	fBody->Divide(1,3, 0, 0);
	
	DrawInPad(fBody, 1, GetH2(c, "hits"),     "colz");
	DrawInPad(fBody, 2, GetH2(c, "clusters"), "colz");
	DrawInPad(fBody, 3, GetH2(c, "primary"), "colz");
      }
      PrintCanvas(Form("%s sums - IP_{z} bin %+5.1f - %+5.1f",
		       (forward ? "Forward" : "Central"),
		       vtxAxis->GetBinLowEdge(i), 
		       vtxAxis->GetBinUpEdge(i)));
    }
  }
  //____________________________________________________________________
  void DrawResults(Bool_t forward)
  {
    Info("DrawResults", "Drawing resulting %s vertex bins",
	 forward ? "Forward" : "Central");
    TH1* vtxHist = GetH1(fSums, "vtxAxis");
    if (!vtxHist) return;
    
    TAxis* vtxAxis = vtxHist->GetXaxis();
    for (Int_t i = 1; i <= vtxAxis->GetNbins(); i++) {
      Info("DrawResults", " - Bin %d (%+5.1f - %+5.1f)", i,
	   vtxAxis->GetBinLowEdge(i), vtxAxis->GetBinUpEdge(i));
      TCollection* c = GetVertexList(fResults, *vtxAxis, i);
      if (!c) continue;

      if (forward) {
	THStack* all = new THStack("all", 
				   "2^{nd} correction averaged over #phi");
	DivideForRings(true, true);
	for (UShort_t d = 1; d <= 3; d++) { 
	  for (UShort_t q = 0; q < (d == 1 ? 1 : 2); q++) { 
	    Char_t r = q == 0 ? 'I' : 'O';
	    // TVirtualPad* p = RingPad(d, r);
	    // p->cd();
	    // p->Divide(1,2,0,0);
	    TH2* h = GetH2(c, Form("FMD%d%c_vtxbin%03d",d,r,i));
	    DrawInRingPad(d,r, h,"colz");
	    // TVirtualPad* pp = p->cd(1);
	    // TVirtualPad* ppp = p->cd(2);
	    // ppp->SetRightMargin(pp->GetRightMargin());
	    TH1* hh = h->ProjectionX();
	    hh->Scale(1./ h->GetNbinsY());
	    hh->SetFillColor(RingColor(d,r));
	    hh->SetLineColor(RingColor(d,r));
	    hh->SetMarkerColor(RingColor(d,r));
	    hh->SetFillStyle(3001);
	    hh->SetTitle(Form("#LT%s#GT", hh->GetTitle()));
	    // DrawInPad(p,2, hh, "hist e");
	    all->Add(hh, "hist e");
	  }
	  TVirtualPad* p = RingPad(0, '0');
	  p->SetBottomMargin(0.10);
	  p->SetLeftMargin(0.10);
	  p->SetRightMargin(0.05);
	  DrawInRingPad(0, 'O', all, "nostack");
	}
      }
      else {
	fBody->Divide(2,4,0,0);
	TH2* secMap               = GetH2(c, "secMap");
	TH2* secMapAlt            = GetH2(c, "secMapEff");
	if (!secMapAlt) secMapAlt = GetH2(c, "secMapHit");
	TH1* acc                  = GetH1(c, "acc");
	TH1* accAlt               = GetH1(c, "accEff");
	if (!accAlt) accAlt       = GetH1(c, "accHit");

	TH1* secMapProj = secMap->ProjectionX();
	secMapProj->Scale(1./ secMap->GetNbinsY());
	secMapProj->Divide(acc);
	secMapProj->SetFillColor(kRed+1);
	secMapProj->SetFillStyle(3001);
	secMapProj->SetTitle(Form("#LT%s#GT/Acceptance", secMap->GetTitle()));

	TH1* secMapAltProj = secMapAlt->ProjectionX();
	secMapAltProj->Scale(1./ secMapAlt->GetNbinsY());
	secMapAltProj->Divide(accAlt);
	secMapAltProj->SetFillColor(kBlue+1);
	secMapAltProj->SetFillStyle(3001);
	secMapAltProj->SetTitle(Form("#LT%s#GT/Acceptance", 
				     secMapAlt->GetTitle()));

	Double_t secMapMax = TMath::Max(secMap->GetMaximum(),
					secMapAlt->GetMaximum());
	secMap->SetMaximum(secMapMax);
	secMapAlt->SetMaximum(secMapMax);

	Double_t secMapProjMax = TMath::Max(secMapProj->GetMaximum(),
					    secMapAltProj->GetMaximum());
	secMapProj->SetMaximum(secMapProjMax);
	secMapAltProj->SetMaximum(secMapProjMax);

	acc->SetFillColor(kRed+1);
	acc->SetFillStyle(3001);
	accAlt->SetFillColor(kBlue+1);
	accAlt->SetFillStyle(3001);

	Double_t accMax = TMath::Max(acc->GetMaximum(),accAlt->GetMaximum());
	acc->SetMaximum(accMax);
	accAlt->SetMaximum(accMax);

	if (secMap->GetMean(1) > 0 && secMap->GetMean(2) > 0)
	  DrawInPad(fBody, 1, secMap,    "colz", kGridx);
	if (secMapAlt->GetMean(1) > 0 && secMapAlt->GetMean(2) > 0)
	  DrawInPad(fBody, 2, secMapAlt, "colz", kGridx);

	TVirtualPad* p = fBody;
	TVirtualPad* pp = p->cd(1);
	TVirtualPad* ppp = p->cd(3);
	ppp->SetRightMargin(pp->GetRightMargin());
	DrawInPad(p,3, secMapProj, "hist", kGridx|kGridy);

	ppp = p->cd(5);
	ppp->SetRightMargin(pp->GetRightMargin());
	DrawInPad(fBody, 5, acc, "", kGridx|kGridy);

	pp = p->cd(2);
	pp->SetLeftMargin(0.10);
	ppp = p->cd(4);
	ppp->SetRightMargin(pp->GetRightMargin());
	ppp->SetLeftMargin(0.10);
	DrawInPad(p,4, secMapAltProj, "hist", kGridx|kGridy);

	pp = p->cd(4);
	pp->SetLeftMargin(0.10);
	ppp = p->cd(6);
	ppp->SetRightMargin(pp->GetRightMargin());
	ppp->SetLeftMargin(0.10);
	DrawInPad(fBody, 6, accAlt, "", kGridx|kGridy);

	TH2* diag = GetH2(c, "diagnostics");
	if (diag->GetMean(1) > 0 && diag->GetMean(2) > 0) 
	  DrawInPad(fBody, 7, diag, "colz");

	if (secMap->GetMean(1) > 0 && secMap->GetMean(2) > 0 &&
	    secMapAlt->GetMean(1) > 0 && secMapAlt->GetMean(2) > 0) {
	  TH2* ratio = static_cast<TH2*>(secMap->Clone("ratio"));
	  ratio->Add(secMapAlt, -1);
	  ratio->Divide(secMapAlt);
	  ratio->SetTitle("Relative difference between maps");
	  ratio->SetZTitle("#frac{S - S_{alt}}{S_{alt}}");
	
	  pp = p->cd(8);
	  pp->SetLeftMargin(0.10);
	  DrawInPad(fBody, 8, ratio, "colz");
	}
      }
      PrintCanvas(Form("%s results - IP_{z} bin %+5.1f - %+5.1f",
		       (forward ? "Forward" : "Central"),
		       vtxAxis->GetBinLowEdge(i), 
		       vtxAxis->GetBinUpEdge(i)));
    }
  }
  TCollection* fSums;
  TCollection* fResults;
};

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