void pl_XY_fit(Int_t iNSt=4, Int_t NewNbinsX=32, Int_t NewNbinsY=32, Int_t iOpt=0){ // TCanvas *can = new TCanvas("can22","can22"); // can->Divide(2,2); TCanvas *can = new TCanvas("can","can",50,0,800,800); can->Divide(4,iNSt); gPad->SetFillColor(0); gStyle->SetPalette(1); gStyle->SetOptStat(kFALSE); gROOT->cd(); gROOT->SetDirLevel(1); TH1 *h; TH1 *h1; TH2 *h2; TH3 *h3; TH3 *h3f; TH2 *h2n; TH2 *h2m; TH2 *h2s; TString hname; TString cOpt; Int_t iCan=1; gROOT->cd(); switch(iOpt){ case 0: cOpt="X"; break; case 1: cOpt="Y"; break; case 2: cOpt="T"; break; } for (Int_t iSt=0; iStcd(iCan); hname=Form("hXY_D%s_%d",cOpt.Data(),iSt); h3f=(TH3 *)gROOT->FindObjectAny(hname); cout << hname.Data() <<" with pointer "< Dbin"<GetXaxis()->GetXmin(),h3f->GetXaxis()->GetXmax(), NewNbinsY,h3f->GetYaxis()->GetXmin(),h3f->GetYaxis()->GetXmax()); h2m = new TH2D(Form("hTH3FitMean%s%d",cOpt.Data(),iSt),Form("#Delta%s Fit Mean; x (cm); y (cm)",cOpt.Data()), NewNbinsX,h3f->GetXaxis()->GetXmin(),h3f->GetXaxis()->GetXmax(), NewNbinsY,h3f->GetYaxis()->GetXmin(),h3f->GetYaxis()->GetXmax()); h2s = new TH2D(Form("hTH3FitSigma%s%d",cOpt.Data(),iSt),Form("#Delta%s Fit Sigma; x (cm); y (cm)",cOpt.Data()), NewNbinsX,h3f->GetXaxis()->GetXmin(),h3f->GetXaxis()->GetXmax(), NewNbinsY,h3f->GetYaxis()->GetXmin(),h3f->GetYaxis()->GetXmax()); Int_t iCol=0; ROOT::Math::MinimizerOptions::SetDefaultMinimizer("Minuit2"); for(Int_t ix=0; ixGetMean(); Double_t dFLim=2.5*hsel->GetRMS(); // hsel->SetLineC.olor(iCol++); cout << " fit ix="<Integral() <<", Mean "<Integral()>10){ TFitResultPtr fRes=hsel->Fit("gaus","S","HEsame",dFMean-dFLim,dFMean+dFLim); Int_t iFitStatus = fRes; if( iFitStatus== 0 ){ // check validity of fit h2n->SetBinContent(ix+1,iy+1,hsel->Integral()); h2m->SetBinContent(ix+1,iy+1,fRes->Parameter(1)); h2s->SetBinContent(ix+1,iy+1,fRes->Parameter(2)); cout << "Fres: "<Parameter(1)<<", "<Parameter(2)<cd(iCan); { cout << "Draw "<GetName()<Draw("colz"); //gPad->SetLinz(); gPad->SetMargin(0.23,0.23,0.23,0.23); } iCan++; can->cd(iCan); { cout << "Draw "<GetName()<Draw("colz"); gPad->SetMargin(0.23,0.23,0.23,0.23); } iCan++; can->cd(iCan); { cout << "Draw "<GetName()<Draw("colz"); gPad->SetMargin(0.23,0.23,0.23,0.23); } iCan++; }else cout << hname << " not found" << endl; } can->SaveAs("pl_XY_fit.pdf"); }