Advertisement
Guest User

Untitled

a guest
May 19th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.91 KB | None | 0 0
  1. #include "TMVA/Factory.h"
  2. #include "TMVA/Tools.h"
  3. #include <iostream>
  4. using namespace TMVA;
  5.  
  6. int nbin = 100;
  7. bool iter = 0;
  8. int colors_val[4] = {kRed, kGreen, kMagenta, kYellow};
  9. float elayer_param[10];
  10.  
  11. bool isValidPid(int i)
  12. {
  13. return (i == 1) || (i == 2);
  14. }
  15.  
  16. void process(TTree *tin, Reader* reader, const char* method, const char* weights, TPad* canvas, TLegend* legend)
  17. {
  18. int pid;
  19. double esum;
  20. float elayer[10];
  21. tin->GetBranch("pid")->SetAddress(&pid);
  22. tin->GetBranch("esum")->SetAddress(&esum);
  23. tin->GetBranch("elayer")->SetAddress(&elayer);
  24.  
  25. reader->BookMVA(method, weights);
  26. double start = -3.0;
  27. double end = 3.0;
  28. TH1D *bg = new TH1D("bg", (string(method) + std::string(" pid==1")).c_str(),nbin, start,end);
  29. TH1D *sig = new TH1D("sig",(string(method) + std::string(" pid==2")).c_str(),nbin, start,end);
  30.  
  31. for( int i=0; i<tin->GetEntries(); i++ )
  32. {
  33. tin->GetEvent(i);
  34. if(!isValidPid(pid)) continue;
  35. for( int j=0; j<10; j++ ) {elayer_param[j]=elayer[j];}
  36. double out = reader->EvaluateMVA(method);
  37. if( pid==1 ) {bg->Fill(out);}
  38. else if( pid==2 ) {sig->Fill(out);}
  39. }
  40.  
  41.  
  42. bg->SetLineColor(kBlue);
  43. bg->SetFillStyle(3008);
  44. bg->SetFillColor(kBlue);
  45.  
  46. sig->SetLineColor(kRed);
  47. sig->SetFillStyle(3003);
  48. sig->SetFillColor(kRed);
  49.  
  50. bg->SetStats(0);
  51. sig->SetStats(0);
  52.  
  53. bg->Draw();
  54. sig->Draw("same");
  55.  
  56. canvas->cd(3);
  57. int nsig = sig->GetEntries();
  58. int nbg = bg->GetEntries();
  59. double *a = new double[nbin];
  60. double *b = new double[nbin];
  61. int csig = 0, cbg = 0;
  62. for (int i = 0; i < nbin; ++i)
  63. {
  64. csig += sig->GetBinContent(i);
  65. cbg += bg->GetBinContent(i);
  66. a[i] = double(nsig - csig) / nsig;
  67. b[i] = double(cbg) / nbg;
  68. }
  69. TGraph *graph = new TGraph(100, b, a);
  70. graph->SetLineWidth(2);
  71. graph->SetLineColor(colors_val[iter]);
  72. graph->Draw(iter == 0 ? "ACP" : "CP");
  73. ++iter;
  74. legend->AddEntry(graph, method, "l");
  75. }
  76.  
  77. void task5read()
  78. {
  79. TPad* canvas = new TCanvas("canvas","",1000,700);
  80. canvas->Divide(3,1);
  81.  
  82. gSystem->Load("libTMVA");
  83.  
  84. Reader* reader = new Reader("Color");
  85.  
  86. TFile *fin = new TFile("tree.root");
  87. TTree *tin = NULL;
  88. fin->GetObject("tree", tin);
  89.  
  90. for( int i=0; i<10; i++ )
  91. reader->AddVariable(Form("elayer[%d]",i), elayer_param + i);
  92.  
  93. auto legend = new TLegend(0.6, 0.6, 0.9, 0.9);
  94. canvas->cd(1);
  95. process(tin, reader, "Likelihood", "weights/myTMVA_Likelihood.weights.xml", canvas, legend);
  96. canvas->cd(2);
  97. process(tin, reader, "BDT","weights/myTMVA_BDT.weights.xml", canvas, legend);
  98. legend->Draw();
  99. }
  100.  
  101. #include "TMVA/Factory.h"
  102. #include "TMVA/Tools.h"
  103.  
  104. void task5() {
  105.  
  106. gSystem->Load("libTMVA");
  107.  
  108. TMVA::Tools::Instance();
  109.  
  110. TFile* fout = TFile::Open("tmva_out.root", "RECREATE");
  111. TChain *tin = new TChain("tree");
  112. tin->AddFile("tree.root");
  113. TMVA::Factory *factory = new TMVA::Factory("myTMVA", fout, "!V:!Silent:Color:DrawProgressBar:Transformations=I;D;P;G,D:AnalysisType=Classification");
  114. factory->SetInputTrees(tin,"pid==1","pid==2");
  115.  
  116. factory->AddVariable("el0 := elayer[0]",'D');
  117. factory->AddVariable("el1 := elayer[1]",'D');
  118. factory->AddVariable("el2 := elayer[2]",'D');
  119. factory->AddVariable("el3 := elayer[3]",'D');
  120. factory->AddVariable("el4 := elayer[4]",'D');
  121. factory->AddVariable("el5 := elayer[5]",'D');
  122. factory->AddVariable("el6 := elayer[6]",'D');
  123. factory->AddVariable("el7 := elayer[7]",'D');
  124. factory->AddVariable("el8 := elayer[8]",'D');
  125. factory->AddVariable("el9 := elayer[9]",'D');
  126.  
  127.  
  128. factory->PrepareTrainingAndTestTree("","");
  129.  
  130. factory->BookMethod(TMVA::Types::kLikelihood, "Likelihood", "H:!V:TransformOutput");
  131. factory->BookMethod(TMVA::Types::kBDT, "BDT", "H:!V:NTrees=200:nEventsMin=100:BoostType=AdaBoost");
  132.  
  133. factory->TrainAllMethods();
  134.  
  135. factory->TestAllMethods();
  136.  
  137. factory->EvaluateAllMethods();
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement