#include"TROOT.h" #include"TFile.h" #include"TH1.h" #include"TCanvas.h" #include"TSpectrum.h" void background(const char *fname = "AF11225_5_20_20_day5_7200_12042016.root", const char *bname = "h1") { if ((!fname) || (!(fname[0]))) return; // just a precaution if ((!bname) || (!(bname[0]))) return; // just a precaution TFile *f = TFile::Open(fname, "READ"); if ((!f) || (f->IsZombie())) { delete f; return; } // just a precaution TH1F *back; f->GetObject(bname, back); if (!back) { delete f; return; } // just a precaution TCanvas *Background = (TCanvas *)gROOT->GetListOfCanvases()->FindObject("Background"); if (Background) Background->Clear(); else Background = new TCanvas("Background", "Estimation of background with increasing window", 10, 10, 1000, 700); back->Draw(); Int_t nbins = back->GetNbinsX(); #if ROOT_VERSION_CODE >= ROOT_VERSION(6,00,00) Double_t *source = new Double_t[nbins]; // ROOT 6 #else Float_t *source = new Float_t[nbins]; // ROOT 5 #endif Int_t i; for (i = 0; i < nbins; i++) source[i] = back->GetBinContent(i + 1); TSpectrum *s = new TSpectrum(); s->Background(source, nbins, 6, TSpectrum::kBackIncreasingWindow, TSpectrum::kBackOrder2, kFALSE, TSpectrum::kBackSmoothing3, kFALSE); TH1F *d = new TH1F("d", "", nbins, back->GetXaxis()->GetXmin(), back->GetXaxis()->GetXmax()); d->SetDirectory(gROOT); // (gROOT) ... or ... (0) for (i = 0; i < nbins; i++) d->SetBinContent(i + 1, source[i]); d->SetLineColor(kRed); d->Draw("SAME L"); delete[] source; // no longer needed }