16 void mlpHiggs(Int_t ntrain=100) {
17 const char *fname =
"mlpHiggs.root";
19 if (!gSystem->AccessPathName(fname)) {
20 input = TFile::Open(fname);
21 }
else if (!gSystem->AccessPathName(Form(
"%s/mlp/%s", TROOT::GetTutorialDir().Data(), fname))) {
22 input = TFile::Open(Form(
"%s/mlp/%s", TROOT::GetTutorialDir().Data(), fname));
24 printf(
"accessing %s file from http://root.cern.ch/files\n",fname);
25 input = TFile::Open(Form(
"http://root.cern.ch/files/%s",fname));
29 TTree *sig_filtered = (TTree *) input->Get(
"sig_filtered");
30 TTree *bg_filtered = (TTree *) input->Get(
"bg_filtered");
31 TTree *simu =
new TTree(
"MonteCarlo",
"Filtered Monte Carlo Events");
32 Float_t ptsumf, qelep, nch, msumf, minvis, acopl, acolin;
34 sig_filtered->SetBranchAddress(
"ptsumf", &ptsumf);
35 sig_filtered->SetBranchAddress(
"qelep", &qelep);
36 sig_filtered->SetBranchAddress(
"nch", &nch);
37 sig_filtered->SetBranchAddress(
"msumf", &msumf);
38 sig_filtered->SetBranchAddress(
"minvis", &minvis);
39 sig_filtered->SetBranchAddress(
"acopl", &acopl);
40 sig_filtered->SetBranchAddress(
"acolin", &acolin);
41 bg_filtered->SetBranchAddress(
"ptsumf", &ptsumf);
42 bg_filtered->SetBranchAddress(
"qelep", &qelep);
43 bg_filtered->SetBranchAddress(
"nch", &nch);
44 bg_filtered->SetBranchAddress(
"msumf", &msumf);
45 bg_filtered->SetBranchAddress(
"minvis", &minvis);
46 bg_filtered->SetBranchAddress(
"acopl", &acopl);
47 bg_filtered->SetBranchAddress(
"acolin", &acolin);
48 simu->Branch(
"ptsumf", &ptsumf,
"ptsumf/F");
49 simu->Branch(
"qelep", &qelep,
"qelep/F");
50 simu->Branch(
"nch", &nch,
"nch/F");
51 simu->Branch(
"msumf", &msumf,
"msumf/F");
52 simu->Branch(
"minvis", &minvis,
"minvis/F");
53 simu->Branch(
"acopl", &acopl,
"acopl/F");
54 simu->Branch(
"acolin", &acolin,
"acolin/F");
55 simu->Branch(
"type", &type,
"type/I");
58 for (i = 0; i < sig_filtered->GetEntries(); i++) {
59 sig_filtered->GetEntry(i);
63 for (i = 0; i < bg_filtered->GetEntries(); i++) {
64 bg_filtered->GetEntry(i);
70 TMultiLayerPerceptron *mlp =
71 new TMultiLayerPerceptron(
"@msumf,@ptsumf,@acolin:5:3:type",
72 "ptsumf",simu,
"Entry$%2",
"(Entry$+1)%2");
73 mlp->Train(ntrain,
"text,graph,update=10");
74 mlp->Export(
"test",
"python");
76 TCanvas* mlpa_canvas =
new TCanvas(
"mlpa_canvas",
"Network analysis");
77 mlpa_canvas->Divide(2,2);
78 TMLPAnalyzer ana(mlp);
80 ana.GatherInformations();
91 ana.DrawNetwork(0,
"type==1",
"type==0");
97 TH1F *bg =
new TH1F(
"bgh",
"NN output", 50, -.5, 1.5);
98 TH1F *sig =
new TH1F(
"sigh",
"NN output", 50, -.5, 1.5);
100 sig->SetDirectory(0);
102 for (i = 0; i < bg_filtered->GetEntries(); i++) {
103 bg_filtered->GetEntry(i);
107 bg->Fill(mlp->Evaluate(0, params));
109 for (i = 0; i < sig_filtered->GetEntries(); i++) {
110 sig_filtered->GetEntry(i);
114 sig->Fill(mlp->Evaluate(0,params));
116 bg->SetLineColor(kBlue);
117 bg->SetFillStyle(3008); bg->SetFillColor(kBlue);
118 sig->SetLineColor(kRed);
119 sig->SetFillStyle(3003); sig->SetFillColor(kRed);
124 TLegend *legend =
new TLegend(.75, .80, .95, .95);
125 legend->AddEntry(bg,
"Background (WW)");
126 legend->AddEntry(sig,
"Signal (Higgs)");