72     fCallerName (callerName),
 
   88   std::vector<Ranking*>::const_iterator it = fRanking.begin();
 
   89   for (; it != fRanking.end(); ++it) 
delete *it;
 
   91   fTransformations.SetOwner();
 
  100   fLogger->SetSource( 
TString(
"TFHandler_" + fCallerName).Data() );
 
  109   fTransformations.Add(trf);
 
  110   fTransformationsReferenceClasses.push_back( cls );
 
  127      Log() << kWARNING << 
"Variable \"" << Variable(ivar).GetExpression()
 
  128            << 
"\" has zero, negative, or NaN RMS^2: " 
  130            << 
" ==> set to zero. Please check the variable content" << 
Endl;
 
  135   fVariableStats.at(k).at(ivar) = stat;
 
  144   for (
UInt_t i = 0; i < fTransformationsReferenceClasses.size(); i++) {
 
  145      fTransformationsReferenceClasses.at( i ) = cls;
 
  155   std::vector<Int_t>::const_iterator rClsIt = fTransformationsReferenceClasses.begin();
 
  156   const Event* trEv = ev;
 
  158      if (rClsIt == fTransformationsReferenceClasses.end()) 
Log() << kFATAL<< 
"invalid read in TransformationHandler::Transform " <<
Endl;
 
  159      trEv = trf->Transform(trEv, (*rClsIt) );
 
  169   if (fTransformationsReferenceClasses.empty()){
 
  175   std::vector< Int_t >::const_iterator rClsIt = fTransformationsReferenceClasses.end();
 
  177   const Event* trEv = ev;
 
  178   UInt_t nvars = 0, ntgts = 0, nspcts = 0;
 
  180      if (trf->IsCreated()) {
 
  181         trf->CountVariableTypes( nvars, ntgts, nspcts );
 
  182         if( !(suppressIfNoTargets && ntgts==0) )
 
  183            trEv = trf->InverseTransform(ev, (*rClsIt) );
 
  214   if (fTransformations.GetEntries() <= 0)
 
  221   std::vector<Event*> *transformedEvents = 
new std::vector<TMVA::Event*>(events.size());
 
  222   for ( 
UInt_t ievt = 0; ievt<events.size(); ievt++)
 
  223      transformedEvents->at(ievt) = 
new Event(*events.at(ievt));
 
  226   std::vector< Int_t >::iterator rClsIt = fTransformationsReferenceClasses.begin();
 
  228      if (trf->PrepareTransformation(*transformedEvents)) {
 
  229         for (
UInt_t ievt = 0; ievt<transformedEvents->size(); ievt++) {  
 
  230            *(*transformedEvents)[ievt] = *trf->Transform((*transformedEvents)[ievt],(*rClsIt));
 
  236   CalcStats(*transformedEvents);
 
  239   PlotVariables(*transformedEvents);
 
  243   if (!createNewVector) {  
 
  244      for ( 
UInt_t ievt = 0; ievt<transformedEvents->size(); ievt++)
 
  245         delete (*transformedEvents)[ievt];
 
  246      delete transformedEvents;
 
  247      transformedEvents=NULL;
 
  250   return transformedEvents; 
 
  259   UInt_t nevts = events.size();
 
  262      Log() << kFATAL << 
"No events available to find min, max, mean and rms" << 
Endl;
 
  265   const UInt_t nvar = events[0]->GetNVariables();
 
  266   const UInt_t ntgt = events[0]->GetNTargets();
 
  274   for (
Int_t cls=0; cls<fNumC; cls++) {
 
  278      varMin[cls] = 
new Double_t[nvar+ntgt];
 
  279      varMax[cls] = 
new Double_t[nvar+ntgt];
 
  280      for (
UInt_t ivar=0; ivar<nvar+ntgt; ivar++) {
 
  281         x0[cls][ivar] = 
x2[cls][ivar] = 0;
 
  282         varMin[cls][ivar] = DBL_MAX;
 
  283         varMax[cls][ivar] = -DBL_MAX;
 
  287   for (
UInt_t ievt=0; ievt<nevts; ievt++) {
 
  288      const Event* ev  = events[ievt];
 
  292      sumOfWeights[cls] += weight;
 
  293      if (fNumC > 1 ) sumOfWeights[fNumC-1] += weight; 
 
  294      for (
UInt_t var_tgt = 0; var_tgt < 2; var_tgt++ ){ 
 
  295         UInt_t nloop = ( var_tgt==0?nvar:ntgt );
 
  296         for (
UInt_t ivar=0; ivar<nloop; ivar++) {
 
  299            if (
x < varMin[cls][(var_tgt*nvar)+ivar]) varMin[cls][(var_tgt*nvar)+ivar]= 
x;
 
  300            if (
x > varMax[cls][(var_tgt*nvar)+ivar]) varMax[cls][(var_tgt*nvar)+ivar]= 
x;
 
  302            x0[cls][(var_tgt*nvar)+ivar] += 
x*weight;
 
  303            x2[cls][(var_tgt*nvar)+ivar] += 
x*
x*weight;
 
  306               if (
x < varMin[fNumC-1][(var_tgt*nvar)+ivar]) varMin[fNumC-1][(var_tgt*nvar)+ivar]= 
x;
 
  307               if (
x > varMax[fNumC-1][(var_tgt*nvar)+ivar]) varMax[fNumC-1][(var_tgt*nvar)+ivar]= 
x;
 
  309               x0[fNumC-1][(var_tgt*nvar)+ivar] += 
x*weight;
 
  310               x2[fNumC-1][(var_tgt*nvar)+ivar] += 
x*
x*weight;
 
  318   for (
UInt_t var_tgt = 0; var_tgt < 2; var_tgt++ ){ 
 
  319      UInt_t nloop = ( var_tgt==0?nvar:ntgt );
 
  320      for (
UInt_t ivar=0; ivar<nloop; ivar++) {
 
  321         for (
Int_t cls = 0; cls < fNumC; cls++) {
 
  322            Double_t mean = x0[cls][(var_tgt*nvar)+ivar]/sumOfWeights[cls];
 
  324            AddStats(cls, (var_tgt*nvar)+ivar, mean, rms, varMin[cls][(var_tgt*nvar)+ivar], varMax[cls][(var_tgt*nvar)+ivar]);
 
  331   UInt_t maxL = 8, maxV = 0;
 
  332   std::vector<UInt_t> vLengths;
 
  333   for (
UInt_t ivar=0; ivar<nvar+ntgt; ivar++) {
 
  341   UInt_t clen = maxL + 4*maxV + 11;
 
  347   Log() << std::setw(maxL) << 
"Variable";
 
  348   Log() << 
"  " << std::setw(maxV) << 
"Mean";
 
  349   Log() << 
" " << std::setw(maxV) << 
"RMS";
 
  350   Log() << 
"   " << std::setw(maxV) << 
"[        Min ";
 
  351   Log() << 
"  " << std::setw(maxV) << 
"    Max ]"<< 
Endl;;
 
  352   for (
UInt_t i=0; i<clen; i++) 
Log() << 
"-";
 
  357   for (
UInt_t ivar=0; ivar<nvar+ntgt; ivar++) {
 
  359         Log() << std::setw(maxL) << Variable(ivar).GetLabel() << 
":";
 
  361         Log() << std::setw(maxL) << Target(ivar-nvar).GetLabel() << 
":";
 
  362      Log() << std::setw(maxV) << 
Form( format.
Data(), GetMean(ivar) );
 
  363      Log() << std::setw(maxV) << 
Form( format.
Data(), GetRMS(ivar) );
 
  364      Log() << 
"   [" << std::setw(maxV) << 
Form( format.
Data(), GetMin(ivar) );
 
  365      Log() << std::setw(maxV) << 
Form( format.
Data(), GetMax(ivar) ) << 
" ]";
 
  368   for (
UInt_t i=0; i<clen; i++) 
Log() << 
"-";
 
  372   delete[] sumOfWeights;
 
  373   for (
Int_t cls=0; cls<fNumC; cls++) {
 
  376      delete [] varMin[cls];
 
  377      delete [] varMax[cls];
 
  391   std::vector< Int_t >::const_iterator rClsIt = fTransformationsReferenceClasses.begin();
 
  394      trf->MakeFunction(fout, fncName, part, trCounter++, (*rClsIt) );
 
  398      for (
Int_t i=0; i<fTransformations.GetSize(); i++) {
 
  399         fout << 
"   void InitTransform_"<<i+1<<
"();" << std::endl;
 
  400         fout << 
"   void Transform_"<<i+1<<
"( std::vector<double> & iv, int sigOrBgd ) const;" << std::endl;
 
  405      fout << 
"//_______________________________________________________________________" << std::endl;
 
  406      fout << 
"inline void " << fncName << 
"::InitTransform()" << std::endl;
 
  407      fout << 
"{" << std::endl;
 
  408      for (
Int_t i=0; i<fTransformations.GetSize(); i++)
 
  409         fout << 
"   InitTransform_"<<i+1<<
"();" << std::endl;
 
  410      fout << 
"}" << std::endl;
 
  412      fout << 
"//_______________________________________________________________________" << std::endl;
 
  413      fout << 
"inline void " << fncName << 
"::Transform( std::vector<double>& iv, int sigOrBgd ) const" << std::endl;
 
  414      fout << 
"{" << std::endl;
 
  415      for (
Int_t i=0; i<fTransformations.GetSize(); i++)
 
  416         fout << 
"   Transform_"<<i+1<<
"( iv, sigOrBgd );" << std::endl;
 
  418      fout << 
"}" << std::endl;
 
  444   if (fTransformations.GetSize() >= 1) {
 
  445      if (fTransformations.GetSize() > 1 ||
 
  447         xtit += 
" (" + 
GetName() + 
")";
 
  461   if (fRootBaseDir==0 && theDirectory == 0) 
return;
 
  463   Log() << kDEBUG << 
"Plot event variables for ";
 
  469   if (theDirectory == 0) {
 
  476   const UInt_t nvar = fDataSetInfo.GetNVariables();
 
  477   const UInt_t ntgt = fDataSetInfo.GetNTargets();
 
  478   const Int_t  ncls = fDataSetInfo.GetNClasses();
 
  482   std::vector<std::vector<TH1*> > hVars( ncls );  
 
  483   std::vector<std::vector<std::vector<TH2F*> > >     mycorr( ncls ); 
 
  484   std::vector<std::vector<std::vector<TProfile*> > > myprof( ncls ); 
 
  486   for (
Int_t cls = 0; cls < ncls; cls++) {
 
  487      hVars.at(cls).resize ( nvar+ntgt );
 
  488      hVars.at(cls).assign ( nvar+ntgt, 0 ); 
 
  489      mycorr.at(cls).resize( nvar+ntgt );
 
  490      myprof.at(cls).resize( nvar+ntgt );
 
  491      for (
UInt_t ivar=0; ivar < nvar+ntgt; ivar++) {
 
  492         mycorr.at(cls).at(ivar).resize( nvar+ntgt );
 
  493         myprof.at(cls).at(ivar).resize( nvar+ntgt );
 
  494         mycorr.at(cls).at(ivar).assign( nvar+ntgt, 0 ); 
 
  495         myprof.at(cls).at(ivar).assign( nvar+ntgt, 0 ); 
 
  502   if (nvar+ntgt > (
UInt_t)
gConfig().GetVariablePlotting().fMaxNumOfAllowedVariablesForScatterPlots) {
 
  503      Int_t nhists = (nvar+ntgt)*(nvar+ntgt - 1)/2;
 
  505      Log() << kINFO << 
"<PlotVariables> Will not produce scatter plots ==> " << 
Endl;
 
  507            << 
"|  The number of " << nvar << 
" input variables and " << ntgt << 
" target values would require " 
  508            << nhists << 
" two-dimensional" << 
Endl;
 
  510            << 
"|  histograms, which would occupy the computer's memory. Note that this" << 
Endl;
 
  512            << 
"|  suppression does not have any consequences for your analysis, other" << 
Endl;
 
  514            << 
"|  than not disposing of these scatter plots. You can modify the maximum" << 
Endl;
 
  516            << 
"|  number of input variables allowed to generate scatter plots in your" << 
Endl;
 
  517      Log() << 
"|  script via the command line:" << 
Endl;
 
  519            << 
"|  \"(TMVA::gConfig().GetVariablePlotting()).fMaxNumOfAllowedVariablesForScatterPlots = <some int>;\"" 
  522      Log() << kINFO << 
"Some more output" << 
Endl;
 
  529   for (
UInt_t var_tgt = 0; var_tgt < 2; var_tgt++) { 
 
  530      UInt_t nloops = ( var_tgt == 0? nvar:ntgt );     
 
  531      for (
UInt_t ivar=0; ivar<nloops; ivar++) {
 
  532         const VariableInfo& info = ( var_tgt == 0 ? Variable( ivar ) : Target(ivar) ); 
 
  535         Double_t mean = fVariableStats.at(fNumC-1).at( ( var_tgt*nvar )+ivar).fMean;
 
  536         Double_t rms  = fVariableStats.at(fNumC-1).at( ( var_tgt*nvar )+ivar).fRMS;
 
  538         for (
Int_t cls = 0; cls < ncls; cls++) {
 
  540            TString className = fDataSetInfo.GetClassInfo(cls)->GetName();
 
  543            className += (ntgt == 1 && var_tgt == 1 ? 
"_target" : 
"");
 
  571            h->GetXaxis()->SetTitle( 
gTools().GetXTitleWithUnit( GetVariableAxisTitle( info ), info.
GetUnit() ) );
 
  573            hVars.at(cls).at((var_tgt*nvar)+ivar) = 
h;
 
  576            if (nvar+ntgt <= (
UInt_t)
gConfig().GetVariablePlotting().fMaxNumOfAllowedVariablesForScatterPlots) {
 
  578               for (
UInt_t v_t = 0; v_t < 2; v_t++) {
 
  579                  UInt_t nl = ( v_t==0?nvar:ntgt );
 
  580                  UInt_t start = ( v_t==0? (var_tgt==0?ivar+1:0):(var_tgt==0?nl:ivar+1) );
 
  581                  for (
UInt_t j=start; j<nl; j++) {
 
  583                     const VariableInfo& infoj = ( v_t == 0 ? Variable( j ) : Target(j) );
 
  586                     Double_t rxmin = fVariableStats.at(fNumC-1).at( ( v_t*nvar )+ivar).fMin;
 
  587                     Double_t rxmax = fVariableStats.at(fNumC-1).at( ( v_t*nvar )+ivar).fMax;
 
  588                     Double_t rymin = fVariableStats.at(fNumC-1).at( ( v_t*nvar )+j).fMin;
 
  589                     Double_t rymax = fVariableStats.at(fNumC-1).at( ( v_t*nvar )+j).fMax;
 
  593                                                className.
Data(), transfType.
Data() ),
 
  595                                                className.
Data(), transfType.
Data() ),
 
  596                                          nbins2D, rxmin , rxmax,
 
  597                                          nbins2D, rymin , rymax );
 
  601                     mycorr.at(cls).at((var_tgt*nvar)+ivar).at((v_t*nvar)+j) = h2;
 
  607                                                 Form( 
"profile %s versus %s (%s)%s",
 
  609                                                       className.
Data(), transfType.
Data() ), nbins1D,
 
  615                     myprof.at(cls).at((var_tgt*nvar)+ivar).at((v_t*nvar)+j) = p;
 
  623   UInt_t nevts = events.size();
 
  626   std::vector<Double_t> xregmean ( nvar+1, 0 );
 
  627   std::vector<Double_t> x2regmean( nvar+1, 0 );
 
  628   std::vector<Double_t> xCregmean( nvar+1, 0 );
 
  631   for (
UInt_t ievt=0; ievt<nevts; ievt++) {
 
  633      const Event* ev = events[ievt];
 
  641         xregmean[nvar]  += valr;
 
  642         x2regmean[nvar] += valr*valr;
 
  643         for (
UInt_t ivar=0; ivar<nvar; ivar++) {
 
  645            xregmean[ivar]  += vali;
 
  646            x2regmean[ivar] += vali*vali;
 
  647            xCregmean[ivar] += vali*valr;
 
  652      for (
UInt_t var_tgt = 0; var_tgt < 2; var_tgt++) { 
 
  653         UInt_t nloops = ( var_tgt == 0? nvar:ntgt );    
 
  654         for (
UInt_t ivar=0; ivar<nloops; ivar++) {
 
  658            hVars.at(cls).at( ( var_tgt*nvar )+ivar)->Fill( vali, weight );
 
  663               for (
UInt_t v_t = 0; v_t < 2; v_t++) {
 
  664                  UInt_t nl    = ( v_t==0 ? nvar : ntgt );
 
  665                  UInt_t start = ( v_t==0 ? (var_tgt==0?ivar+1:0) : (var_tgt==0?nl:ivar+1) );
 
  666                  for (
UInt_t j=start; j<nl; j++) {
 
  668                     mycorr.at(cls).at( ( var_tgt*nvar )+ivar).at( ( v_t*nvar )+j)->Fill( vali, valj, weight );
 
  669                     myprof.at(cls).at( ( var_tgt*nvar )+ivar).at( ( v_t*nvar )+j)->Fill( vali, valj, weight );
 
  679      for (
UInt_t ivar=0; ivar<=nvar; ivar++) {
 
  680         xregmean[ivar] /= nevts;
 
  681         x2regmean[ivar] = x2regmean[ivar]/nevts - xregmean[ivar]*xregmean[ivar];
 
  683      for (
UInt_t ivar=0; ivar<nvar; ivar++) {
 
  684         xCregmean[ivar] = xCregmean[ivar]/nevts - xregmean[ivar]*xregmean[nvar];
 
  685         xCregmean[ivar] /= 
TMath::Sqrt( x2regmean[ivar]*x2regmean[nvar] );
 
  688      fRanking.push_back( 
new Ranking( 
GetName() + 
"Transformation", 
"|Correlation with target|" ) );
 
  689      for (
UInt_t ivar=0; ivar<nvar; ivar++) {
 
  691         fRanking.back()->AddRank( 
Rank( fDataSetInfo.GetVariableInfo(ivar).GetLabel(), abscor ) );
 
  694      if (nvar+ntgt <= (
UInt_t)
gConfig().GetVariablePlotting().fMaxNumOfAllowedVariablesForScatterPlots) {
 
  697         fRanking.push_back( 
new Ranking( 
GetName() + 
"Transformation", 
"Mutual information" ) );
 
  698         for (
UInt_t ivar=0; ivar<nvar; ivar++) {
 
  699            TH2F* 
h1 = mycorr.at(0).at( nvar ).at( ivar );
 
  701            fRanking.back()->AddRank( 
Rank( fDataSetInfo.GetVariableInfo(ivar).GetLabel(), mi ) );
 
  705         fRanking.push_back( 
new Ranking( 
GetName() + 
"Transformation", 
"Correlation Ratio" ) );
 
  706         for (
UInt_t ivar=0; ivar<nvar; ivar++) {
 
  707            TH2F*    h2 = mycorr.at(0).at( nvar ).at( ivar );
 
  709            fRanking.back()->AddRank( 
Rank( fDataSetInfo.GetVariableInfo(ivar).GetLabel(), cr ) );
 
  713         fRanking.push_back( 
new Ranking( 
GetName() + 
"Transformation", 
"Correlation Ratio (T)" ) );
 
  714         for (
UInt_t ivar=0; ivar<nvar; ivar++) {
 
  717            fRanking.back()->AddRank( 
Rank( fDataSetInfo.GetVariableInfo(ivar).GetLabel(), cr ) );
 
  724   else if (fDataSetInfo.GetNClasses() == 2
 
  725            && fDataSetInfo.GetClassInfo(
"Signal") != NULL
 
  726            && fDataSetInfo.GetClassInfo(
"Background") != NULL
 
  728      fRanking.push_back( 
new Ranking( 
GetName() + 
"Transformation", 
"Separation" ) );
 
  729      for (
UInt_t i=0; i<nvar; i++) {
 
  731                                                hVars.at(fDataSetInfo.GetClassInfo(
"Background")->GetNumber()).at(i) );
 
  732         fRanking.back()->AddRank( 
Rank( hVars.at(fDataSetInfo.GetClassInfo(
"Signal")->GetNumber()).at(i)->GetTitle(),
 
  742   if (theDirectory == 0) {
 
  748         outputDir += 
"_" + 
TString(trf->GetShortName());
 
  750      TString uniqueOutputDir = outputDir;
 
  753      while( (o = fRootBaseDir->
FindObject(uniqueOutputDir)) != 0 ){
 
  754         uniqueOutputDir = outputDir+
Form(
"_%d",counter);
 
  755         Log() << kINFO << 
"A " << o->
ClassName() << 
" with name " << o->
GetName() << 
" already exists in " 
  756               << fRootBaseDir->GetPath() << 
", I will try with "<<uniqueOutputDir<<
"." << 
Endl;
 
  765      localDir = fRootBaseDir->
mkdir( uniqueOutputDir );
 
  768      Log() << kVERBOSE << 
"Create and switch to directory " << localDir->
GetPath() << 
Endl;
 
  774   for (
UInt_t i=0; i<nvar+ntgt; i++) {
 
  775      for (
Int_t cls = 0; cls < ncls; cls++) {
 
  776         if (hVars.at(cls).at(i) != 0) {
 
  777            hVars.at(cls).at(i)->Write();
 
  778            hVars.at(cls).at(i)->SetDirectory(0);
 
  779            delete hVars.at(cls).at(i);
 
  785   if (nvar+ntgt <= (
UInt_t)
gConfig().GetVariablePlotting().fMaxNumOfAllowedVariablesForScatterPlots) {
 
  787      localDir = localDir->
mkdir( 
"CorrelationPlots" );
 
  789      Log() << kDEBUG << 
"Create scatter and profile plots in target-file directory: " << 
Endl;
 
  793      for (
UInt_t i=0; i<nvar+ntgt; i++) {
 
  794         for (
UInt_t j=i+1; j<nvar+ntgt; j++) {
 
  795            for (
Int_t cls = 0; cls < ncls; cls++) {
 
  796               if (mycorr.at(cls).at(i).at(j) != 0 ) {
 
  797                  mycorr.at(cls).at(i).at(j)->
Write();
 
  798                  mycorr.at(cls).at(i).at(j)->SetDirectory(0);
 
  799                  delete mycorr.at(cls).at(i).at(j);
 
  801               if (myprof.at(cls).at(i).at(j) != 0) {
 
  802                  myprof.at(cls).at(i).at(j)->Write();
 
  803                  myprof.at(cls).at(i).at(j)->SetDirectory(0);
 
  804                  delete myprof.at(cls).at(i).at(j);
 
  810   if (theDirectory != 0 ) theDirectory->
cd();
 
  811   else                    fRootBaseDir->cd();
 
  840   std::vector< Int_t >::const_iterator rClsIt = fTransformationsReferenceClasses.begin();
 
  842   o << 
"NTransformtations " << fTransformations.GetSize() << std::endl << std::endl;
 
  847      o << 
"#TR -*-*-*-*-*-*-* transformation " << i++ << 
": " << trf->
GetName() << 
" -*-*-*-*-*-*-*-" << std::endl;
 
  848      trf->WriteTransformationToStream(o);
 
  849      ci = fDataSetInfo.GetClassInfo( (*rClsIt) );
 
  851      if (ci == 0 ) clsName = 
"AllClasses";
 
  853      o << 
"ReferenceClass " << clsName << std::endl;
 
  866   gTools().
AddAttr( trfs, 
"NTransformations", fTransformations.GetSize() );
 
  875   Log() << kFATAL << 
"Read transformations not implemented" << 
Endl;
 
  891      if (trfname == 
"Decorrelation" ) {
 
  894      else if (trfname == 
"PCA" ) {
 
  897      else if (trfname == 
"Gauss" ) {
 
  900      else if (trfname == 
"Uniform" ) {
 
  903      else if (trfname == 
"Normalize" ) {
 
  906      else if (trfname == 
"Rearrange" ) {
 
  909      else if (trfname != 
"None") {
 
  912         Log() << kFATAL << 
"<ReadFromXML> Variable transform '" 
  913               << trfname << 
"' unknown." << 
Endl;
 
  916      AddTransformation( newtrf, idxCls );
 
  927   Log() << kINFO << 
"Ranking input variables (method unspecific)..." << 
Endl;
 
  928   std::vector<Ranking*>::const_iterator it = fRanking.begin();
 
  929   for (; it != fRanking.end(); ++it) (*it)->
Print();
 
  937      return fVariableStats.at(cls).at(ivar).fMean;
 
  941         return fVariableStats.at(fNumC-1).at(ivar).fMean;
 
  944         Log() << kWARNING << 
"Inconsistent variable state when reading the mean value. " << 
Endl;
 
  947   Log() << kWARNING << 
"Inconsistent variable state when reading the mean value. Value 0 given back" << 
Endl;
 
  956      return fVariableStats.at(cls).at(ivar).fRMS;
 
  960         return fVariableStats.at(fNumC-1).at(ivar).fRMS;
 
  963         Log() << kWARNING << 
"Inconsistent variable state when reading the RMS value. " << 
Endl;
 
  966   Log() << kWARNING << 
"Inconsistent variable state when reading the RMS value. Value 0 given back" << 
Endl;
 
  975      return fVariableStats.at(cls).at(ivar).fMin;
 
  979         return fVariableStats.at(fNumC-1).at(ivar).fMin;
 
  982         Log() << kWARNING << 
"Inconsistent variable state when reading the minimum value. " << 
Endl;
 
  985   Log() << kWARNING << 
"Inconsistent variable state when reading the minimum value. Value 0 given back" << 
Endl;
 
  994      return fVariableStats.at(cls).at(ivar).fMax;
 
  998         return fVariableStats.at(fNumC-1).at(ivar).fMax;
 
 1001         Log() << kWARNING << 
"Inconsistent variable state when reading the maximum value. " << 
Endl;
 
 1004   Log() << kWARNING << 
"Inconsistent variable state when reading the maximum value. Value 0 given back" << 
Endl;
 
static const double x2[5]
const Bool_t kIterBackward
char * Form(const char *fmt,...)
Describe directory structure in memory.
virtual const char * GetPath() const
Returns the full path of the directory.
virtual Bool_t cd(const char *path=0)
Change current directory to "this" directory.
virtual TDirectory * mkdir(const char *name, const char *title="")
Create a sub-directory "a" or a hierarchy of sub-directories "a/b/c/...".
1-D histogram with a float per channel (see TH1 documentation)}
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
2-D histogram with a float per channel (see TH1 documentation)}
Class that contains all the information of a class.
Int_t fMaxNumOfAllowedVariablesForScatterPlots
VariablePlotting & GetVariablePlotting()
Class that contains all the data information.
UInt_t GetNVariables() const
UInt_t GetNClasses() const
UInt_t GetNTargets() const
Float_t GetValue(UInt_t ivar) const
return value of i'th variable
Double_t GetWeight() const
return the event weight - depending on whether the flag IgnoreNegWeightsInTraining is or not.
Float_t GetTarget(UInt_t itgt) const
ostringstream derivative to redirect and format output
void SetSource(const std::string &source)
Ranking for variables in method (implementation)
Class for type info of MVA input variable.
const TString & GetInternalName() const
const TString & GetUnit() const
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
virtual const char * GetTitle() const
Returns title of object.
virtual const char * GetName() const
Returns name of object.
Mother of all ROOT objects.
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
virtual const char * GetName() const
Returns name of object.
virtual const char * ClassName() const
Returns name of class to which the object belongs.
virtual TObject * FindObject(const char *name) const
Must be redefined in derived classes.
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
const char * Data() const
std::string GetName(const std::string &scope_name)
MsgLogger & Endl(MsgLogger &ml)
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
Short_t Max(Short_t a, Short_t b)
Double_t Sqrt(Double_t x)
Short_t Min(Short_t a, Short_t b)