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",