72 TString trafoDefinition(trafoDefinitionIn);
73 if (trafoDefinition ==
"None")
return;
77 TString trafoDefinitionCheck(trafoDefinitionIn);
78 int npartial = 0, ntrafo = 0;
79 for (
Int_t pos = 0, siz = trafoDefinition.
Sizeof(); pos < siz; ++pos) {
80 TString ch = trafoDefinition(pos,1);
81 if ( ch ==
"(" ) npartial++;
82 if ( ch ==
"+" || ch ==
",") ntrafo++;
86 <<
"The use of multiple partial variable transformations during the "
87 "application phase can be properly invoked via the \"Reader\", but "
88 "it is not yet implemented in \"MakeClass\", the creation mechanism "
89 "for standalone C++ application classes. The standalone C++ class "
90 "produced by this training job is thus INCOMPLETE AND MUST NOT BE USED! "
91 "The transformation in question is: " << trafoDefinitionIn <<
Endl;
100 Int_t parenthesisCount = 0;
101 for (
Int_t position = 0, size = trafoDefinition.
Sizeof(); position < size; ++position) {
102 TString ch = trafoDefinition(position,1);
103 if (ch ==
"(") ++parenthesisCount;
104 else if (ch ==
")") --parenthesisCount;
105 else if (ch ==
"," && parenthesisCount == 0) trafoDefinition.
Replace(position,1,
'+');
111 TString tdef = os->GetString();
117 Ssiz_t parLen = tdef.
Index(
")", parStart )-parStart+1;
120 tdef.
Remove(parStart,parLen);
128 log << kFATAL <<
Form(
"Dataset[%s] : ",dataInfo.
GetName())<<
"Incorrect transformation string provided." <<
Endl;
135 if (trCls !=
"AllClasses") {
138 log << kFATAL <<
Form(
"Dataset[%s] : ",dataInfo.
GetName())<<
"Class " << trCls <<
" not known for variable transformation "
139 << trName <<
", please check." <<
Endl;
146 if (trName ==
"I" || trName ==
"Ident" || trName ==
"Identity") {
150 else if (trName ==
"D" || trName ==
"Deco" || trName ==
"Decorrelate") {
154 else if (trName ==
"P" || trName ==
"PCA") {
158 else if (trName ==
"U" || trName ==
"Uniform") {
162 else if (trName ==
"G" || trName ==
"Gauss") {
166 else if (trName ==
"N" || trName ==
"Norm" || trName ==
"Normalise" || trName ==
"Normalize") {
172 <<
"<ProcessOptions> Variable transform '"
173 << trName <<
"' unknown." <<
Endl;
176 if (transformation) {
180 <<
"Create Transformation \"" << trName <<
"\" with reference class "
184 <<
"Create Transformation \"" << trName <<
"\" with events from all classes."
char * Form(const char *fmt,...)
virtual Int_t GetEntries() const
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
virtual TObject * At(Int_t idx) const
Returns the object at position idx. Returns 0 if idx is out of range.
Class that contains all the information of a class.
Class that contains all the data information.
virtual const char * GetName() const
Returns name of object.
ClassInfo * GetClassInfo(Int_t clNum) const
ostringstream derivative to redirect and format output
virtual const char * GetName() const
Returns name of object.
Collectable string class.
TString & Replace(Ssiz_t pos, Ssiz_t n, const char *s)
TString & Remove(Ssiz_t pos)
virtual Int_t Sizeof() const
Returns size string will occupy on I/O buffer.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
create variable transformations
void CreateVariableTransforms(const TString &trafoDefinition, TMVA::DataSetInfo &dataInfo, TMVA::TransformationHandler &transformationHandler, TMVA::MsgLogger &log)
void variables(TString dataset, TString fin="TMVA.root", TString dirName="InputVariables_Id", TString title="TMVA Input Variables", Bool_t isRegression=kFALSE, Bool_t useTMVAStyle=kTRUE)
MsgLogger & Endl(MsgLogger &ml)