#include "CalorimeterDigi.h" #include "TRandom.h" std::vector< CalCell > CalorimeterDigi::CreateDigits( ) const { // Vecteur resultat: std::vector< CalCell > result ; // Applique le smearing du a la resolution sur chaque // cellule std::vector< CalCell >::const_iterator iter ; for ( iter = m_data.begin() ; iter != m_data.end() ; ++iter ) { // Energie deposee dans la cellule: double energie = (*iter).energy() ; // Resolution pour cette energie double resolution = m_resolution * sqrt( energie ) ; // Modifie l'energie deposee dans la cellule, // L'energie suit une loi Gaussienne de valeur moyenne // l'energie "vraie" de la cellule et de variance la // resolution: double energieDeposee = gRandom -> Gaus( energie , resolution ) ; // Sauve la nouvelle energie dans le vecteur resultat: result.push_back( CalCell( (*iter).address() , energieDeposee ) ) ; } return result ; }