ROOT logo
#ifndef __CINT__
# include <TStyle.h>
# include <TFile.h>
# include <TList.h>
# include <TH1.h>
# include <THStack.h>
# include <TLegend.h>
# include <TLegendEntry.h>
# include <TLatex.h>
# include <TLine.h>
# include <TString.h>
# include <TCanvas.h>
# include <TError.h>
# include <TColor.h>
#else
class THStack;
class TAxis;
#endif

/**
 * A simple script to draw results from MakedNdeta.C (or similar)
 * 
 * @ingroup pwglf_forward_scripts
 */
/** 
 * Get a stack from the passed list 
 * 
 * @param list   List to get the stack from 
 * @param name   Name of stack 
 * @param rebin  Optional rebinning - must exists in list 
 * 
 * @return Stack or null
 * 
 * @ingroup pwglf_forward_scripts
 */
THStack*
GetStack(const TList* list, const char* name, Int_t rebin)
{
  if (!list) { 
    Warning("GetStack", "List is null");
    return 0;
  }

  TString n(name);
  if (rebin > 1) n.Append(Form("_rebin%02d", rebin));
  TObject* o = list->FindObject(n);
  if (!o) { 
    Warning("GetStack", "No %s object found in %s", n.Data(), list->GetName());
    return 0;
  }
  return static_cast<THStack*>(o);
}

/** 
 * Get a histogram from a list 
 * 
 * @param list   List 
 * @param name   Name of histogram
 * @param rebin  Rebinning factor
 * 
 * @return Histogram or null
 * 
 * @ingroup pwglf_forward_scripts
 */
TH1*
GetHist(const TList* list, const char* name, Int_t rebin)
{
  if (!list) { 
    Warning("GetStack", "List is null");
    return 0;
  }
  TList* all = static_cast<TList*>(list->FindObject("all"));
  if (!all) { 
    Warning("GetHist", "List all not found in %s", list->GetName());
    return 0;
  }

  TString n(name);
  if (rebin > 1) n.Append(Form("_rebin%02d", rebin));
  TObject* o = all->FindObject(n);
  if (!o) { 
    Warning("GetStack", "No %s object found in %s", n.Data(), all->GetName());
    return 0;
  }
  return static_cast<TH1*>(o);
}

/** 
 * Add histograms from one stack to another 
 * 
 * @param p      Parent stack to add to 
 * @param list   List to look for the stack in 
 * @param name   Name of stack to add 
 * @param rebin  Optional rebinning - must exists in list 
 * 
 * @return Added stack or null
 * 
 * @ingroup pwglf_forward_scripts
 */
THStack*
AddStack(THStack* p, const TList* list, const char* name, Int_t rebin)
{
  THStack* s = GetStack(list, name, rebin);
  if (!s) return 0;
  
  TIter next(s->GetHists());
  TH1*  hist = 0;
  while ((hist = static_cast<TH1*>(next()))) 
    p->Add(hist);
  return s;
}

/** 
 * Build up a centrality legend 
 * 
 * @param c Centrality axis 
 * 
 * @ingroup pwglf_forward_scripts
 */
void
BuildCentLegend(const TAxis* c)
{
  if (!c) return;
  TLegend* l = new TLegend(1.2*gPad->GetLeftMargin(), 
			   .55, .35, 1-gPad->GetTopMargin());
  l->SetFillColor(0);
  l->SetFillStyle(0);
  l->SetBorderSize(0);
  l->SetTextFont(22);
  l->SetHeader("Centralities");
  l->SetTextFont(132);
  
  Int_t    nCol     = gStyle->GetNumberOfColors();
  for (Int_t i = 0; i < c->GetNbins(); i++) {
    UShort_t low    = c->GetBinLowEdge(i+1);
    UShort_t high   = c->GetBinUpEdge(i+1);
    Float_t  fc     = (low+double(high-low)/2) / 100;
    Int_t    icol   = TMath::Min(nCol-1,int(fc * nCol + .5));
    Int_t    col    = gStyle->GetColorPalette(icol);
    TLegendEntry* e = l->AddEntry(Form("dummy%02d", i), 
				  Form("%3d%% - %3d%%", low, high), "p");
    e->SetMarkerColor(col);
				  
  }
  l->Draw();
}

