ROOT logo
void SetStyles(TH1 *histo,int marker, int color,char *xtitle = "p", char *ytitle = "E");
void PlotMatchedTracksDepositsFromData(TString datafilename="rootFiles/LHC10hPass2/Et.ESD.simPbPb.EMCal.LHC10hPass2.Run139465.root",TString simfilename="rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.root", TString det = "EMCal",Bool_t allCells = kTRUE){

  gStyle->SetOptTitle(0);
  gStyle->SetOptStat(0);
  gStyle->SetOptFit(0);
  TString outname = "/tmp/DataVsSimComparisons"+det;
  if(allCells){outname+="AllCells";}
  else{outname+="BkgdOnly";}
  TString textfilename = outname+".txt";
  outname+=".png";
  TString outnameratios = "/tmp/DataVsSimComparisonsRatios"+det;
  if(allCells){outnameratios+="AllCells";}
  else{outnameratios+="BkgdOnly";}
  outnameratios+=".png";
  TObjArray simulation(11);
  TObjArray data(11);
  TObjArray ratios(11);
//   TH1D *simulation[10] = {NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL};
//   TH1D *data[10] = {NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL};
  int colors[] = {TColor::kRed, TColor::kOrange-3,TColor::kGreen+3, TColor::kBlue, TColor::kViolet,
		  TColor::kRed, TColor::kOrange-3,TColor::kGreen+3, TColor::kBlue, TColor::kViolet};
  int markersSim[] = {24,25,26,32,27,24,25,26,32,27};
  int markersData[] = {20,21,22,23,33,20,21,22,23,33};

  float energycut = 0.5;

  TFile *fsim = TFile::Open(simfilename, "READ");
  TList *lsim = (TList*)fsim->Get("out1");

  TH3F  *fHistMatchedTracksEvspTBkgdvsMult = lsim->FindObject("fHistMatchedTracksEvspTBkgdMult");
  TH3F  *fHistMatchedTracksEvspTSignalvsMult = lsim->FindObject("fHistMatchedTracksEvspTSignalMult");
  if(allCells){
    fHistMatchedTracksEvspTBkgdvsMult->Add(fHistMatchedTracksEvspTSignalvsMult);
  }
  int lowbin = fHistMatchedTracksEvspTBkgdvsMult->GetXaxis()->FindBin(energycut);
  int highbin = fHistMatchedTracksEvspTBkgdvsMult->GetXaxis()->GetNbins();
  fHistMatchedTracksEvspTBkgdvsMult->GetXaxis()->SetRange(lowbin,highbin);

  for(int bin = 1; bin<=10;bin++){
    fHistMatchedTracksEvspTBkgdvsMult->GetZaxis()->SetRange(bin,bin);
    simulation[bin] = fHistMatchedTracksEvspTBkgdvsMult->ProjectionY("y");
    ((TH1D*)simulation[bin])->SetName(Form("Sim%i",bin));
    SetStyles((TH1D*)simulation[bin],markersSim[bin-1],colors[bin-1]);
  }
  TFile *f = TFile::Open(datafilename, "READ");
  f->cd();  
  TList *l = (TList*)f->Get("out1");
  TH3F  *fHistMatchedTracksEvspTvsMult = l->FindObject("fHistMatchedTracksEvspTvsMult");
  int lowbin = fHistMatchedTracksEvspTvsMult->GetXaxis()->FindBin(energycut);
  int highbin = fHistMatchedTracksEvspTvsMult->GetXaxis()->GetNbins();
  fHistMatchedTracksEvspTvsMult->GetXaxis()->SetRange(lowbin,highbin);

  for(int bin = 1; bin<=10;bin++){
    fHistMatchedTracksEvspTvsMult->GetZaxis()->SetRange(bin,bin);
    data[bin] = fHistMatchedTracksEvspTvsMult->Project3D("y");
    SetStyles((TH1D*)data[bin],markersData[bin-1],colors[bin-1]);
    ((TH1D*)data[bin])->SetName(Form("Sim%i",bin));
  }
  for(int bin = 1; bin<=10;bin++){
    float scale = ((TH1D*)data[bin])->Integral();
    ((TH1D*)data[bin])->Scale(1.0/scale);
    scale = ((TH1D*)simulation[bin])->Integral();
    ((TH1D*)simulation[bin])->Scale(1.0/scale);
    ratios[bin] = data[bin]->Clone(Form("ratio%i",bin));
    ((TH1D*)ratios[bin])->Divide((TH1D*)simulation[bin]);
  }

  TLegend *leg = new TLegend(0.631661,0.550143,0.731975,0.955587);
  leg->SetFillStyle(0);
  leg->SetFillColor(0);
  leg->SetBorderSize(0);
  leg->SetTextSize(0.03);
  leg->SetTextSize(0.038682);
  TCanvas *c1 = new TCanvas("c1","c1",1200,600);
  c1->SetTopMargin(0.02);
  c1->SetRightMargin(0.02);
  c1->SetBorderSize(0);
  c1->SetFillColor(0);
  c1->SetFillColor(0);
  c1->SetBorderMode(0);
  c1->SetFrameFillColor(0);
  c1->SetFrameBorderMode(0);
  c1->SetLogy();
  ((TH1D *)data[1])->GetXaxis()->SetRange(((TH1D *)data[1])->FindBin(0.3),((TH1D *)data[1])->GetNbinsX());
  ((TH1D *)data[1])->Draw();
  ofstream myfile;
  myfile.open (textfilename.Data());
  myfile<<"data\tsimulation"<<endl;
  for(int bin = 1; bin<=10;bin++){
    float scale = TMath::Power(2,bin);
    ((TH1D *)data[bin])->Scale(1.0/scale);
    ((TH1D *)simulation[bin])->Scale(1.0/scale);
    leg->AddEntry(data[bin],Form("%i<N_{cluster}<%i times %2.1f",(bin-1)*10,bin*10,scale));
    data[bin]->Draw("same");
    simulation[bin]->Draw("same");
    myfile<< ((TH1D *)data[bin])->GetMean() <<"\t"<< ((TH1D *)simulation[bin])->GetMean()<<endl;
  }
  myfile.close();
  leg->Draw();
  c1->SaveAs(outname.Data());

  TCanvas *c2 = new TCanvas("c2","c2",1200,600);
  c2->SetTopMargin(0.02);
  c2->SetRightMargin(0.02);
  c2->SetBorderSize(0);
  c2->SetFillColor(0);
  c2->SetFillColor(0);
  c2->SetBorderMode(0);
  c2->SetFrameFillColor(0);
  c2->SetFrameBorderMode(0);
  ((TH1D *)ratios[1])->GetYaxis()->SetTitle("data/simulation");

  ((TH1D *)ratios[1])->GetXaxis()->SetRange(((TH1D *)ratios[1])->FindBin(0.3),((TH1D *)ratios[1])->GetNbinsX());
  ((TH1D *)ratios[1])->Draw();
  for(int bin = 1; bin<=10;bin++){
    //float scale = 2-0.2*bin;
     //((TH1D *)ratios[bin])->Scale(1.0/scale);
    ratios[bin]->Draw("same");
  }
  ((TH1D *)ratios[1])->SetMaximum(1.5);
  ((TH1D *)ratios[1])->SetMinimum(0.0);
  //leg->Draw();
  c2->SaveAs(outnameratios.Data());
  return;

}

