#include "TMVA/tmvaglob.h"
#include "TMVA/Config.h"

using std::cout;
using std::endl;

// set the style
void TMVA::TMVAGlob::SetSignalAndBackgroundStyle( TH1* sig, TH1* bkg, TH1* all ) 
{
   //signal
   // const Int_t FillColor__S = 38 + 150; // change of Color Scheme in ROOT-5.16.
   // convince yourself with gROOT->GetListOfColors()->Print()
   Int_t FillColor__S = c_SignalFill;
   Int_t FillStyle__S = 1001;
   Int_t LineColor__S = c_SignalLine;
   Int_t LineWidth__S = 2;

   // background
   //Int_t icolor = gConfig().fVariablePlotting.fUsePaperStyle ? 2 + 100 : 2;
   Int_t FillColor__B = c_BackgroundFill;
   Int_t FillStyle__B = 3554;
   Int_t LineColor__B = c_BackgroundLine;
   Int_t LineWidth__B = 2;

   if (sig != NULL) {
      sig->SetLineColor( LineColor__S );
      sig->SetLineWidth( LineWidth__S );
      sig->SetFillStyle( FillStyle__S );
      sig->SetFillColor( FillColor__S );
   }
 
   if (bkg != NULL) {
      bkg->SetLineColor( LineColor__B );
      bkg->SetLineWidth( LineWidth__B );
      bkg->SetFillStyle( FillStyle__B );
      bkg->SetFillColor( FillColor__B );
   }

   if (all != NULL) {
      all->SetLineColor( LineColor__S );
      all->SetLineWidth( LineWidth__S );
      all->SetFillStyle( FillStyle__S );
      all->SetFillColor( FillColor__S );
   }
}

void TMVA::TMVAGlob::SetMultiClassStyle( TObjArray* hists ) 
{
   //signal
   // const Int_t FillColor__S = 38 + 150; // change of Color Scheme in ROOT-5.16.
   // convince yourself with gROOT->GetListOfColors()->Print()
   //Int_t FillColor__S = c_SignalFill;
   //Int_t FillStyle__S = 1001;
   //Int_t LineColor__S = c_SignalLine;
   //Int_t LineWidth__S = 2;

   // background
   //Int_t icolor = gConfig().fVariablePlotting.fUsePaperStyle ? 2 + 100 : 2;
   //Int_t FillColor__B = c_BackgroundFill;
   //Int_t FillStyle__B = 3554;
   //Int_t LineColor__B = c_BackgroundLine;
   //Int_t LineWidth__B = 2;

   Int_t FillColors[10] = {38,2,3,6,7,8,9,11};
   Int_t LineColors[10] = {4,2,3,6,7,8,9,11};
   Int_t FillStyles[5] = {1001,3554,3003,3545,0};

   for(Int_t i=0; i<hists->GetEntriesFast(); ++i){
      ((TH1*)(*hists)[i])->SetFillColor(FillColors[i%10]);
      ((TH1*)(*hists)[i])->SetFillStyle(FillStyles[i%5]);
      ((TH1*)(*hists)[i])->SetLineColor(LineColors[i%10]);
      ((TH1*)(*hists)[i])->SetLineWidth(2);
   }
}

// set frame styles
void TMVA::TMVAGlob::SetFrameStyle( TH1* frame, Float_t scale )
{
   frame->SetLabelOffset( 0.012, "X" );// label offset on x axis
   frame->SetLabelOffset( 0.012, "Y" );// label offset on x axis
   frame->GetXaxis()->SetTitleOffset( 1.25 );
   frame->GetYaxis()->SetTitleOffset( 1.22 );
   frame->GetXaxis()->SetTitleSize( 0.045*scale );
   frame->GetYaxis()->SetTitleSize( 0.045*scale );
   Float_t labelSize = 0.04*scale;
   frame->GetXaxis()->SetLabelSize( labelSize );
   frame->GetYaxis()->SetLabelSize( labelSize );

   // global style settings
   gPad->SetTicks();
   gPad->SetLeftMargin  ( 0.108*scale );
   gPad->SetRightMargin ( 0.050*scale );
   gPad->SetBottomMargin( 0.120*scale  );
}

void TMVA::TMVAGlob::SetTMVAStyle() {
      
   TStyle *TMVAStyle = gROOT->GetStyle("TMVA");
   if(TMVAStyle!=0) {
      gROOT->SetStyle("TMVA");
      return;
   }
         
   TMVAStyle = new TStyle(*gROOT->GetStyle("Plain")); // our style is based on Plain
   TMVAStyle->SetName("TMVA");
   TMVAStyle->SetTitle("TMVA style based on \"Plain\" with modifications defined in tmvaglob.C");
   gROOT->GetListOfStyles()->Add(TMVAStyle);
   gROOT->SetStyle("TMVA");
         
   TMVAStyle->SetLineStyleString( 5, "[52 12]" );
   TMVAStyle->SetLineStyleString( 6, "[22 12]" );
   TMVAStyle->SetLineStyleString( 7, "[22 10 7 10]" );

   // the pretty color palette of old
   TMVAStyle->SetPalette((gConfig().fVariablePlotting.fUsePaperStyle ? 18 : 1),0);

   // use plain black on white colors
   TMVAStyle->SetFrameBorderMode(0);
   TMVAStyle->SetCanvasBorderMode(0);
   TMVAStyle->SetPadBorderMode(0);
   TMVAStyle->SetPadColor(0);
   TMVAStyle->SetFillStyle(0);

   TMVAStyle->SetLegendBorderSize(0);

   // title properties
   // TMVAStyle->SetTitleW(.4);
   // TMVAStyle->SetTitleH(.10);
   // MVAStyle->SetTitleX(.5);
   // TMVAStyle->SetTitleY(.9);
   TMVAStyle->SetTitleFillColor( c_TitleBox );
   TMVAStyle->SetTitleTextColor( c_TitleText );
   TMVAStyle->SetTitleBorderSize( 1 );
   TMVAStyle->SetLineColor( c_TitleBorder );
   if (!gConfig().fVariablePlotting.fUsePaperStyle) {
      TMVAStyle->SetFrameFillColor( c_FrameFill );
      TMVAStyle->SetCanvasColor( c_Canvas );
   }

   // set the paper & margin sizes
   TMVAStyle->SetPaperSize(20,26);
   TMVAStyle->SetPadTopMargin(0.10);
   TMVAStyle->SetPadRightMargin(0.05);
   TMVAStyle->SetPadBottomMargin(0.11);
   TMVAStyle->SetPadLeftMargin(0.12);

   // use bold lines and markers
   TMVAStyle->SetMarkerStyle(21);
   TMVAStyle->SetMarkerSize(0.3);
   TMVAStyle->SetHistLineWidth(2);
   TMVAStyle->SetLineStyleString(2,"[12 12]"); // postscript dashes

   // do not display any of the standard histogram decorations
   TMVAStyle->SetOptTitle(1);
   TMVAStyle->SetTitleH(0.052);

   TMVAStyle->SetOptStat(0);
   TMVAStyle->SetOptFit(0);

   // put tick marks on top and RHS of plots
   TMVAStyle->SetPadTickX(1);
   TMVAStyle->SetPadTickY(1);

}

