47 TMVA::Volume::Volume( std::vector<Double_t>* l, std::vector<Double_t>* u )
56 TMVA::Volume::Volume( std::vector<Float_t>* l, std::vector<Float_t>* u )
58 fLower =
new std::vector<Double_t>( l->size() );
59 fUpper =
new std::vector<Double_t>( u->size() );
62 for (UInt_t ivar=0; ivar<l->size(); ivar++) {
63 (*fLower)[ivar] = Double_t((*l)[ivar]);
64 (*fUpper)[ivar] = Double_t((*u)[ivar]);
71 TMVA::Volume::Volume( Double_t* l, Double_t* u, Int_t nvar )
73 fLower =
new std::vector<Double_t>( nvar );
74 fUpper =
new std::vector<Double_t>( nvar );
77 for (
int ivar=0; ivar<nvar; ivar++) {
78 (*fLower)[ivar] = l[ivar];
79 (*fUpper)[ivar] = u[ivar];
86 TMVA::Volume::Volume( Float_t* l, Float_t* u, Int_t nvar )
88 fLower =
new std::vector<Double_t>( nvar );
89 fUpper =
new std::vector<Double_t>( nvar );
92 for (
int ivar=0; ivar<nvar; ivar++) {
93 (*fLower)[ivar] = Double_t(l[ivar]);
94 (*fUpper)[ivar] = Double_t(u[ivar]);
101 TMVA::Volume::Volume( Double_t l, Double_t u )
103 fLower =
new std::vector<Double_t>(1);
104 fUpper =
new std::vector<Double_t>(1);
113 TMVA::Volume::Volume( Float_t l, Float_t u )
115 fLower =
new std::vector<Double_t>(1);
116 fUpper =
new std::vector<Double_t>(1);
118 (*fLower)[0] = Double_t(l);
119 (*fUpper)[0] = Double_t(u);
125 TMVA::Volume::Volume( Volume& V )
127 fLower =
new std::vector<Double_t>( *V.fLower );
128 fUpper =
new std::vector<Double_t>( *V.fUpper );
135 TMVA::Volume& TMVA::Volume::operator=(
const Volume& V )
138 if (fLower)
delete fLower;
139 if (fUpper)
delete fUpper;
140 fLower =
new std::vector<Double_t>( *V.fLower );
141 fUpper =
new std::vector<Double_t>( *V.fUpper );
153 TMVA::Volume::~Volume(
void )
156 if (fOwnerShip) this->Delete();
162 void TMVA::Volume::Delete(
void )
164 if (NULL != fLower) {
delete fLower; fLower = NULL; }
165 if (NULL != fUpper) {
delete fUpper; fUpper = NULL; }
171 void TMVA::Volume::Scale( Double_t f )
173 gTools().Scale(*fLower,f);
174 gTools().Scale(*fUpper,f);
180 void TMVA::Volume::ScaleInterval( Double_t f )
182 for (UInt_t ivar=0; ivar<fLower->size(); ivar++) {
183 Double_t lo = 0.5*((*fLower)[ivar]*(1.0 + f) + (*fUpper)[ivar]*(1.0 - f));
184 Double_t up = 0.5*((*fLower)[ivar]*(1.0 - f) + (*fUpper)[ivar]*(1.0 + f));
185 (*fLower)[ivar] = lo;
186 (*fUpper)[ivar] = up;
193 void TMVA::Volume::Print(
void )
const
195 MsgLogger fLogger(
"Volume" );
196 for (UInt_t ivar=0; ivar<fLower->size(); ivar++) {
197 fLogger << kINFO <<
"... Volume: var: " << ivar <<
"\t(fLower, fUpper) = ("
198 << (*fLower)[ivar] <<
"\t " << (*fUpper)[ivar] <<
")"<< Endl;