\begin{lstlisting}[style=CStyle]
#include "TMVA/Factory.h"
#include "TMVA/DataLoader.h"
#include "TMVA/Tools.h"
#include "TMVA/TMVAGui.h"
#include "event.h"

void tmva_analysis1()
{

    TMVA::Tools::Instance();

    auto inputttbarV_ttbarFile = TFile::Open("run_results/from_hanimaga/ttbarV_ttbar_combined_200516_mc_ee.root");
    auto inputZjet_dibosonFile = TFile::Open("run_results/from_hanimaga/Z+jet_diboson_combined_200516_mc_ee.root");
    
    TTree *BackgroundTree     = (TTree*)inputttbarV_ttbarFile->Get("TmvaEventstree6"  );
    TTree *SignalTree     = (TTree*)inputZjet_dibosonFile->Get("TmvaEventstree6"  );
   
    TString outfileName( "TMVAoutput.root" );
    TFile* outputFile = TFile::Open( outfileName, "RECREATE" );

    TMVA::Factory factory("TMVAClassification", outputFile,
                      "!V:ROC:!Correlations:!Silent:Color:!DrawProgressBar:AnalysisType=Classification" );
                      
    TMVA::DataLoader loader("dataset");
     
    loader.AddVariable("LEP0_pt");
    loader.AddVariable("LEP1_pt");

    loader.AddVariable("Z_pt"); 
    loader.AddVariable("Z_eta");
  
    loader.AddVariable("JET0_pt"); 
 
    loader.AddVariable("JET0_JET1_mass"); 
    loader.AddVariable("ZfarDIJET_mass"); 
    loader.AddVariable("DIJET_highpt_mass");

    loader.AddVariable("JET_higheta_pt"); 
    loader.AddVariable("JET_higheta_mass"); 
  
    loader.AddVariable("MET");
    loader.AddVariable("fNBtag");
    
    loader.AddSignalTree(SignalTree,  1);   //signal weight  = 1 -
    loader.AddBackgroundTree(bBackgroundTree, 1);   //background weight = 1 
   
    loader.SetWeightExpression("new_weight");
    
    TCut mycuts, mycutb;
        
    loader.PrepareTrainingAndTestTree(mycuts, mycutb,                                  "nTrain_Signal=5000:nTrain_Background=5000:SplitMode=Random:NormMode=NumEvents:!V" ); 
    
    //Multi-Layer Perceptron (Neural Network)
    factory.BookMethod(&loader, TMVA::Types::kMLP, "MLP", "!H:!V:NeuronType=tanh:VarTransform=N:NCycles=500:HiddenLayers=N+5:TestRate=5:!UseRegulator:IgnoreNegWeightsInTraining" );
                                   
    //Boosted Decision Trees
    factory.BookMethod(&loader,TMVA::Types::kBDT, "BDT", "!V:NTrees=4000:MinNodeSize=2.5%:MaxDepth=4:BoostType=AdaBoost:AdaBoostBeta=0.5:UseBaggedBoost:BaggedSampleFraction=0.5:SeparationType=GiniIndex:nCuts=20:IgnoreNegWeightsInTraining" );
    
    //Fisher               
    factory.BookMethod(&loader, TMVA::Types::kFisher, "Fisher", "H:!V:Fisher:VarTransform=None:CreateMVAPdfs:PDFInterpolMVAPdf=Spline2:NbinsMVAPdf=50:NsmoothMVAPdf=10" );
    
    //kLikelihood
    factory.BookMethod(&loader, TMVA::Types::kLikelihood, "Likelihood",                         "H:!V:TransformOutput:PDFInterpol=Spline2:NSmoothSig[0]=20:NSmoothBkg[0]=20:NSmoothBkg[1]=10:NSmooth=1:NAvEvtPerBin=50" );
                           
    //PCA-transformed likelihood
    factory.BookMethod(&loader, TMVA::Types::kLikelihood, "LikelihoodPCA", "!H:!V:!TransformOutput:PDFInterpol=Spline2:NSmoothSig[0]=20:NSmoothBkg[0]=20:NSmooth=5:NAvEvtPerBin=50:VarTransform=PCA" );
                           
    // K-Nearest Neighbour classifier (KNN)
    factory.BookMethod(&loader, TMVA::Types::kKNN, "KNN", "H:nkNN=20:ScaleFrac=0.8:SigmaFact=1.0:Kernel=Gaus:UseKernel=F:UseWeight=T:!Trim" );
                           
    // H-Matrix (chi2-squared) method
    factory.BookMethod( &loader, TMVA::Types::kHMatrix, "HMatrix", "!H:!V:VarTransform=None" );
    
    // Train MVAs using the set of training events
    factory.TrainAllMethods();

    // Evaluate all MVAs using the set of test events
    factory.TestAllMethods();

    // Evaluate and compare performance of all configured MVAs
    factory.EvaluateAllMethods();

    // --------------------------------------------------------------

    // Save the output
    outputFile->Close();

    std::cout << "==> Wrote root file: " << outputFile->GetName() << std::endl;
    std::cout << "==> TMVAClassification is done!" << std::endl;

    // Launch the GUI for the root macros
    if (!gROOT->IsBatch()) TMVA::TMVAGui( outfileName );             
    
}

\end{lstlisting}