ROOT logo
/** 
 * Open a file 
 * 
 * @param filename Name of file 
 * 
 * @return Return value 
 */
TFile* OpenFile(const char* filename)
{
  TFile* file = TFile::Open(filename, "READ");
  if (!file) 
    Error("OpenFile", "Failed to open the file %s for reading", filename);
  return file;
}
/** 
 * Get an object from parent list 
 * 
 * @param l    Parent list 
 * @param name Name of object to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TObject* GetObject(const TList* l, const char* name)
{
  if (!l) {
    Warning("GetObject", "No parent list given");
    return 0;
  }
  TObject* o = l->FindObject(name);
  if (!o) { 
    Warning("GetObject", "Object named %s not found in list %s", 
	    name, l->GetName());
    return 0;
  }
  return o;
}
/** 
 * Get an object from parent list 
 * 
 * @param l    Parent list 
 * @param name Name of object to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TObject* GetObject(const TDirectory* l, const char* name)
{
  if (!l) {
    Warning("GetObject", "No parent directory given");
    return 0;
  }
  TObject* o = l->Get(name);
  if (!o) { 
    Warning("GetObject", "Object named %s not found in directory %s", 
	    name, l->GetName());
    return 0;
  }
  return o;
}
Bool_t CheckType(const TObject* o, const TClass* cl)
{
  if (!o) return false;
  if (!o->IsA()->InheritsFrom(cl)) { 
    Warning("CheckType", "Object %s is not a %s, but a %s", 
	    o->GetName(), cl->GetName(), o->ClassName());
    return false;
  }
  return true;
}
/** 
 * Get a list from another list 
 * 
 * @param l    Parent list 
 * @param name Name of list to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TList* GetList(const TList* l, const char* name)
{
  TObject* o = GetObject(l, name);
  if (!CheckType(o, TList::Class())) return 0;
  return static_cast<TList*>(o);
}
/** 
 * Get a list from another list 
 * 
 * @param l    Parent list 
 * @param name Name of list to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TList* GetList(const TDirectory* l, const char* name)
{
  TObject* o = GetObject(l, name);
  if (!CheckType(o, TList::Class())) return 0;
  return static_cast<TList*>(o);
}
/** 
 * Get a histogram from a list 
 * 
 * @param l    Parent list 
 * @param name Name of histogram to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TH1* GetHist(const TList* l, const char* name)
{
  TObject* o = GetObject(l, name);
  if (!CheckType(o, TH1::Class())) return 0;
  return static_cast<TH1*>(o);
} 	  
/** 
 * Get a histogram from a list 
 * 
 * @param l    Parent list 
 * @param name Name of histogram to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TH1* GetHist(const TDirectory* l, const char* name)
{
  TObject* o = GetObject(l, name);
  if (!CheckType(o, TH1::Class())) return 0;
  return static_cast<TH1*>(o);
} 	  
/** 
 * Get a histogram from a list 
 * 
 * @param l    Parent list 
 * @param name Name of histogram to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TGraphErrors* GetGraph(const TList* l, const char* name)
{
  TObject* o = GetObject(l, name);
  if (!CheckType(o, TGraphErrors::Class())) return 0;
  return static_cast<TGraphErrors*>(o);
} 	  
/** 
 * Get a histogram from a list 
 * 
 * @param l    Parent list 
 * @param name Name of histogram to find 
 * 
 * @return 0 in case of problems, object pointer otherwise 
 */
TGraphErrors* GetGraph(const TDirectory* l, const char* name)
{
  TObject* o = GetObject(l, name);
  if (!CheckType(o, TGraphErrors::Class())) return 0;
  return static_cast<TGraphErrors*>(o);
} 	  

TGraphErrors* Ratio(const TGraphErrors* num, const TGraphErrors* denom)
{
  TGraphErrors* r = static_cast<TGraphErrors*>(num->Clone("tmp"));
  for (Int_t k = 0; k < r->GetN(); k++) { 
    Double_t xn = r->GetX()[k];
    Double_t yn = r->GetY()[k];
    Double_t en = r->GetErrorY(k);
    // Double_t xd = denom->GetX()[k];
    Double_t yd = denom->GetY()[k];
    Double_t ed = denom->GetErrorY(k);
    Double_t s  = (yn-yd)/yd;
    Double_t e  = 0;
    r->SetPoint(k, xn, s);
    r->SetPointError(k, 0, e);
  }
  return r;
}

/** 
 * Generate the emperical correction for unknown material in the
 * AliROOT geometric description.  This is done by taking the ratio
 * of the nominal vertex results to the results from satelitte events. 
 *
 * This can be done in two ways 
 *
 * - Either by using FMD results only 
 * - Or by using the full combined FMD+V0+SPD results 
 * 
 * The correction is written to the file "EmpiricalCorrection.root",
 * which will contain a TGraphErrors for each defined centrality
 * class, plus a TGraphErrors object that contains the average over
 * all centrality classes.
 *
 * Other results should be DIVIDED by the correction obtained from
 * this script.
 * 
 * @param fmdfmd If true, use FMD results only 
 */
