ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)

#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include <TROOT.h>
#include <Riostream.h>
#include <TSystem.h>
#include <TClassTable.h>
#include <TStyle.h>
#include <TMath.h>
#include <TFile.h>
#include <TCanvas.h>
#include <TPad.h>
#include <TH1.h>
#include <TH2.h>
#include <TH1F.h>
#include <TH1D.h>
#include <TH2F.h>
#include <TProfile.h>
#include <TLine.h>
#include <TNtuple.h>
#include <TLatex.h>
#include <TGraphErrors.h>
#include "AliCentralityGlauberFit.h"

#endif

void makeCentralityFitnozeri(const int nRun=195483, const char *system = "ZNA",
	int ntrials=1, int Rebin=1, int Nevt=1.e6)
{
 //load libraries
  gSystem->SetBuildDir(".");
  gSystem->Load("libCore.so");  
  gSystem->Load("libTree.so");
  gSystem->Load("libGeom.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libPhysics.so");
  gSystem->Load("libSTEERBase.so");
  gROOT->ProcessLine(".include $ALICE_ROOT/include");
  gROOT->LoadMacro("AliCentralityGlauberFit.cxx++g");

  const char *finnameGlau ="GlauberMC_pPb_ntuple_sigma70_mind4_r662_a546_Rpro6.root";
  char histname[8];
  double chi2min=0.;
	
  if((strncmp(system,"ZNA",3))==0){
    printf("\n  Glauber fit on ZNA spectrum\n\n");
    sprintf(histname,"hZNA");
    chi2min = 200.;
  }
  else if((strncmp (system,"ZPA",3)) == 0){
    printf("\n  Glauber fit on ZPA spectrum\n\n");
    sprintf(histname,"hZPA");
    chi2min=5000.;
  }
  
  TString finname = Form("centrHistos%d-dNdeta.root",nRun);
  printf(" Opening file %s\n",finname.Data());
  //
  TString foutname = Form("%s_fit_%d.root",system,nRun);
  TString foutnameGlau = Form("%s_ntuple_%d.root",system,nRun);

  
  AliCentralityGlauberFit *mPM = new AliCentralityGlauberFit(finnameGlau);
  mPM->SetInputFile(finname);        
  mPM->SetInputNtuple(finnameGlau);     
  mPM->SetOutputFile(foutname);  
  mPM->SetOutputNtuple(foutnameGlau);
  mPM->AddHisto(histname);

  mPM->SetRebin(Rebin);
  mPM->SetNevents(Nevt);
  mPM->UseChi2(kTRUE);     // If TRUE minimize Chi2
  mPM->SetNTrials(ntrials);
  mPM->SetChi2Min(chi2min);
  //
  // COSY ORIGINAL!!!!
  //mPM->SetNParam(51.5, 469.2, 8.762);
  // COSY-like
//  mPM->SetNParam(51.5, 620., 10.);
// change 2
  mPM->SetNParam(50., 230., 4.4, 0.48);
  //mPM->SetNParam(40., 230., 4.5, 0.45);
  //
  // ALICE ex-novo
  //mPM->SetNParam(78., 700., 7.);
  //mPM->SetNParam(61., 470., 7.);

  if(strncmp(system,"ZNA",3) == 0) {
    printf(" Setting parameters for ZNA Glauber fit\n\n");
    mPM->SetIsZN();
    mPM->SetRangeToFit(0.8, 90.5);   
    mPM->SetRangeToScale(0);  
    // original
    if(nRun==195483) mPM->SetGlauberParam(1,0.0,0.0, 1,0.957,1., 1,0.26,0.30, 1,0.65,0.65, 1,0.585,0.585, 1, 0.25,0.3);
    //to study systematics
    //if(nRun==195483) mPM->SetGlauberParam(1,0.0,0.0, 1,0.956,1., 1,0.29,0.30, 1,1.80,0.65, 1,0.585,0.585, 1, 0.25,0.3);
    else             mPM->SetGlauberParam(1,0.0,0.0, 1,0.957,1., 1,0.25,0.30, 1,0.65,0.65, 1,0.585,0.585, 1, 0.25,0.3);
  }
  else if (strncmp(system,"ZPA",3) == 0) {
    mPM->SetIsZP();
    mPM->SetRangeToFit(1., 30.);  
    mPM->SetRangeToScale(0);  
    // original
    //if(nRun==195483) mPM->SetGlauberParam(1,0.0,0.0, 1,0.60,0.8, 1,0.6,0.65, 1,0.65,0.65, 1,0.585,0.585, 1, 0.25,0.4);
    if(nRun==195483) mPM->SetGlauberParam(1,0.0,0.0, 1,0.40,0.8, 1,0.4,0.65, 1,1.80,0.65, 1,0.585,0.585, 1, 0.25,0.4);
    else             mPM->SetGlauberParam(1,0.0,0.0, 1,0.60,0.8, 1,0.5,0.65, 1,0.65,0.65, 1,0.585,0.585, 1, 0.25,0.4);
  }
  mPM->MakeFits();  

  char hnam[10], hnamg[20];
  double xt=0;
  if(strncmp(system,"ZNA",3) == 0){
    sprintf(hnam,"hZNA");
    sprintf(hnamg,"hZNA_GLAU");
    xt=20.;
  }
  else if(strncmp(system,"ZPA",3) == 0) {
    sprintf(hnam,"hZPA");
    sprintf(hnamg,"hZPA_GLAU");
    xt=5.;
  }

  TFile *f = TFile::Open(foutname);
  TH1 * hd = dynamic_cast<TH1*> (f->Get((hnam)));
  TH1 * hg = dynamic_cast<TH1*> (f->Get((hnamg)));
  hg->SetLineColor(kPink-2);
  hg->SetLineWidth(2);
  hd->SetMarkerStyle(20);
  //hd->SetMarkerSize(1.2);
  hd->SetMarkerColor(kBlue+3);
  hd->SetLineWidth(2);
  //hd->SetMinimum(10.);
  
  TCanvas *g = new TCanvas("g","g",0,0,700,700);
  g->cd();
  gPad->SetLogy(1);
  hg->Draw("E");
  hd->Draw("PEsame");
  hd->SetXTitle("E_{ZNA} (TeV)");
  hg->Draw("Esame");
  
  printf("\n Entries with zero energy %1.0f  -> %f of the total (%d)\n\n",
  	hg->GetBinContent(hg->FindBin(0.)), hg->GetBinContent(hg->FindBin(0.))/hg->Integral(),
	hg->Integral());

  /*double zncut[7]  = {0., 16.3423, 38.2513, 52.7698, 63.7601, 70.2207, 75.0126};
  TH1F *hist[7];
  for(int ih=0; ih<7; ih++){
    char hnam[24];
    sprintf(hnam,"hZNA%d",ih);
    hist[ih] = new TH1F(hnam,hnam,hd->GetNbinsX(),0.,142.5);
  }
  int index=0;
  for(int ic=0; ic<7; ic++){
    for(int ib=1; ib<hd->GetNbinsX(); ib++){
      if(hd->GetBinLowEdge(ib)>=zncut[ic] && hd->GetBinLowEdge(ib+1)<zncut[ic+1]){
        index = ic;
        hist[index]->SetBinContent(ib, hd->GetBinContent(ib));
        if(hd->GetBinError(ib)>0) hist[index]->SetBinError(ib, 1./(hd->GetBinError(ib)*hd->GetBinError(ib)));
      }
    }
  }
  for(int ih=0; ih<7; ih++){
    if(ih%2==0) hist[ih]->SetFillColor(kAzure+6);
    hist[ih]->Draw("hist SAME");
  }
  hg->Draw("Esame");*/
  
  TLatex text0;
  text0.SetTextSize(0.04);
  text0.SetTextColor(kBlue+3);
  char ch[60];
  if(strncmp(system,"ZNA",3) == 0) sprintf(ch,"<E_{ZNA}> DATA = %1.2f TeV ",hd->GetMean());
  else  sprintf(ch,"<E_{ZPA}> DATA = %1.2f TeV ",hd->GetMean());
  text0.DrawLatex(xt,20.,ch);
  char chd[60];
  if(strncmp(system,"ZNA",3) == 0) sprintf(chd,"<E_{ZNA}> Glauber = %1.2f TeV",hg->GetMean());
  else  sprintf(chd,"<E_{ZPA}> Glauber = %1.2f TeV",hg->GetMean());
  text0.SetTextColor(kPink-2);
  text0.DrawLatex(xt,10.,chd);

  char ct[60];
  sprintf(ct,"RUN %d",nRun);
  text0.SetTextColor(kTeal+2);
  text0.DrawLatex(xt+80.,1.e4,ct);
  
  char psn[30];
  if(strncmp(system,"ZNA",3) == 0) sprintf(psn,"ZNA_fit%d.gif",nRun);
  else  sprintf(psn,"ZPA_fit%d.gif",nRun);
  g->Print(psn);
	
	printf("\n Everything is OK: ntuple and fit results saved!!! \n\n");
}

 makeCentralityFitnozeri.C:1
 makeCentralityFitnozeri.C:2
 makeCentralityFitnozeri.C:3
 makeCentralityFitnozeri.C:4
 makeCentralityFitnozeri.C:5
 makeCentralityFitnozeri.C:6
 makeCentralityFitnozeri.C:7
 makeCentralityFitnozeri.C:8
 makeCentralityFitnozeri.C:9
 makeCentralityFitnozeri.C:10
 makeCentralityFitnozeri.C:11
 makeCentralityFitnozeri.C:12
 makeCentralityFitnozeri.C:13
 makeCentralityFitnozeri.C:14
 makeCentralityFitnozeri.C:15
 makeCentralityFitnozeri.C:16
 makeCentralityFitnozeri.C:17
 makeCentralityFitnozeri.C:18
 makeCentralityFitnozeri.C:19
 makeCentralityFitnozeri.C:20
 makeCentralityFitnozeri.C:21
 makeCentralityFitnozeri.C:22
 makeCentralityFitnozeri.C:23
 makeCentralityFitnozeri.C:24
 makeCentralityFitnozeri.C:25
 makeCentralityFitnozeri.C:26
 makeCentralityFitnozeri.C:27
 makeCentralityFitnozeri.C:28
 makeCentralityFitnozeri.C:29
 makeCentralityFitnozeri.C:30
 makeCentralityFitnozeri.C:31
 makeCentralityFitnozeri.C:32
 makeCentralityFitnozeri.C:33
 makeCentralityFitnozeri.C:34
 makeCentralityFitnozeri.C:35
 makeCentralityFitnozeri.C:36
 makeCentralityFitnozeri.C:37
 makeCentralityFitnozeri.C:38
 makeCentralityFitnozeri.C:39
 makeCentralityFitnozeri.C:40
 makeCentralityFitnozeri.C:41
 makeCentralityFitnozeri.C:42
 makeCentralityFitnozeri.C:43
 makeCentralityFitnozeri.C:44
 makeCentralityFitnozeri.C:45
 makeCentralityFitnozeri.C:46
 makeCentralityFitnozeri.C:47
 makeCentralityFitnozeri.C:48
 makeCentralityFitnozeri.C:49
 makeCentralityFitnozeri.C:50
 makeCentralityFitnozeri.C:51
 makeCentralityFitnozeri.C:52
 makeCentralityFitnozeri.C:53
 makeCentralityFitnozeri.C:54
 makeCentralityFitnozeri.C:55
 makeCentralityFitnozeri.C:56
 makeCentralityFitnozeri.C:57
 makeCentralityFitnozeri.C:58
 makeCentralityFitnozeri.C:59
 makeCentralityFitnozeri.C:60
 makeCentralityFitnozeri.C:61
 makeCentralityFitnozeri.C:62
 makeCentralityFitnozeri.C:63
 makeCentralityFitnozeri.C:64
 makeCentralityFitnozeri.C:65
 makeCentralityFitnozeri.C:66
 makeCentralityFitnozeri.C:67
 makeCentralityFitnozeri.C:68
 makeCentralityFitnozeri.C:69
 makeCentralityFitnozeri.C:70
 makeCentralityFitnozeri.C:71
 makeCentralityFitnozeri.C:72
 makeCentralityFitnozeri.C:73
 makeCentralityFitnozeri.C:74
 makeCentralityFitnozeri.C:75
 makeCentralityFitnozeri.C:76
 makeCentralityFitnozeri.C:77
 makeCentralityFitnozeri.C:78
 makeCentralityFitnozeri.C:79
 makeCentralityFitnozeri.C:80
 makeCentralityFitnozeri.C:81
 makeCentralityFitnozeri.C:82
 makeCentralityFitnozeri.C:83
 makeCentralityFitnozeri.C:84
 makeCentralityFitnozeri.C:85
 makeCentralityFitnozeri.C:86
 makeCentralityFitnozeri.C:87
 makeCentralityFitnozeri.C:88
 makeCentralityFitnozeri.C:89
 makeCentralityFitnozeri.C:90
 makeCentralityFitnozeri.C:91
 makeCentralityFitnozeri.C:92
 makeCentralityFitnozeri.C:93
 makeCentralityFitnozeri.C:94
 makeCentralityFitnozeri.C:95
 makeCentralityFitnozeri.C:96
 makeCentralityFitnozeri.C:97
 makeCentralityFitnozeri.C:98
 makeCentralityFitnozeri.C:99
 makeCentralityFitnozeri.C:100
 makeCentralityFitnozeri.C:101
 makeCentralityFitnozeri.C:102
 makeCentralityFitnozeri.C:103
 makeCentralityFitnozeri.C:104
 makeCentralityFitnozeri.C:105
 makeCentralityFitnozeri.C:106
 makeCentralityFitnozeri.C:107
 makeCentralityFitnozeri.C:108
 makeCentralityFitnozeri.C:109
 makeCentralityFitnozeri.C:110
 makeCentralityFitnozeri.C:111
 makeCentralityFitnozeri.C:112
 makeCentralityFitnozeri.C:113
 makeCentralityFitnozeri.C:114
 makeCentralityFitnozeri.C:115
 makeCentralityFitnozeri.C:116
 makeCentralityFitnozeri.C:117
 makeCentralityFitnozeri.C:118
 makeCentralityFitnozeri.C:119
 makeCentralityFitnozeri.C:120
 makeCentralityFitnozeri.C:121
 makeCentralityFitnozeri.C:122
 makeCentralityFitnozeri.C:123
 makeCentralityFitnozeri.C:124
 makeCentralityFitnozeri.C:125
 makeCentralityFitnozeri.C:126
 makeCentralityFitnozeri.C:127
 makeCentralityFitnozeri.C:128
 makeCentralityFitnozeri.C:129
 makeCentralityFitnozeri.C:130
 makeCentralityFitnozeri.C:131
 makeCentralityFitnozeri.C:132
 makeCentralityFitnozeri.C:133
 makeCentralityFitnozeri.C:134
 makeCentralityFitnozeri.C:135
 makeCentralityFitnozeri.C:136
 makeCentralityFitnozeri.C:137
 makeCentralityFitnozeri.C:138
 makeCentralityFitnozeri.C:139
 makeCentralityFitnozeri.C:140
 makeCentralityFitnozeri.C:141
 makeCentralityFitnozeri.C:142
 makeCentralityFitnozeri.C:143
 makeCentralityFitnozeri.C:144
 makeCentralityFitnozeri.C:145
 makeCentralityFitnozeri.C:146
 makeCentralityFitnozeri.C:147
 makeCentralityFitnozeri.C:148
 makeCentralityFitnozeri.C:149
 makeCentralityFitnozeri.C:150
 makeCentralityFitnozeri.C:151
 makeCentralityFitnozeri.C:152
 makeCentralityFitnozeri.C:153
 makeCentralityFitnozeri.C:154
 makeCentralityFitnozeri.C:155
 makeCentralityFitnozeri.C:156
 makeCentralityFitnozeri.C:157
 makeCentralityFitnozeri.C:158
 makeCentralityFitnozeri.C:159
 makeCentralityFitnozeri.C:160
 makeCentralityFitnozeri.C:161
 makeCentralityFitnozeri.C:162
 makeCentralityFitnozeri.C:163
 makeCentralityFitnozeri.C:164
 makeCentralityFitnozeri.C:165
 makeCentralityFitnozeri.C:166
 makeCentralityFitnozeri.C:167
 makeCentralityFitnozeri.C:168
 makeCentralityFitnozeri.C:169
 makeCentralityFitnozeri.C:170
 makeCentralityFitnozeri.C:171
 makeCentralityFitnozeri.C:172
 makeCentralityFitnozeri.C:173
 makeCentralityFitnozeri.C:174
 makeCentralityFitnozeri.C:175
 makeCentralityFitnozeri.C:176
 makeCentralityFitnozeri.C:177
 makeCentralityFitnozeri.C:178
 makeCentralityFitnozeri.C:179
 makeCentralityFitnozeri.C:180
 makeCentralityFitnozeri.C:181
 makeCentralityFitnozeri.C:182
 makeCentralityFitnozeri.C:183
 makeCentralityFitnozeri.C:184
 makeCentralityFitnozeri.C:185
 makeCentralityFitnozeri.C:186
 makeCentralityFitnozeri.C:187
 makeCentralityFitnozeri.C:188
 makeCentralityFitnozeri.C:189
 makeCentralityFitnozeri.C:190
 makeCentralityFitnozeri.C:191
 makeCentralityFitnozeri.C:192
 makeCentralityFitnozeri.C:193
 makeCentralityFitnozeri.C:194
 makeCentralityFitnozeri.C:195
 makeCentralityFitnozeri.C:196
 makeCentralityFitnozeri.C:197