void TMVA::TMVAGlob::DestroyCanvases()
{

   TList* loc = (TList*)gROOT->GetListOfCanvases();
   TListIter itc(loc);
   TObject *o(0);
   while ((o = itc())) delete o;
}

// set style and remove existing canvas'
void TMVA::TMVAGlob::Initialize( Bool_t useTMVAStyle )
{
   // destroy canvas'
   DestroyCanvases();

   // set style
   if (!useTMVAStyle) {
      gROOT->SetStyle("Plain");
      gStyle->SetOptStat(0);
      return;
   }

   SetTMVAStyle();
}

// checks if file with name "fin" is already open, and if not opens one
TFile* TMVA::TMVAGlob::OpenFile( const TString& fin )
{
   TFile* file = gDirectory->GetFile();
   if (file==0 || fin != file->GetName()) {
      if (file != 0) {
         gROOT->cd();
         file->Close();
      }
      cout << "--- Opening root file " << fin << " in read mode" << endl;
      file = TFile::Open( fin, "READ" );
   }
   else {
      file = gDirectory->GetFile();
   }

   file->cd();
   return file;
}

// used to create output file for canvas
void TMVA::TMVAGlob::imgconv( TCanvas* c, const TString & fname )
{
   // return;
   if (NULL == c) {
      cout << "*** Error in TMVAGlob::imgconv: canvas is NULL" << endl;
   }
   else {
      // create directory if not existing
      TString f = fname;
      TString dir = f.Remove( f.Last( '/' ), f.Length() - f.Last( '/' ) );
      gSystem->mkdir( dir );

      TString pngName = fname + ".png";
      TString gifName = fname + ".gif";
      TString epsName = fname + ".eps";
      c->cd();

      // create eps (other option: c->Print( epsName ))
      if (gConfig().fVariablePlotting.fUsePaperStyle) {
         c->Print(epsName);
      } 
      else {
         cout << "--- --------------------------------------------------------------------" << endl;
         cout << "--- If you want to save the image as eps, gif or png, please comment out " << endl;
         cout << "--- the corresponding lines (line no. 239-241) in tmvaglob.C" << endl;
         cout << "--- --------------------------------------------------------------------" << endl;
         c->Print(epsName);
         c->Print(pngName);
         // c->Print(gifName);
      }
   }
}

TImage * TMVA::TMVAGlob::findImage(const char * imageName) 
{ 
   // looks for the image in tutorialpath
   //TString tutorialPath = "$ROOTSYS/tutorials/tmva"; // look for the image in here
   TString tutorialPath = getenv ("ROOTSYS");
   tutorialPath+="/tutorials/tmva";
   TImage *img(0);
   TString fullName = Form("%s/%s", tutorialPath.Data(), imageName);
   Bool_t fileFound = ! gSystem->AccessPathName(fullName);
   
   if(fileFound) {
      img = TImage::Open(fullName);
   } else {
      cout << "+++ Could not open image:  " << fullName << endl;
   }
   return img;
}

void TMVA::TMVAGlob::plot_logo( Float_t v_scale, Float_t skew )
{

   TImage *img = findImage("tmva_logo.gif");
   if (!img) {
      cout << "+++ Could not open image tmva_logo.gif" << endl;
      return;
   }
      
   img->SetConstRatio(kFALSE);
   UInt_t h_ = img->GetHeight();
   UInt_t w_ = img->GetWidth();

   Float_t r = w_/h_;
   gPad->Update();
   Float_t rpad = Double_t(gPad->VtoAbsPixel(0) - gPad->VtoAbsPixel(1))/(gPad->UtoAbsPixel(1) - gPad->UtoAbsPixel(0));
   r *= rpad;

   Float_t d = 0.055;
   // absolute coordinates
   Float_t x1R = 1 - gStyle->GetPadRightMargin(); 
   Float_t y1B = 1 - gStyle->GetPadTopMargin()+.01; // we like the logo to sit a bit above the histo 

   Float_t x1L = x1R - d*r/skew;
   Float_t y1T = y1B + d*v_scale*skew;
   if (y1T>0.99) y1T = 0.99;

   TPad *p1 = new TPad("imgpad", "imgpad", x1L, y1B, x1R, y1T );
   p1->SetRightMargin(0);
   p1->SetBottomMargin(0);
   p1->SetLeftMargin(0);
   p1->SetTopMargin(0);
   p1->Draw();

   Int_t xSizeInPixel = p1->UtoAbsPixel(1) - p1->UtoAbsPixel(0);
   Int_t ySizeInPixel = p1->VtoAbsPixel(0) - p1->VtoAbsPixel(1);
   if (xSizeInPixel<=25 || ySizeInPixel<=25) {
      delete p1;
      return; // ROOT doesn't draw smaller than this
   }

   p1->cd();
   img->Draw();
} 

void TMVA::TMVAGlob::NormalizeHist( TH1* h ) 
{
   if (h==0) return;
   if (h->GetSumw2N() == 0) h->Sumw2();
   if(h->GetSumOfWeights()!=0) {
      Float_t dx = (h->GetXaxis()->GetXmax() - h->GetXaxis()->GetXmin())/h->GetNbinsX();
      h->Scale( 1.0/h->GetSumOfWeights()/dx );
   }
}
void TMVA::TMVAGlob::NormalizeHists( TH1* sig, TH1* bkg ) 
{
   if (sig->GetSumw2N() == 0) sig->Sumw2();
   if (bkg && bkg->GetSumw2N() == 0) bkg->Sumw2();
      
   if(sig->GetSumOfWeights()!=0) {
      Float_t dx = (sig->GetXaxis()->GetXmax() - sig->GetXaxis()->GetXmin())/sig->GetNbinsX();
      sig->Scale( 1.0/sig->GetSumOfWeights()/dx );
   }
   if (bkg != 0 && bkg->GetSumOfWeights()!=0) {
      Float_t dx = (bkg->GetXaxis()->GetXmax() - bkg->GetXaxis()->GetXmin())/bkg->GetNbinsX();
      bkg->Scale( 1.0/bkg->GetSumOfWeights()/dx );
   }
}