void SetStyles(TH1 *histo,int marker, int color,char *xtitle, char *ytitle){
  histo->SetMarkerStyle(marker);
  histo->SetMarkerColor(color);
  histo->SetLineColor(color);
  histo->GetXaxis()->SetTitle(xtitle);
  histo->GetYaxis()->SetTitle(ytitle);
  histo->Sumw2();
}

 PlotMatchedTracksDepositsFromData.C:1
 PlotMatchedTracksDepositsFromData.C:2
 PlotMatchedTracksDepositsFromData.C:3
 PlotMatchedTracksDepositsFromData.C:4
 PlotMatchedTracksDepositsFromData.C:5
 PlotMatchedTracksDepositsFromData.C:6
 PlotMatchedTracksDepositsFromData.C:7
 PlotMatchedTracksDepositsFromData.C:8
 PlotMatchedTracksDepositsFromData.C:9
 PlotMatchedTracksDepositsFromData.C:10
 PlotMatchedTracksDepositsFromData.C:11
 PlotMatchedTracksDepositsFromData.C:12
 PlotMatchedTracksDepositsFromData.C:13
 PlotMatchedTracksDepositsFromData.C:14
 PlotMatchedTracksDepositsFromData.C:15
 PlotMatchedTracksDepositsFromData.C:16
 PlotMatchedTracksDepositsFromData.C:17
 PlotMatchedTracksDepositsFromData.C:18
 PlotMatchedTracksDepositsFromData.C:19
 PlotMatchedTracksDepositsFromData.C:20
 PlotMatchedTracksDepositsFromData.C:21
 PlotMatchedTracksDepositsFromData.C:22
 PlotMatchedTracksDepositsFromData.C:23
 PlotMatchedTracksDepositsFromData.C:24
 PlotMatchedTracksDepositsFromData.C:25
 PlotMatchedTracksDepositsFromData.C:26
 PlotMatchedTracksDepositsFromData.C:27
 PlotMatchedTracksDepositsFromData.C:28
 PlotMatchedTracksDepositsFromData.C:29
 PlotMatchedTracksDepositsFromData.C:30
 PlotMatchedTracksDepositsFromData.C:31
 PlotMatchedTracksDepositsFromData.C:32
 PlotMatchedTracksDepositsFromData.C:33
 PlotMatchedTracksDepositsFromData.C:34
 PlotMatchedTracksDepositsFromData.C:35
 PlotMatchedTracksDepositsFromData.C:36
 PlotMatchedTracksDepositsFromData.C:37
 PlotMatchedTracksDepositsFromData.C:38
 PlotMatchedTracksDepositsFromData.C:39
 PlotMatchedTracksDepositsFromData.C:40
 PlotMatchedTracksDepositsFromData.C:41
 PlotMatchedTracksDepositsFromData.C:42
 PlotMatchedTracksDepositsFromData.C:43
 PlotMatchedTracksDepositsFromData.C:44
 PlotMatchedTracksDepositsFromData.C:45
 PlotMatchedTracksDepositsFromData.C:46
 PlotMatchedTracksDepositsFromData.C:47
 PlotMatchedTracksDepositsFromData.C:48
 PlotMatchedTracksDepositsFromData.C:49
 PlotMatchedTracksDepositsFromData.C:50
 PlotMatchedTracksDepositsFromData.C:51
 PlotMatchedTracksDepositsFromData.C:52
 PlotMatchedTracksDepositsFromData.C:53
 PlotMatchedTracksDepositsFromData.C:54
 PlotMatchedTracksDepositsFromData.C:55
 PlotMatchedTracksDepositsFromData.C:56
 PlotMatchedTracksDepositsFromData.C:57
 PlotMatchedTracksDepositsFromData.C:58
 PlotMatchedTracksDepositsFromData.C:59
 PlotMatchedTracksDepositsFromData.C:60
 PlotMatchedTracksDepositsFromData.C:61
 PlotMatchedTracksDepositsFromData.C:62
 PlotMatchedTracksDepositsFromData.C:63
 PlotMatchedTracksDepositsFromData.C:64
 PlotMatchedTracksDepositsFromData.C:65
 PlotMatchedTracksDepositsFromData.C:66
 PlotMatchedTracksDepositsFromData.C:67
 PlotMatchedTracksDepositsFromData.C:68
 PlotMatchedTracksDepositsFromData.C:69
 PlotMatchedTracksDepositsFromData.C:70
 PlotMatchedTracksDepositsFromData.C:71
 PlotMatchedTracksDepositsFromData.C:72
 PlotMatchedTracksDepositsFromData.C:73
 PlotMatchedTracksDepositsFromData.C:74
 PlotMatchedTracksDepositsFromData.C:75
 PlotMatchedTracksDepositsFromData.C:76
 PlotMatchedTracksDepositsFromData.C:77
 PlotMatchedTracksDepositsFromData.C:78
 PlotMatchedTracksDepositsFromData.C:79
 PlotMatchedTracksDepositsFromData.C:80
 PlotMatchedTracksDepositsFromData.C:81
 PlotMatchedTracksDepositsFromData.C:82
 PlotMatchedTracksDepositsFromData.C:83
 PlotMatchedTracksDepositsFromData.C:84
 PlotMatchedTracksDepositsFromData.C:85
 PlotMatchedTracksDepositsFromData.C:86
 PlotMatchedTracksDepositsFromData.C:87
 PlotMatchedTracksDepositsFromData.C:88
 PlotMatchedTracksDepositsFromData.C:89
 PlotMatchedTracksDepositsFromData.C:90
 PlotMatchedTracksDepositsFromData.C:91
 PlotMatchedTracksDepositsFromData.C:92
 PlotMatchedTracksDepositsFromData.C:93
 PlotMatchedTracksDepositsFromData.C:94
 PlotMatchedTracksDepositsFromData.C:95
 PlotMatchedTracksDepositsFromData.C:96
 PlotMatchedTracksDepositsFromData.C:97
 PlotMatchedTracksDepositsFromData.C:98
 PlotMatchedTracksDepositsFromData.C:99
 PlotMatchedTracksDepositsFromData.C:100
 PlotMatchedTracksDepositsFromData.C:101
 PlotMatchedTracksDepositsFromData.C:102
 PlotMatchedTracksDepositsFromData.C:103
 PlotMatchedTracksDepositsFromData.C:104
 PlotMatchedTracksDepositsFromData.C:105
 PlotMatchedTracksDepositsFromData.C:106
 PlotMatchedTracksDepositsFromData.C:107
 PlotMatchedTracksDepositsFromData.C:108
 PlotMatchedTracksDepositsFromData.C:109
 PlotMatchedTracksDepositsFromData.C:110
 PlotMatchedTracksDepositsFromData.C:111
 PlotMatchedTracksDepositsFromData.C:112
 PlotMatchedTracksDepositsFromData.C:113
 PlotMatchedTracksDepositsFromData.C:114
 PlotMatchedTracksDepositsFromData.C:115
 PlotMatchedTracksDepositsFromData.C:116
 PlotMatchedTracksDepositsFromData.C:117
 PlotMatchedTracksDepositsFromData.C:118
 PlotMatchedTracksDepositsFromData.C:119
 PlotMatchedTracksDepositsFromData.C:120
 PlotMatchedTracksDepositsFromData.C:121
 PlotMatchedTracksDepositsFromData.C:122
 PlotMatchedTracksDepositsFromData.C:123
 PlotMatchedTracksDepositsFromData.C:124
 PlotMatchedTracksDepositsFromData.C:125
 PlotMatchedTracksDepositsFromData.C:126
 PlotMatchedTracksDepositsFromData.C:127
 PlotMatchedTracksDepositsFromData.C:128
 PlotMatchedTracksDepositsFromData.C:129
 PlotMatchedTracksDepositsFromData.C:130
 PlotMatchedTracksDepositsFromData.C:131
 PlotMatchedTracksDepositsFromData.C:132
 PlotMatchedTracksDepositsFromData.C:133
 PlotMatchedTracksDepositsFromData.C:134
 PlotMatchedTracksDepositsFromData.C:135
 PlotMatchedTracksDepositsFromData.C:136
 PlotMatchedTracksDepositsFromData.C:137
 PlotMatchedTracksDepositsFromData.C:138