ROOT logo
#if !defined (__CINT__) || (defined(__MAKECINT__))
#include <iostream>
#include <map>
#include <fstream>
#include "TString.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "AliParticleYield.h"
#include "TGraphErrors.h"
#include "TF1.h"
#include "TROOT.h"
#include "TVirtualFitter.h"
#include "TMath.h"
#include "TFitResult.h"
#include "TMinuit.h"
#include "TLatex.h"
#include "TDatabasePDG.h"
#include "TPad.h"
#include "TCanvas.h"

#endif




std::map<TString,Float_t> npartPbPb;
std::map<TString,Float_t> npartPbPbErr;

void ReadCentralityFromFile() ;
Double_t FitShiftedGraphAndExtrapolate(TGraphErrors * gr, Int_t shift, TF1 * f1, const char * centr, Color_t color,  Bool_t draw = kFALSE) ;
Double_t ErrorFunction (Double_t *xx, Double_t *p ) ;
Double_t FuncPlusErr (Double_t *xx, Double_t *p) ;

enum {kNoShift, kShiftUp, kShiftDown, kShiftHarder, kShiftSofter};


TF1 * fForErrors = 0;
const int npar = 3;
Double_t matrix[npar][npar];
TString centrFile;
TString systemAndEnergy;
Double_t maxy = 0;
//TString label = "#frac{d#it{N}}{d#it{y}} = #it{a} + #it{b} #times (#it{N}_{part})^{#it{c}}";
TString label = "#frac{d#it{N}}{d#it{y}} = #it{a} + #it{b} #times (d#it{N}/d#it{#eta})^{#it{c}}";
Int_t collSystem  = 2;
Float_t energy = 2760;

