64 TString trafoDefinition(trafoDefinitionIn);
65 if (trafoDefinition ==
"None")
return;
69 TString trafoDefinitionCheck(trafoDefinitionIn);
70 int npartial = 0, ntrafo = 0;
71 for (
Int_t pos = 0, siz = trafoDefinition.
Sizeof(); pos < siz; ++pos) {
72 TString ch = trafoDefinition(pos,1);
73 if ( ch ==
"(" ) npartial++;
74 if ( ch ==
"+" || ch ==
",") ntrafo++;
78 <<
"The use of multiple partial variable transformations during the "
79 "application phase can be properly invoked via the \"Reader\", but "
80 "it is not yet implemented in \"MakeClass\", the creation mechanism "
81 "for standalone C++ application classes. The standalone C++ class "
82 "produced by this training job is thus INCOMPLETE AND MUST NOT BE USED! "
83 "The transformation in question is: " << trafoDefinitionIn <<
Endl;
92 Int_t parenthesisCount = 0;
93 for (
Int_t position = 0, size = trafoDefinition.
Sizeof(); position < size; ++position) {
94 TString ch = trafoDefinition(position,1);
95 if (ch ==
"(") ++parenthesisCount;
96 else if (ch ==
")") --parenthesisCount;
97 else if (ch ==
"," && parenthesisCount == 0) trafoDefinition.
Replace(position,1,
'+');
103 TString tdef = os->GetString();
109 Ssiz_t parLen = tdef.
Index(
")", parStart )-parStart+1;
112 tdef.
Remove(parStart,parLen);
120 log << kFATAL <<
Form(
"Dataset[%s] : ",dataInfo.
GetName())<<
"Incorrect transformation string provided." <<
Endl;
127 if (trCls !=
"AllClasses") {
130 log << kFATAL <<
Form(
"Dataset[%s] : ",dataInfo.
GetName())<<
"Class " << trCls <<
" not known for variable transformation "
131 << trName <<
", please check." <<
Endl;
138 if (trName ==
"I" || trName ==
"Ident" || trName ==
"Identity") {
142 else if (trName ==
"D" || trName ==
"Deco" || trName ==
"Decorrelate") {
146 else if (trName ==
"P" || trName ==
"PCA") {
150 else if (trName ==
"U" || trName ==
"Uniform") {
154 else if (trName ==
"G" || trName ==
"Gauss") {
158 else if (trName ==
"N" || trName ==
"Norm" || trName ==
"Normalise" || trName ==
"Normalize") {
164 <<
"<ProcessOptions> Variable transform '"
165 << trName <<
"' unknown." <<
Endl;
168 if (transformation) {
172 <<
"Create Transformation \"" << trName <<
"\" with reference class "
176 <<
"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)