本文整理汇总了C++中tmva::Factory::SetInputTrees方法的典型用法代码示例。如果您正苦于以下问题:C++ Factory::SetInputTrees方法的具体用法?C++ Factory::SetInputTrees怎么用?C++ Factory::SetInputTrees使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tmva::Factory
的用法示例。
在下文中一共展示了Factory::SetInputTrees方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: trainBDT
void trainBDT(void)
{
// Open input file and get tree
TFile *infile = new TFile("l3bdt.root");
TTree *l3tree = (TTree*)infile->Get("l3tree");
if(l3tree == NULL){
cout << "Couldn't open \"l3bdt.root\"!" << endl;
return;
}
// Open output root file (for TMVA)
TFile *outfile = new TFile("l3BDT_out.root", "RECREATE");
TMVA::Factory *fac = new TMVA::Factory("L3",outfile,"");
// Specify input tree that contains both signal and background
TCut signalCut("is_good==1");
TCut backgroundCut("is_good==0");
fac->SetInputTrees(l3tree, signalCut, backgroundCut);
// Add variables
fac->AddVariable("Nstart_counter", 'I');
fac->AddVariable("Ntof", 'I');
fac->AddVariable("Nbcal_points", 'I');
fac->AddVariable("Nbcal_clusters", 'I');
fac->AddVariable("Ebcal_points", 'F');
fac->AddVariable("Ebcal_clusters", 'F');
fac->AddVariable("Nfcal_clusters", 'I');
fac->AddVariable("Efcal_clusters", 'F');
fac->AddVariable("Ntrack_candidates", 'I');
fac->AddVariable("Ptot_candidates", 'F');
TCut preSelectCut("");
fac->PrepareTrainingAndTestTree(preSelectCut,"");
fac->BookMethod(TMVA::Types::kBDT, "BDT", "");
fac->TrainAllMethods();
fac->TestAllMethods();
fac->EvaluateAllMethods();
delete fac;
outfile->Close();
delete outfile;
}
示例2: trainBJetIdMVA
void trainBJetIdMVA(TString SELECTION)
{
// the training is done using a dedicated tree format
TFile *src = TFile::Open("bjetId_"+SELECTION+".root");
TTree *tr = (TTree*)src->Get("jets");
TFile *outf = new TFile("bjetId_"+SELECTION+"_MVA.root","RECREATE");
TCut signalCut = "abs(partonId) == 5";
TCut bkgCut = "abs(partonId) != 5";
TCut preselectionCut = "btagIdx<4 && etaIdx<4 && etaIdx>-1 && ptIdx<4";
int N = 100000;
cout<<"NUMBER OF TRAINING EVENTS = "<<N<<endl;
TMVA::Factory* factory = new TMVA::Factory("factory_"+SELECTION+"_",outf,"!V:!Silent:Color:DrawProgressBar:Transformations=I;G:AnalysisType=Classification" );
factory->SetInputTrees(tr,signalCut,bkgCut);
factory->AddVariable("btagIdx",'I');
factory->AddVariable("etaIdx" ,'I');
factory->AddVariable("btag" ,'F');
factory->AddVariable("eta" ,'F');
char name[1000];
sprintf(name,"nTrain_Signal=%d:nTrain_Background=%d:nTest_Signal=%d:nTest_Background=%d",N,N,N,N);
factory->PrepareTrainingAndTestTree(preselectionCut,name);
// specify the training methods
factory->BookMethod(TMVA::Types::kLikelihood,"Likelihood");
//factory->BookMethod(TMVA::Types::kBDT,"BDT_DEF");
//factory->BookMethod(TMVA::Types::kBDT,"BDT_ADA","NTrees=600:AdaBoostBeta=0.1:nCuts=35");
//factory->BookMethod(TMVA::Types::kBDT,"BDT_GRAD1","NTrees=600:nCuts=40:BoostType=Grad:Shrinkage=0.5");
factory->BookMethod(TMVA::Types::kBDT,"BDT_GRAD2","NTrees=600:nCuts=25:BoostType=Grad:Shrinkage=0.2");
factory->TrainAllMethods();
factory->TestAllMethods();
factory->EvaluateAllMethods();
}
示例3: Example_Eric
//.........这里部分代码省略.........
factory->AddVariable( "Eta_qq := Eta_qq", 'F' );
factory->AddVariable( "Charge_qq := Charge_qq", 'F' );
factory->AddVariable( "DPhi_ll := DPhi_ll", 'F' );
factory->AddVariable( "DPt_ll := DPt_ll", 'F' );
//factory->AddVariable( "MinDPhi_lMET := MinDPhi_lMET", 'F' );
//factory->AddVariable( "Aplanarity := aplanarity", 'F' );
//factory->AddVariable( "chargeEta := chargeEta", 'F' );
//factory->AddVariable( "MET := Met", 'F' );
//factory->AddVariable( "MtauJet := MtauJet", 'F' );
//factory->AddVariable( "HT := Ht", 'F' );
//factory->AddVariable( "Chi2 := kinFitChi2", 'F' );
//factory->AddVariable( "DeltaPhiTauMET := DeltaPhiTauMet", 'F' );
//factory->AddVariable( "Mt := Mt", 'F' );
// You can add so-called "Spectator variables", which are not used in the MVA training,
// but will appear in the final "TestTree" produced by TMVA. This TestTree will contain the
// input variables, the response values of all trained MVAs, and the spectator variables
// factory->AddSpectator( "spec1:=var1*2", "Spectator 1", "units", 'F' );
// factory->AddSpectator( "spec2:=var1*3", "Spectator 2", "units", 'F' );
// read training and test data
if (ReadDataFromAsciiIFormat) {
// load the signal and background event samples from ascii files
// format in file must be:
// var1/F:var2/F:var3/F:var4/F
// 0.04551 0.59923 0.32400 -0.19170
// ...
TString datFileS = "tmva_example_sig.dat";
TString datFileB = "tmva_example_bkg.dat";
factory->SetInputTrees( datFileS, datFileB );
}
else {
//TFile* f0 = new TFile("/opt/sbg/data/data1/cms/lebihan/clean_january_2012_2/CMSSW_4_2_8_patch7/src/MiniTreeAnalysis/NTupleAnalysis/macros/TopTauJets/TMVA_sig_newLumi.root");
//TFile* f1 = new TFile("/opt/sbg/data/data1/cms/lebihan/clean_january_2012_2/CMSSW_4_2_8_patch7/src/MiniTreeAnalysis/NTupleAnalysis/macros/TopTauJets/TMVA_bkg_newLumi.root");
TFile* f0 = TFile::Open("/opt/sbg/data/data1/cms/echabert/ttbarMET/ProdAlexMars13/CMSSW_5_3_2_patch4/src/NTuple/NTupleAnalysis/macros/TTbarMET/backup_outputProof10-04-13_16-00-57/proof_ttW.root");
TFile* f1 = TFile::Open("/opt/sbg/data/data1/cms/echabert/ttbarMET/ProdAlexMars13/CMSSW_5_3_2_patch4/src/NTuple/NTupleAnalysis/macros/TTbarMET/backup_outputProof10-04-13_16-00-57/proof_tt-dilepton.root");
TTree *signal = (TTree*)f0->Get("theTree2");
TTree *background = (TTree*)f1->Get("theTree2");
cout<<"trees: "<<signal<<" "<<background<<endl;
//Double_t backgroundWeight = 1.0;
//Double_t signalWeight = 1.0;
Double_t signalWeight = 0.30*20/185338;
Double_t backgroundWeight = 222.*0.1*20/9982625;
// ====== register trees ====================================================
//
// the following method is the prefered one:
// you can add an arbitrary number of signal or background trees
factory->AddSignalTree ( signal, signalWeight );
factory->AddBackgroundTree( background, backgroundWeight );
// factory->AddSignalTree ( signal );
//factory->AddBackgroundTree( background );
// To give different trees for training and testing, do as follows:
// factory->AddSignalTree( signalTrainingTree, signalTrainWeight, "Training" );
// factory->AddSignalTree( signalTestTree, signalTestWeight, "Test" );
示例4: mvaDonut
void mvaDonut(TString Type = "Dl", int iChannel = 1, TString Sample = "Sig") {
TString Channels[] = {"D0","Ds0","Dp","Dsp"};
TString fname = "mva"; if(Sample=="Dss") fname += Sample;
fname += Type; fname += Channels[iChannel-1];
TString outfileName = fname; outfileName += ".root";
TFile* outputFile = TFile::Open( outfileName, "RECREATE" );
int isDss = 0;
if(Sample=="Dss") isDss=1;
TMVA::Factory *factory = new TMVA::Factory( fname, outputFile,
Form("!V:!Silent:%sColor", gROOT->IsBatch()?"!":"") );
TChain c("ntp1");
c.Add("~/releases/ntuplePID50/workdir/AWG82/ntuples/small/Add_R24MVA_RunAll.root");
TString sigCuts[] = {"(MCType==1||MCType==3||MCType==5)", "(MCType==2||MCType==4||MCType==6)",
"(MCType==7||MCType==9||MCType==11)", "(MCType==8||MCType==10||MCType==12)",
"MCType>12"};
TString bkgCuts[2][2] = {{"MCType>6", "(MCType>0&&MCType<7||MCType>12)"},
{"MCType>0&&MCType<13","MCType>0&&MCType<13"}};
TString sigStr = "candLepTru==1&&"; if(isDss) sigStr += "pmisspi0"; else sigStr += "candPMiss";
sigStr += ">0.2&&candType=="; sigStr += iChannel; sigStr += "&&";
if(isDss) sigStr += sigCuts[4]; else sigStr += sigCuts[iChannel-1];
TString bkgStr = "candType=="; bkgStr += iChannel; bkgStr += "&&";
if(isDss) bkgStr += "pmisspi0"; else bkgStr += "candPMiss";
bkgStr += ">0.2&&";
if(Type=="Dl") bkgStr += bkgCuts[isDss][(iChannel-1)/2];
else bkgStr += "MCType==0";
TCut sigCut = "1", bkgCut = "1", mycuts = "", mycutb = "";
sigCut += sigStr; bkgCut += bkgStr;
// --- Base ---
// int nSig = 9, nDpi0 = 10;
// TString sigVari[] = {"candEExtra","candMES","candDmass","candDeltam","candTagChargedMult","candBTagDeltam",
// "candBTagDmass","candDeltaE","candCosT"};
// TString Dpi0Vari[] = {"mpi0","candDmass","dmpi0","eextrapi0","ppi0","e1pi0","candCosT","candDeltam",
// "candMES","candDeltaE"};
// --- NoDmNoMp0 ---
// int nSig = 8, nDpi0 = 9;
// TString sigVari[] = {"candEExtra","candMES","candDmass","candDeltam","candTagChargedMult",
// "candBTagDmass","candDeltaE","candCosT"};
// TString Dpi0Vari[] = {"candDmass","dmpi0","eextrapi0","ppi0","e1pi0","candCosT","candDeltam",
// "candMES","candDeltaE"};
// sigCuts[4] = "MCType>12&&mpi0>.125&&mpi0<.145";
// --- NoMes ---
// int nSig = 8, nDpi0 = 9;
// TString sigVari[] = {"candEExtra","candDmass","candDeltam","candTagChargedMult","candBTagDeltam",
// "candBTagDmass","candDeltaE","candCosT"};
// TString Dpi0Vari[] = {"mpi0","candDmass","dmpi0","eextrapi0","ppi0","e1pi0","candCosT","candDeltam",
// "candDeltaE"};
// --- NoMulYesDm ---
int nSig = 8, nDpi0 = 11;
TString sigVari[] = {"candEExtra","candMES","candDmass","candDeltam","candBTagDeltam",
"candBTagDmass","candDeltaE","candCosT"};
TString Dpi0Vari[] = {"mpi0","candDmass","dmpi0","eextrapi0","ppi0","e1pi0","candCosT","candDeltam",
"candMES","candDeltaE","candBTagDeltam"};
factory->SetInputTrees(&c, sigCut, bkgCut);
if(isDss==0){
for(int vari = 0; vari < nSig; vari++){
if(sigVari[vari]=="candDeltam" && iChannel%2==1) continue;
char variChar = 'F';
if(sigVari[vari]=="candTagChargedMult") variChar = 'I';
factory->AddVariable(sigVari[vari], variChar);
}
} else {
for(int vari = 0; vari < nDpi0; vari++){
if(Dpi0Vari[vari]=="candDeltam" && iChannel%2==1) continue;
factory->AddVariable(Dpi0Vari[vari], 'F');
}
}
factory->PrepareTrainingAndTestTree( mycuts, mycutb,
"NSigTest=100:NBkgTest=100:SplitMode=Random:NormMode=NumEvents:!V" );
factory->BookMethod( TMVA::Types::kBDT, "BDT",
"!H:!V:NTrees=500:BoostType=AdaBoost:SeparationType=GiniIndex:nCuts=20:PruneMethod=CostComplexity:PruneStrength=2.5" );
factory->TrainAllMethods();
factory->TestAllMethods();
factory->EvaluateAllMethods();
// Save the output
outputFile->Close();
std::cout << "==> Wrote root file: " << outputFile->GetName() << std::endl;
delete factory;
// Launch the GUI for the root macros
//if (!gROOT->IsBatch()) TMVAGui( outfileName );
gROOT->ProcessLine(".q");
}
示例5: main
int main ()
{
TFile * outputfile = TFile::Open ("outputTMVA.root","RECREATE");
TMVA::Factory * TMVAtest = new TMVA::Factory ("TMVAtest", outputfile, "S") ;
//PG get the signal and deliver it to the TMVA factory
TChain signalTree ("sample") ;
signalTree.Add ("data/sig_0.root") ;
std::cout << "READ " << signalTree.GetEntries () << " signal events\n" ;
TMVAtest->AddSignalTree (&signalTree, 1) ;
//PG get the bkg and deliver it to the TMVA factory
TChain bkgTree ("sample") ;
bkgTree.Add ("data/bkg_0.root") ;
std::cout << "READ " << bkgTree.GetEntries () << " bkg events\n" ;
TMVAtest->AddBackgroundTree (&bkgTree, 1) ;
//PG get the training and test samples and deliver them to the TMVA factory
TChain signalTrainTree ("sample") ;
signalTrainTree.Add ("data/sig_1.root") ;
std::cout << "READ " << signalTrainTree.GetEntries () << " signal train events\n" ;
TChain bkgTrainTree ("sample") ;
bkgTrainTree.Add ("data/bkg_1.root") ;
std::cout << "READ " << bkgTrainTree.GetEntries () << " bkg train events\n" ;
TMVAtest->SetInputTrees (signalTrainTree.GetTree (), bkgTrainTree.GetTree (), 1., 1.) ;
//PG variables to be used for the selection
//PG must be defined in the TTrees
TMVAtest->AddVariable ("vars.x", 'F') ;
TMVAtest->AddVariable ("vars.y" , 'F') ;
int signalNumTrain = signalTrainTree.GetEntries () * 4 / 5 ;
int bkgNumTrain = bkgTrainTree.GetEntries () * 4 / 5 ;
int signalNumTest = signalTrainTree.GetEntries () - signalNumTrain ;
int bkgNumTest = bkgTrainTree.GetEntries () - bkgNumTrain ;
char trainOptions[120] ;
sprintf (trainOptions,"NSigTrain=%d:NBkgTrain=%d:NSigTest=%d:NBkgTest=%d",
signalNumTrain, bkgNumTrain,
signalNumTest, bkgNumTest) ;
sprintf (trainOptions,"NSigTrain=%d:NBkgTrain=%d:NSigTest=%d:NBkgTest=%d",
0,0,0,0) ;
std::cout << "TRAINING CONFIGURATION : " << trainOptions << "\n" ;
TMVAtest->PrepareTrainingAndTestTree ("",trainOptions) ;
//PG prepare the classifier
//PG cut-based, default params
TMVAtest->BookMethod (TMVA::Types::kCuts, "Cuts") ;
TMVAtest->TrainAllMethods () ;
TMVAtest->TestAllMethods () ;
TMVAtest->EvaluateAllMethods () ;
delete TMVAtest ;
delete outputfile ;
}
示例6: TMVAClassificationHwwNtuple
//.........这里部分代码省略.........
//TString fname = "./tmva_class_example.root";
//TString fname = "/afs/cern.ch/work/s/salee/private/HWWwidth/HWW/GGVvAnalyzer/MkNtuple/Hw1Int8TeV/MkNtuple.root";
//TString fname = "/terranova_0/HWWwidth/HWW/GGVvAnalyzer/MkNtuple/Hw1Int8TeV/MkNtuple.root";
//if (gSystem->AccessPathName( fname )) // file does not exist in local directory
// exit(-1);
//gSystem->Exec("wget http://root.cern.ch/files/tmva_class_example.root");
//TFile *input = TFile::Open( fname );
//TFile *SB_OnPeak = TFile::Open("root://eoscms.cern.ch//eos/cms/store/group/phys_higgs/cmshww/amassiro/HiggsWidth/gg2vv/latinogg2vv_Hw1_IntOnPeak_8TeV.root");
//TTree *SB_OnPeak_Tree = (TTree*)SB_OnPeak->Get("latino");
TChain *SB_Chain = new TChain("latino");
SB_Chain->Add("root://eoscms.cern.ch//eos/cms/store/group/phys_higgs/cmshww/amassiro/HiggsWidth/gg2vv/latinogg2vv_Hw1_IntOnPeak_8TeV.root");
SB_Chain->Add("root://eoscms.cern.ch//eos/cms/store/group/phys_higgs/cmshww/amassiro/HiggsWidth/gg2vv/latinogg2vv_Hw1_IntShoulder_8TeV.root");
SB_Chain->Add("root://eoscms.cern.ch//eos/cms/store/group/phys_higgs/cmshww/amassiro/HiggsWidth/gg2vv/latinogg2vv_Hw1_IntTail_8TeV.root");
// std::cout << "--- TMVAClassification : Using input file: " << input->GetName() << std::endl;
// --- Register the training and test trees
//TTree *signal = (TTree*)input->Get("ggTree");
//TTree *background = (TTree*)input->Get("ggTree");
// global event weights per tree (see below for setting event-wise weights)
//Double_t signalWeight = 1.0;
//Double_t backgroundWeight = 1.0;
// You can add an arbitrary number of signal or background trees
//factory->AddSignalTree ( signal, signalWeight );
//factory->AddBackgroundTree( background, backgroundWeight );
// Classification training and test data in ROOT tree format with signal and background events being located in the same tree
TCut sigCut = "mWW>160 && (channel == 2 || channel == 3)"; // for example: TCut mycuts = "abs(var1)<0.5 && abs(var2-0.5)<1";
TCut bkgCut = "mWW<160 && (channel == 2 || channel == 3)"; // for example: TCut mycutb = "abs(var1)<0.5";
factory->SetInputTrees(SB_Chain, sigCut, bkgCut);
// To give different trees for training and testing, do as follows:
// factory->AddSignalTree( signalTrainingTree, signalTrainWeight, "Training" );
// factory->AddSignalTree( signalTestTree, signalTestWeight, "Test" );
// Use the following code instead of the above two or four lines to add signal and background
// training and test events "by hand"
// NOTE that in this case one should not give expressions (such as "var1+var2") in the input
// variable definition, but simply compute the expression before adding the event
//
// // --- begin ----------------------------------------------------------
// std::vector<Double_t> vars( 4 ); // vector has size of number of input variables
// Float_t treevars[4], weight;
//
// // Signal
// for (UInt_t ivar=0; ivar<4; ivar++) signal->SetBranchAddress( Form( "var%i", ivar+1 ), &(treevars[ivar]) );
// for (UInt_t i=0; i<signal->GetEntries(); i++) {
// signal->GetEntry(i);
// for (UInt_t ivar=0; ivar<4; ivar++) vars[ivar] = treevars[ivar];
// // add training and test events; here: first half is training, second is testing
// // note that the weight can also be event-wise
// if (i < signal->GetEntries()/2.0) factory->AddSignalTrainingEvent( vars, signalWeight );
// else factory->AddSignalTestEvent ( vars, signalWeight );
// }
//
// // Background (has event weights)
// background->SetBranchAddress( "weight", &weight );
// for (UInt_t ivar=0; ivar<4; ivar++) background->SetBranchAddress( Form( "var%i", ivar+1 ), &(treevars[ivar]) );
// for (UInt_t i=0; i<background->GetEntries(); i++) {
// background->GetEntry(i);
// for (UInt_t ivar=0; ivar<4; ivar++) vars[ivar] = treevars[ivar];
// // add training and test events; here: first half is training, second is testing
示例7: TMVAClassification
//.........这里部分代码省略.........
// (please check "src/Config.h" to see all available global options)
// (TMVA::gConfig().GetVariablePlotting()).fTimesRMS = 8.0;
// (TMVA::gConfig().GetIONames()).fWeightFileDir = "myWeightDirectory";
// Define the input variables that shall be used for the MVA training
// note that you may also use variable expressions, such as: "3*var1/var2*abs(var3)"
// [all types of expressions that can also be parsed by TTree::Draw( "expression" )]
//factory->AddVariable( "MET" , "ME_{T}", "GeV", 'F');
//factory->AddVariable( "TMath::Max(pT1,pT2)" , "Lead Lepton p_{T}", "GeV", 'F');
factory->AddVariable( "HT" , "H_{T}", "GeV", 'F');
//factory->AddVariable( "M3" , "M_{3}", "GeV", 'F');
factory->AddVariable( "TMath::Min(pT1,pT2)" , "Sublead Lepton p_{T}", "GeV", 'F');
//factory->AddVariable( "NbJ" , "N B Jets", "", 'I');
//factory->AddVariable( "NbJmed" , "N B Jets (medium)", "", 'I');
//factory->AddVariable( "NJ" , "N Jets", "", 'I');
// You can add so-called "Spectator variables", which are not used in the MVA training,
// but will appear in the final "TestTree" produced by TMVA. This TestTree will contain the
// input variables, the response values of all trained MVAs, and the spectator variables
//factory->AddSpectator( "spec1:=var1*2", "Spectator 1", "units", 'F' );
//factory->AddSpectator( "spec2:=var1*3", "Spectator 2", "units", 'F' );
// read training and test data
if (ReadDataFromAsciiIFormat) {
// load the signal and background event samples from ascii files
// format in file must be:
// var1/F:var2/F:var3/F:var4/F
// 0.04551 0.59923 0.32400 -0.19170
// ...
TString datFileS = "tmva_example_sig.dat";
TString datFileB = "tmva_example_bkg.dat";
factory->SetInputTrees( datFileS, datFileB );
}
else {
// load the signal and background event samples from ROOT trees
TFile *input(0);
//TString fname = "../macros/tmva_example.root";
//TString fname = "opt_ttW_Apr10_Iso005_NoZVeto_jet20.root";
TString fname = "opt_ttW_Nov20_muDetIso0p05_elDetIso0p05_jet20_withZveto_optimization.root";
//TString fname = "opt_ttW_" + selectionName + ".root";
if (!gSystem->AccessPathName( fname )) {
input = TFile::Open( fname ); // check if file in local directory exists
}
else {
input = TFile::Open( "http://root.cern.ch/files/tmva_class_example.root" ); // if not: download from ROOT server
}
if (!input) {
std::cout << "ERROR: could not open data file" << std::endl;
exit(1);
}
std::cout << "--- TMVAClassification : Using input file: " << input->GetName() << std::endl;
TTree* opt_tree = (TTree*)input->Get("tree_opt");
TFile* signalFile = TFile::Open("/shome/mdunser/workspace/CMSSW_5_2_5/src/DiLeptonAnalysis/NTupleProducer/macros/plots/Nov26_muPFIso0p05_elPFIso0p05_jet20_withZveto/TTbarW_Yields.root");
TTree *signal = (TTree*)signalFile->Get("SigEvents");
TChain* background = new TChain("SigEvents");
background->Add("/shome/mdunser/workspace/CMSSW_5_2_5/src/DiLeptonAnalysis/NTupleProducer/macros/plots/Nov26_muPFIso0p05_elPFIso0p05_jet20_withZveto/TTJets_Yields.root");
background->Add("/shome/mdunser/workspace/CMSSW_5_2_5/src/DiLeptonAnalysis/NTupleProducer/macros/plots/Nov26_muPFIso0p05_elPFIso0p05_jet20_withZveto/WZTo3LNu_Yields.root");
//TTree *background = (TTree*)opt_tree->CopyTree("SName==\"TTJets\" || SName==\"DYJets\" || SName==\"WZTo3LNu\"");
示例8: TMVAtest1
//.........这里部分代码省略.........
TFile *inputWZ= TFile::Open(WZFileTrain );
TFile *inputZZ= TFile::Open(ZZFileTrain );
TFile *inputZGAMMA= TFile::Open( ZGAMMAFileTrain);
if (!inputBTrain) {
std::cout << "ERROR: could not open data file" << std::endl;
exit(1);
}
std::cout << "--- TMVAnalysis : Accessing Signal Train: " << sigFileTrain << std::endl;
std::cout << "--- TMVAnalysis : Accessing Background Train: " << bkgFileTrain << std::endl;
TTree *signalTrain = (TTree*)inputSTrain->FindObjectAny("atq");
TTree *backgroundTrain = (TTree*)inputBTrain->FindObjectAny("atq");
TTree *ttbarbackground1 = (TTree*)inputBttbar1->FindObjectAny("atq");
TTree *ttbarbackground2 = (TTree*)inputBttbar2->FindObjectAny("atq");
TTree *ttbarbackground3 = (TTree*)inputBttbar3->FindObjectAny("atq");
TTree *TTGbackground = (TTree*)inputTTG->FindObjectAny("atq");
TTree *WWbackground = (TTree*)inputWW->FindObjectAny("atq");
TTree *WZbackground = (TTree*)inputWZ->FindObjectAny("atq");
TTree *ZZbackground = (TTree*)inputZZ->FindObjectAny("atq");
TTree *ZGAMMAbackground = (TTree*)inputZGAMMA->FindObjectAny("atq");
// TTree *signalTrain = (TTree*)inputSTrain->FindObjectAny("insidetopmass");
// TTree *backgroundTrain = (TTree*)inputBTrain->FindObjectAny("insidetopmass");
// factory->AddSignalTree( signalTrain, 1);
//cout<<"reza1";
// factory->AddBackgroundTree( backgroundTrain, 1, );
//cout<<"reza2";
factory->SetInputTrees(signalTrain,backgroundTrain,1,1);
factory->AddBackgroundTree( ttbarbackground1, 1.1);
factory->AddBackgroundTree( ttbarbackground2, 1.1);
// factory->AddBackgroundTree( ttbarbackground3, 0.3);
factory->AddBackgroundTree( TTGbackground, 1);
factory->AddBackgroundTree( WWbackground, 1);
factory->AddBackgroundTree(WZbackground , 1);
factory->AddBackgroundTree(ZZbackground , 1);
factory->AddBackgroundTree(ZGAMMAbackground , 1);
// Set xs-weight
// factory->SetSignalWeightExpression ("weight");
//factory->SetBackgroundWeightExpression("weight");
// Apply additional cuts on the signal and background samples (can be different)
TCut mycut = "";
// TCut mycutb = "";
Int_t nSignalTrain = signalTrain->GetEntries();
Int_t nBackTrain = backgroundTrain->GetEntries();
factory->PrepareTrainingAndTestTree( "","", "nTrain_Signal=0:nTrain_Background=0:nTest_Signal=0:nTest_Background=0:SplitMode=Random:SplitSeed=88!V" );
//factory->PrepareTrainingAndTestTree( "", "",
// "nTrain_Signal=100:nTrain_Background=100:nTest_Signal=100:nTest_Background=100:!V" );
// factory->PrepareTrainingAndTestTree( mycuts, mycutb,
//":NSigTrain=:NBkgTrain=:NSigTest=:NBkgTest=:SplitMode=Alternate:!V" );
//":nTrain_Signal=10000:nTest_Signal=2260:nTrain_Background=100000:nTest_Background=100000:SplitMode=Alternate:!V" );
// ":nTrain_Signal=nSignalTrain:nTrain_Background=nBackTrain:!V");
//":nTrain_Signal=nSignalTrain:nTest_Signal=nSignalTest:nTrain_Background=nBackTrain:nTest_Background=nBackTest:SplitMode=Block:!V");
//":SplitMode=Alternate:!V");
示例9: main
int main ()
{
TFile * outputfile = TFile::Open ("outputTMVA.root","RECREATE");
TMVA::Factory * TMVAtest = new TMVA::Factory ("TMVAtest", outputfile, "S") ;
//PG get the signal and deliver it to the TMVA factory
TChain signalTree ("shrinked") ;
signalTree.Add ("data/H160_VBF.root") ;
std::cout << "READ " << signalTree.GetEntries () << " signal events\n" ;
TMVAtest->AddSignalTree (&signalTree, 1) ;
//PG get the bkg and deliver it to the TMVA factory
TChain bkgTree ("shrinked") ;
bkgTree.Add ("data/H160_NOVBF.root") ;
std::cout << "READ " << bkgTree.GetEntries () << " bkg events\n" ;
TMVAtest->AddBackgroundTree (&bkgTree, 1) ;
//PG get the training and test samples and deliver them to the TMVA factory
TChain signalTrainTree ("shrinked") ;
signalTrainTree.Add ("data/H150_VBF.root") ;
std::cout << "READ " << signalTrainTree.GetEntries () << " signal train events\n" ;
TChain bkgTrainTree ("shrinked") ;
bkgTrainTree.Add ("data/H150_NOVBF.root") ;
std::cout << "READ " << bkgTrainTree.GetEntries () << " bkg train events\n" ;
// PG this is useless!!
TMVAtest->SetInputTrees (signalTrainTree.GetTree (), bkgTrainTree.GetTree (), 1., 1.) ;
//PG variables to be used for the selection
//PG must be defined in the TTrees
TMVAtest->AddVariable ("vars.Deta", 'F') ;
TMVAtest->AddVariable ("vars.Dphi" , 'F') ;
TMVAtest->AddVariable ("vars.Minv" , 'F') ;
int signalNumTrain = signalTrainTree.GetEntries () * 4 / 5 ;
int bkgNumTrain = bkgTrainTree.GetEntries () * 4 / 5 ;
int signalNumTest = signalTrainTree.GetEntries () - signalNumTrain ;
int bkgNumTest = bkgTrainTree.GetEntries () - bkgNumTrain ;
char trainOptions[120] ;
sprintf (trainOptions,"NSigTrain=%d:NBkgTrain=%d:NSigTest=%d:NBkgTest=%d",
signalNumTrain, bkgNumTrain,
signalNumTest, bkgNumTest) ;
sprintf (trainOptions,"NSigTrain=%d:NBkgTrain=%d:NSigTest=%d:NBkgTest=%d",
0,0,0,0) ;
std::cout << "TRAINING CONFIGURATION : " << trainOptions << "\n" ;
TMVAtest->PrepareTrainingAndTestTree ("",trainOptions) ;
//PG prepare the classifiers
//PG ------------------------
//PG cut-based, default params
TMVAtest->BookMethod (TMVA::Types::kCuts, "Cuts") ;
//PG multi layer perceptron
TMVAtest->BookMethod (TMVA::Types::kMLP, "MLP",
"H:!V:!Normalise:NeuronType=tanh:NCycles=200:HiddenLayers=N+1,N:TestRate=5");
TMVAtest->TrainAllMethods () ;
TMVAtest->TestAllMethods () ;
TMVAtest->EvaluateAllMethods () ;
delete TMVAtest ;
delete outputfile ;
}