From 1518828714986bcdbd4644a46814380f93333a02 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wdconinc@gmail.com> Date: Sun, 5 Jun 2022 23:54:20 +0000 Subject: [PATCH] Fixes for ATHENA ScFi vs ECCE SciGlass --- options/reconstruction.ecal.py | 4 -- options/reconstruction.py | 113 +++++++++++++++++++++++---------- options/reconstruction.raw.py | 37 ++++++++--- 3 files changed, 107 insertions(+), 47 deletions(-) diff --git a/options/reconstruction.ecal.py b/options/reconstruction.ecal.py index caa29e0a..fc0aef8c 100644 --- a/options/reconstruction.ecal.py +++ b/options/reconstruction.ecal.py @@ -70,10 +70,6 @@ sim_coll = [ 'EcalEndcapNHitsContributions', 'EcalEndcapPHits', 'EcalEndcapPHitsContributions', - 'EcalBarrelHits', - 'EcalBarrelHitsContributions', - 'EcalBarrelScFiHits', - 'EcalBarrelScFiHitsContributions', ] # list of algorithms diff --git a/options/reconstruction.py b/options/reconstruction.py index addc8f58..6d75f0d9 100644 --- a/options/reconstruction.py +++ b/options/reconstruction.py @@ -173,8 +173,6 @@ sim_coll = [ 'EcalEndcapPHitsContributions', 'EcalBarrelHits', 'EcalBarrelHitsContributions', - 'EcalBarrelScFiHits', - 'EcalBarrelScFiHitsContributions', 'HcalBarrelHits', 'HcalBarrelHitsContributions', 'HcalEndcapPHits', @@ -188,6 +186,13 @@ sim_coll = [ 'ZDCHcalHitsContributions', ] +ecal_barrel_scfi_collections = [ + 'EcalBarrelScFiHits', + 'EcalBarrelScFiHitsContributions' +] +if 'athena' in detector_name: + sim_coll += ecal_barrel_scfi_collections + forward_romanpot_collections = [ 'ForwardRomanPotHits1', 'ForwardRomanPotHits2' @@ -462,17 +467,19 @@ algorithms.append(ci_ecal_clreco) # outputRelations = "EcalEndcapPMergedClusterRelations") #algorithms.append(ci_ecal_clmerger) -# Central Barrel Ecal (Imaging Cal.) -img_barrel_daq = calo_daq['ecal_barrel_imaging'] +# Central Barrel Ecal +if 'athena' in detector_name: + # Central ECAL Imaging Calorimeter + img_barrel_daq = calo_daq['ecal_barrel_imaging'] -img_barrel_digi = CalHitDigi("img_barrel_digi", + img_barrel_digi = CalHitDigi("img_barrel_digi", inputHitCollection="EcalBarrelHits", outputHitCollection="EcalBarrelImagingRawHits", energyResolutions=[0., 0.02, 0.], # 2% flat resolution **img_barrel_daq) -algorithms.append(img_barrel_digi) + algorithms.append(img_barrel_digi) -img_barrel_reco = ImCalPixelReco("img_barrel_reco", + img_barrel_reco = ImCalPixelReco("img_barrel_reco", inputHitCollection=img_barrel_digi.outputHitCollection, outputHitCollection="EcalBarrelImagingRecHits", thresholdFactor=3, # about 20 keV @@ -481,34 +488,34 @@ img_barrel_reco = ImCalPixelReco("img_barrel_reco", layerField="layer", # field to get layer id sectorField="module", # field to get sector id **img_barrel_daq) -algorithms.append(img_barrel_reco) + algorithms.append(img_barrel_reco) -img_barrel_cl = ImagingCluster("img_barrel_cl", + img_barrel_cl = ImagingCluster("img_barrel_cl", inputHitCollection=img_barrel_reco.outputHitCollection, outputProtoClusterCollection="EcalBarrelImagingProtoClusters", localDistXY=[2.*units.mm, 2*units.mm], # same layer layerDistEtaPhi=[10*units.mrad, 10*units.mrad], # adjacent layer neighbourLayersRange=2, # id diff for adjacent layer sectorDist=3.*units.cm) # different sector -algorithms.append(img_barrel_cl) + algorithms.append(img_barrel_cl) -img_barrel_clreco = ImagingClusterReco("img_barrel_clreco", + img_barrel_clreco = ImagingClusterReco("img_barrel_clreco", inputProtoClusters=img_barrel_cl.outputProtoClusterCollection, outputClusters="EcalBarrelImagingClusters", mcHits="EcalBarrelHits", outputLayers="EcalBarrelImagingLayers") -algorithms.append(img_barrel_clreco) + algorithms.append(img_barrel_clreco) -# Central ECAL SciFi -scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] + # Central ECAL SciFi + scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] -scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", + scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", inputHitCollection="EcalBarrelScFiHits", outputHitCollection="EcalBarrelScFiRawHits", **scfi_barrel_daq) -algorithms.append(scfi_barrel_digi) + algorithms.append(scfi_barrel_digi) -scfi_barrel_reco = CalHitReco("scfi_barrel_reco", + scfi_barrel_reco = CalHitReco("scfi_barrel_reco", inputHitCollection=scfi_barrel_digi.outputHitCollection, outputHitCollection="EcalBarrelScFiRecHits", thresholdFactor=5.0, @@ -518,40 +525,80 @@ scfi_barrel_reco = CalHitReco("scfi_barrel_reco", sectorField="module", localDetFields=["system", "module"], # use local coordinates in each module (stave) **scfi_barrel_daq) -algorithms.append(scfi_barrel_reco) + algorithms.append(scfi_barrel_reco) -# merge hits in different layer (projection to local x-y plane) -scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger", + # merge hits in different layer (projection to local x-y plane) + scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger", inputHitCollection=scfi_barrel_reco.outputHitCollection, outputHitCollection="EcalBarrelScFiMergedHits", fields=["fiber"], fieldRefNumbers=[1], readoutClass="EcalBarrelScFiHits") -algorithms.append(scfi_barrel_merger) + algorithms.append(scfi_barrel_merger) -scfi_barrel_cl = IslandCluster("scfi_barrel_cl", + scfi_barrel_cl = IslandCluster("scfi_barrel_cl", inputHitCollection=scfi_barrel_merger.outputHitCollection, outputProtoClusterCollection="EcalBarrelScFiProtoClusters", splitCluster=False, minClusterCenterEdep=10.*MeV, localDistXZ=[30*mm, 30*mm]) -algorithms.append(scfi_barrel_cl) + algorithms.append(scfi_barrel_cl) -scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco", + scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco", inputProtoClusterCollection=scfi_barrel_cl.outputProtoClusterCollection, outputClusterCollection="EcalBarrelScFiClusters", logWeightBase=6.2) -algorithms.append(scfi_barrel_clreco) + algorithms.append(scfi_barrel_clreco) -## barrel cluster merger -#barrel_clus_merger = EnergyPositionClusterMerger("barrel_clus_merger", -# inputMCParticles = "MCParticles", -# inputEnergyClusters = scfi_barrel_clreco.outputClusterCollection, -# inputPositionClusters = img_barrel_clreco.outputClusterCollection, -# outputClusters = "EcalBarrelMergedClusters", -# outputRelations = "EcalBarrelMergedClusterRelations") -#algorithms.append(barrel_clus_merger) + ## barrel cluster merger + #barrel_clus_merger = EnergyPositionClusterMerger("barrel_clus_merger", + # inputMCParticles = "MCParticles", + # inputEnergyClusters = scfi_barrel_clreco.outputClusterCollection, + # inputPositionClusters = img_barrel_clreco.outputClusterCollection, + # outputClusters = "EcalBarrelMergedClusters", + # outputRelations = "EcalBarrelMergedClusterRelations") + #algorithms.append(barrel_clus_merger) +else: + # SciGlass calorimeter + sciglass_ecal_daq = dict( + dynamicRangeADC=5.*GeV, + capacityADC=32768, + pedestalMean=400, + pedestalSigma=3) + + sciglass_ecal_digi = CalHitDigi("sciglass_ecal_digi", + inputHitCollection="EcalBarrelHits", + outputHitCollection="EcalBarrelHitsDigi", + energyResolutions=[0., 0.02, 0.], # 2% flat resolution + **sciglass_ecal_daq) + algorithms.append(sciglass_ecal_digi) + + sciglass_ecal_reco = CalHitReco("sciglass_ecal_reco", + inputHitCollection=sciglass_ecal_digi.outputHitCollection, + outputHitCollection="EcalBarrelHitsReco", + thresholdFactor=3, # about 20 keV + readoutClass="EcalBarrelHits", # readout class + sectorField="sector", # field to get sector id + samplingFraction=0.998, # this accounts for a small fraction of leakage + **sciglass_ecal_daq) + algorithms.append(sciglass_ecal_reco) + + sciglass_ecal_cl = IslandCluster("sciglass_ecal_cl", + inputHitCollection=sciglass_ecal_reco.outputHitCollection, + outputProtoClusterCollection="EcalBarrelProtoClusters", + splitCluster=False, + minClusterHitEdep=1.0*MeV, # discard low energy hits + minClusterCenterEdep=30*MeV, + sectorDist=5.0*cm) + algorithms.append(sciglass_ecal_cl) + + sciglass_ecal_clreco = ImagingClusterReco("sciglass_ecal_clreco", + inputProtoClusters=sciglass_ecal_cl.outputProtoClusterCollection, + mcHits="EcalBarrelHits", + outputClusters="EcalBarrelClusters", + outputLayers="EcalBarrelLayers") + algorithms.append(sciglass_ecal_clreco) # Central Barrel Hcal cb_hcal_daq = calo_daq['hcal_barrel'] diff --git a/options/reconstruction.raw.py b/options/reconstruction.raw.py index d51f1456..6e4ba88d 100644 --- a/options/reconstruction.raw.py +++ b/options/reconstruction.raw.py @@ -72,8 +72,6 @@ sim_coll = [ 'EcalEndcapPHitsContributions', 'EcalBarrelHits', 'EcalBarrelHitsContributions', - 'EcalBarrelScFiHits', - 'EcalBarrelScFiHitsContributions', 'HcalBarrelHits', 'HcalBarrelHitsContributions', 'HcalEndcapPHits', @@ -83,6 +81,13 @@ sim_coll = [ 'DRICHHits', ] +ecal_barrel_scfi_collections = [ + 'EcalBarrelScFiHits', + 'EcalBarrelScFiHitsContributions' +] +if 'athena' in detector_name: + sim_coll += ecal_barrel_scfi_collections + forward_romanpot_collections = [ 'ForwardRomanPotHits1', 'ForwardRomanPotHits2' @@ -186,24 +191,36 @@ ci_ecal_digi = CalHitDigi("ci_ecal_digi", **ci_ecal_daq) algorithms.append(ci_ecal_digi) -# Central Barrel Ecal (Imaging Cal.) -img_barrel_daq = calo_daq['ecal_barrel_imaging'] +# Central Barrel Ecal +if 'athena' in detector_name: + # Central ECAL Imaging Calorimeter + img_barrel_daq = calo_daq['ecal_barrel_imaging'] -img_barrel_digi = CalHitDigi("img_barrel_digi", + img_barrel_digi = CalHitDigi("img_barrel_digi", inputHitCollection="EcalBarrelHits", outputHitCollection="EcalBarrelImagingRawHits", energyResolutions=[0., 0.02, 0.], # 2% flat resolution **img_barrel_daq) -algorithms.append(img_barrel_digi) + algorithms.append(img_barrel_digi) -# Central ECAL SciFi -scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] + # Central ECAL SciFi + scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] -scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", + scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", inputHitCollection="EcalBarrelScFiHits", outputHitCollection="EcalBarrelScFiRawHits", **scfi_barrel_daq) -algorithms.append(scfi_barrel_digi) + algorithms.append(scfi_barrel_digi) +else: + # SciGlass calorimeter + sciglass_ecal_daq = calo_daq['ecal_barrel_sciglass'] + + sciglass_ecal_digi = CalHitDigi("sciglass_ecal_digi", + inputHitCollection="EcalBarrelHits", + outputHitCollection="EcalBarrelHitsDigi", + energyResolutions=[0., 0.02, 0.], # 2% flat resolution + **sciglass_ecal_daq) + algorithms.append(sciglass_ecal_digi) # Central Barrel Hcal cb_hcal_daq = calo_daq['hcal_barrel'] -- GitLab