def main(): parser = argparse.ArgumentParser(description='pythia8 fastjet on the fly', prog=os.path.basename(__file__)) pyconf.add_standard_pythia_args(parser) args = parser.parse_args() # print the banner first fj.ClusterSequence.print_banner() print() # set up our jet definition and a jet selector jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(5.0) & fj.SelectorAbsEtaMax(2) print(jet_def) all_jets = [] # mycfg = ['PhaseSpace:pThatMin = 100'] mycfg = [] pythia = pyconf.create_and_init_pythia_from_args(args, mycfg) if args.nev < 100: args.nev = 100 for i in tqdm.tqdm(range(args.nev)): if not pythia.next(): continue parts = pythiafjext.vectorize(pythia, True, -1, 1, False) jets = jet_selector(jet_def(parts)) all_jets.extend(jets) pythia.stat() jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print('making lund diagram for all jets...') lunds = [lund_gen.result(j) for j in all_jets] print('listing lund plane points... Delta, kt - for {} selected jets'.format(len(all_jets))) for l in lunds: print ('- jet pT={0:5.2f} eta={1:5.2f}'.format(l[0].pair().perp(), l[0].pair().eta())) print (' Deltas={}'.format([s.Delta() for s in l])) print (' kts={}'.format([s.Delta() for s in l])) print ( ) print('[i] reclustering and using soft drop...') jet_def_rc = fj.JetDefinition(fj.cambridge_algorithm, 1.0) print('Reclustering:', jet_def_rc) rc = fjcontrib.Recluster(jet_def_rc, True) sd = fjcontrib.SoftDrop(0, 0.1, 1.0) for i,j in enumerate(all_jets): j_rc = rc.result(j) print() print('- [{0:3d}] orig pT={1:10.3f} reclustered pT={2:10.3f}'.format(i, j.perp(), j_rc.perp())) j_sd = sd.result(j) print(' |-> after soft drop pT={0:10.3f} delta={1:10.3f}'.format(j_sd.perp(), j_sd.perp() - j.perp())) sd_info = fjcontrib.get_SD_jet_info(j_sd) print(" |-> SD jet params z={0:10.3f} dR={1:10.3f} mu={2:10.3f}".format(sd_info.z, sd_info.dR, sd_info.mu))
def main(): parser = argparse.ArgumentParser(description='jetscape in python', \ prog=os.path.basename(__file__)) parser.add_argument('-i', '--input', help='input file', \ default='low', type=str, required=True) parser.add_argument('--nev', help='number of events', \ default=1000, type=int) args = parser.parse_args() plot_hadrons = False plot_final_state_partons = True plot_nth_partons = False include_thermal_background = False # Initialize histogram dictionary hDict = initializeHistograms() # Use pyhepmc_ng to parse the HepMC file input_hepmc = pyhepmc_ng.ReaderAscii(args.input) if input_hepmc.failed(): print("[error] unable to read from {}".format(args.input)) sys.exit(1) # jet finder fj.ClusterSequence.print_banner() print() jetR = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jetR) jet_selector = fj.SelectorPtMin(50.0) & fj.SelectorAbsEtaMax(2) # Jet re-clustering definition, for primary Lund plane jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, jetR) lund_gen = fjcontrib.LundGenerator(jet_def_lund) # Load thermal background: array of dataframes, one per event if include_thermal_background: thermal_background_array = get_thermal_background() # Loop through events all_jets_hadron = [] all_jets_parton = [] kt_shower_list = [] event_hepmc = pyhepmc_ng.GenEvent() pbar = tqdm.tqdm(range(args.nev)) while not input_hepmc.failed(): ev = input_hepmc.read_event(event_hepmc) if input_hepmc.failed(): nstop = pbar.n pbar.close() print('End of HepMC file at event {} '.format(nstop)) break if plot_hadrons: hadrons = get_hadrons(event_hepmc) jets_hadron = find_jets(jet_def, jet_selector, hadrons) all_jets_hadron.extend(jets_hadron) if plot_final_state_partons: parton_list = get_final_partons(event_hepmc, hDict) elif plot_nth_partons: # Get the first parton in the shower (it is apparently the child of the initiating parton) first_parton = [] first_parton.append( get_first_parton(event_hepmc, hDict).children[0]) #print('-----------------------------') #print('First parton E: {}'.format(first_parton[0].momentum.e)) n = 3 parton_list = get_nth_partons(first_parton, n) #print('Total number of partons: {}'.format(len(parton_list))) fj_particles = [] for parton in parton_list: fj_particles.append( fj.PseudoJet(parton.momentum.px, parton.momentum.py, parton.momentum.pz, parton.momentum.e)) # Append thermal background if include_thermal_background: thermal_background_df = thermal_background_array[0] thermal_background_fjparticles = get_fjparticles( thermal_background_df) fj_particles.extend(thermal_background_fjparticles) jets_parton = find_jets(jet_def, jet_selector, fj_particles) all_jets_parton.extend(jets_parton) # Analyze shower history max_kt = get_max_kt_shower(event_hepmc, hDict) kt_shower_list.append(max_kt) pbar.update() if pbar.n >= args.nev: pbar.close() print('{} event limit reached'.format(args.nev)) break print('Constructing histograms...') if plot_hadrons: n_jets_hadron = len(all_jets_hadron) print('n_jets_hadron: {}'.format(n_jets_hadron)) n_jets_parton = len(all_jets_parton) print('n_jets_parton: {}'.format(n_jets_parton)) # Fill histogram if plot_hadrons: [fill_jet_histogram(hDict, jet) for jet in all_jets_hadron] # Fill Lund diagram # Note: l in lunds, l is the list of splittings in a given jet (following hardest splitting) lunds_hadron = [lund_gen.result(jet) for jet in all_jets_hadron] [ fill_lund_histogram(hDict, "hLundHadron", splitting_list) for splitting_list in lunds_hadron ] hDict['hLundHadron'].Scale(1. / n_jets_hadron, "width") lunds_parton = [lund_gen.result(jet) for jet in all_jets_parton] [ fill_lund_histogram(hDict, "hLundParton", splitting_list) for splitting_list in lunds_parton ] hDict['hLundParton'].Scale(1. / n_jets_parton, "width") for splitting_list in lunds_parton: max_kt_recluster = 0 for split in splitting_list: kt = split.kt() if kt > max_kt_recluster: max_kt_recluster = kt hDict['hMaxKT_2D'].Fill(np.log(max_kt_recluster), np.log(kt)) plot_histograms(hDict)
def main(): parser = argparse.ArgumentParser(description='pythia8 in python', prog=os.path.basename(__file__)) parser.add_argument('-i', '--input', help='input file', default='low', type=str, required=True) parser.add_argument('--hepmc', help='what format 2 or 3', default=2, type=int) parser.add_argument('--nev', help='number of events', default=10, type=int) args = parser.parse_args() ### # now lets read the HEPMC file and do some jet finding if args.hepmc == 3: input_hepmc = pyhepmc_ng.ReaderAscii(args.input) if args.hepmc == 2: input_hepmc = pyhepmc_ng.ReaderAsciiHepMC2(args.input) if input_hepmc.failed(): print("[error] unable to read from {}".format(args.input)) sys.exit(1) # jet finder # print the banner first fj.ClusterSequence.print_banner() print() jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(10.0) & fj.SelectorPtMax( 500.0) & fj.SelectorAbsEtaMax(3) all_jets = [] event_hepmc = pyhepmc_ng.GenEvent() pbar = tqdm.tqdm(range(args.nev)) while not input_hepmc.failed(): ev = input_hepmc.read_event(event_hepmc) if input_hepmc.failed(): break jets_hepmc = find_jets_hepmc(jet_def, jet_selector, event_hepmc) all_jets.extend(jets_hepmc) pbar.update() if pbar.n >= args.nev: break jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print('[i] making lund diagram for all jets...') lunds = [lund_gen.result(j) for j in all_jets] print('[i] listing lund plane points... Delta, kt - for {} selected jets'. format(len(all_jets))) for l in lunds: if len(l) < 1: continue print('- jet pT={0:5.2f} eta={1:5.2f}'.format(l[0].pair().perp(), l[0].pair().eta())) print(' Deltas={}'.format([s.Delta() for s in l])) print(' kts={}'.format([s.kt() for s in l])) print() print('[i] reclustering and using soft drop...') jet_def_rc = fj.JetDefinition(fj.cambridge_algorithm, 0.1) print('[i] Reclustering:', jet_def_rc) all_jets_sd = [] rc = fjcontrib.Recluster(jet_def_rc, True) sd = fjcontrib.SoftDrop(0, 0.1, 1.0) for i, j in enumerate(all_jets): j_rc = rc.result(j) print() print('- [{0:3d}] orig pT={1:10.3f} reclustered pT={2:10.3f}'.format( i, j.perp(), j_rc.perp())) j_sd = sd.result(j) print(' |-> after soft drop pT={0:10.3f} delta={1:10.3f}'.format( j_sd.perp(), j_sd.perp() - j.perp())) all_jets_sd.append(j_sd) sd_info = fjcontrib.get_SD_jet_info(j_sd) print( " |-> SD jet params z={0:10.3f} dR={1:10.3f} mu={2:10.3f}".format( sd_info.z, sd_info.dR, sd_info.mu)) fout = ROOT.TFile('hepmc_jetreco.root', 'recreate') lbins = logbins(1., 500, 50) hJetPt04 = ROOT.TH1D("hJetPt04", "hJetPt04", 50, lbins) hJetPt04sd = ROOT.TH1D("hJetPt04sd", "hJetPt04sd", 50, lbins) [hJetPt04.Fill(j.perp()) for j in all_jets] [hJetPt04sd.Fill(j.perp()) for j in all_jets_sd] hLund = ROOT.TH2D("hLund", "hLund", 60, 0, 6, 100, -4, 5) lunds = [lund_gen.result(j) for j in all_jets if j.perp() > 100] j100 = [j for j in all_jets if j.perp() > 100] print('{} jets above 100 GeV/c'.format(len(j100))) for l in lunds: for s in l: hLund.Fill(math.log(1. / s.Delta()), math.log(s.kt())) fout.Write()
def main(): parser = argparse.ArgumentParser(description='pythia8 in python', prog=os.path.basename(__file__)) parser.add_argument('-i', '--input', help='input file', default='low', type=str, required=True) parser.add_argument('--nev', help='number of events', default=-1, type=int) parser.add_argument('--jetptcut', help='jet pt cut', default=10., type=float) args = parser.parse_args() files = find_files(args.input, "*.txt") print(files) print('[i] number of files found {}'.format(len(files))) # jet finder # print the banner first fj.ClusterSequence.print_banner() print() jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(10.0) & fj.SelectorAbsEtaMax(3) if args.nev < 0: args.nev = len(files) if args.nev > len(files): args.nev = len(files) print("[i] running on {}".format(files[:args.nev])) all_jets = [] for fin in tqdm.tqdm(files[:args.nev]): input_hepmc = hepmc3ext.YuukaRead(fin) if input_hepmc.failed(): print ("[error] unable to read from {}".format(fin)) sys.exit(1) if input_hepmc.nextEvent(): jets = find_jets_hepmc(jet_def, jet_selector, input_hepmc, accept_status=[62]) all_jets.extend(jets) jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print('[i] making lund diagram for all jets...') lunds = [lund_gen.result(j) for j in all_jets] print('[i] reclustering and using soft drop...') jet_def_rc = fj.JetDefinition(fj.cambridge_algorithm, 0.1) print('[i] Reclustering:', jet_def_rc) all_jets_sd = [] rc = fjcontrib.Recluster(jet_def_rc, True) sd = fjcontrib.SoftDrop(0, 0.1, 1.0) fout = ROOT.TFile('hepmc_jetreco.root', 'recreate') lbins = logbins(1., 500, 50) hJetPt04 = ROOT.TH1D("hJetPt04", "hJetPt04", 50, lbins) hJetPt04sd = ROOT.TH1D("hJetPt04sd", "hJetPt04sd", 50, lbins) [hJetPt04.Fill(j.perp()) for j in all_jets] [hJetPt04sd.Fill(j.perp()) for j in all_jets_sd] hLund = ROOT.TH2D("hLund", "hLund", 60, 0, 6, 100, -4, 5) lunds = [lund_gen.result(j) for j in all_jets if j.perp() > args.jetptcut] jsel = [j for j in all_jets if j.perp() > args.jetptcut] print('[i] {} jets above {} GeV/c'.format(len(jsel), args.jetptcut)) for l in lunds: for s in l: hLund.Fill(math.log(1./s.Delta()), math.log(s.kt())) if len(jsel) > 0: hLund.Scale(1./len(jsel)) fout.Write()
def main(): parser = argparse.ArgumentParser(description='pythia8 fastjet on the fly', prog=os.path.basename(__file__)) pyconf.add_standard_pythia_args(parser) _default_output_filename = os.path.basename(__file__).replace( ".py", "") + "_output.root" parser.add_argument('--output', default=_default_output_filename, type=str) parser.add_argument('--debug', default=0, type=int) args = parser.parse_args() # print the banner first fj.ClusterSequence.print_banner() print() # set up our jet definition and a jet selector jet_R0 = 0.6 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(2.0) & fj.SelectorAbsEtaMax(2) print(jet_def) jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, jet_R0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print(jet_def_lund) print(lund_gen) outf = ROOT.TFile(args.output, 'recreate') outf.cd() t = ROOT.TTree('t', 't') tw = RTreeWriter(tree=t) # mycfg = ['PhaseSpace:pThatMin = 100'] mycfg = [] pythia = pyconf.create_and_init_pythia_from_args(args, mycfg) if args.nev < 100: args.nev = 100 for i in tqdm.tqdm(range(args.nev)): if not pythia.next(): continue if args.debug: pwarning('-- event', i) # parts = pythiafjext.vectorize(pythia, True, -1, 1, False) parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kFinal], 0, True) if args.debug > 5: parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kHadron], 0, True) if args.debug > 10: parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kAny], 0, True) if args.debug > 0: for p in parts: pypart = pythiafjext.getPythia8Particle(p) if pypart.name()[:2] == 'D0': pinfo(pypart.name(), pypart.id(), pypart.status(), 'final =?', pypart.isFinal()) jets = jet_selector(jet_def(parts)) for j in jets: isD0_lead = False lead_part = fj.sorted_by_E(j.constituents())[0] pypart = pythiafjext.getPythia8Particle(lead_part) if args.debug: pinfo('leading id is', pypart.id(), pypart.name(), 'jet', j) if abs(pypart.id()) == 421: # pinfo('leading D0') isD0_lead = True l = lund_gen.result(j) if len(l) > 0: tw.fill_branch('Epair', [s.pair().e() for s in l]) tw.fill_branch('z', [s.z() for s in l]) tw.fill_branch('kt', [s.kt() for s in l]) tw.fill_branch('delta', [s.Delta() for s in l]) tw.fill_branch('D0lead', isD0_lead) tw.fill_branch('lead_id', pypart.id()) tw.fill_tree() else: if args.debug: pwarning("len of a lund is less than 1?", len(l), l) pythia.stat() outf.Write() outf.Close() print('[i] written', outf.GetName())
jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(100.0) & fj.SelectorPtMax( 200.0) & fj.SelectorAbsEtaMax(1) sd = fjcontrib.SoftDrop(0, 0.1, 1.0) all_jets = [] for iEvent in tqdm(range(10), 'event'): if not pythia.next(): continue parts = pyfj.vectorize(pythia, True, -1, 1, False) jets = jet_selector(jet_def(parts)) all_jets.extend(jets) all_sd_jets = [sd.result(j) for j in all_jets] pts = [j.pt() for j in all_jets] sd_pts = [j.pt() for j in all_sd_jets] sd_delta_pt = [delta for delta in deltas(all_jets, all_sd_jets)] nangs0 = [pyfj.angularity(j, 0.) for j in all_jets] jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) lunds = [lund_gen.result(j) for j in all_jets] print('listing lund plane points... Delta, kt - for {} selected jets'.format( len(all_jets))) for l in lunds: print('- jet pT={0:5.2f} eta={1:5.2f}'.format(l[0].pair().perp(), l[0].pair().eta())) print(' Deltas={}'.format([s.Delta() for s in l])) print(' kts={}'.format([s.Delta() for s in l]))
def main(): parser = argparse.ArgumentParser(description='pythia8 fastjet on the fly', prog=os.path.basename(__file__)) pyconf.add_standard_pythia_args(parser) parser.add_argument('--nw', help="no warn", default=False, action='store_true') parser.add_argument('--ignore-mycfg', help="ignore some settings hardcoded here", default=False, action='store_true') parser.add_argument('--enable-background', help="enable background calc", default=False, action='store_true') parser.add_argument('--output', help="output file name", default='leadsj_vs_x_output.root', type=str) # for background parser.add_argument('--cent-bin', help="centraility bin 0 is the 0-5 percent most central bin", type=int, default=0) parser.add_argument('--seed', help="pr gen seed", type=int, default=1111) parser.add_argument('--harmonics', help="set harmonics flag (0 : v1 - v5) , (1 : v2 - v5) , (2: v3 - v5) , (3: v1 - v4) , (4: v1 - v3) , (5: uniform dN/dphi no harmonics) , (6 : v1 - v2 , v4 - v5) , (7 : v1 - v3 , v5) , (8 : v1 , v3 - v5) , (9 : v1 only) , (10 : v2 only) , (11 : v3 only) , (12 : v4 only) , (13 : v5 only)", type=int, default=5) parser.add_argument('--eta', help="set eta range must be uniform (e.g. abs(eta) < 0.9, which is ALICE TPC fiducial acceptance)", type=float, default=0.9) parser.add_argument('--qa', help="PrintOutQAHistos", default=False, action='store_true') parser.add_argument('--dRmax', default=0.25, type=float) parser.add_argument('--alpha', default=0, type=float) args = parser.parse_args() # print the banner first fj.ClusterSequence.print_banner() print() # set up our jet definition and a jet selector jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(args.py_pthatmin) & fj.SelectorPtMax(1000.0) & fj.SelectorAbsEtaMax(args.eta - jet_R0) # jet_selector = fj.SelectorPtMin(40.0) & fj.SelectorPtMax(200.0) &fj.SelectorAbsEtaMax(1) print(jet_def) all_jets = [] # mycfg = ['PhaseSpace:pThatMin = 80'] # mycfg = ['PhaseSpace:pThatMin = 40'] mycfg = [''] if args.ignore_mycfg: mycfg = [] pythia = pyconf.create_and_init_pythia_from_args(args, mycfg) if not pythia: perror("pythia initialization failed.") return jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print (lund_gen.description()) dy_groomer = fjcontrib.DynamicalGroomer(jet_def_lund) print (dy_groomer.description()) # sd = fjcontrib.SoftDrop(0, 0.1, 1.0) sd01 = fjcontrib.SoftDrop(0, 0.1, 1.0) print (sd01) sd02 = fjcontrib.SoftDrop(0, 0.2, 1.0) print (sd02) # jet_def_rc01 = fj.JetDefinition(fj.cambridge_algorithm, 0.1) # jet_def_rc02 = fj.JetDefinition(fj.cambridge_algorithm, 0.2) # print (jet_def_rc01) # print (jet_def_rc02) # rc = fjcontrib.Recluster(jet_def_rc, True) jet_def_rc01 = fj.JetDefinition(fj.antikt_algorithm, 0.1) jet_def_rc02 = fj.JetDefinition(fj.antikt_algorithm, 0.2) print (jet_def_rc01) print (jet_def_rc02) #rc = fjcontrib.Recluster(jet_def_rc, True) # tw = treewriter.RTreeWriter(name = 'lsjvsx', file_name = 'leadsj_vs_x.root') tw = treewriter.RTreeWriter(name = 'lsjvsx', file_name = args.output) tgbkg = None be = None if args.enable_background: # ROOT.gSystem.Load("libpyjetty_TennGen.dylib") # tgbkg = ROOT.TennGen() # //constructor # tgbkg.SetCentralityBin(args.cent_bin) # //centraility bin 0 is the 0-5 % most central bin # tgbkg.SetRandomSeed(args.seed) # //setting the seed # tgbkg.SetHarmonics(args.harmonics) # // set harmonics flag (0 : v1 - v5) , (1 : v2 - v5) , (2: v3 - v5) , (3: v1 - v4) , (4: v1 - v3) , (5: uniform dN/dphi no harmonics) , (6 : v1 - v2 , v4 - v5) , (7 : v1 - v3 , v5) , (8 : v1 , v3 - v5) , (9 : v1 only) , (10 : v2 only) , (11 : v3 only) , (12 : v4 only) , (13 : v5 only) # tgbkg.SetEtaRange(args.eta) # //set eta range must be uniform (e.g. |eta| < 0.9, which is ALICE TPC fiducial acceptance) # tgbkg.PrintOutQAHistos(args.qa) # # tgbkg.InitializeBackground() # from pyjetty.mputils import BoltzmannEvent be = BoltzmannEvent(mean_pt=0.7, multiplicity=2000 * args.eta * 2, max_eta=max_eta, max_pt=100) print(be) from pyjetty.mputils import CEventSubtractor, CSubtractorJetByJet cs = CEventSubtractor(alpha=args.alpha, max_distance=args.dRmax, max_eta=args.eta, bge_rho_grid_size=0.25, max_pt_correct=100) print(cs) if args.nev < 100: args.nev = 100 for i in tqdm.tqdm(range(args.nev)): if not pythia.next(): continue # parts = pythiafjext.vectorize(pythia, True, -1, 1, False) partons = pythiafjext.vectorize_select(pythia, [pythiafjext.kParton], 0, True) parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kFinal, pythiafjext.kCharged], 0, False) # parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kFinal], 0, False) jets = jet_selector(jet_def(parts)) # for j in tqdm.tqdm(jets): for j in jets: j_type = match_dR(j, partons, jet_R0 / 2.) if j_type[0] is None: if args.nw: continue pwarning('Jet with no parton label') continue j_sd02 = sd02.result(j) sd02_info = fjcontrib.get_SD_jet_info(j_sd02) j_sd01 = sd01.result(j) sd01_info = fjcontrib.get_SD_jet_info(j_sd01) rc_sjets01 = fj.sorted_by_pt(jet_def_rc01(j.constituents())) rc_sjets02 = fj.sorted_by_pt(jet_def_rc02(j.constituents())) tw.fill_branches( j = j, lund = [ls for ls in lund_gen.result(j)], dyg1 = dy_groomer.result(j, 1), sd01 = j_sd01, sd01_z = sd01_info.z, sd01_mu = sd01_info.mu, sd01_Delta = sd01_info.dR, sd02 = j_sd02, sd02_z = sd02_info.z, sd02_mu = sd02_info.mu, sd02_Delta = sd02_info.dR, # breaking compatibility # sd = j_sd, # sd_z = sd_info.z, # sd_mu = sd_info.mu, # sd_Delta = sd_info.dR, lsjet01 = rc_sjets01[0], nsjet01 = len(rc_sjets01), sjet01 = rc_sjets01, lsjet02 = rc_sjets02[0], nsjet02 = len(rc_sjets02), sjet02 = rc_sjets02, ppid = j_type[0], pquark = j_type[1], pglue = j_type[2], # this is redundancy pycode = pythia.info.code(), pysigmagen = pythia.info.sigmaGen(), pysigmaerr = pythia.info.sigmaErr(), pyid1 = pythia.info.id1pdf(), pyid2 = pythia.info.id1pdf(), pyx1 = pythia.info.x1pdf(), pyx2 = pythia.info.x2pdf(), pypdf1 = pythia.info.pdf1(), pyQfac = pythia.info.QFac(), pyalphaS = pythia.info.alphaS(), pypthat = pythia.info.pTHat(), pymhat = pythia.info.mHat() ) if be: bg_parts = be.generate(offset=10000) full_event = bg_parts tmp = [full_event.push_back(psj) for psj in j.constituents()] if cs: cs_parts = cs.process_event(full_event) rho = cs.bge_rho.rho() bg_jets = fj.sorted_by_pt(jet_def(cs_parts)) for bj in bg_jets: if fjtools.matched_pt(bj, j) > 0.5: pass tw.fill_tree() pythia.stat() tw.write_and_close()
def main(): parser = argparse.ArgumentParser(description='pythia8 fastjet on the fly', prog=os.path.basename(__file__)) pyconf.add_standard_pythia_args(parser) parser.add_argument('--ignore-mycfg', help="ignore some settings hardcoded here", default=False, action='store_true') args = parser.parse_args() # print the banner first fj.ClusterSequence.print_banner() print() # set up our jet definition and a jet selector jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(80.0) & fj.SelectorPtMax( 100.0) & fj.SelectorAbsEtaMax(1) # jet_selector = fj.SelectorPtMin(40.0) & fj.SelectorPtMax(200.0) &fj.SelectorAbsEtaMax(1) print(jet_def) all_jets = [] mycfg = ['PhaseSpace:pThatMin = 80'] # mycfg = ['PhaseSpace:pThatMin = 40'] if args.ignore_mycfg: mycfg = [] pythia = pyconf.create_and_init_pythia_from_args(args, mycfg) if not pythia: perror("pythia initialization failed.") return jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print(lund_gen.description()) dy_groomer = fjcontrib.DynamicalGroomer(jet_def_lund) print(dy_groomer.description()) # sd = fjcontrib.SoftDrop(0, 0.1, 1.0) sd = fjcontrib.SoftDrop(0, 0.2, 1.0) print(sd) # jet_def_rc01 = fj.JetDefinition(fj.cambridge_algorithm, 0.1) # jet_def_rc02 = fj.JetDefinition(fj.cambridge_algorithm, 0.2) # print (jet_def_rc01) # print (jet_def_rc02) # rc = fjcontrib.Recluster(jet_def_rc, True) jet_def_rc01 = fj.JetDefinition(fj.antikt_algorithm, 0.1) jet_def_rc02 = fj.JetDefinition(fj.antikt_algorithm, 0.2) print(jet_def_rc01) print(jet_def_rc02) #rc = fjcontrib.Recluster(jet_def_rc, True) # tw = treewriter.RTreeWriter(name = 'lsjvsx', file_name = 'leadsj_vs_x.root') tw = treewriter.RTreeWriter(name='lsjvsx', file_name='leadsj_vs_x_bias80.root') if args.nev < 100: args.nev = 100 for i in tqdm.tqdm(range(args.nev)): if not pythia.next(): continue # parts = pythiafjext.vectorize(pythia, True, -1, 1, False) partons = pythiafjext.vectorize_select(pythia, [pythiafjext.kParton], 0, True) parts = pythiafjext.vectorize_select( pythia, [pythiafjext.kFinal, pythiafjext.kCharged], 0, False) # parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kFinal], 0, False) jets = jet_selector(jet_def(parts)) # for j in tqdm.tqdm(jets): for j in jets: j_type = match_dR(j, partons, jet_R0 / 2.) j_sd = sd.result(j) sd_info = fjcontrib.get_SD_jet_info(j_sd) rc_sjets01 = fj.sorted_by_pt(jet_def_rc01(j.constituents())) rc_sjets02 = fj.sorted_by_pt(jet_def_rc02(j.constituents())) tw.fill_branches( j=j, lund=[ls for ls in lund_gen.result(j)], dyg1=dy_groomer.result(j, 1), sd=j_sd, sd_z=sd_info.z, sd_mu=sd_info.mu, sd_Delta=sd_info.dR, lsjet01=rc_sjets01[0], nsjet01=len(rc_sjets01), sjet01=rc_sjets01, lsjet02=rc_sjets02[0], nsjet02=len(rc_sjets02), sjet02=rc_sjets02, ppid=j_type[0], pquark=j_type[1], pglue=j_type[2] # this is redundancy ) tw.fill_tree() pythia.stat() tw.write_and_close()
def main(): parser = argparse.ArgumentParser( description='read jewel to lund jets object and pickle with joblib', prog=os.path.basename(__file__)) parser.add_argument('-d', '--dir', help='input directory', default='', type=str, required=True) parser.add_argument('-n', '--nfiles', help='number of files', default=-1, type=int, required=False) parser.add_argument('-p', '--pattern', help='input directory', default='', type=str, required=True) parser.add_argument('--nev', help='number of events', default=-1, type=int) parser.add_argument('--clean', help='remove output before writing', action='store_true', default=False) args = parser.parse_args() files = find_files(args.dir, args.pattern) # jet finder # print the banner first fj.ClusterSequence.print_banner() print() jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(40.0) & fj.SelectorPtMax( 500.0) & fj.SelectorAbsEtaMax(2) jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) sd = fjcontrib.SoftDrop(0, 0.1, 1.0) if args.nfiles > 0: rfiles = files[:args.nfiles] else: rfiles = files print("[i] found {} files - running for {} files".format( len(files), len(rfiles))) for ifile, fn in enumerate(tqdm.tqdm(rfiles)): # now lets read the HEPMC file and do some jet finding input_hepmc = hepmc2wrap.ReadHepMCFile(fn) if input_hepmc.failed(): print("[error] unable to read from {}".format(fn)) sys.exit(1) all_jets = [] for iev in tqdm.tqdm(range(args.nev)): if input_hepmc.failed(): break if input_hepmc.NextEvent(): jets_hepmc = find_jets_hepmc(jet_def, jet_selector, input_hepmc, final=True) all_jets.extend(jets_hepmc) lunds = [lund_gen.result(j) for j in all_jets] lunds_pickle = [ lundjet.LundJet(j, lund_gen.result(j)) for j in all_jets ] all_jets_sd = [sd.result(j) for j in all_jets] lunds_sd = [lund_gen.result(j) for j in all_jets_sd] lunds_sd_pickle = [ lundjet.LundJet(j, lund_gen.result(j)) for j in all_jets_sd ] joblib_file = 'lund_{}.joblib'.format(os.path.basename(fn)) it = 0 while os.path.exists(joblib_file): if args.clean: os.unlink(joblib_file) break joblib_file = 'lund_{}_{}.joblib'.format(os.path.basename(fn), it) it += 1 joblib.dump(lunds_pickle, joblib_file) joblib_file_sd = 'lund_sd_{}.joblib'.format(os.path.basename(fn)) it = 0 while os.path.exists(joblib_file_sd): if args.clean: os.unlink(joblib_file_sd) break joblib_file_sd = 'lund_sd_{}_{}.joblib'.format( os.path.basename(fn), it) it += 1 joblib.dump(lunds_sd_pickle, joblib_file_sd)
def main(): parser = argparse.ArgumentParser(description='pythia8 fastjet on the fly', prog=os.path.basename(__file__)) pyconf.add_standard_pythia_args(parser) parser.add_argument('--ignore-mycfg', help="ignore some settings hardcoded here", default=False, action='store_true') args = parser.parse_args() # print the banner first fj.ClusterSequence.print_banner() print() # set up our jet definition and a jet selector jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(100.0) & fj.SelectorAbsEtaMax(1) print(jet_def) all_jets = [] mycfg = ['PhaseSpace:pThatMin = 100'] if args.ignore_mycfg: mycfg = [] pythia = pyconf.create_and_init_pythia_from_args(args, mycfg) if not pythia: print("[e] pythia initialization failed.") return if args.nev < 100: args.nev = 100 for i in tqdm.tqdm(range(args.nev)): if not pythia.next(): continue parts = pythiafjext.vectorize(pythia, True, -1, 1, False) jets = jet_selector(jet_def(parts)) all_jets.extend(jets) pythia.stat() jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print('making lund diagram for all jets...', lund_gen.description()) lunds = [lund_gen.result(j) for j in all_jets] print( 'listing lund plane points... Delta, kt - for {} selected jets'.format( len(all_jets))) for l in lunds: print('- jet pT={0:5.2f} eta={1:5.2f}'.format(l[0].pair().perp(), l[0].pair().eta())) print(' Deltas={}'.format([s.Delta() for s in l])) print(' kts={}'.format([s.kt() for s in l])) print() dy_groomer = fjcontrib.DynamicalGroomer(jet_def_lund) print(dy_groomer.description()) dy_groomed = [dy_groomer.result(j, 2) for j in all_jets] print('listing results from dynamical grooming...') for l in dy_groomed: print(l, ' kt={}'.format(l.kt())) for j in all_jets: rdyng2 = dy_groomer.result(j, 2) rdyng1 = dy_groomer.result(j, 1) print('jet', j) print('- all splits kts:', sorted([s.kt() for s in dy_groomer.lund_splits()], reverse=True)) print('- dynG kt a=1:', rdyng1.kt(), 'a=2:', rdyng2.kt()) print() return print('[i] reclustering and using soft drop...') jet_def_rc = fj.JetDefinition(fj.cambridge_algorithm, 0.1) print('Reclustering:', jet_def_rc) rc = fjcontrib.Recluster(jet_def_rc, True) sd = fjcontrib.SoftDrop(0, 0.1, 1.0) for i, j in enumerate(all_jets): j_rc = rc.result(j) print() print('- [{0:3d}] orig pT={1:10.3f} reclustered pT={2:10.3f}'.format( i, j.perp(), j_rc.perp())) j_sd = sd.result(j) print(' |-> after soft drop pT={0:10.3f} delta={1:10.3f}'.format( j_sd.perp(), j_sd.perp() - j.perp())) sd_info = fjcontrib.get_SD_jet_info(j_sd) print( " |-> SD jet params z={0:10.3f} dR={1:10.3f} mu={2:10.3f}".format( sd_info.z, sd_info.dR, sd_info.mu))
def main(): parser = argparse.ArgumentParser(description='pythia8 fastjet on the fly', prog=os.path.basename(__file__)) pyconf.add_standard_pythia_args(parser) parser.add_argument('--ignore-mycfg', help="ignore some settings hardcoded here", default=False, action='store_true') parser.add_argument('--output', help="output file name", default="test_hjet_parton.root", type=str) parser.add_argument('--no-tt', help="do not require TT to accept the event", default=False, action='store_true') parser.add_argument('--charged', help="analyze only the charged particles of the FS", default=False, action='store_true') parser.add_argument('--max-jet-pt', help="maximum jet pT to consider", type=float, default=100.) args = parser.parse_args() # print the banner first fj.ClusterSequence.print_banner() print() # set up our jet definition and a jet selector hadron_eta_max = 2.0 jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_selector = fj.SelectorPtMin(10.0) & fj.SelectorPtMax( args.max_jet_pt) & fj.SelectorAbsEtaMax(hadron_eta_max - jet_R0) # jet_selector = fj.SelectorPtMin(40.0) & fj.SelectorPtMax(200.0) &fj.SelectorAbsEtaMax(hadron_eta_max - jet_R0) hTT6_selector = fj.SelectorPtMin(6) & fj.SelectorPtMax( 7) & fj.SelectorAbsEtaMax(hadron_eta_max) hTT12_selector = fj.SelectorPtMin(12) & fj.SelectorPtMax( 50) & fj.SelectorAbsEtaMax(hadron_eta_max) hTT20_selector = fj.SelectorPtMin(20) & fj.SelectorPtMax( 50) & fj.SelectorAbsEtaMax(hadron_eta_max) pythia_fs_part_selection = [pythiafjext.kFinal] if args.charged is True: pwarning('running with charged particles in the final state') pythia_fs_part_selection.append(pythiafjext.kCharged) print(jet_def) all_jets = [] # mycfg = ['PhaseSpace:pThatMin = 80'] # mycfg = ['PhaseSpace:pThatMin = 6'] # mycfg = ['PhaseSpace:pThatMin = 12'] # mycfg = ['PhaseSpace:pThatMin = 40'] mycfg = [] if args.ignore_mycfg: mycfg = [] pythia = pyconf.create_and_init_pythia_from_args(args, mycfg) if not pythia: perror("pythia initialization failed.") return jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) print(lund_gen.description()) dy_groomer = fjcontrib.DynamicalGroomer(jet_def_lund) print(dy_groomer.description()) # sd = fjcontrib.SoftDrop(0, 0.1, 1.0) sd = fjcontrib.SoftDrop(0, 0.2, 1.0) print(sd) # jet_def_rc01 = fj.JetDefinition(fj.cambridge_algorithm, 0.1) # jet_def_rc02 = fj.JetDefinition(fj.cambridge_algorithm, 0.2) # print (jet_def_rc01) # print (jet_def_rc02) # rc = fjcontrib.Recluster(jet_def_rc, True) jet_def_rc01 = fj.JetDefinition(fj.antikt_algorithm, 0.1) jet_def_rc02 = fj.JetDefinition(fj.antikt_algorithm, 0.2) print(jet_def_rc01) print(jet_def_rc02) #rc = fjcontrib.Recluster(jet_def_rc, True) # tw = treewriter.RTreeWriter(name = 'lsjvsx', file_name = 'leadsj_vs_x.root') tw = treewriter.RTreeWriter(name='lsjvsx', file_name=args.output) zero_psj = fj.PseudoJet(0, 0, 10, 10) if args.nev < 100: args.nev = 100 t = tqdm.tqdm(total=args.nev) while t.n < args.nev: if not pythia.next(): continue # information about the leading process # print(pythia.info.code(), pythia.info.nameProc(pythia.info.code())) # continue # parts = pythiafjext.vectorize(pythia, True, -1, 1, False) partons = pythiafjext.vectorize_select(pythia, [pythiafjext.kParton], 0, True) # parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kFinal, pythiafjext.kCharged], 0, False) # parts = pythiafjext.vectorize_select(pythia, [pythiafjext.kFinal], 0, False) parts = pythiafjext.vectorize_select(pythia, pythia_fs_part_selection, 0, False) hTT6 = zero_psj hTT6s = fj.sorted_by_pt(hTT6_selector(parts)) if len(hTT6s) > 0: hTT6 = hTT6s[0] hTT12 = zero_psj hTT12s = fj.sorted_by_pt(hTT12_selector(parts)) if len(hTT12s) > 0: hTT12 = hTT12s[0] hTT20 = zero_psj hTT20s = fj.sorted_by_pt(hTT20_selector(parts)) if len(hTT20s) > 0: hTT20 = hTT20s[0] if args.no_tt is False: if hTT12.perp() < 1 and hTT6.perp() < 1 and hTT20.perp() < 1: continue jets = jet_selector(jet_def(parts)) # for j in tqdm.tqdm(jets): for j in jets: t.update(1) j_type = match_dR(j, partons, jet_R0 / 2.) if j_type[0] is None: continue j_sd = sd.result(j) sd_info = fjcontrib.get_SD_jet_info(j_sd) rc_sjets01 = fj.sorted_by_pt(jet_def_rc01(j.constituents())) rc_sjets02 = fj.sorted_by_pt(jet_def_rc02(j.constituents())) tw.fill_branches( j=j, mult=len(parts), lund=[ls for ls in lund_gen.result(j)], dyg1=dy_groomer.result(j, 1), sd=j_sd, sd_z=sd_info.z, sd_mu=sd_info.mu, sd_Delta=sd_info.dR, lsjet01=rc_sjets01[0], nsjet01=len(rc_sjets01), sjet01=rc_sjets01, lsjet02=rc_sjets02[0], nsjet02=len(rc_sjets02), sjet02=rc_sjets02, hTT6=hTT6, hTT12=hTT12, hTT20=hTT20, dphi6=j.delta_phi_to(hTT6), dphi12=j.delta_phi_to(hTT12), dphi20=j.delta_phi_to(hTT20), ppid=j_type[0], pquark=j_type[1], pglue=j_type[2], # this is redundancy pycode=pythia.info.code(), pysigmagen=pythia.info.sigmaGen(), pysigmaerr=pythia.info.sigmaErr(), pyid1=pythia.info.id1pdf(), pyid2=pythia.info.id1pdf(), pyx1=pythia.info.x1pdf(), pyx2=pythia.info.x2pdf(), pypdf1=pythia.info.pdf1(), pyQfac=pythia.info.QFac(), pyalphaS=pythia.info.alphaS(), pypthat=pythia.info.pTHat(), pymhat=pythia.info.mHat()) tw.fill_tree() t.close() pythia.stat() tw.write_and_close()
def main(): parser = argparse.ArgumentParser(description='pythia8 fastjet on the fly', prog=os.path.basename(__file__)) parser.add_argument('-o', '--output', help='output file name', default='pythia_lund_sd.root', type=str) pyconf.add_standard_pythia_args(parser) args = parser.parse_args() # print the banner first fj.ClusterSequence.print_banner() print() # set up our jet definition and a jet selector jet_R0 = 0.4 jet_def = fj.JetDefinition(fj.antikt_algorithm, jet_R0) jet_def_lund = fj.JetDefinition(fj.cambridge_algorithm, 1.0) lund_gen = fjcontrib.LundGenerator(jet_def_lund) sd = fjcontrib.SoftDrop(0, 0.1, 1.0) jet_selector = fj.SelectorPtMin(10) & fj.SelectorAbsEtaMax(1) print(jet_def) fout = r.TFile(args.output, 'RECREATE') fout.cd() tnjets = r.TNtuple('jets', 'jets', 'iev:nj:pt:eta:phi:f5:f6:f5dR:f6dR:proc:xsec') tnjets_sd = r.TNtuple('jets_sd', 'jets_sd', 'iev:nj:pt:f5:f6:f5dR:f6dR:proc:xsec:pt_sd:z:dR:mu') tnlund = r.TNtuple('lund', 'lund', "iev:nj:pt:f5:f6:f5dR:f6dR:ns:pts:delta:kt") nbins = 20 lbins = logbins(10, 500, nbins) hjpt = r.TH1F('hjpt', 'hjpt', nbins, lbins) hjptq = r.TH1F('hjptq', 'hjptq', nbins, lbins) hjptg = r.TH1F('hjptg', 'hjptg', nbins, lbins) hjptsd = r.TH1F('hjptsd', 'hjptsd', nbins, lbins) hjptsdq = r.TH1F('hjptsdq', 'hjptsdq', nbins, lbins) hjptsdg = r.TH1F('hjptsdg', 'hjptsdg', nbins, lbins) hjptsdkt10 = r.TH1F('hjptsdkt10', 'hjptsdkt10', nbins, lbins) hjptsdqkt10 = r.TH1F('hjptsdqkt10', 'hjptsdqkt10', nbins, lbins) hjptsdgkt10 = r.TH1F('hjptsdgkt10', 'hjptsdgkt10', nbins, lbins) hjptsdkt30 = r.TH1F('hjptsdkt30', 'hjptsdkt30', nbins, lbins) hjptsdqkt30 = r.TH1F('hjptsdqkt30', 'hjptsdqkt30', nbins, lbins) hjptsdgkt30 = r.TH1F('hjptsdgkt30', 'hjptsdgkt30', nbins, lbins) hjptktsd = r.TH2F('hjptktsd', 'hjptktsd', 50, 0, 500, 50, 0, 500) mycfg = [] pythia = pyconf.create_and_init_pythia_from_args(args, mycfg) if args.nev < 100: args.nev = 100 for i in tqdm.tqdm(range(args.nev)): if not pythia.next(): continue parts = pythiafjext.vectorize(pythia, True, -2, 2, False) jets = fj.sorted_by_pt(jet_selector(jet_def(parts))) f5 = pythia.event[5] f6 = pythia.event[6] f5psj = fj.PseudoJet(f5.px(), f5.py(), f5.pz(), f5.e()) f6psj = fj.PseudoJet(f6.px(), f6.py(), f6.pz(), f6.e()) iproc = pythia.info.code() xsec = pythia.info.sigmaGen() for nj, j in enumerate(jets): f5dR = f5psj.delta_R(j) f6dR = f6psj.delta_R(j) tnjets.Fill(i, nj, j.pt(), j.eta(), j.phi(), f5.id(), f6.id(), f5dR, f6dR, iproc, xsec) lund = lund_gen.result(j) for ns, s in enumerate(lund): tnlund.Fill(i, nj, j.pt(), f5.id(), f6.id(), f5dR, f6dR, ns, s.pair().perp(), s.Delta(), s.kt()) j_sd = sd.result(j) sd_info = fjcontrib.get_SD_jet_info(j_sd) tnjets_sd.Fill(i, nj, j.pt(), f5.id(), f6.id(), f5dR, f6dR, iproc, xsec, j_sd.pt(), sd_info.z, sd_info.dR, sd_info.mu) # fill the histograms f = None if f5dR < 0.4: f = f5 if f6dR < 0.4: f = f6 if f is not None: kt = sd_info.z * j_sd.perp() hjpt.Fill(j.pt()) if sd_info.z >= 0: hjptsd.Fill(j.pt()) if kt > 10: hjptsdkt10.Fill(j.pt()) if kt > 30: hjptsdkt30.Fill(j.pt()) if f.id() != 21: hjptq.Fill(j.pt()) if sd_info.z >= 0: hjptsdq.Fill(j.pt()) if kt > 10: hjptsdqkt10.Fill(j.pt()) if kt > 30: hjptsdqkt30.Fill(j.pt()) else: hjptg.Fill(j.pt()) if sd_info.z >= 0: hjptsdg.Fill(j.pt()) if kt > 10: hjptsdgkt10.Fill(j.pt()) if kt > 30: hjptsdgkt30.Fill(j.pt()) pythia.stat() fout.cd() hjptq_r = hjptq.Clone('hjptq_r') hjptq_r.Sumw2() hjptq_r.Divide(hjpt) hjptg_r = hjptg.Clone('hjptg_r') hjptg_r.Sumw2() hjptg_r.Divide(hjpt) hjptsdq_r = hjptsdq.Clone('hjptsdq_r') hjptsdq_r.Sumw2() hjptsdq_r.Divide(hjptsd) hjptsdg_r = hjptsdg.Clone('hjptsdg_r') hjptsdg_r.Sumw2() hjptsdg_r.Divide(hjptsd) hjptsdqkt10_r = hjptsdqkt10.Clone('hjptsdqkt10_r') hjptsdqkt10_r.Sumw2() hjptsdqkt10_r.Divide(hjptsdkt10) hjptsdgkt10_r = hjptsdgkt10.Clone('hjptsdgkt10_r') hjptsdgkt10_r.Sumw2() hjptsdgkt10_r.Divide(hjptsdkt10) hjptsdqkt30_r = hjptsdqkt30.Clone('hjptsdqkt30_r') hjptsdqkt30_r.Sumw2() hjptsdqkt30_r.Divide(hjptsdkt30) hjptsdgkt30_r = hjptsdgkt30.Clone('hjptsdgkt30_r') hjptsdgkt30_r.Sumw2() hjptsdgkt30_r.Divide(hjptsdkt30) fout.Write() fout.Close()