- Double_t random = 0.;
- Double_t measuredValue = 0.;
- Double_t measuredError = 0.;
-
- for (Long_t iBin=0; iBin<fRandomizedDist->GetNbins(); iBin++) {
- measuredValue = fMeasuredOrig->GetBinContent(iBin,fCoordinatesN_M); //used as mean
- measuredError = fMeasuredOrig->GetBinError(fCoordinatesN_M); //used as sigma
+ for (Long_t iBin=0; iBin<fResponseOrig->GetNbins(); iBin++) {
+ Double_t val = fResponseOrig->GetBinContent(iBin,fCoordinatesN_M); //used as mean
+ Double_t err = fResponseOrig->GetBinError(fCoordinatesN_M); //used as sigma
+ Double_t ran = fRandom3->Gaus(val,err);
+ // random = fRandom3->PoissonD(measuredValue); //doesn't work for normalized spectra, use Gaus (assuming raw counts in bin is large >10)
+ fRandomResponse->SetBinContent(iBin,ran);
+ }
+ for (Long_t iBin=0; iBin<fEfficiencyOrig->GetNbins(); iBin++) {
+ Double_t val = fEfficiencyOrig->GetBinContent(iBin,fCoordinatesN_M); //used as mean
+ Double_t err = fEfficiencyOrig->GetBinError(fCoordinatesN_M); //used as sigma
+ Double_t ran = fRandom3->Gaus(val,err);
+ // random = fRandom3->PoissonD(measuredValue); //doesn't work for normalized spectra, use Gaus (assuming raw counts in bin is large >10)
+ fRandomEfficiency->SetBinContent(iBin,ran);
+ }
+ for (Long_t iBin=0; iBin<fMeasuredOrig->GetNbins(); iBin++) {
+ Double_t val = fMeasuredOrig->GetBinContent(iBin,fCoordinatesN_M); //used as mean
+ Double_t err = fMeasuredOrig->GetBinError(fCoordinatesN_M); //used as sigma
+ Double_t ran = fRandom3->Gaus(val,err);