From 0e730905cdd28e491eafb0574be8de74ed91747a Mon Sep 17 00:00:00 2001 From: Sylvester Joosten <sjoosten@anl.gov> Date: Wed, 17 Nov 2021 21:37:52 +0000 Subject: [PATCH] properly use DAQ as defined in athena/calibrations --- options/reconstruction.ecal.py | 33 +++++++++++++------ options/reconstruction.hcal.py | 33 +++++++++++++------ options/reconstruction.py | 58 +++++++++++++--------------------- options/reconstruction.raw.py | 57 +++++++++++++-------------------- 4 files changed, 90 insertions(+), 91 deletions(-) diff --git a/options/reconstruction.ecal.py b/options/reconstruction.ecal.py index 9407fae8..f80282ae 100644 --- a/options/reconstruction.ecal.py +++ b/options/reconstruction.ecal.py @@ -14,12 +14,33 @@ detector_path = "" if "DETECTOR_PATH" in os.environ : detector_path = str(os.environ["DETECTOR_PATH"]) +detector_version = 'default' +if "JUGGLER_DETECTOR_VERSION" in os.environ: + env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"]) + if 'acadia' in env_version: + detector_version = 'acadia' compact_path = os.path.join(detector_path, detector_name) + # CAL reconstruction # get sampling fractions from system environment variable ci_ecal_sf = float(os.environ.get("CI_ECAL_SAMP_FRAC", 0.253)) +# input calorimeter DAQ info +calo_daq = {} +with open('{}/calibrations/calo_digi_{}.json'.format(detector_path, detector_version)) as f: + calo_config = json.load(f) + ## add proper ADC capacity based on bit depth + for sys in calo_config: + cfg = calo_config[sys] + calo_daq[sys] = { + 'dynamicRangeADC': eval(cfg['dynamicRange']), + 'capacityADC': 2**int(cfg['capacityBitsADC']), + 'pedestalMean': int(cfg['pedestalMean']), + 'pedestalSigma': float(cfg['pedestalSigma']) + } +print(calo_daq) + # input and output input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] output_rec = str(os.environ["JUGGLER_REC_FILE"]) @@ -55,11 +76,7 @@ podin = PodioInput("PodioReader", collections=sim_coll) algorithms.append(podin) # Crystal Endcap Ecal -ce_ecal_daq = dict( - dynamicRangeADC=5.*units.GeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=3) +ce_ecal_daq = calo_daq['ecal_neg_endcap'] ce_ecal_digi = CalHitDigi("ce_ecal_digi", inputHitCollection="EcalEndcapNHits", @@ -97,11 +114,7 @@ ce_ecal_clreco = RecoCoG("ce_ecal_clreco", algorithms.append(ce_ecal_clreco) # Endcap Sampling Ecal -ci_ecal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ci_ecal_daq = calo_daq['ecal_pos_endcap'] ci_ecal_digi = CalHitDigi("ci_ecal_digi", inputHitCollection="EcalEndcapPHits", diff --git a/options/reconstruction.hcal.py b/options/reconstruction.hcal.py index 0bf946c6..3f9152da 100644 --- a/options/reconstruction.hcal.py +++ b/options/reconstruction.hcal.py @@ -14,6 +14,12 @@ detector_path = "" if "DETECTOR_PATH" in os.environ : detector_path = str(os.environ["DETECTOR_PATH"]) +detector_version = 'default' +if "JUGGLER_DETECTOR_VERSION" in os.environ: + env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"]) + if 'acadia' in env_version: + detector_version = 'acadia' + compact_path = os.path.join(detector_path, detector_name) # CAL reconstruction @@ -22,6 +28,21 @@ cb_hcal_sf = float(os.environ.get("CB_HCAL_SAMP_FRAC", 0.038)) ci_hcal_sf = float(os.environ.get("CI_HCAL_SAMP_FRAC", 0.025)) ce_hcal_sf = float(os.environ.get("CE_HCAL_SAMP_FRAC", 0.025)) +# input calorimeter DAQ info +calo_daq = {} +with open('{}/calibrations/calo_digi_{}.json'.format(detector_path, detector_version)) as f: + calo_config = json.load(f) + ## add proper ADC capacity based on bit depth + for sys in calo_config: + cfg = calo_config[sys] + calo_daq[sys] = { + 'dynamicRangeADC': eval(cfg['dynamicRange']), + 'capacityADC': 2**int(cfg['capacityBitsADC']), + 'pedestalMean': int(cfg['pedestalMean']), + 'pedestalSigma': float(cfg['pedestalSigma']) + } +print(calo_daq) + # input and output input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] output_rec = str(os.environ["JUGGLER_REC_FILE"]) @@ -57,11 +78,7 @@ podin = PodioInput("PodioReader", collections=sim_coll) algorithms.append(podin) # Hcal Hadron Endcap -ci_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ci_hcal_daq = calo_daq['hcal_pos_endcap'] ci_hcal_digi = CalHitDigi("ci_hcal_digi", inputHitCollection="HcalEndcapPHits", @@ -102,11 +119,7 @@ ci_hcal_clreco = RecoCoG("ci_hcal_clreco", algorithms.append(ci_hcal_clreco) # Hcal Electron Endcap -ce_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ce_hcal_daq = calo_daq['hcal_neg_endcap'] ce_hcal_digi = CalHitDigi("ce_hcal_digi", inputHitCollection="HcalEndcapNHits", diff --git a/options/reconstruction.py b/options/reconstruction.py index 49fd05cd..d26e800e 100644 --- a/options/reconstruction.py +++ b/options/reconstruction.py @@ -38,6 +38,21 @@ with open('config/emcal_barrel_calibration.json') as f: print(calib_data) +# input calorimeter DAQ info +calo_daq = {} +with open('{}/calibrations/calo_digi_{}.json'.format(detector_path, detector_version)) as f: + calo_config = json.load(f) + ## add proper ADC capacity based on bit depth + for sys in calo_config: + cfg = calo_config[sys] + calo_daq[sys] = { + 'dynamicRangeADC': eval(cfg['dynamicRange']), + 'capacityADC': 2**int(cfg['capacityBitsADC']), + 'pedestalMean': int(cfg['pedestalMean']), + 'pedestalSigma': float(cfg['pedestalSigma']) + } +print(calo_daq) + img_barrel_sf = float(calib_data['sampling_fraction_img']) scifi_barrel_sf = float(calib_data['sampling_fraction_scfi']) @@ -213,12 +228,7 @@ trk_b0_reco = TrackerHitReconstruction("trk_b0_reco", algorithms.append(trk_b0_reco) # Crystal Endcap Ecal -ce_ecal_daq = dict( - dynamicRangeADC=5.*units.GeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=3) - +ce_ecal_daq = calo_daq['ecal_neg_endcap'] ce_ecal_digi = CalHitDigi("ce_ecal_digi", inputHitCollection="EcalEndcapNHits", outputHitCollection="EcalEndcapNRawHits", @@ -261,11 +271,7 @@ ce_ecal_clmerger = ClusterMerger("ce_ecal_clmerger", algorithms.append(ce_ecal_clmerger) # Endcap Sampling Ecal -ci_ecal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ci_ecal_daq = calo_daq['ecal_pos_endcap'] ci_ecal_digi = CalHitDigi("ci_ecal_digi", inputHitCollection="EcalEndcapPHits", @@ -315,11 +321,7 @@ ci_ecal_clmerger = ClusterMerger("ci_ecal_clmerger", algorithms.append(ci_ecal_clmerger) # Central Barrel Ecal (Imaging Cal.) -img_barrel_daq = dict( - dynamicRangeADC=3*units.MeV, - capacityADC=8192, - pedestalMean=400, - pedestalSigma=20) # about 6 keV +img_barrel_daq = calo_daq['ecal_barrel_imaging'] img_barrel_digi = CalHitDigi("img_barrel_digi", inputHitCollection="EcalBarrelHits", @@ -357,11 +359,7 @@ img_barrel_clreco = ImagingClusterReco("img_barrel_clreco", algorithms.append(img_barrel_clreco) # Central ECAL SciFi -scfi_barrel_daq = dict( - dynamicRangeADC=50.*MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", inputHitCollection="EcalBarrelScFiHits", @@ -417,11 +415,7 @@ algorithms.append(barrel_clus_merger) # Central Barrel Hcal -cb_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +cb_hcal_daq = calo_daq['hcal_barrel'] cb_hcal_digi = CalHitDigi("cb_hcal_digi", inputHitCollection="HcalBarrelHits", @@ -465,11 +459,7 @@ cb_hcal_clreco = RecoCoG("cb_hcal_clreco", algorithms.append(cb_hcal_clreco) # Hcal Hadron Endcap -ci_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ci_hcal_daq = calo_daq['hcal_pos_endcap'] ci_hcal_digi = CalHitDigi("ci_hcal_digi", inputHitCollection="HcalEndcapPHits", @@ -510,11 +500,7 @@ ci_hcal_clreco = RecoCoG("ci_hcal_clreco", algorithms.append(ci_hcal_clreco) # Hcal Electron Endcap -ce_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ce_hcal_daq = calo_daq['hcal_neg_endcap'] ce_hcal_digi = CalHitDigi("ce_hcal_digi", inputHitCollection="HcalEndcapNHits", diff --git a/options/reconstruction.raw.py b/options/reconstruction.raw.py index a605e012..62665bcd 100644 --- a/options/reconstruction.raw.py +++ b/options/reconstruction.raw.py @@ -25,6 +25,21 @@ compact_path = os.path.join(detector_path, detector_name) # RICH reconstruction qe_data = [(1.0, 0.25), (7.5, 0.25),] +# input calorimeter DAQ info +calo_daq = {} +with open('{}/calibrations/calo_digi_{}.json'.format(detector_path, detector_version)) as f: + calo_config = json.load(f) + ## add proper ADC capacity based on bit depth + for sys in calo_config: + cfg = calo_config[sys] + calo_daq[sys] = { + 'dynamicRangeADC': eval(cfg['dynamicRange']), + 'capacityADC': 2**int(cfg['capacityBitsADC']), + 'pedestalMean': int(cfg['pedestalMean']), + 'pedestalSigma': float(cfg['pedestalSigma']) + } +print(calo_daq) + # input and output input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] output_rec = str(os.environ["JUGGLER_REC_FILE"]) @@ -100,11 +115,7 @@ trk_b0_digi = TrackerDigi("trk_b0_digi", algorithms.append(trk_b0_digi) # Crystal Endcap Ecal -ce_ecal_daq = dict( - dynamicRangeADC=5.*units.GeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=3) +ce_ecal_daq = calo_daq['ecal_neg_endcap'] ce_ecal_digi = CalHitDigi("ce_ecal_digi", inputHitCollection="EcalEndcapNHits", @@ -114,11 +125,7 @@ ce_ecal_digi = CalHitDigi("ce_ecal_digi", algorithms.append(ce_ecal_digi) # Endcap Sampling Ecal -ci_ecal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ci_ecal_daq = calo_daq['ecal_pos_endcap'] ci_ecal_digi = CalHitDigi("ci_ecal_digi", inputHitCollection="EcalEndcapPHits", @@ -127,11 +134,7 @@ ci_ecal_digi = CalHitDigi("ci_ecal_digi", algorithms.append(ci_ecal_digi) # Central Barrel Ecal (Imaging Cal.) -img_barrel_daq = dict( - dynamicRangeADC=3*units.MeV, - capacityADC=8192, - pedestalMean=400, - pedestalSigma=20) # about 6 keV +img_barrel_daq = calo_daq['ecal_barrel_imaging'] img_barrel_digi = CalHitDigi("img_barrel_digi", inputHitCollection="EcalBarrelHits", @@ -141,11 +144,7 @@ img_barrel_digi = CalHitDigi("img_barrel_digi", algorithms.append(img_barrel_digi) # Central ECAL SciFi -scfi_barrel_daq = dict( - dynamicRangeADC=50.*MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", inputHitCollection="EcalBarrelScFiHits", @@ -154,11 +153,7 @@ scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", algorithms.append(scfi_barrel_digi) # Central Barrel Hcal -cb_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +cb_hcal_daq = calo_daq['hcal_barrel'] cb_hcal_digi = CalHitDigi("cb_hcal_digi", inputHitCollection="HcalBarrelHits", @@ -167,11 +162,7 @@ cb_hcal_digi = CalHitDigi("cb_hcal_digi", algorithms.append(cb_hcal_digi) # Hcal Hadron Endcap -ci_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ci_hcal_daq = calo_daq['hcal_pos_endcap'] ci_hcal_digi = CalHitDigi("ci_hcal_digi", inputHitCollection="HcalEndcapPHits", @@ -180,11 +171,7 @@ ci_hcal_digi = CalHitDigi("ci_hcal_digi", algorithms.append(ci_hcal_digi) # Hcal Electron Endcap -ce_hcal_daq = dict( - dynamicRangeADC=50.*units.MeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=10) +ce_hcal_daq = calo_daq['hcal_neg_endcap'] ce_hcal_digi = CalHitDigi("ce_hcal_digi", inputHitCollection="HcalEndcapNHits", -- GitLab