3 from __future__
import print_function
13 pass_ra2b=
"globalTightHalo2016Filter==1&&HBHENoiseFilter==1&&HBHEIsoNoiseFilter==1&&eeBadScFilter==1" 15 return "nleps>=1&&st>500&&met>100" 17 return "nleps>=1&&(ht+Sum$(leps_pt))>500&&met>150&&njets>=5" 19 return "nleps>=1&&st>500&&met>150&&met<=200&&njets>=5" 21 return "met>200&&nvleps==0&&njets>=4&&njets<=5&&nbt>=2&&!low_dphi&&hig_drmax<2.2" 23 return "nleps==1&&st>500&&max(met,met_tru)>200&&njets>=6&&nbm>=1&&mj14>250&&nveto==0" 25 return "nleps==1&&st>500&&met>200&&njets>=6&&nbm>=1" 27 return "nleps==1&&max(ht,Max$(sys_ht))>500&&max(met,Max$(sys_met))>200&&max(njets,Max$(sys_njets))>=6&&max(nbm,Max$(sys_nbm))>=1&&max(mj,Max$(sys_mj))>250" 29 return "nvleps==2&&nleps>=1&&Max$(leps_pt)>30&&((elelv_m>80&&elelv_m<100)||(mumuv_m>80&&mumuv_m<100))" 31 return "nvleps==2&&nleps>=1&&Max$(leps_pt)>30&&((elelv_m>80&&elelv_m<100)||(mumuv_m>80&&mumuv_m<100))&&ht>300" 33 return "nvleps==2&&nleps>=1&&max(Max$(mus_pt*(mus_tight&&mus_reliso<.1)),Max$(els_pt*(els_tight&&els_reliso<.1)))>30&&nbm==2" 35 return "met>100&&max(Max$(mus_pt*(mus_tight&&mus_reliso<.1)),Max$(els_pt*(els_tight&&els_reliso<.1)))>30&&nbl==0" 36 elif cut==
"wisrht200":
37 return "ht>200&&met>100&&max(Max$(mus_pt*(mus_tight&&mus_reliso<.1)),Max$(els_pt*(els_tight&&els_reliso<.1)))>30&&nbl==0" 38 elif cut==
"ttdilep_ht300":
39 return "nels==1&&nmus==1&&Max$(leps_pt)>30&&ht>300&&met>100&&nbm>=1" 41 return "ht>1000&&met<50&&(nvmus+nvels)==0" 42 elif cut==
"qcd_njet10":
43 return "ht>1000&&met<50&&(nvmus+nvels)==0&&njets>=10" 45 return "Sum$(mm_nleps>=1&&mm_ht>500.&&mm_met>200.)>0" 46 elif cut==
"mm_std_nj5mj250":
47 return "Sum$(mm_nleps>=1&&mm_ht>500&&mm_met>200&&mm_njets>=5&&mm_mj14_lep>250)>0||Sum$(mm_nleps>=1&&mm_ht>500&&mm_met>200&&mm_njets>=5&&mm_mj14_nolep>250)>0" 49 return pass_ra2b+
"&&(@Electrons.size()+@Muons.size())==0&&NJets>=3" 50 elif cut==
"ra2_ht300":
51 return pass_ra2b+
"&&HT>300" 52 elif cut==
"ra2_eht300":
53 return pass_ra2b+
"&&Max$(Electrons.Pt()*(abs(Electrons.Eta())<2))>35&&HT>300" 54 elif cut==
"ra2_zmht200":
55 return pass_ra2b+
"&&@ZCandidates.size()>=1&&MHT>200" 59 def skimFiles(in_files, out_file, cut, keep_existing):
67 print(
"INPUT FILES:",in_files,
"\n")
68 print(
"OUTPUT FILE:",out_file,
"\n")
69 print(
" CUT:",cut,
"\n")
71 if keep_existing
and os.path.exists(out_file):
72 print(
"Keeping pre-existing "+out_file+
"\n")
75 in_tree = ROOT.TChain(
"tree",
"tree")
76 for in_file
in in_files:
80 out_tree = in_tree.CopyTree(cut)
83 if __name__ ==
"__main__":
84 parser = argparse.ArgumentParser(description=
"Skims non-SMS ntuples.",
85 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
86 parser.add_argument(
"cut", help=
"Skim cut to apply.")
87 parser.add_argument(
"out_file", help=
"File in which to save skim.")
88 parser.add_argument(
"in_files", nargs=
"+", help=
"Files to skim.")
89 parser.add_argument(
"-k",
"--keep_existing", action=
"store_true",
90 help=
"Do not overwrite output file if it already exists.")
91 args = parser.parse_args()
93 skimFiles(args.in_files, args.out_file, args.cut, args.keep_existing)
def skimFiles(in_files, out_file, cut, keep_existing)