/** 
 * Build a legend.  Histograms a filtered for the same title 
 * 
 * @param stack Stack of histograms 
 * @param c     Centrality axis.  If present, markers are black 
 * 
 * @ingroup pwglf_forward_scripts
 */
void
BuildLegend(const THStack* stack, const TAxis* c)
{
  Double_t x1 = .75, x2 = 1-gPad->GetRightMargin();
  Double_t y1 = .8,  y2 = 1-gPad->GetTopMargin();
  if (!c) { 
    // PP 
    x1 = .4; 
    y1 = .4;
    x2 = .8;
    y2 = .6;
  }
  TLegend* l = new TLegend(x1, y1, x2, y2, "");
  l->SetFillColor(0);
  l->SetFillStyle(0);
  l->SetBorderSize(0);
  l->SetTextFont(132);
  
  TObjArray seen;
  seen.SetOwner();
  TIter next(stack->GetHists());
  TH1* hist = 0;
  while ((hist = static_cast<TH1*>(next()))) { 
    TString n(hist->GetTitle());
    if (n.Contains("mirrored")) continue;
    if (seen.FindObject(n.Data())) continue;
    TObjString* ns = new TObjString(n);
    ns->SetUniqueID(((hist->GetMarkerStyle() & 0xFFFF) << 16) |
		    ((hist->GetMarkerColor() & 0xFFFF) <<  0));
    seen.Add(ns);
  }
  seen.Sort();
  TIter nextu(&seen);
  TObject* s = 0;
  Int_t i = 0;
  while ((s = nextu())) { 
    TLegendEntry* dd = l->AddEntry(Form("data%2d", i++), 
				   s->GetName(), "p");
    Int_t style = (s->GetUniqueID() >> 16) & 0xFFFF;
    Int_t color = (s->GetUniqueID() >>  0) & 0xFFFF;
    dd->SetLineColor(kBlack);
    if (c) dd->SetMarkerColor(kBlack);
    else   dd->SetMarkerColor(color);
    dd->SetMarkerStyle(style);
    Int_t st = dd->GetMarkerStyle();
    if (st == 27 || st == 28 || st == 29 || st == 30 || st == 33 || st == 34) 
      dd->SetMarkerSize(1.4*dd->GetMarkerSize());
  }
  // TLegendEntry* sep = l->AddEntry("s", "_", "h");
  // sep->SetTextSize(0.01);
  TLine* sep = new TLine(0,0,1,1);
  sep->SetLineWidth(1);
  sep->DrawLineNDC(x1+.02, y1-.005, x2-.03, y1-.005);
  // sep->Draw();
  
  TLegend* l2 = new TLegend(x1, y1-.005, x2, y1-.15, "");
  l2->SetFillColor(0);
  l2->SetFillStyle(0);
  l2->SetBorderSize(0);
  l2->SetTextFont(132);
  
  TLegendEntry* d1 = l2->AddEntry("d1", "Data", "p");
  d1->SetLineColor(kBlack);
  d1->SetMarkerColor(kBlack);
  d1->SetMarkerStyle(20);
  TLegendEntry* d2 = l2->AddEntry("d2", "Mirrored data", "p");
  d2->SetLineColor(kBlack);
  d2->SetMarkerColor(kBlack);
  d2->SetMarkerStyle(24);
  
  l->Draw();
  l2->Draw();
}

/** 
 * Add additional information
 *  
 * @param forward  List of info
 * @param prelim   Preliminary mark 
 */
