ROOT logo
Int_t 
DetIndex(Int_t d, Char_t r)
{
  return (d == 1 ? 0 : (d-1) * 2 - 1) + (r == 'I' ? 0 : 1);
}
Int_t
RingColor(Int_t d, Char_t r)
{
  return (d == 1 ? kRed : d == 2 ? kGreen : kBlue) + (r == 'I' ? 1 : 3);
}

void CompareMatDep() {
  gStyle->SetOptTitle(kFALSE);

  Int_t spread = 10;
  TMultiGraph* mg = new TMultiGraph;

  for(Int_t d = 1; d<=3;d++) {
    Int_t nr = (d == 1 ? 1 : 2);
    for(Int_t q = 0; q < nr; q++) {
      Char_t        r = (q == 0 ? 'I' : 'O');
      TGraphErrors* g = new TGraphErrors();
      g->SetName(Form("fmd%d%c", d, r));
      g->SetTitle(Form("FMD%d%c (+%d)", d, r, spread*(DetIndex(d,r)+1)));
      g->SetLineColor(RingColor(d, r));
      g->SetMarkerColor(RingColor(d, r));
      g->SetFillColor(RingColor(d, r));
      g->SetFillStyle(3002);
      g->SetMarkerStyle(20);
      g->SetMarkerSize(1.3);
      mg->Add(g);
    }
  }
  
  TGraphErrors* g = new TGraphErrors();
  g->SetName("all");
  g->SetTitle("All");
  g->SetLineColor(kBlack);
  g->SetMarkerColor(kBlack);
  g->SetFillColor(kGray);
  g->SetFillStyle(3002);
  g->SetMarkerStyle(20);
  g->SetMarkerSize(1.3);
  mg->Add(g);

  const char* base = "/mnt/samsung/oldhome/ALICE/FMDanalysis/BackgroundCorrection/BackgroundStudy/TestOfMaterialBudget/";

  Int_t  samples[] = { -20, -15, -10, -5, 0, 5, 10 , 15, 20, 999 };
  Int_t* sample    = samples;
  Int_t  i         = 0;
  while (*sample < 999) { 
    TFile* fin = 0;
    if(*sample < 0) 
      fin = TFile::Open(Form("%s/minus%dpercent/fmd_dNdeta.root",
			     base,-*sample));
    else if(*sample > 0) 
      fin = TFile::Open(Form("%s/plus%dpercent/fmd_dNdeta.root",base,*sample));
    if(*sample == 0) 
      fin = TFile::Open(Form("%s/refdist/fmd_dNdeta.root", base));
    if (!fin) { 
      Error("CompareMatDep", "Failed to open input file for %d", *sample);
      sample++;
      i++;
      continue;
    }
    Float_t twa = 0;
    Float_t tsw = 0;

    for(Int_t d = 1; d<=3;d++) {
      Int_t nr = (d == 1 ? 1 : 2);
      for(Int_t q = 0; q < nr; q++) {
	Char_t        r = (q == 0 ? 'I' : 'O');
	TH1F* hRingMult = (TH1F*)fin->Get(Form("hRingMult_FMD%d%c",
					      d,r));
	Float_t wav    = 0;
	Float_t sumofw = 0;

	// Weighted average 
	for(Int_t n = 1;n<=hRingMult->GetNbinsX();n++) {
	  if(hRingMult->GetBinContent(n) > -1 && 
	     hRingMult->GetBinError(n) > 0 ) {
	    Float_t weight = 1/TMath::Power(hRingMult->GetBinError(n),2);
	    wav            += weight*hRingMult->GetBinContent(n);
	    sumofw         += weight;
	    twa            += weight*hRingMult->GetBinContent(n);
	    tsw             += weight;
	  }
	}
	
	TGraphErrors* g = 
	  static_cast<TGraphErrors*>(mg->GetListOfGraphs()->At(DetIndex(d, r)));
	g->SetPoint(i, *sample, 100*wav/sumofw+spread*(DetIndex(d,r)+1));
	g->SetPointError(i, 0, 100*1/TMath::Sqrt(sumofw)); 
	Info("CompareMatDep", "Setting point %d @ %d of %s to %f +/- %f", 
	     i, *sample, g->GetName(), 100*wav/sumofw, 
	     100*1/TMath::Sqrt(sumofw));
      } // for q 
    } // for d

    TGraphErrors* g = 
      static_cast<TGraphErrors*>(mg->GetListOfGraphs()->At(5));
    g->SetPoint(i, *sample, 100*twa/tsw);
    g->SetPointError(i, 0, 100*1/TMath::Sqrt(tsw)); 
    Info("CompareMatDep", "Setting point %d @ %d of %s to %f +/- %f", 
	 i, *sample, g->GetName(), 100*twa/tsw, 
	 100*1/TMath::Sqrt(tsw));

    sample++;
    i++;
  }
  
  TCanvas* c  = new TCanvas("c", "C", 800, 800);
  c->SetTopMargin(0.05);
  c->SetRightMargin(0.05);
  c->SetLeftMargin(0.13);
  c->SetFillColor(0);
  c->SetBorderSize(0);
  c->SetBorderMode(0);
  c->SetGridx();
  c->SetGridy();

  mg->Draw("a pl");
  mg->GetHistogram()->SetXTitle("#Delta#rho [%]");
  mg->GetHistogram()->SetYTitle("Average relative difference [%]");
  mg->GetHistogram()->GetXaxis()->SetTitleFont(132);
  mg->GetHistogram()->GetXaxis()->SetLabelFont(132);
  mg->GetHistogram()->GetXaxis()->SetNdivisions(10);
  mg->GetHistogram()->GetYaxis()->SetTitleFont(132);
  mg->GetHistogram()->GetYaxis()->SetLabelFont(132);
  mg->GetHistogram()->GetYaxis()->SetNdivisions(1010);
  mg->GetHistogram()->GetYaxis()->SetTitleOffset(1.2);
  // c->Clear();
  // mg->Draw("a e3");

  TLegend* leg = gPad->BuildLegend(0.15,0.7,0.4,0.945);
  leg->SetFillColor(0);
  leg->SetBorderSize(0);
  leg->SetTextFont(132);
  leg->SetFillStyle(0);

  TIter next(mg->GetListOfGraphs());
  TObject* o = 0;

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