ROOT logo
void makefig(const int trig=0, const int icut=0, const int icent=0){

  gStyle->SetPalette(1);
  gStyle->SetOptStat(0);
  gStyle->SetOptFit(111111);
  gStyle->SetOptFit(0);
  gStyle->SetOptTitle(0);
  //gStyle->SetFillColor(10);
  gStyle->SetCanvasColor(10);
  gStyle->SetFrameBorderMode(0);
  gStyle->SetFrameFillColor(0);
  gStyle->SetCanvasColor(0);
  gStyle->SetPadBorderSize(0);
  gStyle->SetCanvasBorderSize(0);
  //gStyle->SetPadLeftMargin(0.15);
  gStyle->SetPadLeftMargin(0.125);
  gStyle->SetPadBottomMargin(0.125);
  gStyle->SetPadTopMargin(0.1);
  gStyle->SetTitleYOffset(1.3);
  //gStyle->SetPadLeftMargin(0.1);
  gStyle->SetTitleW(0.7);
  gStyle->SetTitleH(0.1);
  cout<<"physics is always fun! "<<endl; 

  TH2D *hmasspt[7][11];

  ////// input root file ///////////////
  char name[100];
  sprintf(name,"result_trig%d_cut%d.root", trig, icut);
  TFile *fin = new TFile(name,"read");

  for(int i=0;i<7;i++){
    sprintf(name,"hmasspt_mb_%d",i);
    hmasspt[i][10] = new TH2D(name, name, 500, 0, 5, 500, 0, 5);
  }    

  ////// add into the histograms //////////////////
  for(int i=0;i<7;i++){
    for(int j=0;j<10;j++){
      sprintf(name,"hmasspt_cent%d_pair%d", j, i);
      hmasspt[i][j] = (TH2D*)fin->Get(name);
      hmasspt[i][10]->Add(hmasspt[i][j]);
    }
  }


  TH1D *hpy = hmasspt[0][0]->ProjectionY("hpy");
  
  ////// range of pT /////////////////////////////////
  int npt=3;
  float low[4] ={0, 1, 2};
  float high[4]={1, 2, 4};
  
  //// [pairtype][pt] //////////////////////////////
  TH1D *hmass[7][4]; ///sliced mass spectrum
  for(int i=0;i<7;i++){
    for(int ipt=0;ipt<npt;ipt++){
      int rangelow = hpy->FindBin(low[ipt]);  
      int rangehigh = hpy->FindBin(high[ipt]);
      sprintf(name,"hmass_tmp_pt%d_cent%d_%d",ipt, icent, i);
      hmass[i][ipt] = (TH1D*)hmasspt[i][icent]->ProjectionX(name, rangelow, rangehigh-1);
    }
  }

  //////// another historgram to merge like sign/mixed like sign
  //////// hmass_add will be scaled.
  ///////  hmass_org will be unchanged.
  TH1D *hmass_add[4][4];
  TH1D *hmass_org[4][4];
  for(int i=0;i<4;i++){
    for(int ipt=0;ipt<npt;ipt++){
      sprintf(name,"hmass_pt%d_cent%d_%d",ipt, j, i);
      hmass_add[i][ipt] = new TH1D(name, name, 500, 0, 5);
      hmass_add[i][ipt]->Sumw2();
      sprintf(name,"hmass_pt%d_cent%d_%d_org",ipt, j, i);
      hmass_org[i][ipt] = new TH1D(name, name, 500, 0, 5);
      hmass_org[i][ipt]->Sumw2();
    }
  }
  for(int ipt=0;ipt<npt;ipt++){
    hmass_add[0][ipt]->Add(hmass[0][ipt]);
    hmass_add[1][ipt]->Add(hmass[1][ipt]);
    hmass_add[1][ipt]->Add(hmass[2][ipt]);
    hmass_add[2][ipt]->Add(hmass[3][ipt]);
    hmass_add[2][ipt]->Add(hmass[4][ipt]);
    hmass_add[3][ipt]->Add(hmass[5][ipt]);
    hmass_add[3][ipt]->Add(hmass[6][ipt]);

    hmass_org[0][ipt]->Add(hmass[0][ipt]);
    hmass_org[1][ipt]->Add(hmass[1][ipt]);
    hmass_org[1][ipt]->Add(hmass[2][ipt]);
    hmass_org[2][ipt]->Add(hmass[3][ipt]);
    hmass_org[2][ipt]->Add(hmass[4][ipt]);
    hmass_org[3][ipt]->Add(hmass[5][ipt]);
    hmass_org[3][ipt]->Add(hmass[6][ipt]);


    ///// scaling factor for like sign and mixed like sign
    float scale1 = hmass_add[0][ipt]->GetEntries()/(2*sqrt(hmass[1][ipt]->GetEntries()*hmass[2][ipt]->GetEntries()));
    float scale2 = hmass_add[2][ipt]->GetEntries()/(2*sqrt(hmass[5][ipt]->GetEntries()*hmass[6][ipt]->GetEntries()));
    
    hmass_add[1][ipt]->Scale(scale1);
    hmass_add[3][ipt]->Scale(scale2);
    hmass_org[1][ipt]->Scale(scale1);
    hmass_org[3][ipt]->Scale(scale2);
  }


  ///// then take ratio of mixed unlike / mixed like
  TH1F *hdiv[4]; 
  for(int ipt=0;ipt<npt;ipt++){
    sprintf(name,"hdiv_pt%d",ipt);
    hdiv[ipt] = new TH1F(name, name, 500, 0, 5);
    hdiv[ipt]->Sumw2();
    hdiv[ipt]->Divide(hmass_add[2][ipt], hmass_add[3][ipt]);
    hdiv[ipt]->SetMaximum(2);
    hdiv[ipt]->SetMinimum(0);

    //// multiply to like sign 
    hmass_add[1][ipt]->Multiply(hdiv[ipt]);

  }

  TCanvas *c0 = new TCanvas("c0","c0",1200,800);
  c0->Divide(npt,2);
  for(int ipt=0;ipt<npt;ipt++){
    c0->cd(ipt+1);
    gPad->SetLogy();
    gPad->SetGrid(1);
    hmass_add[0][ipt]->SetXTitle("M_{ee} [GeV]");
    hmass_add[0][ipt]->SetYTitle("counts");
    hmass_add[0][ipt]->SetAxisRange(0,4);
    hmass_add[0][ipt]->SetLineColor(1);
    hmass_org[1][ipt]->SetLineColor(2);
    hmass_add[0][ipt]->SetMinimum(1);
    hmass_add[0][ipt]->Draw();
    hmass_org[1][ipt]->Draw("same");

    c0->cd(ipt+1+npt);
    gPad->SetLogy();
    gPad->SetGrid(1);
    hmass_add[2][ipt]->SetXTitle("M_{ee} [GeV]");
    hmass_add[2][ipt]->SetYTitle("counts");
    hmass_add[2][ipt]->SetAxisRange(0,4);
    hmass_add[2][ipt]->SetLineColor(4);
    hmass_org[3][ipt]->SetLineColor(6);
    hmass_add[2][ipt]->SetMinimum(1);
    hmass_add[2][ipt]->Draw();
    hmass_org[3][ipt]->Draw("same");
  }
    



  
  TCanvas *c1 = new TCanvas("c1","c1",1200,800);
  c1->Divide(npt,2);
  for(int ipt=0;ipt<npt;ipt++){
    c1->cd(ipt+1);

    gPad->SetGrid(1);
    hdiv[ipt]->SetXTitle("M_{ee}");
    hdiv[ipt]->SetYTitle("R(Mixed unlike/Mixed like)");
    hdiv[ipt]->Draw();

    c1->cd(ipt+1+npt);

    gPad->SetGrid(1);
    gPad->SetLogy();
    hmass_add[0][ipt]->SetXTitle("M_{ee} [GeV]");
    hmass_add[0][ipt]->SetYTitle("counts");
    hmass_add[0][ipt]->SetAxisRange(0,4);
    hmass_add[0][ipt]->SetLineColor(1);
    hmass_add[1][ipt]->SetLineColor(2);

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