ROOT logo
#include "TCanvas.h"



namespace RawProduction {
  class Output;
}


void DrawAbs(const RawProduction::Output& output, const char* trigger, int cent, TStringToken& names) 
{
  names.NextToken();

  const char* pid = "All";
  char canvName[256] = Form("PSBS_Abs_%s_c%03i_%s_%s", trigger, cent, pid, names.Data());
  TCanvas* canv = new TCanvas(canvName, canvName);  
  TLegend* leg = new TLegend(0.6,0.8,0.95,0.95);

  TH1* hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, pid, names.Data()));
  if(names.Contains("mr")) hist->SetTitle(Form("Peak Position, %s, %s, %s", trigger, RawProduction::GetCentString(cent), pid));
  if(names.Contains("sr")) hist->SetTitle(Form("Peak Width, %s, %s, %s", trigger, RawProduction::GetCentString(cent), pid));
  if(names.Contains("mr")) hist->GetYaxis()->SetRangeUser(0.12, 0.15);
  if(names.Contains("mr")) hist->GetYaxis()->SetTitle("Peak #mu");
  if(names.Contains("sr")) hist->GetYaxis()->SetRangeUser(0., 0.012);
  if(names.Contains("sr")) hist->GetYaxis()->SetTitle("Peak #sigma");
  hist->GetXaxis()->SetTitle("p_{T}");
  //Printf(hist->GetTitle());
  hist->SetMarkerStyle(21);
  //hist->SetMarkerSize(1.5);
  hist->SetMarkerColor(kBlack);
  hist->SetLineColor(kBlack);
  hist->Draw();
  leg->AddEntry(hist, "Pol1, Ratio", "lep");
  
  int marker = 21;
  Color_t color[3] = {kRed, kBlue, kMagenta};
  while( names.NextToken() ) {
    hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "All", names.Data()));
    //Printf(hist->GetName());
    hist->SetMarkerStyle(++marker);
    hist->SetMarkerColor(color[marker-22]);
    hist->SetLineColor(color[marker-22]);
    hist->Draw("same");
    char legName[256] = "";
    if(names.Contains("1")) sprintf(legName, "Pol1");
    if(names.Contains("2")) sprintf(legName, "Pol2");
    if( marker <23 ) sprintf(legName, "%s, Ratio", legName);
    leg->AddEntry(hist, legName, "lep");
  }
  
  hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, pid, names.Data()));
  hist->Draw("same");

  leg->Draw();
  
  canv->SaveAs(Form("imgs/%s.png", canvName));
  canv->SaveAs(Form("imgs/%s.pdf", canvName));
}

