# esempio di segnale gaussiano con fondo gaussiano + fondo uniforme
 
n <- 100000
 
mu <- 0; sigma <- 0.5;
 
f1 <- 0.1;  mu1 <- 0; sigma1 <- 2
f2 <- 0.05; a <- -10; b <- 10
 
r <- sample( c( rnorm(n, mu, sigma), rnorm(as.integer(f1*n), mu1, sigma1),
                runif(as.integer(f2*n), a, b) ) )
 
hist(r, nc=100)
 
# per recuperare i dettagli dell'istogramma (posizione dei bin,
# numero di eventi per bin etc.)
 
h <- hist(r, nc=100)
 
h 
 
# ad esempio, come calcolarsi media e deviazione standard dai dati raggruppati:
sum(h$mids*h$counts)/sum(h$counts)
sqrt( sum(h$mids^2*h$counts)/sum(h$counts) - (sum(h$mids*h$counts)/sum(h$counts))^2 )
 
# da confrontare con
mean(r)
sd(r)
 
# Ovviamente l'utilita' di h$mids, h$counts non e' per fare medie, ma per
# fare ulteriori conti, come sezioni d'urto, etc.
# In particolare, per conoscere la frazione di `eventi'
# in un certo intervallo e' sufficiente calcolare il rapporto
# fra la lunghezza di r data una selezione e la lunghezza senza selezione,
# ad esempio
length(r[r>0]) / length(r)