diff --git a/options/reconstruction.py b/options/reconstruction.py
index 49fd05cd55bb4dbe1295751074fa56a106a536ac..0537fcaa807ae139cc544e74040dde0f69b48013 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('config/calo_digi_{}.json'.format('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,17 +228,12 @@ 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_calo_daq = calo_daq['ecal_neg_endcap']
 ce_ecal_digi = CalHitDigi("ce_ecal_digi",
         inputHitCollection="EcalEndcapNHits",
         outputHitCollection="EcalEndcapNRawHits",
         energyResolutions=[0., 0.02, 0.],
-        **ce_ecal_daq)
+        **ce_calo_daq)
 algorithms.append(ce_ecal_digi)
 
 ce_ecal_reco = CalHitReco("ce_ecal_reco",
@@ -232,7 +242,7 @@ ce_ecal_reco = CalHitReco("ce_ecal_reco",
         thresholdFactor=4,          # 4 sigma cut on pedestal sigma
         readoutClass="EcalEndcapNHits",
         sectorField="sector",
-        **ce_ecal_daq)
+        **ce_calo_daq)
 algorithms.append(ce_ecal_reco)
 
 ce_ecal_cl = IslandCluster("ce_ecal_cl",
@@ -261,23 +271,19 @@ 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_calo_daq = calo_daq['ecal_pos_endcap']
 
 ci_ecal_digi = CalHitDigi("ci_ecal_digi",
         inputHitCollection="EcalEndcapPHits",
         outputHitCollection="EcalEndcapPRawHits",
-        **ci_ecal_daq)
+        **ci_calo_daq)
 algorithms.append(ci_ecal_digi)
 
 ci_ecal_reco = CalHitReco("ci_ecal_reco",
         inputHitCollection=ci_ecal_digi.outputHitCollection,
         outputHitCollection="EcalEndcapPRecHits",
         thresholdFactor=5.0,
-        **ci_ecal_daq)
+        **ci_calo_daq)
 algorithms.append(ci_ecal_reco)
 
 # merge hits in different layer (projection to local x-y plane)
@@ -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",