Skip to content
Snippets Groups Projects

Merging full workflow into Tanay's HiggsDNA

Open Sergi Castells requested to merge castells/higgs-dna-4-gamma-tanays-copy:master into master
Compare and Show latest version
1 file
+ 1
1
Compare changes
  • Side-by-side
  • Inline
@@ -17,18 +17,29 @@ def diphoton_list_to_pandas(self, diphotons: awkward.Array) -> pandas.DataFrame:
The observables related to the diphoton pair are stored with no prefix.
To change the behavior, you can redefine the `diphoton_list_to_pandas` method in the
derived class.
Note: Sergi edited this to be more efficient and to suppress the annoying warnings about fragmented DataFrames.
"""
output = pandas.DataFrame()
results = []
for field in awkward.fields(diphotons):
prefix = self.prefixes.get(field, "")
if len(prefix) > 0:
for subfield in awkward.fields(diphotons[field]):
if subfield != "__systematics__":
output[f"{prefix}_{subfield}"] = awkward.to_numpy(
diphotons[field][subfield]
sub = f"{prefix}_{subfield}"
results.append(
pandas.Series(awkward.to_numpy(diphotons[field][subfield]), name=sub)
)
else:
output[field] = awkward.to_numpy(diphotons[field])
sub = field
if sub in ["pt", "eta", "phi", "mass", "charge"]:
sub = f"dipho_{sub}"
results.append(
pandas.Series(awkward.to_numpy(diphotons[field]), name=sub)
)
output = pandas.concat(results, axis=1)
return output
@@ -283,3 +294,57 @@ def get_obj_syst_dict(obj_ak: awkward.Array, var_new: Optional[List[str]] = ["pt
obj_tmp[ivariable] = obj_ak[replace_dict[isyst][ivariation][ivariable]]
obj_syst_dict.update({f"{isyst}_{ivariation}": obj_tmp})
return syst_list, obj_syst_dict
# Convert pseudos array to pandas DataFrame
def ps_list_to_pandas(pseudos: awkward.Array) -> pandas.DataFrame:
results = []
for field in awkward.fields(pseudos):
if field not in [
"mass_gggg",
"pT1_ma1",
"pT2_ma1",
"pT1_ma2",
"pT2_ma2",
"sumPt_gggg",
"dM",
"dR_aa",
"dR_aa_mass_gggg",
"cos_ag",
"LeadPs_interMass",
"SubleadPs_interMass",
"Ps_massDiff",
"m_hyp",
"genWeight"]:
for subfield in awkward.fields(pseudos[field]):
try:
if subfield != "__systematics__":
try:
if field == "LeadPs" or field == "SubleadPs" and (subfield == "leading_pho" or subfield == "subleading_pho"):
for subsubfield in awkward.fields(pseudos[field][subfield]):
if subsubfield != "__systematics__":
sub = f"{field}_{subfield}_{subsubfield}"
results.append(
pandas.Series(awkward.to_numpy(pseudos[field][subfield][subsubfield][:,0]), name=sub)
)
if subfield != "leading_pho" and subfield != "subleading_pho":
sub = f"{field}_{subfield}"
results.append(
pandas.Series(awkward.to_numpy(pseudos[field][subfield][:,0]), name=sub)
)
except:
print(f"Failed to convert {sub}!")
except:
print(f"Failed to convert {sub}!")
else:
try:
results.append(
pandas.Series(awkward.to_numpy(pseudos[field][:,0]), name=field.replace("/","_"))
)
except:
print(f"Failed to convert {field}!")
assert len(results) > 0
output = pandas.concat(results, axis=1)
return output
Loading