void InputVariables() { // Example of Root macro based on $ROOTSYS/tutorials/tree/copytree3.C setTDRStyle(); gSystem->Load("$ROOTSYS/test/libEvent"); //Get old file, old tree and set top branch address TFile *oldfile = new TFile("train_save_all.root"); TTree *oldtree = (TTree*)oldfile->Get("combinedMVA_save"); Int_t nentries = (Int_t)oldtree->GetEntries(); //Access jet trackSip3dSig to split depending on ntracks vector<double> *algoDiscriminator; oldtree->SetBranchAddress("algoDiscriminator",&algoDiscriminator); // Int_t flavour; // oldtree->SetBranchAddress("flavour",&flavour); //Create a new file + a clone of old tree in new file TFile *newfile = new TFile("InputVariables.root","recreate"); //TTree *newtree = oldtree->CloneTree(0); TH1F* DiscriminatorJP = new TH1F("JP","JP",60,0,3); TH1F* DiscriminatorCSV = new TH1F("CSV","CSV",60,0,1); TH1F* DiscriminatorSM = new TH1F("SM","SM",60,0,1); TH1F* DiscriminatorSE = new TH1F("SE","SE",60,0,1); TH1F* DiscriminatorJP_B = new TH1F("JP_B","JP_B",60,0,3); TH1F* DiscriminatorCSV_B = new TH1F("CSV_B","CSV_B",60,0,1); TH1F* DiscriminatorSM_B = new TH1F("SM_B","SM_B",60,0,1); TH1F* DiscriminatorSE_B = new TH1F("SE_B","SE_B",60,0,1); TH1F* DiscriminatorJP_C = new TH1F("JP_C","JP_C",60,0,3); TH1F* DiscriminatorCSV_C = new TH1F("CSV_C","CSV_C",60,0,1); TH1F* DiscriminatorSM_C = new TH1F("SM_C","SM_C",60,0,1); TH1F* DiscriminatorSE_C = new TH1F("SE_C","SE_C",60,0,1); TH1F* DiscriminatorJP_DUSG = new TH1F("JP_DUSG","JP_DUSG",60,0,3); TH1F* DiscriminatorCSV_DUSG = new TH1F("CSV_DUSG","CSV_DUSG",60,0,1); TH1F* DiscriminatorSM_DUSG = new TH1F("SM_DUSG","SM_DUSG",60,0,1); TH1F* DiscriminatorSE_DUSG = new TH1F("SE_DUSG","SE_DUSG",60,0,1); TH2F* DiscriminatorJPCSV = new TH2F("DiscriminatorJPCSV","DiscriminatorJPCSV",60,0,3,60,0,1); TH2F* DiscriminatorJPSM = new TH2F("DiscriminatorJPSM","DiscriminatorJPSM",60,0,3,60,0,1); TH2F* DiscriminatorJPSE = new TH2F("DiscriminatorJPSE","DiscriminatorJPSE",60,0,3,60,0,1); TH2F* DiscriminatorCSVSM = new TH2F("DiscriminatorCSVSM","DiscriminatorCSVSM",60,0,1,60,0,1); TH2F* DiscriminatorCSVSE = new TH2F("DiscriminatorCSVSE","DiscriminatorCSVSE",60,0,1,60,0,1); TH2F* DiscriminatorSMSE = new TH2F("DiscriminatorSMSE","DiscriminatorSMSE",60,0,1,60,0,1); for (Int_t i=0;i<nentries; i++) { // for (Int_t i=0;i<100; i++) { oldtree->GetEntry(i); //separate in flavour of jet??? //if(flavour){ for(int j = 0; j < algoDiscriminator->size(); j++){ if(j==0) DiscriminatorJP->Fill((*algoDiscriminator)[j]); if(j==1) DiscriminatorCSV->Fill((*algoDiscriminator)[j]); if(j==2) DiscriminatorSM->Fill((*algoDiscriminator)[j]); if(j==3) DiscriminatorSE->Fill((*algoDiscriminator)[j]); if( algoDiscriminator->size()==4){ // cout << "JP: " << (*algoDiscriminator)[0] << endl; // cout << "CSV: " << (*algoDiscriminator)[1] << endl; // cout << "SM: " << (*algoDiscriminator)[2] << endl; // cout << "SE: " << (*algoDiscriminator)[3] << endl; // if((*algoDiscriminator)[0] < 9999. && (*algoDiscriminator)[1] < 9999. && (*algoDiscriminator)[0] > -0.5 && (*algoDiscriminator)[1] > -0.5) DiscriminatorJPCSV->Fill((*algoDiscriminator)[0],(*algoDiscriminator)[1]); // if((*algoDiscriminator)[0] < 9999. && (*algoDiscriminator)[2] < 9999. && (*algoDiscriminator)[0] > -0.5 && (*algoDiscriminator)[2] > -0.5) DiscriminatorJPSM->Fill((*algoDiscriminator)[0],(*algoDiscriminator)[2]); // if((*algoDiscriminator)[0] < 9999. && (*algoDiscriminator)[3] < 9999. && (*algoDiscriminator)[0] > -0.5 && (*algoDiscriminator)[3] > -0.5) DiscriminatorJPSE->Fill((*algoDiscriminator)[0],(*algoDiscriminator)[3]); // if((*algoDiscriminator)[1] < 9999. && (*algoDiscriminator)[2] < 9999. && (*algoDiscriminator)[1] > -0.5 && (*algoDiscriminator)[2] > -0.5) DiscriminatorCSVSM->Fill((*algoDiscriminator)[1],(*algoDiscriminator)[2]); // if((*algoDiscriminator)[1] < 9999. && (*algoDiscriminator)[3] < 9999. && (*algoDiscriminator)[1] > -0.5 && (*algoDiscriminator)[3] > -0.5) DiscriminatorCSVSE->Fill((*algoDiscriminator)[1],(*algoDiscriminator)[3]); // if((*algoDiscriminator)[2] < 9999. && (*algoDiscriminator)[3] < 9999. && (*algoDiscriminator)[2] > -0.5 && (*algoDiscriminator)[3] > -0.5) DiscriminatorSMSE->Fill((*algoDiscriminator)[2],(*algoDiscriminator)[3]); } } } Double_t correlationJPCSV = DiscriminatorJPCSV->GetCorrelationFactor(); Double_t correlationJPSM = DiscriminatorJPSM->GetCorrelationFactor(); Double_t correlationJPSE = DiscriminatorJPSE->GetCorrelationFactor(); Double_t correlationCSVSM = DiscriminatorCSVSM->GetCorrelationFactor(); Double_t correlationCSVSE = DiscriminatorCSVSE->GetCorrelationFactor(); Double_t correlationSMSE = DiscriminatorSMSE->GetCorrelationFactor(); //Double_t correlationJPCSV = 0.72; //Double_t correlationJPSM = 0.46; //Double_t correlationJPSE = 0.33; //Double_t correlationCSVSM = 0.44; //Double_t correlationCSVSE = 0.29; //Double_t correlationSMSE = 0.25; cout <<correlationJPCSV << endl; cout <<correlationJPSM << endl; cout <<correlationJPSE << endl; cout <<correlationCSVSM << endl; cout <<correlationCSVSE << endl; cout <<correlationSMSE << endl; /* TGraph2D * correlation = new TGraph2D(16); correlation->SetNpx(4); correlation->SetNpy(4); correlation->SetPoint(0,1,4,1); //JP vs JP correlation->SetPoint(1,2,4,correlationJPCSV); //JP vs CSV correlation->SetPoint(2,3,4,correlationJPSM); //JP vs SM correlation->SetPoint(3,4,4,correlationJPSE); //JP vs SE correlation->SetPoint(4,1,3,correlationJPCSV); //CSV vs JP correlation->SetPoint(5,2,3,1); //CSV vs CSV correlation->SetPoint(6,2,2,correlationCSVSM); //CSV vs SM correlation->SetPoint(7,2,1,correlationCSVSE); //CSV vs SE correlation->SetPoint(8,1,2,correlationJPSM); //SM vs JP correlation->SetPoint(9,3,3,correlationCSVSM); //SM vs CSV correlation->SetPoint(10,3,2,1); //SM vs SM correlation->SetPoint(11,3,1,correlationSMSE); //SM vs SE correlation->SetPoint(12,1,1,correlationJPSE); //SE vs JP correlation->SetPoint(13,4,3,correlationCSVSE); //SE vs CSV correlation->SetPoint(14,4,2,correlationSMSE); //SE vs SM correlation->SetPoint(15,4,1,1); //SE vs SE TCanvas *c = new TCanvas("c","Graph2D",0,0,600,600); correlation->SetTitle(""); correlation->GetXaxis()->SetNdivisions(100,0); correlation->GetYaxis()->SetNdivisions(100,0); correlation->GetXaxis()->SetLabelSize(0.08); correlation->GetYaxis()->SetLabelSize(0.08); correlation->GetXaxis()->SetBinLabel(1, "JP"); correlation->GetXaxis()->SetBinLabel(2, "CSV"); correlation->GetXaxis()->SetBinLabel(3, "SE"); correlation->GetXaxis()->SetBinLabel(4, "SM"); correlation->GetYaxis()->SetBinLabel(1, "SM"); correlation->GetYaxis()->SetBinLabel(2, "SE"); correlation->GetYaxis()->SetBinLabel(3, "CSV"); correlation->GetYaxis()->SetBinLabel(4, "JP"); gStyle->SetPalette(1); gPad->SetTicks(2,1); // correlation->Draw("text,colz"); correlation->Draw("colz"); */ TFile *oldfile_b = new TFile("train_B_save.root"); TFile *oldfile_c = new TFile("train_C_save.root"); // TFile *oldfile_dusg = new TFile("train_DUSG_save.root"); TTree *treeb = (TTree*)oldfile_b->Get("combinedMVA_save"); TTree *treec = (TTree*)oldfile_c->Get("combinedMVA_save"); // TTree *treedusg = (TTree*)oldfile_dusg->Get("combinedMVA_save"); Int_t nentriesb = (Int_t)treeb->GetEntries(); Int_t nentriesc = (Int_t)treec->GetEntries(); // Int_t nentriesdusg = (Int_t)treedusg->GetEntries(); //Access jet trackSip3dSig to split depending on ntracks vector<double> *algoDiscriminatorb; treeb->SetBranchAddress("algoDiscriminator",&algoDiscriminatorb); for (Int_t i=0;i<nentriesb; i++) { // for (Int_t i=0;i<100; i++) { treeb->GetEntry(i); for(int j = 0; j < algoDiscriminatorb->size(); j++){ if(j==0) DiscriminatorJP_B->Fill((*algoDiscriminatorb)[j]); if(j==1) DiscriminatorCSV_B->Fill((*algoDiscriminatorb)[j]); if(j==2) DiscriminatorSM_B->Fill((*algoDiscriminatorb)[j]); if(j==3) DiscriminatorSE_B->Fill((*algoDiscriminatorb)[j]); } } vector<double> *algoDiscriminatorc; treec->SetBranchAddress("algoDiscriminator",&algoDiscriminatorc); for (Int_t i=0;i<nentriesc; i++) { // for (Int_t i=0;i<100; i++) { treec->GetEntry(i); for(int j = 0; j < algoDiscriminatorc->size(); j++){ if(j==0) DiscriminatorJP_C->Fill((*algoDiscriminatorc)[j]); if(j==1) DiscriminatorCSV_C->Fill((*algoDiscriminatorc)[j]); if(j==2) DiscriminatorSM_C->Fill((*algoDiscriminatorc)[j]); if(j==3) DiscriminatorSE_C->Fill((*algoDiscriminatorc)[j]); } } /* vector<double> *algoDiscriminatordusg; treedusg->SetBranchAddress("algoDiscriminator",&algoDiscriminatordusg); for (Int_t i=0;i<nentriesdusg; i++) { // for (Int_t i=0;i<100; i++) { treedusg->GetEntry(i); for(int j = 0; j < algoDiscriminatordusg->size(); j++){ if(j==0) DiscriminatorJP_DUSG->Fill((*algoDiscriminatordusg)[j]); if(j==1) DiscriminatorCSV_DUSG->Fill((*algoDiscriminatordusg)[j]); if(j==2) DiscriminatorSM_DUSG->Fill((*algoDiscriminatordusg)[j]); if(j==3) DiscriminatorSE_DUSG->Fill((*algoDiscriminatordusg)[j]); } } */ /* //plot the histograms! //b = red, c = green, light = blue TCanvas *c1 = new TCanvas("c1"); DiscriminatorJP_DUSG->SetTitle(""); DiscriminatorJP_DUSG->GetXaxis()->SetTitle("discriminator JP"); DiscriminatorJP_DUSG->GetXaxis()->SetRangeUser(0,3); DiscriminatorJP_B->SetLineWidth(2); DiscriminatorJP_C->SetLineWidth(2); DiscriminatorJP_DUSG->SetLineWidth(2); DiscriminatorJP_B->SetLineColor(2); DiscriminatorJP_C->SetLineColor(8); DiscriminatorJP_DUSG->SetLineColor(4); DiscriminatorJP_DUSG->DrawNormalized(); DiscriminatorJP_C->DrawNormalized("same"); DiscriminatorJP_B->DrawNormalized("same"); TLegend* leg = new TLegend(0.65,0.65,0.95,0.9); leg->SetFillColor(0); leg->AddEntry(DiscriminatorJP_B,"b","L"); leg->AddEntry(DiscriminatorJP_C,"c","L"); leg->AddEntry(DiscriminatorJP_DUSG,"dusg","L"); leg->Draw("SAME"); c1->SaveAs("DiscriminatorJP.png"); */ //b = red, c = green, light = blue TCanvas *c2 = new TCanvas("c2"); DiscriminatorCSV_B->SetTitle(""); DiscriminatorCSV_B->GetXaxis()->SetTitle("discriminator CSV"); DiscriminatorCSV_B->GetXaxis()->SetRangeUser(0,1); DiscriminatorCSV_B->SetLineWidth(2); DiscriminatorCSV_C->SetLineWidth(2); //DiscriminatorCSV_DUSG->SetLineWidth(2); DiscriminatorCSV_B->SetLineColor(2); DiscriminatorCSV_C->SetLineColor(8); //DiscriminatorCSV_DUSG->SetLineColor(4); DiscriminatorCSV_B->DrawNormalized(); DiscriminatorCSV_C->DrawNormalized("same"); //DiscriminatorCSV_DUSG->DrawNormalized("same"); TLegend* leg = new TLegend(0.7,0.75,0.95,0.9); leg->SetFillColor(0); leg->AddEntry(DiscriminatorCSV_B,"b","L"); leg->AddEntry(DiscriminatorCSV_C,"c","L"); //leg->AddEntry(DiscriminatorCSV_DUSG,"dusg","L"); //leg->Draw("SAME"); c2->SaveAs("DiscriminatorCSV.png"); //b = red, c = green, light = blue TCanvas *c3 = new TCanvas("c3"); DiscriminatorSM_B->SetTitle(""); DiscriminatorSM_B->GetXaxis()->SetTitle("discriminator SM"); DiscriminatorSM_B->GetXaxis()->SetRangeUser(0,1); DiscriminatorSM_B->SetLineWidth(2); DiscriminatorSM_C->SetLineWidth(2); //DiscriminatorSM_DUSG->SetLineWidth(2); DiscriminatorSM_B->SetLineColor(2); DiscriminatorSM_C->SetLineColor(8); //DiscriminatorSM_DUSG->SetLineColor(4); DiscriminatorSM_B->DrawNormalized(); DiscriminatorSM_C->DrawNormalized("same"); //DiscriminatorSM_DUSG->DrawNormalized("same"); TLegend* leg = new TLegend(0.6,0.4,0.95,0.9); leg->SetFillColor(0); leg->AddEntry(DiscriminatorSM_B,"b","L"); leg->AddEntry(DiscriminatorSM_C,"c","L"); //leg->AddEntry(DiscriminatorSM_DUSG,"dusg","L"); //leg->Draw("SAME"); c3->SaveAs("DiscriminatorSM.png"); //b = red, c = green, light = blue TCanvas *c4 = new TCanvas("c4"); DiscriminatorSE_B->SetTitle(""); DiscriminatorSE_B->GetXaxis()->SetTitle("discriminator SE"); DiscriminatorSE_B->GetXaxis()->SetRangeUser(0,1); DiscriminatorSE_B->SetLineWidth(2); DiscriminatorSE_C->SetLineWidth(2); //DiscriminatorSE_DUSG->SetLineWidth(2); DiscriminatorSE_B->SetLineColor(2); DiscriminatorSE_C->SetLineColor(8); //DiscriminatorSE_DUSG->SetLineColor(4); DiscriminatorSE_B->DrawNormalized(); DiscriminatorSE_C->DrawNormalized("same"); DiscriminatorSE_DUSG->DrawNormalized("same"); TLegend* leg = new TLegend(0.6,0.4,0.95,0.9); leg->SetFillColor(0); leg->AddEntry(DiscriminatorSE_B,"b","L"); leg->AddEntry(DiscriminatorSE_C,"c","L"); //leg->AddEntry(DiscriminatorSE_DUSG,"dusg","L"); //leg->Draw("SAME"); c4->SaveAs("DiscriminatorSE.png"); newfile->cd(); DiscriminatorJP->Write(); DiscriminatorCSV->Write(); DiscriminatorSM->Write(); DiscriminatorSE->Write(); DiscriminatorJP_B->Write(); DiscriminatorCSV_B->Write(); DiscriminatorSM_B->Write(); DiscriminatorSE_B->Write(); DiscriminatorJP_C->Write(); DiscriminatorCSV_C->Write(); DiscriminatorSM_C->Write(); DiscriminatorSE_C->Write(); DiscriminatorJP_DUSG->Write(); DiscriminatorCSV_DUSG->Write(); DiscriminatorSM_DUSG->Write(); DiscriminatorSE_DUSG->Write(); DiscriminatorJPCSV->Write(); DiscriminatorJPSM->Write(); DiscriminatorJPSE->Write(); DiscriminatorCSVSM->Write(); DiscriminatorCSVSE->Write(); DiscriminatorSMSE->Write(); //correlation->Write(); newfile->Close(); //newtree->Print(); /// newtree->AutoSave(); delete oldfile; //delete newfile; }