void 
GenerateEmpirical(const char* fmdDispVtx="forward_dndetaDispVtx.root",
		  const char* fmdNomVtx="forward_dndetaNominalVtxZDC.root",
		  const char* fullDispVtx="dndetaPreliminaryQM12.root")
{
  
  TString outName    = "EmpiricalCorrection.root";
  TFile* fdispvtxFMD = OpenFile(fmdDispVtx);
  TFile* fNominalFMD = OpenFile(fmdNomVtx);
  TFile* fdispvtxAll = OpenFile(fullDispVtx);
  if (!fdispvtxFMD || !fNominalFMD || !fdispvtxAll) return;

  TFile* out = TFile::Open(outName, "RECREATE");
  if (!out) { 
    Error("GenerateEmpirical", "Failed to open output file %s", 
	  outName.Data());
    return;
  }

  Int_t limits[] = {     0,        5,      10,         20,    30  };
  Int_t colors[] = {kRed+2, kGreen+2, kBlue+1, kMagenta+1, kBlack };

  TGraphErrors* afmdfmd  = 0;
  TGraphErrors* afmdfull = 0;

  // --- Do two things fmd-to-fmd and fmd-to-full
  for (Int_t iM = 0; iM < 2; iM++) {
    Bool_t       fmdfmd   = (iM == 0);
    TMultiGraph* mg       = new TMultiGraph();
    TMultiGraph* mgfmdnom = (iM == 0 ? new TMultiGraph() : 0);
    TMultiGraph* mgref    = new TMultiGraph();
    mgref->SetTitle(Form("Satellite, FMD%s", fmdfmd ? "" : "+V0+Tracklets"));
    if (mgfmdnom) mgfmdnom->SetTitle("Nominal FMD");

    Info("", "Doing %s/FMD", fmdfmd ? "FMD" : "Full");
    TGraphErrors* corrcent[4];    
    TGraphErrors* allsym     = 0;
    TGraphErrors* fmddispvtx = 0;
    TGraphErrors* fmdnominal = 0;

    TList* displist = GetList(fdispvtxFMD,"ForwardResults");
    TList* nomlist  = GetList(fNominalFMD,"ForwardResults");
    
    Int_t nMin = 1000;
    // --- Get each defined centrality and form the ratio ------------
    for(Int_t iC=0; iC<4; iC++) {
      Int_t cl = limits[iC];
      Int_t ch = limits[iC+1];
      TString base; base.Form("_cent_%03d_%03d", cl, ch);
      corrcent[iC] = new TGraphErrors;
      corrcent[iC]->SetName(Form("correction%s",base.Data()));
      corrcent[iC]->SetTitle(Form("%2d%% - %2d%%", cl, ch));
      corrcent[iC]->GetHistogram()->SetXTitle("#eta");
      corrcent[iC]->GetHistogram()->SetYTitle("#frac{dN_{ch}/d#eta|_{nominal}}{"
					     "dN_{ch}/d#eta|_{satelitte}}");  
      corrcent[iC]->SetMarkerColor(colors[iC]);
      corrcent[iC]->SetLineColor(colors[iC]);
      corrcent[iC]->SetMarkerStyle(fmdfmd ? 20 : 24);
      corrcent[iC]->SetMarkerSize(fmdfmd ? 1 : 1.2);
      corrcent[iC]->SetFillStyle(0);
      corrcent[iC]->SetFillColor(0);
      
      mg->Add(corrcent[iC]);
      TGraphErrors* allsym = GetGraph(fdispvtxAll,Form("graphErrors_cent_%d_%d",
						       cl, ch));
    
      TString folderName   = Form("cent%03d_%03d",cl, ch);
      TList*  dispcentlist = GetList(displist, folderName);
      TList*  nomcentlist  = GetList(nomlist, folderName);
      TString histName     = "dndetaForward_rebin05";
      TH1D*   hDisp        = GetHist(dispcentlist, histName);
      TH1D*   hNominal     = GetHist(nomcentlist, histName);
    
      // Make our temporary graph 
      if   (fmdfmd) fmddispvtx = new TGraphErrors(hDisp);
      else          fmddispvtx = static_cast<TGraphErrors*>(allsym->Clone());
      fmdnominal               = new TGraphErrors(hNominal);
      if (mgfmdnom) {
	TGraph* g = static_cast<TGraph*>(fmdnominal->Clone(Form("nominal%s", 
								base.Data())));
	g->SetMarkerColor(colors[iC]);
	g->SetLineColor(colors[iC]);
	g->SetMarkerStyle(21);
	g->SetTitle("Nominal FMD");
	mgfmdnom->Add(g);
      }
      TGraph* ref = static_cast<TGraph*>(fmddispvtx->Clone(Form("satellite%s",
								base.Data())));
      ref->SetTitle(Form("%2d - %2d", cl, ch));
      ref->SetMarkerColor(colors[iC]);
      ref->SetLineColor(colors[iC]);
      ref->SetMarkerStyle(fmdfmd ? 22 : 20);
      ref->SetMarkerSize(1);
      mgref->Add(ref);
    
      Int_t nPoints = 0;
    
      for(Int_t iN=0; iN<fmdnominal->GetN(); iN++) {
	Double_t eta        = fmdnominal->GetX()[iN];
	Double_t nommult    = fmdnominal->GetY()[iN];
	Double_t nommulterr = fmdnominal->GetErrorY(iN);
	Double_t etaerr     = fmdnominal->GetErrorX(iN);

	// Ignore empty bins 
	if(nommult < 0.0001) continue;

	// Find the corresponding bin from the dispaclaced vertex analysis
	for(Int_t iS=0; iS < fmddispvtx->GetN(); iS++) {
	  Double_t eta1        = fmddispvtx->GetX()[iS];
	  Double_t dispmult    = fmddispvtx->GetY()[iS];
	  Double_t dispmulterr = fmddispvtx->GetErrorY(iS);

	  if(TMath::Abs(eta-eta1) >= 0.001) continue;
	  
	  Double_t corr  = nommult/dispmult;
	  Double_t rd    = dispmulterr/dispmult;
	  Double_t rn    = nommulterr/nommult;
	  Double_t error = (1/corr)*TMath::Sqrt(TMath::Power(rd,2) + 
					      TMath::Power(rn,2));
	  corrcent[iC]->SetPoint(nPoints,eta,corr);
	  corrcent[iC]->SetPointError(nPoints,etaerr,error);
	  nPoints++;
	  
	}
	//std::cout<<eta<<"  "<<nommult<<std::endl;
      }
      nMin = TMath::Min(nPoints, nMin);
    }

    // --- Calulate the average --------------------------------------
    TGraphErrors* average = new TGraphErrors;
    average->SetName(Form("average"));
    average->SetTitle(Form("%2d%% - %2d%%", limits[0], limits[4]));
    average->SetMarkerColor(colors[4]);
    average->SetLineColor(colors[4]);
    average->SetMarkerStyle(fmdfmd ? 20 : 24);
    average->SetMarkerSize(fmdfmd ? 1 : 1.2);
    average->SetFillStyle(0);
    average->SetFillColor(0);
    mg->Add(average);
    
    for(Int_t iA = 0; iA < nMin; iA++) {
      Double_t mean   = 0;
      Double_t error2 = 0;
      Double_t sumw2  = 0;
      
      // Loop over centralities 
      for(Int_t iC=0; iC<4; iC++) {
	Double_t eta  = corrcent[iC]->GetX()[iA];
	Double_t corr = corrcent[iC]->GetY()[iA];
	Double_t err  = corrcent[iC]->GetErrorY(iA);
	Double_t err2 = err * err;
	Double_t w    = 1 / err2;
	sumw2         += w;
	mean          += w * corr;
      }
      mean           /= sumw2;
      Double_t error = TMath::Sqrt(1. / sumw2);
          average->SetPoint(iA,eta,mean);
      average->SetPointError(iA,0.125,error);    
    }
    if (fmdfmd) afmdfmd  = average;
    else        afmdfull = average;

    // --- Calculate ratios ------------------------------------------
    TMultiGraph* ratios = new TMultiGraph;
    ratios->SetName("ratios");
    for(Int_t iC=0; iC<4; iC++) {
      Int_t cl        = limits[iC];
      Int_t ch        = limits[iC+1];
      TGraphErrors* r = Ratio(corrcent[iC], average);
      r->SetName(Form("ratio%s",base.Data()));
      ratios->Add(r);
    }

    // --- Store the result ------------------------------------------
    TDirectory* d = out->mkdir(fmdfmd ? "fmdfmd" : "fmdfull", 
			       Form("Empirical corrections %s", 
				    fmdfmd ? "FMD/FMD" : "FULL/FMD"));
    d->cd();
    for(Int_t p=0; p<4; p++) corrcent[p]->Write();
    average->Write("average");
    mg->Write("all");
    ratios->Write("ratios");
    mgref->Write("satellite");
    out->cd();
    if (mgfmdnom) mgfmdnom->Write("nominal");
    out->ls();
  } // End method loop

  TGraphErrors* r = Ratio(afmdfull, afmdfmd);
  r->Write("ratio");

  out->Close();
}
//
// EOF
//

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