85 ClassImp(TMVA::LogInterval);
89 TMVA::LogInterval::LogInterval( Double_t min, Double_t max, Int_t nbins ) :
90 TMVA::Interval(min,max,nbins)
92 if (min<=0) Log() << kFATAL <<
"logarithmic intervals have to have Min>0 !!" << Endl;
95 TMVA::LogInterval::LogInterval(
const LogInterval& other ) :
103 TMVA::LogInterval::~LogInterval()
113 Double_t TMVA::LogInterval::GetElement( Int_t bin )
const
116 Log() << kFATAL <<
"GetElement only defined for discrete value LogIntervals" << Endl;
119 else if (bin < 0 || bin >= fNbins) {
120 Log() << kFATAL <<
"bin " << bin <<
" out of range: interval *bins* count from 0 to " << fNbins-1 << Endl;
123 return TMath::Exp(TMath::Log(fMin)+((Double_t)bin) /((Double_t)(fNbins-1))*log(fMax/fMin));
129 Double_t TMVA::LogInterval::GetStepSize( Int_t iBin )
const
132 Log() << kFATAL <<
"GetElement only defined for discrete value LogIntervals" << Endl;
135 Log() << kFATAL <<
"You asked for iBin=" << iBin
136 <<
" in interval .. and.. sorry, I cannot let this happen.."<<Endl;
138 return (GetElement(TMath::Max(iBin,0))-GetElement(TMath::Max(iBin-1,0)));
144 Double_t TMVA::LogInterval::GetRndm( TRandom3& rnd )
const
146 return TMath::Exp(rnd.Rndm()*(TMath::Log(fMax/fMin) - TMath::Log(fMin)) + TMath::Log(fMin));
151 Double_t TMVA::LogInterval::GetWidth()
const
158 Double_t TMVA::LogInterval::GetMean()
const
160 return (fMax + fMin)/2;
165 TMVA::MsgLogger& TMVA::LogInterval::Log()
const {
166 TTHREAD_TLS_DECL_ARG(MsgLogger,logger,
"LogInterval");