void FitNPartDependence() {

  // This macro can be used to fit the centrality dependence of
  // different particles in order to extrapolate or interpolate the
  // yield as a function of centrality.
  // The value of npart or dndeta is read from a text file, which must
  // be in the format "centrTag value error"

  // The particle yields are taken from the machine readable files.
  // If you want to fit a different particle, you have to uncomment
  // the corresponding section below.  if you want to try a different
  // function, scroll down to the definition of f1

  // For the estimate of the systematic uncertainties, the syst graph
  // is shifted up and down within its uncertainties. Few strategies
  // are possible (see the call to FitShiftedGraphAndExtrapolate below
  // to change the behavior):
  // 1. All points are coherently shifted up and down by 1 syst bar
  // (kShiftUp, kShiftDown)
  // 2. A worst case scenario is implemented, where the first point is
  // shifted by +- 1 sigma, the last one by -+ 1 sigma and all the
  // other points are shifted smoothly in between (kShiftHarder,
  // kShiftSofter)

  //__________________________________________________________________//

  // WARNING: check isSum

  // KStar
  // centrFile = "npart_PbPb.txt";
  // //  centrFile = "dndeta_PbPb.txt";
  // maxy = 50;
  // systemAndEnergy = "Pb-Pb #sqrt{#it{s}}_{NN} = 2.76 TeV";
  // const char * centralityToPlot[] = {   "V0M0020" ,  "V0M2040" ,  "V0M4060" ,  "V0M6080" , 0};
  // const char * centrToExtrapolate = "V0M0010";
  // Int_t pdg = 313;
  // TClonesArray * arr = AliParticleYield::ReadFromASCIIFile("./PbPb_2760_Kstar892.txt");  
  // Deuteron
  // gROOT->ProcessLine(".x figTemplate.C(0,0.00001,400,0.2)");  
  // const char * centralityToPlot[] = {   "V0M0010" ,  "V0M1020" ,  "V0M2040" ,  "V0M4060" ,  "V0M6080",0 };
  // const char * centrToExtrapolate = "V0M0010";
  // Int_t pdg = 1000010020;
  // TClonesArray * arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_DeuHelium3.txt");
  //  Deuteron pPb
  centrFile = "dndeta_pPb.txt";
  const char * centralityToPlot[] = {   "V0A0010", "V0A1020", "V0A2040", "V0A4060", "V0A6000" ,0};
  const char * centrToExtrapolate = "V0A0005";
  //const char * centrToExtrapolate = "V0A6080";
  Int_t pdg = -1000010020;
  TClonesArray * arr = AliParticleYield::ReadFromASCIIFile("pPb_5020_deuteron.txt");
  maxy = 0.01;
  systemAndEnergy = "p-Pb #sqrt{#it{s}}_{NN} = 5.02 TeV";
  energy = 5020;
  collSystem = 1;
  // K* pPb
  // centrFile =  "dndeta_pPb.txt";
  // //  centrFile = "dndeta_PbPb.txt";
  // maxy = 1;
  // systemAndEnergy = "p-Pb #sqrt{#it{s}}_{NN} = 5.02 TeV";
  // const char * centralityToPlot[] = {   "V0A0020" ,  "V0A2040" ,  "V0A4060" ,  "V0A6080", "V0A8000" , 0};
  // const char * centrToExtrapolate = "V0A0005";
  // Int_t pdg = 313;
  // TClonesArray * arr = AliParticleYield::ReadFromASCIIFile("./pPb_5020_Kstar.txt");  
  // energy = 5020;
  // collSystem = 1;


  // Helium3
  // gROOT->ProcessLine(".x figTemplate.C(0,0.00001,400,0.2)");  
  // const char * centralityToPlot[] = {   "V0M0020" ,  "V0M2080" ,0};
  // const char * centrToExtrapolate = "V0M0010";
  // Int_t pdg = 1000020030;
  // TClonesArray * arr = AliParticleYield::ReadFromASCIIFile("PbPb_2760_DeuHelium3.txt");


  

  //  gPad->GetCanvas()->SetTitle(Form("c%s", TDatabasePDG::Instance()->GetParticle(pdg)->GetName()));

  ReadCentralityFromFile();
  TGraphErrors * grSyst = new TGraphErrors; 
  TGraphErrors * grStat = new TGraphErrors; 
  Double_t maxx = 1.1*npartPbPb[centrToExtrapolate];
  //  Double_t maxx = 1.1*npartPbPb["V0A0005"];
  // Function
  // TF1 * f1 = new TF1 ("f1", "[0] + [1]*x", 0, maxx);
  // f1->SetParameters(1,1);
  TF1 * f1 = new TF1 ("f1", "[0] + [1]*x^[2]", 0, maxx);
  f1->SetParameters(0, 6.3266e-04, 8.99883e-01);

  
  gROOT->ProcessLine(Form(".x figTemplate.C(0,0.1,%f,%f)", maxx, maxy));
  gPad->GetCanvas()->SetTitle("cKstar");

  //  f1->FixParameter(0, 0);
  Int_t icentr = 0;
  AliParticleYield * part = 0;
  while (centralityToPlot[icentr]) {
    part =  AliParticleYield::FindParticle (arr, pdg, collSystem, energy, centralityToPlot[icentr]);
    if(part) {
      grSyst->SetPoint     (icentr , npartPbPb[centralityToPlot[icentr]]    , part->GetYield());
      grSyst->SetPointError(icentr , npartPbPbErr[centralityToPlot[icentr]] , part->GetSystError());
      grStat->SetPoint     (icentr , npartPbPb[centralityToPlot[icentr]]    , part->GetYield());
      grStat->SetPointError(icentr , npartPbPbErr[centralityToPlot[icentr]] , part->GetStatError());
      
      //      part->Print();
    }
    icentr++;
  }
  grStat->Draw("P");
  grStat->SetMarkerStyle(24);
  grSyst->Draw("PE2");
  grSyst->SetFillStyle(0);
  Double_t yield          = FitShiftedGraphAndExtrapolate(grStat, kNoShift  , f1, centrToExtrapolate, kRed  );

  // We need to cache the covariance matrix and the function here, otherwise things get messed up
  fForErrors = (TF1*) f1->Clone();
  fForErrors->SetLineColor(kRed);
  fForErrors->SetLineStyle(0);
  fForErrors->Draw("same");
  gMinuit->mnemat(&matrix[0][0],npar);
  // The statistical error is computed propagating the uncertainty on the parameters to the function via the covariance matrix
  TF1 * fShiftedPlus   = new TF1("fShiftedPlus"  , FuncPlusErr, 0, maxx,1); fShiftedPlus->SetParameter(0,+1);
  TF1 * fShiftedMinus  = new TF1("fShiftedMinus" , FuncPlusErr, 0, maxx,1); fShiftedMinus->SetParameter(0,-1);
  fShiftedMinus->SetLineStyle(kDotted);
  fShiftedPlus->SetLineStyle (kDotted);
  fShiftedPlus ->Draw("same");
  fShiftedMinus->Draw("same");
  TF1 * fError = new TF1("fError", ErrorFunction, 0,maxx, 0);

  // The uncertainty on the systematics is computed shifting the graph up and down + refitting
  // Double_t errorSystPlus  = TMath::Abs(FitShiftedGraphAndExtrapolate(grSyst, kShiftUp  , f1, centrToExtrapolate, kRed)-yield);
  // Double_t errorSystMinus = TMath::Abs(FitShiftedGraphAndExtrapolate(grSyst, kShiftDown, f1, centrToExtrapolate, kRed)-yield);
  Double_t errorSystPlus  = TMath::Abs(FitShiftedGraphAndExtrapolate(grSyst, kShiftHarder, f1, centrToExtrapolate, kRed)-yield);
  Double_t errorSystMinus = TMath::Abs(FitShiftedGraphAndExtrapolate(grSyst, kShiftSofter, f1, centrToExtrapolate, kRed)-yield);


  Double_t errorStat = fError->Eval(npartPbPb[centrToExtrapolate]);


  std::cout << "Yield from fit: ("<<centrToExtrapolate<< "="<<npartPbPb[centrToExtrapolate]<<")" 
            << yield 
            << "   +" << errorStat << " " 
            << "   +" << errorSystPlus << " " << errorSystMinus//<< std::endl;
            << "   +" << fError->Eval(npartPbPb[centrToExtrapolate])  << std::endl;
  std::cout << yield << "    " 
            << errorStat << "     " 
            << (errorSystPlus+errorSystMinus)/2 << std::endl;
  

  TGraphErrors * gExtrap = new TGraphErrors();
  gExtrap->SetMarkerStyle(20);
  gExtrap->SetPoint(0, npartPbPb[centrToExtrapolate], yield);
  gExtrap->SetPointError(0, 0, (errorSystPlus+errorSystMinus)/2);
  gExtrap->Draw("P");

  TLatex * text = new TLatex (0.2,0.81,systemAndEnergy);
  text->SetNDC();
  text->Draw();
  TLatex * text2 = new TLatex (0.2,0.72,part->GetLatexName());
  text2->SetNDC();
  text2->Draw(); 

  TLatex * func = new TLatex(0.53,0.23,label);
  func->SetNDC();
  func->Draw();


}