// the following are tools to help handling different methods and titles


void TMVA::TMVAGlob::GetMethodName( TString & name, TKey * mkey ) {
   if (mkey==0) return;
   name = mkey->GetName();
   name.ReplaceAll("Method_","");
}

void TMVA::TMVAGlob::GetMethodTitle( TString & name, TKey * ikey ) {
   if (ikey==0) return;
   name = ikey->GetName();
}

void TMVA::TMVAGlob::GetMethodName( TString & name, TDirectory * mdir ) {
   if (mdir==0) return;
   name = mdir->GetName();
   name.ReplaceAll("Method_","");
}

void TMVA::TMVAGlob::GetMethodTitle( TString & name, TDirectory * idir ) {
   if (idir==0) return;
   name = idir->GetName();
}

TKey *TMVA::TMVAGlob::NextKey( TIter & keyIter, TString className) {
   TKey *key=(TKey *)keyIter.Next();
   TKey *rkey=0;
   Bool_t loop=(key!=0);
   //
   while (loop) {
      TClass *cl = gROOT->GetClass(key->GetClassName());
      if (cl->InheritsFrom(className.Data())) {
         loop = kFALSE;
         rkey = key;
      } else {
         key = (TKey *)keyIter.Next();
         if (key==0) loop = kFALSE;
      }
   }
   return rkey;
}

UInt_t TMVA::TMVAGlob::GetListOfKeys( TList& keys, TString inherits, TDirectory *dir )
{
   // get a list of keys with a given inheritance
   // the list contains TKey objects
   if (dir==0) dir = gDirectory;
   TIter mnext(dir->GetListOfKeys());
   TKey *mkey;
   keys.Clear();
   keys.SetOwner(kFALSE);
   UInt_t ni=0;
   while ((mkey = (TKey*)mnext())) {
      // make sure, that we only look at TDirectory with name Method_<xxx>
      TClass *cl = gROOT->GetClass(mkey->GetClassName());
      if (cl->InheritsFrom(inherits)) {
         keys.Add(mkey);
         ni++;
      }
   }
   return ni;
}

Int_t TMVA::TMVAGlob::GetNumberOfTargets( TDirectory *dir )
{
   if (!dir) {
      cout << "tmvaglob::GetNumberOfTargets is called with *dir==NULL :( " << endl;
      return 0;
   }
   TIter next(dir->GetListOfKeys());
   TKey* key    = 0;
   Int_t noTrgts = 0;
      
   while ((key = (TKey*)next())) {
      if (key->GetCycle() != 1) continue;        
      if (TString(key->GetName()).Contains("__Regression_target")) noTrgts++;
   }
   return noTrgts;
}

Int_t TMVA::TMVAGlob::GetNumberOfInputVariables( TDirectory *dir )
{
   TIter next(dir->GetListOfKeys());
   TKey* key    = 0;
   Int_t noVars = 0;
         
   while ((key = (TKey*)next())) {
      if (key->GetCycle() != 1) continue;
         
      // count number of variables (signal is sufficient), exclude target(s)
      if (TString(key->GetName()).Contains("__Signal") || (TString(key->GetName()).Contains("__Regression") && !(TString(key->GetName()).Contains("__Regression_target")))) noVars++;
   }
      
   return noVars;
}

std::vector<TString> TMVA::TMVAGlob::GetInputVariableNames(TDirectory *dir )
{
   TIter next(dir->GetListOfKeys());
   TKey* key = 0;
   //set<std::string> varnames;
   std::vector<TString> names;
      
   while ((key = (TKey*)next())) {
      if (key->GetCycle() != 1) continue;
      TClass *cl = gROOT->GetClass(key->GetClassName());
      if (!cl->InheritsFrom("TH1")) continue;
      TString name(key->GetName());
      Int_t pos = name.First("__");
      name.Remove(pos);
      Bool_t hasname = false;
      std::vector<TString>::const_iterator iter = names.begin();
      while(iter != names.end()){
         if(name.CompareTo(*iter)==0)
            hasname=true;
         iter++;
      }
      if(!hasname)
         names.push_back(name);
   }
   return names;
}

Int_t TMVA::TMVAGlob::GetNumberOfInputVariablesMultiClass( TDirectory *dir ){
   std::vector<TString> names(GetInputVariableNames(dir));
   return names.end() - names.begin();
}
   
std::vector<TString> TMVA::TMVAGlob::GetClassNames(TDirectory *dir )
{      
      
   TIter next(dir->GetListOfKeys());
   TKey* key = 0;
   //set<std::string> varnames;
   std::vector<TString> names;
      
   while ((key = (TKey*)next())) {
      if (key->GetCycle() != 1) continue;
      TClass *cl = gROOT->GetClass(key->GetClassName());
      if (!cl->InheritsFrom("TH1")) continue;
      TString name(key->GetName());
      name.ReplaceAll("_Deco","");
      name.ReplaceAll("_Gauss","");
      name.ReplaceAll("_PCA","");
      name.ReplaceAll("_Id","");
      name.ReplaceAll("_vs_","");
      char c = '_';
      Int_t pos = name.Last(c);
      name.Remove(0,pos+1);
         
      /*Int_t pos = name.First("__");
        name.Remove(0,pos+2);
        char c = '_';
        pos = name.Last(c);
        name.Remove(pos);
        if(name.Contains("Gauss")){
        pos = name.Last(c);
        name.Remove(pos);
        }
        pos = name.Last(c);
        if(pos!=-1)
        name.Remove(0,pos+1);
      */
      Bool_t hasname = false;
      std::vector<TString>::const_iterator iter = names.begin();
      while(iter != names.end()){
         if(name.CompareTo(*iter)==0)
            hasname=true;
         iter++;
      }
      if(!hasname)
         names.push_back(name);
   }
   return names;
}


TKey* TMVA::TMVAGlob::FindMethod( TString name, TDirectory *dir )
{
   // find the key for a method
   if (dir==0) dir = gDirectory;
   TIter mnext(dir->GetListOfKeys());
   TKey *mkey;
   TKey *retkey=0;
   Bool_t loop=kTRUE;
   while (loop) {
      mkey = (TKey*)mnext();
      if (mkey==0) {
         loop = kFALSE;
      } 
      else {
         TString clname = mkey->GetClassName();
         TClass *cl = gROOT->GetClass(clname);
         if (cl->InheritsFrom("TDirectory")) {
            TString mname = mkey->GetName(); // method name
            TString tname = "Method_"+name;  // target name
            if (mname==tname) { // target found!
               loop = kFALSE;
               retkey = mkey;
            }
         }
      }
   }
   return retkey;
}

