void mlpbuild(){ //mlp setting TString ccdirectory= "rootfile/cc/"; TString ncdirectory= "rootfile/nc/"; TString backgdirectory= "rootfile/backg/"; TString exodirectory= "rootfile/exo/"; Int_t nbg = 3; TString bgrootfiles[nbg]; bgrootfiles[0]=ccdirectory + "ccq100-ariadne-1.root"; bgrootfiles[1]=ncdirectory + "ncq100-ariadne-1.root"; bgrootfiles[2]=backgdirectory + "php-dir-et30-herwig-10.root"; Int_t nvar = 4; Float_t CAL_E,CAL_Pt,CAL_px,CAL_py,CAL_pz; TString layer = "CAL_E,CAL_Pt,CAL_px,CAL_py,CAL_pz:5:type"; Int_t ntrain=100; /***********************************************************************************/ Int_t i, j; //prepare signal TTree TFile f(exodirectory+"susy.root"); TTree *signal = (TTree *) f.Get("h1"); //prepare background TChain and background TTree TChain background("h1"); for (i=1; iSetBranchStatus("CAL_E", 1); signal->SetBranchStatus("CAL_Pt", 1); signal->SetBranchStatus("CAL_px", 1); signal->SetBranchStatus("CAL_py", 1); signal->SetBranchStatus("CAL_pz", 1); //prepare branches address Int_t type; //declared type: sig for 1 and bg for 0 TTree *input = new TTree("output", "output TTree"); signal->SetBranchAddress("CAL_E", &CAL_E); signal->SetBranchAddress("CAL_Pt", &CAL_Pt); signal->SetBranchAddress("CAL_px", &CAL_px); signal->SetBranchAddress("CAL_py", &CAL_py); signal->SetBranchAddress("CAL_pz", &CAL_pz); background.SetBranchAddress("CAL_E", &CAL_E); background.SetBranchAddress("CAL_Pt", &CAL_Pt); background.SetBranchAddress("CAL_px", &CAL_px); background.SetBranchAddress("CAL_py", &CAL_py); background.SetBranchAddress("CAL_pz", &CAL_pz); input->Branch("CAL_E", &CAL_E,"CAL_E/F"); input->Branch("CAL_Pt", &CAL_Pt,"CAL_Pt/F"); input->Branch("CAL_px", &CAL_px,"CAL_pz/F"); input->Branch("CAL_py", &CAL_py,"CAL_py/F"); input->Branch("CAL_pz", &CAL_pz,"CAL_pz/F"); input->Branch("type", &type,"type/I"); type = 1; for (i = 0; i < signal->GetEntries(); i++) { signal->GetEntry(i,0); input->Fill(); } type = 0; for (i = 0; i < background.GetEntries(); i++) { background.GetEntry(i,0); input->Fill(); } //Build NN with input layer statement, weight TMultiLayerPerceptron *mlp = new TMultiLayerPerceptron(layer, "CAL_Pt", input,"Entry$%2", "(Entry$+1)%2"); Train NN ntrain times mlp->Train(ntrain, "text,graph,update=10"); }