Why.C 0100664 0000764 0000764 00000006170 10250535334 011000 0 ustar zaldy zaldy const Int_t FIT_PXRCHANBND_LEFT = 750; const Int_t FIT_PXRCHANBND_RIGHT = 3000; const Double_t SLOPE_CAL_CONSTANT = 62.03; const Double_t INTPT_CAL_CONSTANT = 69.29; Double_t ChanToKeV(Int_t val) { return (1.* val - INTPT_CAL_CONSTANT)/SLOPE_CAL_CONSTANT; } //--------------------------------------------------------------------------------- Double_t Dfpeaks(Double_t *x, Double_t *par) { Double_t result = par[0] + par[1]*x[0]; for (Int_t p=0;p<3;p++) { Double_t norm = par[3*p+2]; Double_t mean = par[3*p+3]; Double_t sigma = par[3*p+4]; result += norm*TMath::Gaus(x[0],mean,sigma); } return result; } //--------------------------------------------------------------------------------- void Why(Int_t nbin_grp=10) { TFile * fpdata = new TFile("adcf.root","READ"); if(fpdata->IsZombie()) { cout<<"Error Openning adcf.root "<< endl; exit(-1); } gStyle->SetOptFit(1111); TH1F *h2 = (TH1F*)fpdata->Get("AdcHisto_Fit"); h2->Rebin(nbin_grp); Double_t fit_pxr_bnd_left; Double_t fit_pxr_bnd_right; Double_t par[15]; par[0] = 0.1; par[1] = -0.6/1000; fit_pxr_bnd_left = ChanToKeV(FIT_PXRCHANBND_LEFT); fit_pxr_bnd_right = ChanToKeV(FIT_PXRCHANBND_RIGHT); TF1 *f = new TF1("f",Dfpeaks,fit_pxr_bnd_left,fit_pxr_bnd_right,2+3*3); f->SetNpx(1000); f->SetParameters(par); //estimate linear background TF1 *fline = new TF1("fline","pol1", fit_pxr_bnd_left,fit_pxr_bnd_right); h2->Fit("fline","qnR"); //Loop on all found peaks. Eliminate peaks at the background level par[0] = fline->GetParameter(0); par[1] = fline->GetParameter(1); par[2] = ChanToKeV(656); par[3] = ChanToKeV(1150); par[4] = ChanToKeV(25); // Ka par[5] = ChanToKeV(135); par[6] = ChanToKeV(1281); par[7] = ChanToKeV(36); // Kb par[8] = ChanToKeV(302); par[9] = ChanToKeV(1795); par[10] = ChanToKeV(146); // Pxr cout<<"Now fitting ...."<< endl; TF1 *fit = new TF1("fit",Dfpeaks,fit_pxr_bnd_left,fit_pxr_bnd_right,2+3*3); fit->SetLineWidth(1); fit->SetLineColor(2); TVirtualFitter::Fitter(h2,2+3*3); fit->SetParameters(par); fit->SetNpx(1000); h2->Fit("fit","ER"); cout<<"Finished fitting ...."<< endl; //Access the parameters here for (Int_t p=0;p<3;p++) { Float_t NormCoef = fit->GetParameter(3*p+2); Float_t NormCoefErr = fit->GetParError(3*p+2); Float_t PkVal = fit->GetParameter(3*p+3); Float_t PkValErr = fit->GetParError(3*p+3); Float_t SigmaCoef = fit->GetParameter(3*p+4); Float_t SigmaCoefErr = fit->GetParError(3*p+4); Float_t OneGaussianArea = NormCoef*SigmaCoef*TMath::Sqrt(2.*TMath::Pi()); Float_t tmp = (NormCoefErr/NormCoef)*(NormCoefErr/NormCoef) + (SigmaCoefErr/SigmaCoef)*(SigmaCoefErr/SigmaCoef); Float_t OneGaussianAreaErr = OneGaussianArea * TMath::Sqrt(tmp); cout<
GetBinWidth(1)
<<" Sigma: "<< SigmaCoef <<" +/- "<< SigmaCoefErr << endl;
}
}//end of the function
adcf.root 0100644 0000764 0000764 00000024567 10250533721 011735 0 ustar zaldy zaldy root y d )w )B 5 6 b |) f ;)D + d TFile adcf.root adcf.root )D)E 6 d |)
B
)E 1 dTH1FAdcHistoAdcHistoCS
B 혱$gEpBFH]{" ?`H'u%#lpCpB9~=H Ql{U}ݽ{cyQ,Ҳ<~|wIx5)_xZ,/ԥi~;.\^_G[?o;ÿw,ihD܆_;7Q:O(a
\,_䵋K{?D?UIJ:uѣ&Bi Z40Eej٣y܅R