Bool_t TMVA::TMVAGlob::ExistMethodName( TString name, TDirectory *dir )
{
   // find the key for a method
   if (dir==0) dir = gDirectory;
   TIter mnext(dir->GetListOfKeys());
   TKey *mkey;
   Bool_t loop=kTRUE;
   while (loop) {
      mkey = (TKey*)mnext();
      if (mkey==0) {
         loop = kFALSE;
      } 
      else {
         TString clname  = mkey->GetClassName();
         TString keyname = mkey->GetName();
         TClass *cl = gROOT->GetClass(clname);
         if (keyname.Contains("Method") && cl->InheritsFrom("TDirectory")) {

            TDirectory* d_ = (TDirectory*)dir->Get( keyname );
            if (!d_) {
               cout << "HUUUGE TROUBLES IN TMVAGlob::ExistMethodName() --> contact authors" << endl;
               return kFALSE;
            }

            TIter mnext_(d_->GetListOfKeys());
            TKey *mkey_;
            while ((mkey_ = (TKey*)mnext_())) {
               TString clname_ = mkey_->GetClassName();
               TClass *cl_ = gROOT->GetClass(clname_);
               if (cl_->InheritsFrom("TDirectory")) {
                  TString mname = mkey_->GetName(); // method name
                  if (mname==name) { // target found!                  
                     return kTRUE;
                  }
               }
            }
         }
      }
   }
   return kFALSE;
}

UInt_t TMVA::TMVAGlob::GetListOfMethods( TList & methods, TDirectory *dir )
{
   // get a list of methods
   // the list contains TKey objects
   if (dir==0) dir = gDirectory;
   TIter mnext(dir->GetListOfKeys());
   TKey *mkey;
   methods.Clear();
   methods.SetOwner(kFALSE);
   UInt_t ni=0;
   while ((mkey = (TKey*)mnext())) {
      // make sure, that we only look at TDirectory with name Method_<xxx>
      TString name = mkey->GetClassName();
      TClass *cl = gROOT->GetClass(name);
      if (cl->InheritsFrom("TDirectory")) {
         if (TString(mkey->GetName()).BeginsWith("Method_")) {
            methods.Add(mkey);
            ni++;
         }
      }
   }
   cout << "--- Found " << ni << " classifier types" << endl;
   return ni;
}

UInt_t TMVA::TMVAGlob::GetListOfJobs( TFile* file, TList& jobdirs)
{
   // get a list of all jobs in all method directories
   // based on ideas by Peter and Joerg found in macro deviations.C
   TIter next(file->GetListOfKeys());
   TKey *key(0);   
   while ((key = (TKey*)next())) {
         
      if (TString(key->GetName()).BeginsWith("Method_")) {
         if (gROOT->GetClass(key->GetClassName())->InheritsFrom("TDirectory")) {

            TDirectory* mDir = (TDirectory*)key->ReadObj();
               
            TIter keyIt(mDir->GetListOfKeys());
            TKey *jobkey;
            while ((jobkey = (TKey*)keyIt())) {
               if (!gROOT->GetClass(jobkey->GetClassName())->InheritsFrom("TDirectory")) continue;
                  
               TDirectory *jobDir = (TDirectory *)jobkey->ReadObj();
               cout << "jobdir name  " << jobDir->GetName() << endl;
               jobdirs.Add(jobDir);
            }
         }
      }
   }
   return jobdirs.GetSize();
}

UInt_t TMVA::TMVAGlob::GetListOfTitles( TDirectory *rfdir, TList & titles )
{
   // get a list of titles (i.e TDirectory) given a method dir
   UInt_t ni=0;
   if (rfdir==0) return 0;
   TList *keys = rfdir->GetListOfKeys();
   if (keys==0) {
      cout << "+++ Directory '" << rfdir->GetName() << "' contains no keys" << endl;
      return 0;
   }
   //
   TIter rfnext(rfdir->GetListOfKeys());
   TKey *rfkey;
   titles.Clear();
   titles.SetOwner(kFALSE);
   while ((rfkey = (TKey*)rfnext())) {
      // make sure, that we only look at histograms
      TClass *cl = gROOT->GetClass(rfkey->GetClassName());
      if (cl->InheritsFrom("TDirectory")) {
         titles.Add(rfkey);
         ni++;
      }
   }
   cout << "--- Found " << ni << " instance(s) of the method " << rfdir->GetName() << endl;
   return ni;
}

UInt_t TMVA::TMVAGlob::GetListOfTitles( TString & methodName, TList & titles, TDirectory *dir )
{
   // get the list of all titles for a given method
   // if the input dir is 0, gDirectory is used
   // returns a list of keys
   UInt_t ni=0;
   if (dir==0) dir = gDirectory;
   TDirectory* rfdir = (TDirectory*)dir->Get( methodName );
   if (rfdir==0) {
      cout << "+++ Could not locate directory '" << methodName << endl;
      return 0;
   }

   return GetListOfTitles( rfdir, titles );

   TList *keys = rfdir->GetListOfKeys();
   if (keys==0) {
      cout << "+++ Directory '" << methodName << "' contains no keys" << endl;
      return 0;
   }
   //
   TIter rfnext(rfdir->GetListOfKeys());
   TKey *rfkey;
   titles.Clear();
   titles.SetOwner(kFALSE);
   while ((rfkey = (TKey*)rfnext())) {
      // make sure, that we only look at histograms
      TClass *cl = gROOT->GetClass(rfkey->GetClassName());
      if (cl->InheritsFrom("TDirectory")) {
         titles.Add(rfkey);
         ni++;
      }
   }
   cout << "--- Found " << ni << " instance(s) of the method " << methodName << endl;
   return ni;
}

TDirectory *TMVA::TMVAGlob::GetInputVariablesDir( TMVAGlob::TypeOfPlot type, TDirectory *dir )
{
   // get the InputVariables directory
   const TString directories[TMVAGlob::kNumOfMethods] = { "InputVariables_Id",
                                                          "InputVariables_Deco",
                                                          "InputVariables_PCA",
                                                          "InputVariables_Gauss_Deco" };
   if (dir==0) dir = gDirectory;

   // get top dir containing all hists of the variables
   dir = (TDirectory*)gDirectory->Get( directories[type] );
   if (dir==0) {
      cout << "+++ Could not locate input variable directory '" << directories[type] << endl;
      return 0;
   }
   return dir;
}

