ROOT logo
void MakeFits(Int_t mod=1){

  TFile *f = TFile::Open("histos_pass15.root") ;
  char key[55] ;
  sprintf(key,"hMggDispM%d",mod) ;
  TH3F * h3Re = (TH3F*)f->Get(key) ;
  sprintf(key,"hMggDispM%d",mod) ;
  TH3F * h3Re = (TH3F*)f->Get(key) ;
  sprintf(key,"hMiMggAllM%d",mod) ;
  TH3F * h3Mi = (TH3F*)f->Get(key) ;

  TH2D * mass = (TH2D*)h3Re->Project3D("yx") ;
  sprintf(key,"Mass_mod%d",mod) ;
  mass->SetName(key) ;
  mass->Reset();
  TH2D * width = (TH2D*)h3Re->Project3D("yx") ;
  sprintf(key,"Width_mod%d",mod) ;
  width->SetName(key) ;
  width->Reset();

  TH2D * yield = (TH2D*)h3Re->Project3D("yx") ;
  sprintf(key,"Yield_mod%d",mod) ;
  yield->SetName(key) ;
  yield->Reset();

  TSpectrum *s = new TSpectrum(1);
  TCanvas * c = new TCanvas("fit") ;
  TF1 * gs = new TF1("gs","[0]*exp(-(x-[1])*(x-[1])/2./[2]/[2])+[3]+0*[4]*x",0.,1.) ;
  for(Int_t i=1;i<=mass->GetNbinsX();i++){
    for(Int_t j=1;j<=mass->GetNbinsY();j++){
      printf("i=%d, j=%d \n",i,j) ;
      TH1D * tmp = h3Re->ProjectionZ("a",i,i,j,j) ;
      TH1D * tmpMi = h3Mi->ProjectionZ("b",i,i,j,j) ;
      tmp->Sumw2() ;
      //      tmp->Rebin(4) ;
      //      tmpMi->Rebin(4) ;
      //Normalize
      //      Double_t nMi=tmpMi->Integral(70/4,120/4) ;
      //      Double_t nRe=tmp->Integral(70/4,120/4) ;
      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.) ;

      tmp->GetXaxis()->SetRangeUser(0.05,0.25) ;
      Int_t nfound = s->Search(tmp,1,"new");
      printf("Found %d candidate peaks to fitn",nfound);
      Float_t *xpeaks = s->GetPositionX();       

      gs->SetParameters(8.,xpeaks[0],0.008,0.,0.) ;
      gs->SetParLimits(0,0.,100.) ;
      gs->SetParLimits(1,0.05,0.2) ;
      gs->SetParLimits(2,0.003,0.015) ;
      if(tmp->Integral(40,80)){
	tmp->Fit(gs,"q","",0.05,0.220) ;
	tmp->Fit(gs,"qM","",0.05,0.220) ;
	mass->SetBinContent(i,j,gs->GetParameter(1)) ;
	mass->SetBinError(i,j,gs->GetParError(1)) ;
	width->SetBinContent(i,j,gs->GetParameter(2)) ;
	width->SetBinError(i,j,gs->GetParError(2)) ;
	yield->SetBinContent(i,j,TMath::Sqrt(6.28)*gs->GetParameter(0)*gs->GetParameter(2)/tmp->GetXaxis()->GetBinWidth(1)) ;
	
	if(gs->GetParameter(0)<3){//no visible peak
	  mass->SetBinContent(i,j,0.136) ;
	  mass->SetBinError(i,j,0.) ;
	  width->SetBinContent(i,j,0.) ;
	  width->SetBinError(i,j,0.) ;
	}	
	/*
	//	if(gs->GetParameter(0)<3){
	  tmp->Fit(gs,"","",0.05,0.220) ;
	  c->Update() ;
	  if(getchar()=='q')return ;
	  //	}
	  */

      }
      //      tmpMi->SetLineColor(2) ;
      //      tmpMi->Draw("same") ;
      //            c->Update() ;
      //            if(getchar()=='q')return ;
      delete tmp ;
      delete tmpMi ;
    }
  }

  TFile fout("Calibration_pass16.root","update") ;
  mass->Write(0,TObject::kOverwrite) ;
  width->Write(0,TObject::kOverwrite) ;
  yield->Write(0,TObject::kOverwrite) ;
  
  fout.Close() ;
 

}
 MakeFits.C:1
 MakeFits.C:2
 MakeFits.C:3
 MakeFits.C:4
 MakeFits.C:5
 MakeFits.C:6
 MakeFits.C:7
 MakeFits.C:8
 MakeFits.C:9
 MakeFits.C:10
 MakeFits.C:11
 MakeFits.C:12
 MakeFits.C:13
 MakeFits.C:14
 MakeFits.C:15
 MakeFits.C:16
 MakeFits.C:17
 MakeFits.C:18
 MakeFits.C:19
 MakeFits.C:20
 MakeFits.C:21
 MakeFits.C:22
 MakeFits.C:23
 MakeFits.C:24
 MakeFits.C:25
 MakeFits.C:26
 MakeFits.C:27
 MakeFits.C:28
 MakeFits.C:29
 MakeFits.C:30
 MakeFits.C:31
 MakeFits.C:32
 MakeFits.C:33
 MakeFits.C:34
 MakeFits.C:35
 MakeFits.C:36
 MakeFits.C:37
 MakeFits.C:38
 MakeFits.C:39
 MakeFits.C:40
 MakeFits.C:41
 MakeFits.C:42
 MakeFits.C:43
 MakeFits.C:44
 MakeFits.C:45
 MakeFits.C:46
 MakeFits.C:47
 MakeFits.C:48
 MakeFits.C:49
 MakeFits.C:50
 MakeFits.C:51
 MakeFits.C:52
 MakeFits.C:53
 MakeFits.C:54
 MakeFits.C:55
 MakeFits.C:56
 MakeFits.C:57
 MakeFits.C:58
 MakeFits.C:59
 MakeFits.C:60
 MakeFits.C:61
 MakeFits.C:62
 MakeFits.C:63
 MakeFits.C:64
 MakeFits.C:65
 MakeFits.C:66
 MakeFits.C:67
 MakeFits.C:68
 MakeFits.C:69
 MakeFits.C:70
 MakeFits.C:71
 MakeFits.C:72
 MakeFits.C:73
 MakeFits.C:74
 MakeFits.C:75
 MakeFits.C:76
 MakeFits.C:77
 MakeFits.C:78
 MakeFits.C:79
 MakeFits.C:80
 MakeFits.C:81
 MakeFits.C:82
 MakeFits.C:83
 MakeFits.C:84
 MakeFits.C:85
 MakeFits.C:86
 MakeFits.C:87
 MakeFits.C:88
 MakeFits.C:89
 MakeFits.C:90
 MakeFits.C:91
 MakeFits.C:92
 MakeFits.C:93
 MakeFits.C:94
 MakeFits.C:95
 MakeFits.C:96
 MakeFits.C:97