Double_t ErrorFunction (Double_t *xx, Double_t *p ) {



  //  Double_t x = xx[0];
  Double_t func[npar];
  // func[0] = 1;
  // func[1] = TMath::Power(x, fForErrors->GetParameter(2));
  // func[2] = fForErrors->GetParameter(1)*TMath::Power(x, fForErrors->GetParameter(2))*TMath::Log(x);
  //  In general, one can compute the derivative numerically using root.
  for(Int_t ipar = 0; ipar < npar; ipar++){
        func[ipar] =  fForErrors->GradientPar(ipar, xx);
  }

  

  Double_t variance = 0;
  
  for(Int_t ipar = 0; ipar < npar; ipar++){
    for(Int_t jpar = 0; jpar < npar; jpar++){
      variance = variance + func[ipar]*func[jpar] * matrix[ipar][jpar];
    }
    
  }
  Double_t error = TMath::Sqrt(variance);
  return error;
}

Double_t FuncPlusErr (Double_t *xx, Double_t *p) {

  Double_t value = fForErrors->Eval(xx[0]);
  Double_t error = ErrorFunction(xx, p);

  if(p[0] > 0) {
    return value + error;
  }
  return value -error;
}


Double_t FitShiftedGraphAndExtrapolate(TGraphErrors * gr, Int_t shift, TF1 * f1, const char * centr, Color_t color, Bool_t draw) {
  // Shift graph
  // 1 = up
  // 2 = down

  TGraphErrors * grLocal = (TGraphErrors*) gr->Clone();
  Int_t npoint = grLocal->GetN() ;
  if(shift != kNoShift) {
    for(Int_t ipoint = 0; ipoint < npoint; ipoint++){
      Double_t relError = grLocal->GetEY()[ipoint]/grLocal->GetY()[ipoint];
      Double_t value    = grLocal->GetY() [ipoint];
      if(shift == kShiftUp  ) value += grLocal->GetEY()[ipoint];        
      if(shift == kShiftDown) value -= grLocal->GetEY()[ipoint];   
      if(shift == kShiftHarder) {        
        Double_t valueShift = -1. + 2.*Float_t(ipoint)/(npoint-1);
        value += valueShift*grLocal->GetEY()[ipoint];
        std::cout << "valueShift " << valueShift << std::endl;
      }
      if(shift == kShiftSofter) {        
        Double_t valueShift = +1. - 2.*Float_t(ipoint)/(npoint-1);
        value += valueShift*grLocal->GetEY()[ipoint];
        std::cout << "valueShift " << valueShift << std::endl;
      }
      grLocal->SetPoint     (ipoint, grLocal->GetX() [ipoint], value);
      grLocal->SetPointError(ipoint, grLocal->GetEX()[ipoint], relError*value);
    }
  }
  grLocal->Fit(f1, "", "Q");


  Double_t yield = f1->Eval(npartPbPb[centr]);
  TF1 * clone = (TF1*) f1->Clone();
  clone->SetLineWidth(1);
  clone->SetLineStyle(kDashed);
  clone->SetLineColor(color);
  clone->Draw("Same");
  if(draw) {
    TVirtualPad * oldPad = gPad;
    new TCanvas(Form("shifted_%d", shift), Form("shifted_%d", shift));
    grLocal->Draw("AP");
    clone->Draw("same");
    oldPad->cd();
  } else {
    delete grLocal;
  }
  return yield;

}

void ReadCentralityFromFile() {
  ifstream filein (centrFile);
  TString line;
  while (line.ReadLine((filein))) {    
    TObjArray * tokens = line.Tokenize(" ");
    if(tokens->GetEntries() != 3) {
      delete tokens;
      continue;
    }
    TString str        = ((TObjString*)tokens->At(0))->String();
    Float_t npart     = ((TObjString*)tokens->At(1))->String().Atof();
    Float_t npartErr  = ((TObjString*)tokens->At(2))->String().Atof();
    //    std::cout << "["<<str.Data() <<"]" << npart << " " << npartErr << std::endl;
    if(npart) {
      npartPbPb   [str] = npart;
      npartPbPbErr[str]  = npartErr;
    }
    delete tokens;
  }

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