void
AddInformation(TList* forward, bool prelim=true)
{
  Double_t x  = .12;
  Double_t y  = .95;
  Double_t ts = 0.05;
  if (prelim) {
    TLatex* wip = new TLatex(x, y, "Work in progress");
    wip->SetNDC();
    wip->SetTextColor(TColor::GetColor(234,26,46));
    wip->SetTextAlign(13);
    wip->SetTextFont(132);
    wip->SetTextSize(ts);
    wip->Draw();
    y -= ts;
  }

  TObject* sNN = forward->FindObject("sNN");
  TObject* sys = forward->FindObject("sys");
  TObject* trg = forward->FindObject("trigger");
  TObject* vtx = forward->FindObject("vtxAxis");
  TObject* sch = forward->FindObject("scheme");

  TString t(sys->GetTitle());
  Bool_t isPP = t == "pp";

  
  TString s = Form("%s @ #sqrt{s%s}=", 
		   sys->GetTitle(),
		   (isPP ? "" : "_{NN}"));
  Int_t cms = sNN->GetUniqueID();
  if (cms > 1000) s.Append(Form("%5.2fTeV", float(cms)/1000));
  else            s.Append(Form("%3dGeV", cms));
  s.Append(Form(", %s", trg->GetTitle()));

  // if (isPP) { x = .3; y = .3; }
  if (isPP) { 
    x  = 1-gPad->GetRightMargin()-.01;
    y  = 1-gPad->GetTopMargin()-.01;
    ts = .04;
  }
  TLatex* ltx = new TLatex(x, y, s.Data());
  ltx->SetNDC();
  ltx->SetTextColor(TColor::GetColor(41,73,156));
  ltx->SetTextAlign((isPP ? 33 : 13));
  ltx->SetTextFont(132);
  ltx->SetTextSize(ts);
  ltx->Draw();
  y -= ts;
  ltx->DrawLatex(x, y, vtx->GetTitle());
  y -= ts;
  ltx->DrawLatex(x, y, sch->GetTitle());
}  

/** 
 * A function (double Gaussian)
 * 
 * @param xp Independent variables
 * @param pp Parameters 
 * 
 * @return Value of function
 * 
 * @ingroup pwglf_forward_scripts
 */
Double_t myFunc(Double_t* xp, Double_t* pp)
{
  Double_t x  = xp[0];
  Double_t a1 = pp[0];
  Double_t a2 = pp[1];
  Double_t s1 = pp[2];
  Double_t s2 = pp[3];
  return a1*(TMath::Gaus(x, 0, s1) - a2 * TMath::Gaus(x, 0, s2));
}

/** 
 * Make systematic error band 
 * 
 * @param cen     Central result
 * @param fwd     Forward result
 * @param sysErr  Systematic error (fractional)
 * 
 * @return 
 * 
 * @ingroup pwglf_forward_scripts
 */
TH1* 
MakeSysError(const TH1* cen, const TH1* fwd, Double_t sysErr=0.7)
{
  TH1* tmp = static_cast<TH1*>(fwd->Clone("dndetaFitted"));
  tmp->SetMarkerStyle(0);
  tmp->SetFillColor(kGray);
  tmp->SetFillStyle(3001);
  tmp->SetDirectory(0);
  Double_t xlow  = 100;
  Double_t xhigh = 0;
  for (Int_t i = 1; i <= tmp->GetNbinsX(); i++) {
    Double_t cc = cen->GetBinContent(i);
    Double_t cf = fwd->GetBinContent(i);
    Double_t ec = fwd->GetBinError(i);
    Double_t ef = fwd->GetBinError(i);
    Double_t nc = cf;
    Double_t ne = ef;
    if (cc < 0.001 && cf < 0.01) continue;
    xlow  = TMath::Min(tmp->GetXaxis()->GetBinLowEdge(i),xlow);
    xhigh = TMath::Max(tmp->GetXaxis()->GetBinUpEdge(i),xhigh);
    if (cc > 0.001) {
      nc = cc;
      ne = ec;
      if (cf > 0.001) {
	nc  = (cf + cc) / 2;
	ne  = TMath::Sqrt(ec*ec + ef*ef);
      }
    }
    tmp->SetBinContent(i, nc);
    tmp->SetBinError(i, ne);
  }
  TF1* tmpf  = new TF1("tmpf", "gaus", xlow, xhigh);
  tmp->Fit(tmpf, "NQ", "");
  
  TF1* fit = new TF1("f", myFunc, xlow, xhigh, 4);
  fit->SetParNames("a_{1}", "a_{2}", "#sigma_{1}", "#sigma_{2}");
  fit->SetParameters(tmpf->GetParameter(0), 
		     .2, 
		     tmpf->GetParameter(2), 
		     tmpf->GetParameter(2)/4);
  tmp->Fit(fit,"0WQ","");
  for (Int_t i = 1; i <= tmp->GetNbinsX(); i++) {
    Double_t tc = tmp->GetBinContent(i);
    if (tc < 0.01) continue;
    Double_t x = tmp->GetXaxis()->GetBinCenter(i);
    Double_t y = fit->Eval(x);
    tmp->SetBinContent(i, y);
    tmp->SetBinError(i,sysErr*y);
  }
  return tmp;
}

