#include #include #include #include #include "TChain.h" #include "TFile.h" #include "TTree.h" #include "TString.h" #include "TObjString.h" #include "TSystem.h" #include "TROOT.h" //#include "TMVA/Factory.h" //#include "TMVA/DataLoader.h" //#include "TMVA/Tools.h" //#include "TMVA/TMVAGui.h" using namespace std; void Application(const char* path, const char* input, const char* output) { // TMVA::Tools::Instance(); // // TMVA::Reader *reader = new TMVA::Reader("!Color:!Silent:!V"); Float_t var1, var2, var3, var4, var5, var6, var7, var8, var9, var10; Float_t spec1, spec2, spec3, spec4, spec5, spec6; //Int_t var1; Int_t eventID; // reader->AddVariable("shwrI", &var1); // reader->AddVariable("ergShwr", &var2); // reader->AddVariable("angShwr", &var3); // reader->AddVariable("phiShwr", &var4); // //reader->AddVariable("misMassSq", &var5); // reader->AddVariable("pCosInppc", &var5); // reader->AddVariable("aCosInppc", &var6); // reader->AddVariable("ppgFitchi2", &var7); // reader->AddVariable("ppmFitchi2", &var8); // reader->AddVariable("ppbarLabAng", &var9); // reader->AddSpectator("misMomAng", &spec1); // reader->AddSpectator("misMassSq", &spec2); // reader->AddSpectator("ppbarInvMass", &spec3); // reader->AddSpectator("eventID", &eventID); TString jobname("TMVACrossValidation"); { // TString methodName = "BDTG"; // TString weightfile = TString("dataset/weights/") + jobname + "_" + methodName + TString(".weights.xml"); // // std::cout<<"Hi "<AccessPathName(weightfile) == kFALSE); // if (weightfileExists) { // reader->BookMVA(methodName, weightfile); // } else { // std::cout << "Weightfile for method " << methodName << " not found." // " Did you run TMVACrossValidation with a specified" // " splitExpr?" << std::endl; // exit(0); // } } TChain* track = new TChain("track"); track->AddFile("/tmp/4230_anasig_mc_001.root"); Int_t nevents_sig=track->GetEntries(); cout << "Entries in track " << input << ": " << nevents_sig << endl; track->Print(); //track->Scan("ergShwr:angShwr:phiShwr"); constexpr unsigned int maxLength = 100; int shwrI; float ergShwr[maxLength]; Float_t *uservar2, *uservar3, *uservar4, *uservar5, *uservar6, *uservar7, *uservar8, *uservar9, *uservar10, *uservar11, *uservar12, *uservar14 ; Int_t uservar13, uservar1 ; std::cout << track->SetBranchAddress("shwrI", &shwrI) << " "; std::cout << track->SetBranchAddress("ergShwr", &ergShwr) << " "; //std::cout << track->SetBranchAddress("angShwr", &uservar3) << " "; //std::cout << track->SetBranchAddress("phiShwr", &uservar4) << " "; //track->SetBranchAddress("misMassSq", &uservar5) << " "; //std::cout << track->SetBranchAddress("pCosInppc", &uservar5) << " "; //std::cout << track->SetBranchAddress("aCosInppc", &uservar6) << " "; //std::cout << track->SetBranchAddress("ppgFitchi2", &uservar7) << " "; //std::cout << track->SetBranchAddress("ppmFitchi2", &uservar8) << " "; //std::cout << track->SetBranchAddress("ppbarLabAng", &uservar9) << " "; //std::cout << track->SetBranchAddress("misMomAng", &uservar10) << " "; //std::cout << track->SetBranchAddress("misMassSq", &uservar11) << " "; //std::cout << track->SetBranchAddress("ppbarInvMass", &uservar12) << " "; std::cout << std::endl << " "; //const char* outpath = "/besfs5/users/souvik/analysis/untagged_ppbargamma/fast_bdt/bdt/bdt_new/BDTG"; // const char* outpath = "/besfs5/groups/tauqcd/souvik/mc/BDTG"; // TFile* outFile = new TFile(Form("%s/%s", outpath, output), "RECREATE"); // TTree* tr = new TTree("tree", ""); // // tr->Branch("shwrI", &uservar1); // tr->Branch("ergShwr", &uservar2); // tr->Branch("angShwr", &uservar3); // tr->Branch("phiShwr", &uservar4); // //tr->Branch("misMassSq", &uservar5); // tr->Branch("pCosInppc", &uservar5); // tr->Branch("aCosInppc", &uservar6); // tr->Branch("ppgFitchi2", &uservar7); // tr->Branch("ppmFitchi2", &uservar8); // tr->Branch("ppbarLabAng", &uservar9); // // tr->Branch("misMomAng", &uservar10); // tr->Branch("misMassSq", &uservar11); // tr->Branch("ppbarInvMass", &uservar12); // tr->Branch("eventID", &uservar13); // // Double_t bdt; // tr->Branch("BDTG", &bdt); // Int_t nbin = 100; // TH1F histBDTG{"BDTG", "BDTG", nbin, -1, 1}; for (Long64_t ievt = 0; ievt < nevents_sig; ievt++) { track->GetEntry(ievt); uservar13 = ievt; if (ievt < 10) { std::cout << "shwrI: " << shwrI << ", ergShwr:"; for (int j = 0; j < shwrI; ++j) std::cout << ergShwr[j] << " "; std::cout << "\n"; } if(ievt%1000==0) std::cout<< "Evaluating MVA: Processing event... " << ievt << std::endl; //var1 = uservar1; //var2 = uservar2; //var3 = uservar3; //var4 = uservar4; //var5 = uservar5; //var6 = uservar6; //var7 = uservar7; //var8 = uservar8; //var9 = uservar9; //var10 = uservar10; //var11 = uservar11; //var12 = uservar12; //var13 = uservar13; //var14 = uservar14; // if (TMath::IsNaN(var1)) continue; // if (TMath::IsNaN(var2)) continue; // if (TMath::IsNaN(var3)) continue; // if (TMath::IsNaN(var4)) continue; // if (TMath::IsNaN(var5)) continue; // if (TMath::IsNaN(var6)) continue; // if (TMath::IsNaN(var7)) continue; // if (TMath::IsNaN(var8)) continue; // if (TMath::IsNaN(var9)) continue; //if (TMath::IsNaN(var10)) continue; //if (TMath::IsNaN(var11)) continue; //if (TMath::IsNaN(var12)) continue; //if (TMath::IsNaN(var13)) continue; //if (TMath::IsNaN(var14)) continue; // spec1 = uservar10; // spec2 = uservar11; // spec3 = uservar12; // eventID = uservar13; // // Double_t valBDTG = reader->EvaluateMVA("BDTG"); // bdt = reader->EvaluateMVA("BDTG"); // histBDTG.Fill(valBDTG); //tr->Fill(); } // tr->ResetBranchAddresses(); delete track; std::cout << "--- End of event loop for the input file --- " << std::endl; // tr->Write(); // outFile->Close(); // std::cout << " ==> Wrote root file: " << outFile->GetName() << std::endl; std::cout << " ==> TMVACrossValidationApplication is done!" << std::endl; // delete reader; } int TMVACrossValidationApplication(){ static const int len =2; //const char* path="/besfs5/users/souvik/analysis/untagged_ppbargamma/fast_bdt/bdt/bdt_new/BDTG"; const char* path="/besfs5/groups/tauqcd/souvik/mc/signal_mc/4230/ana/root/root"; const char* input[len] = {"4230_anasig_mc_001.root","4230_pppi0_inc_mc_001.root"}; const char* output[len] = {"4230_anasig_mc_001_BDTG.root","4230_pppi0_inc_mc_001_BDTG.root"}; //std::cout << "Input file: " << input[index] << std::endl; for (int index = 0; index < len; ++index) { Application(path, input[index], output[index]); } return 0; }