ROOT logo
/**
 * Test script to fit the energy loss spectra 
 * 
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
 */
#ifndef __CINT__
# include "AliForwardUtil.h"
# include <TFile.h>
# include <TList.h>
# include <TH1.h>
# include <TF1.h>
# include <TFitResult.h>
# include <TMath.h>
# include <TStyle.h>
# include <TArrow.h>
# include <TCanvas.h>
#else
class TCanvas;
class TFile;
class TH1;
class TList;
class TF1;
#endif

//____________________________________________________________________
/** 
 * 
 * 
 * @param ef 
 * @param d 
 * @param r 
 * @param etabin 
 * 
 * @return 
 *
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
 */
TH1* GetEDist(TList* ef, UShort_t d, Char_t r, UShort_t etabin)
{
  TList* dL = static_cast<TList*>(ef->FindObject(Form("FMD%d%c",d,r)));
  if (!dL) {
    Error("GetEDist", "Couldn't find list FMD%d%c",d,r);
    ef->ls();
    return 0;
  }
  if (etabin > 999) {
    TH1* hist = static_cast<TH1*>(dL->FindObject(Form("FMD%d%c_edist",d,r)));
    if (hist) {
      Error("GetEDist", "Couldn't find EDists histogram for FMD%d%c",d,r);
      return 0;
    }
  }
      
  TList* edL = static_cast<TList*>(dL->FindObject("EDists"));
  if (!edL) {
    Error("GetEDist", "Couldn't find list EDists for FMD%d%c",d,r);
    return 0;
  }
  
  TH1* hist = static_cast<TH1*>(edL->FindObject(Form("FMD%d%c_etabin%03d", 
						     d, r, etabin)));
  if (!hist) {
    Error("GetEDist", "Couldn't find histogra FMD%d%c_etabin%03d",
	  d,r, etabin);
    return 0;
  }
  
  return hist;
}

//____________________________________________________________________
/** 
 * 
 * 
 * @param ef 
 * @param d 
 * @param r 
 * @param eta 
 * 
 * @return  
 *
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
*/
TH1* GetEDist(TList* ef, UShort_t d, Char_t r, Float_t eta)
{
  if (!ef) { 
    Error("GetEDist", "EF not set");
    return 0;
  }
  TAxis* etaAxis = static_cast<TAxis*>(ef->FindObject("etaAxis"));
  if (!etaAxis) { 
    Error("GetEDist", "Couldn't find eta axis in list");
    return 0;
  }

  UShort_t bin = etaAxis->FindBin(eta);
  if (bin <= 0 || bin > etaAxis->GetNbins()) { 
    Error("GetEDist", "eta=%f out of range [%f,%f] - getting ring histo", 
	  eta, etaAxis->GetXmin(), etaAxis->GetXmax());
    return GetEDist(ef, d, r, UShort_t(1000));
  }

  return GetEDist(ef, d, r, bin);
}

//____________________________________________________________________
/** 
 * 
 * 
 * @param file 
 * 
 * @return 
 *
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
 */
TList* GetEF(TFile* file) 
{
  TList* forward = static_cast<TList*>(file->Get("PWGLFforwardDnDeta/Forward"));
  if (!forward) {
    Error("GetEF", "Failed to get list PWGLFforwardDnDeta/Forward from file");
    return 0;
  }
  TList* ef = static_cast<TList*>(forward->FindObject("fmdEnergyFitter"));
  if (!ef) {
    Error("GetEF", "Failed to get energy fitter list");
    return 0;
  }
  
  return ef;
}

//____________________________________________________________________
TList* ef = 0;

//____________________________________________________________________
/** 
 * 
 * 
 * 
 * @return 
 *
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
 */
TList*  CheckEF()
{
  if (ef) return ef;
  
  TFile* file = TFile::Open("AnalysisResults.root", "READ");
  if (!file) { 
    Error("Fit1", "Failed to open file");
    return 0;
  }
  return GetEF(file);
}

//____________________________________________________________________
TCanvas* c = 0;

//____________________________________________________________________
/** 
 * 
 * 
 * 
 * @return 
 *
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
 */
TCanvas* CheckC()
{
  if (c) return c;

  gStyle->SetOptFit(1111);
  gStyle->SetCanvasColor(0);
  gStyle->SetCanvasBorderSize(0);
  gStyle->SetCanvasBorderMode(0);
  gStyle->SetCanvasDefW(800);
  gStyle->SetCanvasDefH(800);
  gStyle->SetPadTopMargin(0.05);
  gStyle->SetPadRightMargin(0.05);
  gStyle->SetTitleBorderSize(0);
  gStyle->SetTitleFillColor(0);
  gStyle->SetTitleStyle(0);
  gStyle->SetStatBorderSize(1);
  gStyle->SetStatColor(0);
  gStyle->SetStatStyle(0);
  gStyle->SetStatX(0.95);
  gStyle->SetStatY(0.95);
  gStyle->SetStatW(0.15);
  gStyle->SetStatH(0.15);

  c = new TCanvas("c", "c");
  c->SetLogy();

  return c;
}

//____________________________________________________________________
/** 
 * 
 * 
 * @param f 
 *
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
 */
void PrintFit(TF1* f)
{
  Int_t    nu     = f->GetNDF();
  Double_t chi2   = f->GetChisquare();
  Double_t chi2nu = (nu > 0 ? chi2/nu : 0);
  Printf("%s: chi^2/nu=%f/%d=%f [%f,%f]", 
	 f->GetName(), chi2, nu, chi2nu,
	 f->GetXmin(), f->GetXmax());
  for (Int_t i = 0; i < f->GetNpar(); i++) { 
    Double_t v = f->GetParameter(i);
    Double_t e = f->GetParError(i);
    Double_t r = 100*(v == 0 ? 1 : e / v);
    Printf("%32s = %14.7f +/- %14.7f (%5.1f%%)",f->GetParName(i),v,e,r);
  }
}
  
//____________________________________________________________________
/** 
 * 
 * 
 * @param n 
 * @param d 
 * @param r 
 * @param eta 
 *
 * @deprecated
 * This is a simple test script 
 *
 * @ingroup pwglf_forward_scripts_tests
 */
void TestFitELoss(Int_t n, UShort_t d, Char_t r, Float_t eta)
{
  TList* ef1 = CheckEF();
  TCanvas* c1 = CheckC();
  if (!ef1) return;
  if (!c1)  return;

  TH1* dist = GetEDist(ef1, d, r, eta);
  if (!dist) return;

  AliForwardUtil::ELossFitter f(0.4, 10, 4);
  TF1* landau1 = new TF1(*f.Fit1Particle(dist, 0));
  landau1->SetName("Landau1");
  PrintFit(landau1);
  TF1* landaun = new TF1(*f.FitNParticle(dist, n, 0)); 
  landau1->SetName(Form("Landau%d", n));
  PrintFit(landaun);
  landau1->SetRange(0,10);
  landaun->SetRange(0,10);
  landau1->SetLineWidth(4);
  landaun->SetLineWidth(4);
  landau1->SetLineColor(kBlack);
  landaun->SetLineColor(kBlack);

  dist->GetListOfFunctions()->Clear();
  dist->GetListOfFunctions()->Add(landau1);
  dist->GetListOfFunctions()->Add(landaun);
  dist->GetListOfFunctions()->ls();
  dist->Draw();
  landau1->Draw("same");
  landaun->Draw("same");

  Double_t mp = landaun->GetParameter(1);
  Double_t xi = landaun->GetParameter(2);
  for (Int_t i  = 1; i <= n; i++) { 
    Double_t x  = i * (mp + xi * TMath::Log(i));
    Double_t y  = landaun->Eval(x);
    Double_t y1 = y < 0.05 ? 1 : 0.01;
    TArrow* a = new TArrow(x,y1,x,y,0.03,"|>");
    Info("FitSteer", "Delta_{p,%d}=%f", i, x);
    a->SetLineWidth(2);
    a->SetAngle(30);
    a->Draw();
  }

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