void DrawRatios(const RawProduction::Output& output, const char* trigger, int cent)
{
  TStringToken graphs("mr1;sr1;mr1r;sr1r;mr2;sr2;mr2r;sr2r", ";");
  while( graphs.NextToken() ) {
    const char* graph = graphs.Data();

    // ratio
    TCanvas* canv = new TCanvas(Form("%s_c%03i_%s_ratio", trigger, cent, graph), Form("%s_c%03i_%s_ratio", trigger, cent, graph));
    TLegend* leg = new TLegend(0.6,0.8,0.95,0.95);

    hAll = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "All", graph));


    TH1* hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "CPV", graph));
    hist = (TH1*) hist->Clone(Form("dAll_%s", hist->GetName()));
    if(graphs.Contains("mr1")) hist->SetTitle( "Peak Position, Pol1" );
    if(graphs.Contains("mr2")) hist->SetTitle( "Peak Position, Pol2" );
    if(graphs.Contains("mr1r")) hist->SetTitle( "Peak Position, Pol1, Ratio" );
    if(graphs.Contains("mr2r")) hist->SetTitle( "Peak Position, Pol2, Ratio" );
    if(graphs.Contains("sr1")) hist->SetTitle( "Peak Width, Pol1" );
    if(graphs.Contains("sr2")) hist->SetTitle( "Peak Width, Pol2" );
    if(graphs.Contains("sr1r")) hist->SetTitle( "Peak Width, Pol1, Ratio" );
    if(graphs.Contains("sr2r")) hist->SetTitle( "Peak Width, Pol2, Ratio" );
    hist->SetTitle(Form("%s, %s, centrality: %s", hist->GetTitle(), trigger, RawProduction::GetCentString(cent)));
    if(graphs.Contains("mr")) hist->GetYaxis()->SetRangeUser(0.9, 1.05);
    if(graphs.Contains("mr")) hist->GetYaxis()->SetTitle("Peak #mu");
    if(graphs.Contains("sr")) hist->GetYaxis()->SetRangeUser(0.4, 1.4);
    if(graphs.Contains("sr")) hist->GetYaxis()->SetTitle("Peak #sigma");
    hist->GetXaxis()->SetTitle("p_{T}");
    hist->Divide(hAll);
    hist->SetMarkerStyle(22);
    hist->SetMarkerColor(kRed);
    hist->SetLineColor(kRed);
    hist->Draw();
    leg->AddEntry(hist, "CPV/All", "lep");

    hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "Disp", graph));
    hist = (TH1*) hist->Clone(Form("dAll_%s", hist->GetName()));
    hist->Divide(hAll);
    hist->SetMarkerStyle(23);
    hist->SetMarkerColor(kBlue);
    hist->SetLineColor(kBlue);
    hist->Draw("same");
    leg->AddEntry(hist, "Disp/All", "lep");

    hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "Both", graph));
    hist = (TH1*) hist->Clone(Form("dAll_%s", hist->GetName()));
    hist->Divide(hAll);
    hist->SetMarkerStyle(21);
    hist->SetMarkerColor(kMagenta);
    hist->SetLineColor(kMagenta);
    hist->Draw("same");
    leg->AddEntry(hist, "Both/All", "lep");

    
    leg->Draw();

    canv->SaveAs(Form("imgs/PSBSFits_ratio_%s_c%03i_%s.png", trigger, cent, graph));
    canv->SaveAs(Form("imgs/PSBSFits_ratio_%s_c%03i_%s.pdf", trigger, cent, graph));
    



    // core, ratio
    canv = new TCanvas(Form("%s_c%03i_%s_ratio_core", trigger, cent, graph), Form("%s_c%03i_%s_ratio_core", trigger, cent, graph));
    leg = new TLegend(0.6,0.8,0.95,0.95);

    hAll = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "All", graph));

    hAllcore = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "Allcore", graph));

    hist = hAllcore;
    hist = (TH1*) hist->Clone(Form("dAll_%s", hist->GetName()));
    hist->Divide(hAll);
    if(graphs.Contains("r1")) hist->SetTitle( Form("%s, Pol1", hist->GetTitle()) );
    if(graphs.Contains("r2")) hist->SetTitle( Form("%s, Pol2", hist->GetTitle()) );
    hist->SetTitle(Form("%s, %s, centrality: %s", hist->GetTitle(), trigger, RawProduction::GetCentString(cent)));
    if(graphs.Contains("mr")) hist->GetYaxis()->SetRangeUser(0.9, 1.05);
    if(graphs.Contains("mr")) hist->GetYaxis()->SetTitle("Peak #mu");
    if(graphs.Contains("sr")) hist->GetYaxis()->SetRangeUser(0.4, 1.4);
    if(graphs.Contains("sr")) hist->GetYaxis()->SetTitle("Peak #sigma");
    hist->GetXaxis()->SetTitle("p_{T}");
    hist->SetMarkerStyle(20);
    hist->SetMarkerColor(kBlack);
    hist->SetLineColor(kBlack);
    hist->Draw();
    leg->AddEntry(hist, "Allcore/All", "lep");

    hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "CPVcore", graph));
    hist = (TH1*) hist->Clone(Form("dAllcore_%s", hist->GetName()));
    hist->Divide(hAllcore);
    hist->SetMarkerStyle(22);
    hist->SetMarkerColor(kRed);
    hist->SetLineColor(kRed);
    hist->Draw("same");
    leg->AddEntry(hist, "CPVcore/Allcore", "lep");

    hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "Dispcore", graph));
    hist = (TH1*) hist->Clone(Form("dAllcore_%s", hist->GetName()));
    hist->Divide(hAllcore);
    hist->SetMarkerStyle(23);
    hist->SetMarkerColor(kBlue);
    hist->SetLineColor(kBlue);
    hist->Draw("same");
    leg->AddEntry(hist, "Dispcore/Allcore", "lep");

    hist = output.GetHistogram(Form("%s/c%03i/%s/%s", trigger, cent, "Bothcore", graph));
    hist = (TH1*) hist->Clone(Form("dAllcore_%s", hist->GetName()));
    hist->Divide(hAllcore);
    hist->SetMarkerStyle(21);
    hist->SetMarkerColor(kMagenta);
    hist->SetLineColor(kMagenta);
    hist->Draw("same");
    leg->AddEntry(hist, "Bothcore/Allcore", "lep");

    
    leg->Draw();

    canv->SaveAs(Form("imgs/PSBSFits_ratio_core_%s_c%03i_%s.png", trigger, cent, graph));
    canv->SaveAs(Form("imgs/PSBSFits_ratio_core_%s_c%03i_%s.pdf", trigger, cent, graph));
    
  }
}


void DrawPSBSFitMethodeParams(const RawProduction::Output& output, const char* trigger, int cent)
{
  TStringToken mrst("mr1r;mr2r;mr1;mr2", ";");
  DrawAbs(output, trigger, cent, mrst);

  TStringToken srst("sr1r;sr2r;sr1;sr2", ";");
  DrawAbs(output, trigger, cent, srst);
  
    
  DrawRatios(output, trigger, cent);
}

void DrawPSBSFitParams()
{
  gROOT->LoadMacro("MakeRawProduction.C+g");
  RawProduction::Output output;
  gStyle->SetOptStat(0);
  
  
  DrawPSBSFitMethodeParams(output, "kMB", -10);
  DrawPSBSFitMethodeParams(output, "kPHOSPb", -10);

  DrawPSBSFitMethodeParams(output, "kCentral", -1);
  DrawPSBSFitMethodeParams(output, "kMB", -1);
  DrawPSBSFitMethodeParams(output, "kPHOSPb", -1);

  DrawPSBSFitMethodeParams(output, "kSemiCentral", -11);
  DrawPSBSFitMethodeParams(output, "kMB", -11);
  DrawPSBSFitMethodeParams(output, "kPHOSPb", -11);

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