void MediaPesata(int N, double *x, double *sigmax, double &xmed, double &sigma) { //void MediaPesata(int N, double *x, double *sigmax) { double sx2=0; double ssm1=0; for (int i=0; iGaus(1,sigmakI); double kV = gRandom->Gaus(1,sigmakV); for (int n=0; nGaus(I,sigmarI)*kI; double Vi = gRandom->Gaus(V,sigmarV)*kV; double sigmaI = TMath::Sqrt(sigmarI*sigmarI + sigmakI*Ii*sigmakI*Ii); double sigmaV = TMath::Sqrt(sigmarV*sigmarV + sigmakV*Vi*sigmakV*Vi); int iMis = n+j*nMis; R[iMis] = Vi/Ii; sigmaR[iMis] = R[iMis]*TMath::Sqrt(sigmaI*sigmaI/Ii/Ii + sigmaV*sigmaV/Vi/Vi); hR->Fill(R[iMis]); } } int Nmisure = nMis*nStrum; double Rpes, sigmaRpes; MediaPesata(Nmisure, R, sigmaR, Rpes, sigmaRpes); //MediaPesata(Nmisure, R, sigmaR); printf("\nmedia pesata: %f +- %f\n",Rpes,sigmaRpes); hR->Draw(); double Rmean = hR->GetMean(); double sigmaRmean = hR->GetRMS(); printf("\nR = %f +- %f \n",Rmean,sigmaRmean); }