TDirectory *TMVA::TMVAGlob::GetCorrelationPlotsDir( TMVAGlob::TypeOfPlot type, TDirectory *dir )
{
   // get the CorrelationPlots directory
   if (dir==0) dir = GetInputVariablesDir( type, 0 );
   if (dir==0) return 0;
   //
   TDirectory* corrdir = (TDirectory*)dir->Get( "CorrelationPlots" );
   if (corrdir==0) {
      cout << "+++ Could not find CorrelationPlots directory 'CorrelationPlots'" << endl;
      return 0;
   }
   return corrdir;
}

 tmvaglob.cxx:1
 tmvaglob.cxx:2
 tmvaglob.cxx:3
 tmvaglob.cxx:4
 tmvaglob.cxx:5
 tmvaglob.cxx:6
 tmvaglob.cxx:7
 tmvaglob.cxx:8
 tmvaglob.cxx:9
 tmvaglob.cxx:10
 tmvaglob.cxx:11
 tmvaglob.cxx:12
 tmvaglob.cxx:13
 tmvaglob.cxx:14
 tmvaglob.cxx:15
 tmvaglob.cxx:16
 tmvaglob.cxx:17
 tmvaglob.cxx:18
 tmvaglob.cxx:19
 tmvaglob.cxx:20
 tmvaglob.cxx:21
 tmvaglob.cxx:22
 tmvaglob.cxx:23
 tmvaglob.cxx:24
 tmvaglob.cxx:25
 tmvaglob.cxx:26
 tmvaglob.cxx:27
 tmvaglob.cxx:28
 tmvaglob.cxx:29
 tmvaglob.cxx:30
 tmvaglob.cxx:31
 tmvaglob.cxx:32
 tmvaglob.cxx:33
 tmvaglob.cxx:34
 tmvaglob.cxx:35
 tmvaglob.cxx:36
 tmvaglob.cxx:37
 tmvaglob.cxx:38
 tmvaglob.cxx:39
 tmvaglob.cxx:40
 tmvaglob.cxx:41
 tmvaglob.cxx:42
 tmvaglob.cxx:43
 tmvaglob.cxx:44
 tmvaglob.cxx:45
 tmvaglob.cxx:46
 tmvaglob.cxx:47
 tmvaglob.cxx:48
 tmvaglob.cxx:49
 tmvaglob.cxx:50
 tmvaglob.cxx:51
 tmvaglob.cxx:52
 tmvaglob.cxx:53
 tmvaglob.cxx:54
 tmvaglob.cxx:55
 tmvaglob.cxx:56
 tmvaglob.cxx:57
 tmvaglob.cxx:58
 tmvaglob.cxx:59
 tmvaglob.cxx:60
 tmvaglob.cxx:61
 tmvaglob.cxx:62
 tmvaglob.cxx:63
 tmvaglob.cxx:64
 tmvaglob.cxx:65
 tmvaglob.cxx:66
 tmvaglob.cxx:67
 tmvaglob.cxx:68
 tmvaglob.cxx:69
 tmvaglob.cxx:70
 tmvaglob.cxx:71
 tmvaglob.cxx:72
 tmvaglob.cxx:73
 tmvaglob.cxx:74
 tmvaglob.cxx:75
 tmvaglob.cxx:76
 tmvaglob.cxx:77
 tmvaglob.cxx:78
 tmvaglob.cxx:79
 tmvaglob.cxx:80
 tmvaglob.cxx:81
 tmvaglob.cxx:82
 tmvaglob.cxx:83
 tmvaglob.cxx:84
 tmvaglob.cxx:85
 tmvaglob.cxx:86
 tmvaglob.cxx:87
 tmvaglob.cxx:88
 tmvaglob.cxx:89
 tmvaglob.cxx:90
 tmvaglob.cxx:91
 tmvaglob.cxx:92
 tmvaglob.cxx:93
 tmvaglob.cxx:94
 tmvaglob.cxx:95
 tmvaglob.cxx:96
 tmvaglob.cxx:97
 tmvaglob.cxx:98
 tmvaglob.cxx:99
 tmvaglob.cxx:100
 tmvaglob.cxx:101
 tmvaglob.cxx:102
 tmvaglob.cxx:103
 tmvaglob.cxx:104
 tmvaglob.cxx:105
 tmvaglob.cxx:106
 tmvaglob.cxx:107
 tmvaglob.cxx:108
 tmvaglob.cxx:109
 tmvaglob.cxx:110
 tmvaglob.cxx:111
 tmvaglob.cxx:112
 tmvaglob.cxx:113
 tmvaglob.cxx:114
 tmvaglob.cxx:115
 tmvaglob.cxx:116
 tmvaglob.cxx:117
 tmvaglob.cxx:118
 tmvaglob.cxx:119
 tmvaglob.cxx:120
 tmvaglob.cxx:121
 tmvaglob.cxx:122
 tmvaglob.cxx:123
 tmvaglob.cxx:124
 tmvaglob.cxx:125
 tmvaglob.cxx:126
 tmvaglob.cxx:127
 tmvaglob.cxx:128
 tmvaglob.cxx:129
 tmvaglob.cxx:130
 tmvaglob.cxx:131
 tmvaglob.cxx:132
 tmvaglob.cxx:133
 tmvaglob.cxx:134
 tmvaglob.cxx:135
 tmvaglob.cxx:136
 tmvaglob.cxx:137
 tmvaglob.cxx:138
 tmvaglob.cxx:139
 tmvaglob.cxx:140
 tmvaglob.cxx:141
 tmvaglob.cxx:142
 tmvaglob.cxx:143
 tmvaglob.cxx:144
 tmvaglob.cxx:145
 tmvaglob.cxx:146
 tmvaglob.cxx:147
 tmvaglob.cxx:148
 tmvaglob.cxx:149
 tmvaglob.cxx:150
 tmvaglob.cxx:151
 tmvaglob.cxx:152
 tmvaglob.cxx:153
 tmvaglob.cxx:154
 tmvaglob.cxx:155
 tmvaglob.cxx:156
 tmvaglob.cxx:157
 tmvaglob.cxx:158
 tmvaglob.cxx:159
 tmvaglob.cxx:160
 tmvaglob.cxx:161
 tmvaglob.cxx:162
 tmvaglob.cxx:163
 tmvaglob.cxx:164
 tmvaglob.cxx:165
 tmvaglob.cxx:166
 tmvaglob.cxx:167
 tmvaglob.cxx:168
 tmvaglob.cxx:169
 tmvaglob.cxx:170
 tmvaglob.cxx:171
 tmvaglob.cxx:172
 tmvaglob.cxx:173
 tmvaglob.cxx:174
 tmvaglob.cxx:175
 tmvaglob.cxx:176
 tmvaglob.cxx:177
 tmvaglob.cxx:178
 tmvaglob.cxx:179
 tmvaglob.cxx:180
 tmvaglob.cxx:181
 tmvaglob.cxx:182
 tmvaglob.cxx:183
 tmvaglob.cxx:184
 tmvaglob.cxx:185
 tmvaglob.cxx:186
 tmvaglob.cxx:187
 tmvaglob.cxx:188
 tmvaglob.cxx:189
 tmvaglob.cxx:190
 tmvaglob.cxx:191
 tmvaglob.cxx:192
 tmvaglob.cxx:193
 tmvaglob.cxx:194
 tmvaglob.cxx:195
 tmvaglob.cxx:196
 tmvaglob.cxx:197
 tmvaglob.cxx:198
 tmvaglob.cxx:199
 tmvaglob.cxx:200
 tmvaglob.cxx:201
 tmvaglob.cxx:202
 tmvaglob.cxx:203
 tmvaglob.cxx:204
 tmvaglob.cxx:205
 tmvaglob.cxx:206
 tmvaglob.cxx:207
 tmvaglob.cxx:208
 tmvaglob.cxx:209
 tmvaglob.cxx:210
 tmvaglob.cxx:211
 tmvaglob.cxx:212
 tmvaglob.cxx:213
 tmvaglob.cxx:214
 tmvaglob.cxx:215
 tmvaglob.cxx:216
 tmvaglob.cxx:217
 tmvaglob.cxx:218
 tmvaglob.cxx:219
 tmvaglob.cxx:220
 tmvaglob.cxx:221
 tmvaglob.cxx:222
 tmvaglob.cxx:223
 tmvaglob.cxx:224
 tmvaglob.cxx:225
 tmvaglob.cxx:226
 tmvaglob.cxx:227
 tmvaglob.cxx:228
 tmvaglob.cxx:229
 tmvaglob.cxx:230
 tmvaglob.cxx:231
 tmvaglob.cxx:232
 tmvaglob.cxx:233
 tmvaglob.cxx:234
 tmvaglob.cxx:235
 tmvaglob.cxx:236
 tmvaglob.cxx:237
 tmvaglob.cxx:238
 tmvaglob.cxx:239
 tmvaglob.cxx:240
 tmvaglob.cxx:241
 tmvaglob.cxx:242
 tmvaglob.cxx:243
 tmvaglob.cxx:244
 tmvaglob.cxx:245
 tmvaglob.cxx:246
 tmvaglob.cxx:247
 tmvaglob.cxx:248
 tmvaglob.cxx:249
 tmvaglob.cxx:250
 tmvaglob.cxx:251
 tmvaglob.cxx:252
 tmvaglob.cxx:253
 tmvaglob.cxx:254
 tmvaglob.cxx:255
 tmvaglob.cxx:256
 tmvaglob.cxx:257
 tmvaglob.cxx:258
 tmvaglob.cxx:259
 tmvaglob.cxx:260
 tmvaglob.cxx:261
 tmvaglob.cxx:262
 tmvaglob.cxx:263
 tmvaglob.cxx:264
 tmvaglob.cxx:265
 tmvaglob.cxx:266
 tmvaglob.cxx:267
 tmvaglob.cxx:268
 tmvaglob.cxx:269
 tmvaglob.cxx:270
 tmvaglob.cxx:271
 tmvaglob.cxx:272
 tmvaglob.cxx:273
 tmvaglob.cxx:274
 tmvaglob.cxx:275
 tmvaglob.cxx:276
 tmvaglob.cxx:277
 tmvaglob.cxx:278
 tmvaglob.cxx:279
 tmvaglob.cxx:280
 tmvaglob.cxx:281
 tmvaglob.cxx:282
 tmvaglob.cxx:283
 tmvaglob.cxx:284
 tmvaglob.cxx:285
 tmvaglob.cxx:286
 tmvaglob.cxx:287
 tmvaglob.cxx:288
 tmvaglob.cxx:289
 tmvaglob.cxx:290
 tmvaglob.cxx:291
 tmvaglob.cxx:292
 tmvaglob.cxx:293
 tmvaglob.cxx:294
 tmvaglob.cxx:295
 tmvaglob.cxx:296
 tmvaglob.cxx:297
 tmvaglob.cxx:298
 tmvaglob.cxx:299
 tmvaglob.cxx:300
 tmvaglob.cxx:301
 tmvaglob.cxx:302
 tmvaglob.cxx:303
 tmvaglob.cxx:304
 tmvaglob.cxx:305
 tmvaglob.cxx:306
 tmvaglob.cxx:307
 tmvaglob.cxx:308
 tmvaglob.cxx:309
 tmvaglob.cxx:310
 tmvaglob.cxx:311
 tmvaglob.cxx:312
 tmvaglob.cxx:313
 tmvaglob.cxx:314
 tmvaglob.cxx:315
 tmvaglob.cxx:316
 tmvaglob.cxx:317
 tmvaglob.cxx:318
 tmvaglob.cxx:319
 tmvaglob.cxx:320
 tmvaglob.cxx:321
 tmvaglob.cxx:322
 tmvaglob.cxx:323
 tmvaglob.cxx:324
 tmvaglob.cxx:325
 tmvaglob.cxx:326
 tmvaglob.cxx:327
 tmvaglob.cxx:328
 tmvaglob.cxx:329
 tmvaglob.cxx:330
 tmvaglob.cxx:331
 tmvaglob.cxx:332
 tmvaglob.cxx:333
 tmvaglob.cxx:334
 tmvaglob.cxx:335
 tmvaglob.cxx:336
 tmvaglob.cxx:337
 tmvaglob.cxx:338
 tmvaglob.cxx:339
 tmvaglob.cxx:340
 tmvaglob.cxx:341
 tmvaglob.cxx:342
 tmvaglob.cxx:343
 tmvaglob.cxx:344
 tmvaglob.cxx:345
 tmvaglob.cxx:346
 tmvaglob.cxx:347
 tmvaglob.cxx:348
 tmvaglob.cxx:349
 tmvaglob.cxx:350
 tmvaglob.cxx:351
 tmvaglob.cxx:352
 tmvaglob.cxx:353
 tmvaglob.cxx:354
 tmvaglob.cxx:355
 tmvaglob.cxx:356
 tmvaglob.cxx:357
 tmvaglob.cxx:358
 tmvaglob.cxx:359
 tmvaglob.cxx:360
 tmvaglob.cxx:361
 tmvaglob.cxx:362
 tmvaglob.cxx:363
 tmvaglob.cxx:364
 tmvaglob.cxx:365
 tmvaglob.cxx:366
 tmvaglob.cxx:367
 tmvaglob.cxx:368
 tmvaglob.cxx:369
 tmvaglob.cxx:370
 tmvaglob.cxx:371
 tmvaglob.cxx:372
 tmvaglob.cxx:373
 tmvaglob.cxx:374
 tmvaglob.cxx:375
 tmvaglob.cxx:376
 tmvaglob.cxx:377
 tmvaglob.cxx:378
 tmvaglob.cxx:379
 tmvaglob.cxx:380
 tmvaglob.cxx:381
 tmvaglob.cxx:382
 tmvaglob.cxx:383
 tmvaglob.cxx:384
 tmvaglob.cxx:385
 tmvaglob.cxx:386
 tmvaglob.cxx:387
 tmvaglob.cxx:388
 tmvaglob.cxx:389
 tmvaglob.cxx:390
 tmvaglob.cxx:391
 tmvaglob.cxx:392
 tmvaglob.cxx:393
 tmvaglob.cxx:394
 tmvaglob.cxx:395
 tmvaglob.cxx:396
 tmvaglob.cxx:397
 tmvaglob.cxx:398
 tmvaglob.cxx:399
 tmvaglob.cxx:400
 tmvaglob.cxx:401
 tmvaglob.cxx:402
 tmvaglob.cxx:403
 tmvaglob.cxx:404
 tmvaglob.cxx:405
 tmvaglob.cxx:406
 tmvaglob.cxx:407
 tmvaglob.cxx:408
 tmvaglob.cxx:409
 tmvaglob.cxx:410
 tmvaglob.cxx:411
 tmvaglob.cxx:412
 tmvaglob.cxx:413
 tmvaglob.cxx:414
 tmvaglob.cxx:415
 tmvaglob.cxx:416
 tmvaglob.cxx:417
 tmvaglob.cxx:418
 tmvaglob.cxx:419
 tmvaglob.cxx:420
 tmvaglob.cxx:421
 tmvaglob.cxx:422
 tmvaglob.cxx:423
 tmvaglob.cxx:424
 tmvaglob.cxx:425
 tmvaglob.cxx:426
 tmvaglob.cxx:427
 tmvaglob.cxx:428
 tmvaglob.cxx:429
 tmvaglob.cxx:430
 tmvaglob.cxx:431
 tmvaglob.cxx:432
 tmvaglob.cxx:433
 tmvaglob.cxx:434
 tmvaglob.cxx:435
 tmvaglob.cxx:436
 tmvaglob.cxx:437
 tmvaglob.cxx:438
 tmvaglob.cxx:439
 tmvaglob.cxx:440
 tmvaglob.cxx:441
 tmvaglob.cxx:442
 tmvaglob.cxx:443
 tmvaglob.cxx:444
 tmvaglob.cxx:445
 tmvaglob.cxx:446
 tmvaglob.cxx:447
 tmvaglob.cxx:448
 tmvaglob.cxx:449
 tmvaglob.cxx:450
 tmvaglob.cxx:451
 tmvaglob.cxx:452
 tmvaglob.cxx:453
 tmvaglob.cxx:454
 tmvaglob.cxx:455
 tmvaglob.cxx:456
 tmvaglob.cxx:457
 tmvaglob.cxx:458
 tmvaglob.cxx:459
 tmvaglob.cxx:460
 tmvaglob.cxx:461
 tmvaglob.cxx:462
 tmvaglob.cxx:463
 tmvaglob.cxx:464
 tmvaglob.cxx:465
 tmvaglob.cxx:466
 tmvaglob.cxx:467
 tmvaglob.cxx:468
 tmvaglob.cxx:469
 tmvaglob.cxx:470
 tmvaglob.cxx:471
 tmvaglob.cxx:472
 tmvaglob.cxx:473
 tmvaglob.cxx:474
 tmvaglob.cxx:475
 tmvaglob.cxx:476
 tmvaglob.cxx:477
 tmvaglob.cxx:478
 tmvaglob.cxx:479
 tmvaglob.cxx:480
 tmvaglob.cxx:481
 tmvaglob.cxx:482
 tmvaglob.cxx:483
 tmvaglob.cxx:484
 tmvaglob.cxx:485
 tmvaglob.cxx:486
 tmvaglob.cxx:487
 tmvaglob.cxx:488
 tmvaglob.cxx:489
 tmvaglob.cxx:490
 tmvaglob.cxx:491
 tmvaglob.cxx:492
 tmvaglob.cxx:493
 tmvaglob.cxx:494
 tmvaglob.cxx:495
 tmvaglob.cxx:496
 tmvaglob.cxx:497
 tmvaglob.cxx:498
 tmvaglob.cxx:499
 tmvaglob.cxx:500
 tmvaglob.cxx:501
 tmvaglob.cxx:502
 tmvaglob.cxx:503
 tmvaglob.cxx:504
 tmvaglob.cxx:505
 tmvaglob.cxx:506
 tmvaglob.cxx:507
 tmvaglob.cxx:508
 tmvaglob.cxx:509
 tmvaglob.cxx:510
 tmvaglob.cxx:511
 tmvaglob.cxx:512
 tmvaglob.cxx:513
 tmvaglob.cxx:514
 tmvaglob.cxx:515
 tmvaglob.cxx:516
 tmvaglob.cxx:517
 tmvaglob.cxx:518
 tmvaglob.cxx:519
 tmvaglob.cxx:520
 tmvaglob.cxx:521
 tmvaglob.cxx:522
 tmvaglob.cxx:523
 tmvaglob.cxx:524
 tmvaglob.cxx:525
 tmvaglob.cxx:526
 tmvaglob.cxx:527
 tmvaglob.cxx:528
 tmvaglob.cxx:529
 tmvaglob.cxx:530
 tmvaglob.cxx:531
 tmvaglob.cxx:532
 tmvaglob.cxx:533
 tmvaglob.cxx:534
 tmvaglob.cxx:535
 tmvaglob.cxx:536
 tmvaglob.cxx:537
 tmvaglob.cxx:538
 tmvaglob.cxx:539
 tmvaglob.cxx:540
 tmvaglob.cxx:541
 tmvaglob.cxx:542
 tmvaglob.cxx:543
 tmvaglob.cxx:544
 tmvaglob.cxx:545
 tmvaglob.cxx:546
 tmvaglob.cxx:547
 tmvaglob.cxx:548
 tmvaglob.cxx:549
 tmvaglob.cxx:550
 tmvaglob.cxx:551
 tmvaglob.cxx:552
 tmvaglob.cxx:553
 tmvaglob.cxx:554
 tmvaglob.cxx:555
 tmvaglob.cxx:556
 tmvaglob.cxx:557
 tmvaglob.cxx:558
 tmvaglob.cxx:559
 tmvaglob.cxx:560
 tmvaglob.cxx:561
 tmvaglob.cxx:562
 tmvaglob.cxx:563
 tmvaglob.cxx:564
 tmvaglob.cxx:565
 tmvaglob.cxx:566
 tmvaglob.cxx:567
 tmvaglob.cxx:568
 tmvaglob.cxx:569
 tmvaglob.cxx:570
 tmvaglob.cxx:571
 tmvaglob.cxx:572
 tmvaglob.cxx:573
 tmvaglob.cxx:574
 tmvaglob.cxx:575
 tmvaglob.cxx:576
 tmvaglob.cxx:577
 tmvaglob.cxx:578
 tmvaglob.cxx:579
 tmvaglob.cxx:580
 tmvaglob.cxx:581
 tmvaglob.cxx:582
 tmvaglob.cxx:583
 tmvaglob.cxx:584
 tmvaglob.cxx:585
 tmvaglob.cxx:586
 tmvaglob.cxx:587
 tmvaglob.cxx:588
 tmvaglob.cxx:589
 tmvaglob.cxx:590
 tmvaglob.cxx:591
 tmvaglob.cxx:592
 tmvaglob.cxx:593
 tmvaglob.cxx:594
 tmvaglob.cxx:595
 tmvaglob.cxx:596
 tmvaglob.cxx:597
 tmvaglob.cxx:598
 tmvaglob.cxx:599
 tmvaglob.cxx:600
 tmvaglob.cxx:601
 tmvaglob.cxx:602
 tmvaglob.cxx:603
 tmvaglob.cxx:604
 tmvaglob.cxx:605
 tmvaglob.cxx:606
 tmvaglob.cxx:607
 tmvaglob.cxx:608
 tmvaglob.cxx:609
 tmvaglob.cxx:610
 tmvaglob.cxx:611
 tmvaglob.cxx:612
 tmvaglob.cxx:613
 tmvaglob.cxx:614
 tmvaglob.cxx:615
 tmvaglob.cxx:616
 tmvaglob.cxx:617
 tmvaglob.cxx:618
 tmvaglob.cxx:619
 tmvaglob.cxx:620
 tmvaglob.cxx:621
 tmvaglob.cxx:622
 tmvaglob.cxx:623
 tmvaglob.cxx:624
 tmvaglob.cxx:625
 tmvaglob.cxx:626
 tmvaglob.cxx:627
 tmvaglob.cxx:628
 tmvaglob.cxx:629
 tmvaglob.cxx:630
 tmvaglob.cxx:631
 tmvaglob.cxx:632
 tmvaglob.cxx:633
 tmvaglob.cxx:634
 tmvaglob.cxx:635
 tmvaglob.cxx:636
 tmvaglob.cxx:637
 tmvaglob.cxx:638
 tmvaglob.cxx:639
 tmvaglob.cxx:640
 tmvaglob.cxx:641
 tmvaglob.cxx:642
 tmvaglob.cxx:643
 tmvaglob.cxx:644
 tmvaglob.cxx:645
 tmvaglob.cxx:646
 tmvaglob.cxx:647
 tmvaglob.cxx:648
 tmvaglob.cxx:649
 tmvaglob.cxx:650
 tmvaglob.cxx:651
 tmvaglob.cxx:652
 tmvaglob.cxx:653
 tmvaglob.cxx:654
 tmvaglob.cxx:655
 tmvaglob.cxx:656
 tmvaglob.cxx:657
 tmvaglob.cxx:658
 tmvaglob.cxx:659
 tmvaglob.cxx:660
 tmvaglob.cxx:661
 tmvaglob.cxx:662
 tmvaglob.cxx:663
 tmvaglob.cxx:664
 tmvaglob.cxx:665
 tmvaglob.cxx:666
 tmvaglob.cxx:667
 tmvaglob.cxx:668
 tmvaglob.cxx:669
 tmvaglob.cxx:670
 tmvaglob.cxx:671
 tmvaglob.cxx:672
 tmvaglob.cxx:673
 tmvaglob.cxx:674
 tmvaglob.cxx:675
 tmvaglob.cxx:676
 tmvaglob.cxx:677
 tmvaglob.cxx:678
 tmvaglob.cxx:679
 tmvaglob.cxx:680
 tmvaglob.cxx:681
 tmvaglob.cxx:682
 tmvaglob.cxx:683
 tmvaglob.cxx:684
 tmvaglob.cxx:685
 tmvaglob.cxx:686
 tmvaglob.cxx:687
 tmvaglob.cxx:688
 tmvaglob.cxx:689
 tmvaglob.cxx:690
 tmvaglob.cxx:691
 tmvaglob.cxx:692
 tmvaglob.cxx:693
 tmvaglob.cxx:694
 tmvaglob.cxx:695
 tmvaglob.cxx:696
 tmvaglob.cxx:697
 tmvaglob.cxx:698
 tmvaglob.cxx:699
 tmvaglob.cxx:700
 tmvaglob.cxx:701
 tmvaglob.cxx:702
 tmvaglob.cxx:703
 tmvaglob.cxx:704
 tmvaglob.cxx:705
 tmvaglob.cxx:706
 tmvaglob.cxx:707
 tmvaglob.cxx:708
 tmvaglob.cxx:709
 tmvaglob.cxx:710
 tmvaglob.cxx:711
 tmvaglob.cxx:712
 tmvaglob.cxx:713
 tmvaglob.cxx:714
 tmvaglob.cxx:715
 tmvaglob.cxx:716
 tmvaglob.cxx:717
 tmvaglob.cxx:718
 tmvaglob.cxx:719
 tmvaglob.cxx:720
 tmvaglob.cxx:721
 tmvaglob.cxx:722
 tmvaglob.cxx:723
 tmvaglob.cxx:724
 tmvaglob.cxx:725
 tmvaglob.cxx:726
 tmvaglob.cxx:727
 tmvaglob.cxx:728
 tmvaglob.cxx:729