/** 
 * Function to draw the results from forward_dndeta.root file 
 * 
 * @param what     What to draw 
 * @param rebin    Rebinnig.  Note, the data must be present in the file
 * @param filename File to open and draw stuff from >
 * 
 * @ingroup pwglf_forward_scripts
 */
void
SimpledNdeta(Int_t what=0x5, 
	     Int_t rebin=5, const char* filename="forward_dndeta.root")
{
  TFile* file = TFile::Open(filename, "READ");
  if (!file) { 
    Error("SimpledNdeta", "File %s not found", filename);
    return;
  }

  TList* forward = static_cast<TList*>(file->Get("ForwardResults"));
  TList* central = static_cast<TList*>(file->Get("CentralResults"));
  TList* mctruth = static_cast<TList*>(file->Get("MCTruthResults"));

  THStack* all = new THStack("all", "All");
  if (what & 0x1) AddStack(all, forward, "dndeta",      rebin);
  if (what & 0x2) AddStack(all, forward, "dndetaMC",    rebin);
  if (what & 0x1) AddStack(all, central, "dndeta",      rebin);
  if (what & 0x2) AddStack(all, central, "dndetaMC",    rebin);
  if (what & 0x4) AddStack(all, mctruth, "dndeta",      rebin);
  
  TH1* tmp = 0;
  if (what & 0x1) { 
    Double_t sysErr = 0.07;
    TH1* fwd = GetHist(forward, "dndetaForward", rebin);
    TH1* cen = GetHist(central, "dndetaCentral", rebin);
    tmp = MakeSysError(cen, fwd, sysErr);
    // fit = tmpf;
  }
  
  TAxis* centAxis = static_cast<TAxis*>(forward->FindObject("centAxis"));
  Bool_t isPP = centAxis == 0;

  gStyle->SetPalette(1);
  gStyle->SetOptTitle(0);
  TCanvas* c = new TCanvas("dndeta", "dN/deta results", 900, 600);
  c->SetFillColor(0);
  c->SetFillStyle(0);
  c->SetBorderSize(0);
  c->SetBorderMode(0);
  c->SetTopMargin(0.03);
  c->SetRightMargin(0.03);
  
  all->Draw("nostack");
  TAxis* xa = all->GetHistogram()->GetXaxis();
  xa->SetTitleFont(132);
  xa->SetLabelFont(132);
  xa->SetTitle("#eta");
  TAxis* ya = all->GetHistogram()->GetYaxis();
  ya->SetTitleFont(132);
  ya->SetLabelFont(132);
  ya->SetTitle("dN_{ch}/d#eta");

  if (tmp) { 
    tmp->Draw("e5 same");
    all->Draw("same nostack");
  }
  

  // if (fit) fit->Draw("same");
  // if (tmp) tmp->Draw("same");

  BuildCentLegend(centAxis);
  BuildLegend(all, centAxis);

  AddInformation(forward);

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