ROOT logo
void CompWidth(){

  Int_t nIter=18;
  TFile *f[20] ;
  TH3F * hReM1[20] ;
  TH3F * hMiM1[20] ;
  TH3F * hReM2[20] ;
  TH3F * hMiM2[20] ;
  TH3F * hReM3[20] ;
  TH3F * hMiM3[20] ;
  char key[155] ;

  for(Int_t i=0;i<nIter;i++){
    sprintf(key,"histos_pass%d.root",i) ;
    f[i] = TFile::Open(key) ;
    hReM1[i] = (TH3F*)f[i]->Get("hMggDispM1") ;
    sprintf(key,"hMggDispM1_iter%d",i) ;
    hReM1[i]->SetName(key) ;
    hMiM1[i] = (TH3F*)f[i]->Get("hMiMggDispM1") ;
    sprintf(key,"hMiMggDispM1_iter%d",i) ;
    hMiM1[i]->SetName(key) ;

    hReM2[i] = (TH3F*)f[i]->Get("hMggDispM2") ;
    sprintf(key,"hMggDispM2_iter%d",i) ;
    hReM2[i]->SetName(key) ;
    hMiM2[i] = (TH3F*)f[i]->Get("hMiMggDispM2") ;
    sprintf(key,"hMiMggDispM2_iter%d",i) ;
    hMiM2[i]->SetName(key) ;

    hReM3[i] = (TH3F*)f[i]->Get("hMggDispM3") ;
    sprintf(key,"hMggDispM3_iter%d",i) ;
    hReM3[i]->SetName(key) ;
    hMiM3[i] = (TH3F*)f[i]->Get("hMiMggDispM3") ;
    sprintf(key,"hMiMggDispM3_iter%d",i) ;
    hMiM3[i]->SetName(key) ;
  }

  TH1D * hW1 = new TH1D("WidthM1","Module 1",nIter,-0.5,nIter-0.5) ;
  TH1D * hW2 = new TH1D("WidthM2","Module 1",nIter,-0.5,nIter-0.5) ;
  TH1D * hW3 = new TH1D("WidthM3","Module 1",nIter,-0.5,nIter-0.5) ;

//  TF1 * gs = new TF1("gs","[0]*exp(-(x-[1])*(x-[1])/2./[2]/[2])+[3]+[4]*x",0.,1.) ;
  TF1 * gs = new TF1("gs","[0]*exp(-(x-[1])*(x-[1])/2./[2]/[2])+[3]",0.,1.) ;
  TCanvas * c = new TCanvas("c","c") ;

  TH1D * hD[100] ; 

  for(Int_t i=0;i<nIter;i++){
    TH1D * tmp = hReM1[i]->ProjectionZ("a") ;
    TH1D * tmpMi = hMiM1[i]->ProjectionZ("b") ;
    tmp->Sumw2() ;
    //Normalize
    Double_t nMi=tmpMi->Integral(70,120) ;
    Double_t nRe=tmp->Integral(70,120) ;
    if(nMi>0.)
      tmpMi->Scale(nRe/nMi) ;
    tmp->Add(tmpMi,-1.) ;
    gs->SetParameters(3500.,0.135,0.008,0.,0.) ;
    //    gs->SetParLimits(0,0.,1.e+6) ;
    gs->SetParLimits(1,0.09,0.2) ;
    gs->SetParLimits(2,0.003,0.015) ;
    
    c->cd() ;
//    tmp->Fit(gs,"q","",0.05,0.220) ;
    tmp->GetXaxis()->SetRangeUser(0.,0.3) ;
    tmp->SetXTitle("m_{#gamma#gamma} (GeV/c^{2})") ;
    tmp->SetTitle("Module 2") ;
    tmp->Fit(gs,"","",0.125,0.145) ;
    hD[i]=(TH1D*)tmp->Clone(Form("Copy%d",i)) ;
//    c->Update() ; if(getchar()=='q')return  ;
//    if(i==12) return ;
    //    mass->SetBinContent(i,j,gs->GetParameter(1)) ;
    //	mass->SetBinError(i,j,gs->GetParError(1)) ;
    hW1->SetBinContent(i+1,gs->GetParameter(2)) ;
    hW1->SetBinError(i+1,gs->GetParError(2)) ;
    delete tmp ;
    delete tmpMi ;

    tmp = hReM2[i]->ProjectionZ("a") ;
    tmpMi = hMiM2[i]->ProjectionZ("b") ;
    tmp->Sumw2() ;
    //Normalize
    nMi=tmpMi->Integral(70,120) ;
    nRe=tmp->Integral(70,120) ;
    if(nMi>0.)
      tmpMi->Scale(nRe/nMi) ;
    tmp->Add(tmpMi,-1.) ;
    gs->SetParameters(10000.,0.150,0.008,0.,0.) ;
    //    gs->SetParLimits(0,0.,100.) ;
    gs->SetParLimits(1,0.09,0.2) ;
    gs->SetParLimits(2,0.003,0.015) ;
    
    tmp->Fit(gs,"q","",0.125,0.145) ;
    //    mass->SetBinContent(i,j,gs->GetParameter(1)) ;
    //	mass->SetBinError(i,j,gs->GetParError(1)) ;
    hW2->SetBinContent(i+1,gs->GetParameter(2)) ;
    hW2->SetBinError(i+1,gs->GetParError(2)) ;
    delete tmp ;
    delete tmpMi ;

    tmp = hReM3[i]->ProjectionZ("a") ;
    tmpMi = hMiM3[i]->ProjectionZ("b") ;
    tmp->Sumw2() ;
    //Normalize
    Double_t nMi=tmpMi->Integral(70,120) ;
    Double_t nRe=tmp->Integral(70,120) ;
    if(nMi>0.)
      tmpMi->Scale(nRe/nMi) ;
    tmp->Add(tmpMi,-1.) ;
    gs->SetParameters(10000.,0.150,0.008,0.,0.) ;
    //    gs->SetParLimits(0,0.,100.) ;
    gs->SetParLimits(1,0.09,0.2) ;
    gs->SetParLimits(2,0.003,0.015) ;
    
//    tmp->Fit(gs,"q","",0.05,0.220) ;
    tmp->Fit(gs,"q","",0.125,0.145) ;
    //    mass->SetBinContent(i,j,gs->GetParameter(1)) ;
    //	mass->SetBinError(i,j,gs->GetParError(1)) ;
    hW3->SetBinContent(i+1,gs->GetParameter(2)) ;
    hW3->SetBinError(i+1,gs->GetParError(2)) ;
    delete tmp ;
    delete tmpMi ;

  }

  hW1->SetMarkerStyle(20) ;
  hW1->SetMarkerColor(2) ;
  hW2->SetMarkerStyle(21) ;
  hW2->SetMarkerColor(4) ;
  hW3->SetMarkerStyle(24) ;
  hW3->SetMarkerColor(8) ;

  hW1->SetXTitle("Iteration") ;
  hW1->SetYTitle("#sigma (GeV/c^{2})") ;
  hW1->Draw() ;
  hW2->Draw("same") ;
  hW3->Draw("same") ;

  TLegend * l = new TLegend(0.7,0.7,0.85,0.85) ;
  l->AddEntry(hW3,"Module 2","p") ;
  l->AddEntry(hW2,"Module 3","p") ;
  l->AddEntry(hW1,"Module 4","p") ;
  l->Draw() ;

  TCanvas * cMinv = new TCanvas("cMinv") ;
  hD[0]->SetMarkerStyle(20) ;
  hD[0]->SetMarkerSize(0.8) ;
  hD[0]->Draw() ;
  for(Int_t i=1; i<nIter; i++){
   hD[i]->SetMarkerStyle(20+i) ;
   hD[i]->SetMarkerSize(0.8) ;
   hD[i]->Draw("same") ;
  }

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