// per compilare: g++ -Wall -o copy `root-config --cflags --glibs` -L $ROOTSYS/lib -lRooFit -lRooFitCore -lFoam -lHtml -lMinuit copytree.cc #include #include #include #include #include #include using namespace std; void copytree(TTree* t, TString outname); int main(int argc, char* argv[]) { //TString dir = "root://cmseos.fnal.gov//eos/uscms/store/user/qliphy/ori/"; TString dir = "/eos/uscms/store/user/qliphy/jie/ms/makesmall/"; TString infilename = argv[1]; if (infilename.Contains(".root") == 0) { return 1; } TString outname = "out" + infilename; std::cout << outname << std::endl; TFile* file1 = TFile::Open(dir + infilename); TTree* tree1 = (TTree*)file1->Get("demo"); copytree(tree1, outname); std::cout << outname << std::endl; file1->Close(); return 0; } void copytree(TTree* t, TString outname) { // Create a new file + a clone of old tree in new file TFile newfile(outname, "recreate"); auto newtree = t->CloneTree(0); /* int lep; int nlooseeles; int nloosemus; double mtVlepJECnew; double ptlep1; double etalep1; double MET_et; int HLT_Ele2; t->SetBranchAddress("lep", &lep); t->SetBranchAddress("nlooseeles", &nlooseeles); t->SetBranchAddress("nloosemus", &nloosemus); t->SetBranchAddress("mtVlepJECnew", &mtVlepJECnew); t->SetBranchAddress("ptlep1", &ptlep1); t->SetBranchAddress("etalep1", &etalep1); t->SetBranchAddress("MET_et", &MET_et); t->SetBranchAddress("HLT_Ele2", &HLT_Ele2); int nentries = t->GetEntriesFast(); for (int i = 0; i < nentries; i++) { t->GetEntry(i); if (i % 10000000 == 0) cout << "copy event\t " << i << "\t from \t " << nentries << endl; bool pass = (lep == 11 && nlooseeles < 2 && nloosemus == 0 && mtVlepJECnew > 30 && ptlep1 > 30 && fabs(etalep1) < 2.5 && MET_et > 30 && HLT_Ele2 == 1); if (pass) { newtree->Fill(); } } */ TTreeReader fReader(t); TTreeReaderValue scalef = {fReader, "scalef"}; TTreeReaderValue nVtx = {fReader, "nVtx"}; TTreeReaderValue theWeight = {fReader, "theWeight"}; TTreeReaderValue nump = {fReader, "nump"}; TTreeReaderValue numm = {fReader, "numm"}; TTreeReaderValue npT = {fReader, "npT"}; TTreeReaderValue lep = {fReader, "lep"}; TTreeReaderValue ptVlepJEC = {fReader, "ptVlepJEC"}; TTreeReaderValue yVlepJEC = {fReader, "yVlepJEC"}; TTreeReaderValue phiVlepJEC = {fReader, "phiVlepJEC"}; TTreeReaderValue mtVlepJECnew = {fReader, "mtVlepJECnew"}; TTreeReaderValue nlooseeles = {fReader, "nlooseeles"}; TTreeReaderValue nloosemus = {fReader, "nloosemus"}; TTreeReaderArray photon_pt = {fReader, "photon_pt"}; TTreeReaderArray photon_eta = {fReader, "photon_eta"}; TTreeReaderArray photon_phi = {fReader, "photon_phi"}; TTreeReaderArray photon_hoe = {fReader, "photon_hoe"}; TTreeReaderArray photon_sieie = {fReader, "photon_sieie"}; TTreeReaderArray photon_sieie2 = {fReader, "photon_sieie2"}; TTreeReaderArray photon_chiso = {fReader, "photon_chiso"}; TTreeReaderArray photon_nhiso = {fReader, "photon_nhiso"}; TTreeReaderArray photon_phoiso = {fReader, "photon_phoiso"}; TTreeReaderArray photon_isprompt = {fReader, "photon_isprompt"}; TTreeReaderArray photon_drla = {fReader, "photon_drla"}; TTreeReaderValue ptlep1 = {fReader, "ptlep1"}; TTreeReaderValue etalep1 = {fReader, "etalep1"}; TTreeReaderValue philep1 = {fReader, "philep1"}; TTreeReaderValue isprompt = {fReader, "isprompt"}; TTreeReaderValue ispromptLep = {fReader, "ispromptLep"}; TTreeReaderValue MET_et = {fReader, "MET_et"}; TTreeReaderValue MET_phi = {fReader, "MET_phi"}; TTreeReaderValue HLT_Ele1 = {fReader, "HLT_Ele1"}; TTreeReaderValue HLT_Ele2 = {fReader, "HLT_Ele2"}; TTreeReaderValue HLT_Mu1 = {fReader, "HLT_Mu1"}; TTreeReaderValue HLT_Mu2 = {fReader, "HLT_Mu2"}; TTreeReaderValue HLT_Mu3 = {fReader, "HLT_Mu3"}; TTreeReaderValue lumiWeight = {fReader, "lumiWeight"}; TTreeReaderValue pileupWeight = {fReader, "pileupWeight"}; TTreeReaderValue lep1_sign = {fReader, "lep1_sign"}; TTreeReaderValue muon1_trackerLayers = {fReader, "muon1_trackerLayers"}; TTreeReaderValue matchedgenMu1_pt = {fReader, "matchedgenMu1_pt"}; TTreeReaderValue Mla = {fReader, "Mla"}; TTreeReaderValue photonhaspixelseed = {fReader, "photonhaspixelseed"}; TTreeReaderValue photonpasseleveto = {fReader, "photonpasseleveto"}; TTreeReaderValue photonet = {fReader, "photonet"}; TTreeReaderValue photoneta = {fReader, "photoneta"}; TTreeReaderValue photonphi = {fReader, "photonphi"}; TTreeReaderValue photone = {fReader, "photone"}; TTreeReaderValue photonsieie = {fReader, "photonsieie"}; TTreeReaderValue photonphoiso = {fReader, "photonphoiso"}; TTreeReaderValue photonchiso = {fReader, "photonchiso"}; TTreeReaderValue photonnhiso = {fReader, "photonnhiso"}; TTreeReaderValue drla = {fReader, "drla"}; TTreeReaderValue jet1pt = {fReader, "jet1pt"}; TTreeReaderValue jet1eta = {fReader, "jet1eta"}; TTreeReaderValue jet1phi = {fReader, "jet1phi"}; TTreeReaderValue jet1e = {fReader, "jet1e"}; TTreeReaderValue jet1icsv = {fReader, "jet1icsv"}; TTreeReaderValue jet2pt = {fReader, "jet2pt"}; TTreeReaderValue jet2eta = {fReader, "jet2eta"}; TTreeReaderValue jet2phi = {fReader, "jet2phi"}; TTreeReaderValue jet2e = {fReader, "jet2e"}; TTreeReaderValue jet2icsv = {fReader, "jet2icsv"}; TTreeReaderValue drj1a = {fReader, "drj1a"}; TTreeReaderValue drj2a = {fReader, "drj2a"}; TTreeReaderValue drj1l = {fReader, "drj1l"}; TTreeReaderValue drj2l = {fReader, "drj2l"}; TTreeReaderValue Mjj = {fReader, "Mjj"}; TTreeReaderValue deltaeta = {fReader, "deltaeta"}; TTreeReaderValue zepp = {fReader, "zepp"}; TTreeReaderValue j1metPhi = {fReader, "j1metPhi"}; TTreeReaderValue j2metPhi = {fReader, "j2metPhi"}; TTreeReaderValue Dphiwajj = {fReader, "Dphiwajj"}; int maxEntries = fReader.GetEntries(false); int i = 0; while (fReader.Next()) { if (i % 10000000 == 0) cout << "copy event\t " << i << "\t from \t " << maxEntries << flush; bool pass = (*lep == 11 && *nlooseeles < 2 && *nloosemus == 0 && *mtVlepJECnew > 30 && *ptlep1 > 30 && fabs(*etalep1) < 2.5 && *MET_et > 30 && *HLT_Ele2 == 1); if (pass) { newtree->Fill(); } i++; } newtree->Write(); newfile.Close(); }