@@ -12,7 +12,9 @@ Also calculates the configured cut/flag values.
1212"""
1313function calibrate_ged_channel_data (data:: LegendData , sel:: AnyValiditySelection , detector:: DetectorIdLike , channel_data:: AbstractVector ;
1414 e_cal_pars_type:: Symbol = :rpars , e_cal_pars_cat:: Symbol = :ecal ,
15- psd_cal_pars_type:: Symbol = :ppars , psd_cal_pars_cat:: Symbol = :aoe , psd_cut_pars_type:: Symbol = :ppars , psd_cut_pars_cat:: Symbol = :aoe ,
15+ psd_pars_type:: Symbol = :ppars ,
16+ aoe_cal_pars_type:: Symbol = :ppars , aoe_cal_pars_cat:: Symbol = :aoe , aoe_cut_pars_type:: Symbol = :ppars , aoe_cut_pars_cat:: Symbol = :aoe ,
17+ lq_cal_pars_type:: Symbol = :ppars , lq_cal_pars_cat:: Symbol = :lq , lq_cut_pars_type:: Symbol = :ppars , lq_cut_pars_cat:: Symbol = :lq ,
1618 keep_chdata:: Bool = false )
1719
1820 detector = DetectorId (detector)
@@ -22,7 +24,7 @@ function calibrate_ged_channel_data(data::LegendData, sel::AnyValiditySelection,
2224
2325 # get energy and psd calibration functions for the detector
2426 cal_pf = get_ged_cal_propfunc (data, sel, detector; pars_type= e_cal_pars_type, pars_cat= e_cal_pars_cat)
25- psd_pf = get_ged_psd_propfunc (data, sel, detector; pars_type = psd_cal_pars_type, pars_cat = psd_cal_pars_cat )
27+ psd_pf = get_ged_psd_propfunc (data, sel, detector; aoe_pars_type = aoe_cal_pars_type, aoe_pars_cat = aoe_cal_pars_cat, lq_pars_type = lq_cal_pars_type, lq_pars_cat = lq_cal_pars_cat )
2628
2729 # get qc labels
2830 cut_pf = get_ged_qc_cuts_propfunc (data, sel, detector)
@@ -40,8 +42,10 @@ function calibrate_ged_channel_data(data::LegendData, sel::AnyValiditySelection,
4042 end
4143
4244 # get postcal psd flags
43- postcal_pf = get_ged_aoe_cut_propfunc (data, sel, detector; pars_type= psd_cut_pars_type, pars_cat= psd_cut_pars_cat)
44-
45+ aoecut_pf = get_ged_aoe_cut_propfunc (data, sel, detector; pars_type= aoe_cut_pars_type, pars_cat= aoe_cut_pars_cat)
46+ lqcut_pf = get_ged_lq_cut_propfunc (data, sel, detector; pars_type= lq_cut_pars_type, pars_cat= lq_cut_pars_cat)
47+ psdcut_pf = get_ged_psd_classifier_propfunc (data, sel, detector; pars_type= psd_pars_type)
48+
4549 # apply calibrations
4650 cal_output = cal_pf .(chdata)
4751 psd_output = psd_pf .(StructArray (merge (columns (cal_output), columns (chdata))))
@@ -51,23 +55,29 @@ function calibrate_ged_channel_data(data::LegendData, sel::AnyValiditySelection,
5155 cut_output = cut_pf .(cal_chdata)
5256
5357 # get postcal data
54- postcal_data = postcal_pf .(cal_chdata)
58+ postcal_data = StructArray (merge (columns (aoecut_pf .(cal_chdata)), columns (lqcut_pf .(cal_chdata))))
59+ psd_classifier = psdcut_pf .(postcal_data)
60+
61+ additional_psd_cols = (
62+ psd_classifier = psd_classifier,
63+ )
5564
5665 # get additional columns
5766 chdata_output = chdata_output_pf .(chdata)
5867
59- # get cut flags
68+ # get qc cut flags
6069 is_physical = cut_is_physical_pf .(cut_output)
6170 is_baseline = cut_is_baseline_pf .(cut_output)
6271 is_physical_trig = cut_is_trig_pf .(cal_chdata) .&& is_physical
72+
6373
64- additional_cols = (
74+ additional_qc_cols = (
6575 is_physical = is_physical,
6676 is_baseline = is_baseline,
6777 is_physical_trig = is_physical_trig,
6878 )
6979
70- return StructVector (merge (columns (chdata_output), columns (cal_output), columns (psd_output), columns (postcal_data), columns (cut_output), additional_cols ))
80+ return StructVector (merge (columns (chdata_output), columns (cal_output), columns (psd_output), columns (postcal_data), additional_psd_cols, columns (cut_output), additional_qc_cols ))
7181end
7282export calibrate_ged_channel_data
7383
0 commit comments