77 ClassImp(TMVA::Interval);
84 TMVA::Interval::Interval( Double_t min, Double_t max, Int_t nbins ) :
89 if (fMax - fMin < 0) Log() << kFATAL <<
"maximum lower than minimum" << Endl;
91 Log() << kFATAL <<
"nbins < 0" << Endl;
94 else if (nbins == 1) {
95 Log() << kFATAL <<
"interval has to have at least 2 bins if discrete" << Endl;
100 TMVA::Interval::Interval(
const Interval& other ) :
103 fNbins( other.fNbins )
110 TMVA::Interval::~Interval()
120 Double_t TMVA::Interval::GetElement( Int_t bin )
const
123 Log() << kFATAL <<
"GetElement only defined for discrete value Intervals" << Endl;
126 else if (bin < 0 || bin >= fNbins) {
127 Log() << kFATAL <<
"bin " << bin <<
" out of range: interval *bins* count from 0 to " << fNbins-1 << Endl;
130 return fMin + ( (Double_t(bin)/(fNbins-1)) *(fMax - fMin) );
136 Double_t TMVA::Interval::GetStepSize( Int_t iBin )
const
139 Log() << kFATAL <<
"GetElement only defined for discrete value Intervals" << Endl;
142 Log() << kFATAL <<
"You asked for iBin=" << iBin
143 <<
" in interval .. and.. sorry, I cannot let this happen.."<<Endl;
145 return (fMax-fMin)/(Double_t)(fNbins-1);
151 Double_t TMVA::Interval::GetRndm( TRandom3& rnd )
const
153 return rnd.Rndm()*(fMax - fMin) + fMin;
156 Double_t TMVA::Interval::GetWidth()
const
160 Double_t TMVA::Interval::GetMean()
const
162 return (fMax + fMin)/2;
165 void TMVA::Interval::Print(std::ostream &os)
const
167 for (Int_t i=0; i<GetNbins(); i++){
168 os <<
"| " << GetElement(i)<<
" |" ;
172 TMVA::MsgLogger& TMVA::Interval::Log()
const {
173 TTHREAD_TLS_DECL_ARG(MsgLogger,logger,
"Interval");