48 TMVA::VariableInfo::VariableInfo(
const TString& expression,
const TString& title,
const TString& unit,
50 char varType,
void* external,
51 Double_t min, Double_t max, Bool_t normalized )
52 : TNamed(title.Data(),title.Data()),
53 fExpression ( expression ),
59 fNormalized ( normalized ),
60 fExternalData ( external ),
61 fVarCounter ( varCounter )
63 if ( TMath::Abs(max - min) <= FLT_MIN ) {
72 if (expression.Contains(
":=")) {
73 Ssiz_t index = expression.Index(
":=");
74 fExpression = expression(index+2,expression.Sizeof()-index-2);
75 fLabel = expression(0,index);
76 fLabel = fLabel.ReplaceAll(
" ",
"");
78 else fLabel = GetExpression();
80 if (fTitle ==
"") fTitle = fLabel;
81 fInternalName = gTools().ReplaceRegularExpressions( fLabel,
"_" );
87 TMVA::VariableInfo::VariableInfo()
94 fNormalized ( kFALSE ),
100 fLabel = GetExpression();
104 fInternalName = gTools().ReplaceRegularExpressions( fLabel,
"_" );
110 TMVA::VariableInfo::VariableInfo(
const VariableInfo& other )
112 fExpression ( other.fExpression ),
113 fInternalName ( other.fInternalName ),
114 fLabel ( other.fLabel ),
115 fUnit ( other.fUnit ),
116 fVarType ( other.fVarType ),
117 fXminNorm ( other.fXminNorm ),
118 fXmaxNorm ( other.fXmaxNorm ),
119 fXmeanNorm ( other.fXmeanNorm ),
120 fXrmsNorm ( other.fXrmsNorm ),
121 fXvarianceNorm( other.fXvarianceNorm ),
122 fNormalized ( other.fNormalized ),
123 fExternalData ( other.fExternalData ),
124 fVarCounter ( other.fVarCounter )
131 TMVA::VariableInfo& TMVA::VariableInfo::operator=(
const VariableInfo& rhs)
134 fExpression = rhs.fExpression;
135 fInternalName = rhs.fInternalName;
136 fVarType = rhs.fVarType;
137 fXminNorm = rhs.fXminNorm;
138 fXmaxNorm = rhs.fXmaxNorm;
148 void TMVA::VariableInfo::WriteToStream( std::ostream& o )
const
150 UInt_t nc = TMath::Max( 30, TMath::Max( GetExpression().Length()+1, GetInternalName().Length()+1 ) );
151 TString expBr(Form(
"\'%s\'",GetExpression().Data()));
152 o << std::setw(nc) << GetExpression();
153 o << std::setw(nc) << GetInternalName();
154 o << std::setw(nc) << GetLabel();
155 o << std::setw(nc) << GetTitle();
156 o << std::setw(nc) << GetUnit();
157 o <<
" \'" << fVarType <<
"\' ";
158 o <<
"[" << std::setprecision(12) << GetMin() <<
"," << std::setprecision(12) << GetMax() <<
"]" << std::endl;
164 void TMVA::VariableInfo::ReadFromStream( std::istream& istr )
168 TString exp, varname, vartype, minmax, minstr, maxstr;
169 istr >> exp >> varname >> vartype >> minmax;
170 exp.Strip(TString::kBoth,
'\'');
171 minmax = minmax.Strip(TString::kLeading,
'[');
172 minmax = minmax.Strip(TString::kTrailing,
']');
173 minstr = minmax(0,minmax.First(
','));
174 maxstr = minmax(1+minmax.First(
','),minmax.Length());
176 std::stringstream strmin(minstr.Data());
177 std::stringstream strmax(maxstr.Data());
180 SetExpression ( exp );
181 SetInternalVarName( varname );
182 SetLabel ( varname );
183 SetTitle ( varname );
185 SetVarType ( vartype[1] );
193 void TMVA::VariableInfo::AddToXML(
void* varnode )
195 gTools().AddAttr( varnode,
"Expression", GetExpression() );
196 gTools().AddAttr( varnode,
"Label", GetLabel() );
197 gTools().AddAttr( varnode,
"Title", GetTitle() );
198 gTools().AddAttr( varnode,
"Unit", GetUnit() );
199 gTools().AddAttr( varnode,
"Internal", GetInternalName() );
201 TString typeStr(
" ");
202 typeStr[0] = GetVarType();
204 if (TestBit(DataSetInfo::kIsArrayVariable))
206 gTools().AddAttr(varnode,
"Type", typeStr);
207 gTools().AddAttr( varnode,
"Min", gTools().StringFromDouble(GetMin()) );
208 gTools().AddAttr( varnode,
"Max", gTools().StringFromDouble(GetMax()) );
214 void TMVA::VariableInfo::ReadFromXML(
void* varnode )
217 gTools().ReadAttr( varnode,
"Expression", fExpression );
218 gTools().ReadAttr( varnode,
"Label", fLabel );
219 gTools().ReadAttr( varnode,
"Title", fTitle );
220 gTools().ReadAttr( varnode,
"Unit", fUnit );
221 gTools().ReadAttr( varnode,
"Internal", fInternalName );
222 gTools().ReadAttr( varnode,
"Type", type );
223 gTools().ReadAttr( varnode,
"Min", fXminNorm );
224 gTools().ReadAttr( varnode,
"Max", fXmaxNorm );
228 if (type.Contains(
"[]"))
229 SetBit(DataSetInfo::kIsArrayVariable);