Skip to content
Snippets Groups Projects
Commit 7e5aecf4 authored by Wouter Deconinck's avatar Wouter Deconinck
Browse files

Reconstruction benchmark fixes for ecce:main

parent 4ba38b23
No related branches found
No related tags found
1 merge request!251Reconstruction benchmark fixes for ecce:main
......@@ -130,7 +130,7 @@ fi
# Run analysis scripts
FULL_CAL_SCRIPT_DIR=benchmarks/clustering/scripts
python ${FULL_CAL_SCRIPT_DIR}/cluster_plots.py ${JUGGLER_SIM_FILE} ${JUGGLER_REC_FILE} -o results \
--collections "EcalEndcapNClusters, EcalEndcapPClusters, EcalBarrelImagingClusters,
--collections "EcalEndcapNClusters, EcalEndcapPClusters, EcalBarrelClusters, EcalBarrelImagingClusters,
HcalEndcapNClusters, HcalEndcapPClusters, HcalBarrelClusters"
root_filesize=$(stat --format=%s "${JUGGLER_REC_FILE}")
......
......@@ -10,6 +10,8 @@ from Configurables import ApplicationMgr, EICDataSvc, PodioInput, PodioOutput, G
from GaudiKernel.SystemOfUnits import MeV, GeV, mm, cm, mrad
detector_name = str(os.environ.get("JUGGLER_DETECTOR", "athena"))
detector_version = str(os.environ.get("JUGGLER_DETECTOR", "master"))
detector_path = str(os.environ.get("DETECTOR_PATH", "."))
compact_path = os.path.join(detector_path, detector_name)
......@@ -60,8 +62,6 @@ sim_coll = [
"EcalEndcapPHitsContributions",
"EcalBarrelHits",
"EcalBarrelHitsContributions",
"EcalBarrelScFiHits",
"EcalBarrelScFiHitsContributions",
"HcalBarrelHits",
"HcalBarrelHitsContributions",
"HcalEndcapPHits",
......@@ -70,10 +70,18 @@ sim_coll = [
"HcalEndcapNHitsContributions",
]
# input and output
podin = PodioInput("PodioReader", collections=sim_coll)
podout = PodioOutput("out", filename=output_rec)
if 'athena' in detector_name:
sim_coll += [
"EcalBarrelScFiHits",
"EcalBarrelScFiHitsContributions",
]
# list of algorithms
algs = []
# input
podin = PodioInput("PodioReader", collections=sim_coll)
algs.append(podin)
# Crystal Endcap Ecal
ce_ecal_daq = dict(
......@@ -87,6 +95,7 @@ ce_ecal_digi = CalHitDigi("ce_ecal_digi",
outputHitCollection="EcalEndcapNHitsDigi",
energyResolutions=[0., 0.02, 0.],
**ce_ecal_daq)
algs.append(ce_ecal_digi)
ce_ecal_reco = CalHitReco("ce_ecal_reco",
inputHitCollection=ce_ecal_digi.outputHitCollection,
......@@ -96,6 +105,7 @@ ce_ecal_reco = CalHitReco("ce_ecal_reco",
sectorField="sector",
samplingFraction=0.998, # this accounts for a small fraction of leakage
**ce_ecal_daq)
algs.append(ce_ecal_reco)
ce_ecal_cl = IslandCluster("ce_ecal_cl",
# OutputLevel=DEBUG,
......@@ -106,11 +116,13 @@ ce_ecal_cl = IslandCluster("ce_ecal_cl",
minClusterCenterEdep=30*MeV,
sectorDist=5.0*cm,
dimScaledLocalDistXY=[1.8, 1.8]) # dimension scaled dist is good for hybrid sectors with different module size
algs.append(ce_ecal_cl)
ce_ecal_clreco = RecoCoG("ce_ecal_clreco",
inputProtoClusterCollection=ce_ecal_cl.outputProtoClusterCollection,
outputClusterCollection="EcalEndcapNClusters",
logWeightBase=4.6)
algs.append(ce_ecal_clreco)
# Endcap Sampling Ecal
ci_ecal_daq = dict(
......@@ -123,6 +135,7 @@ ci_ecal_digi = CalHitDigi("ci_ecal_digi",
inputHitCollection="EcalEndcapPHits",
outputHitCollection="EcalEndcapPHitsDigi",
**ci_ecal_daq)
algs.append(ci_ecal_digi)
ci_ecal_reco = CalHitReco("ci_ecal_reco",
inputHitCollection=ci_ecal_digi.outputHitCollection,
......@@ -130,6 +143,7 @@ ci_ecal_reco = CalHitReco("ci_ecal_reco",
thresholdFactor=5.0,
samplingFraction=ci_ecal_sf,
**ci_ecal_daq)
algs.append(ci_ecal_reco)
# merge hits in different layer (projection to local x-y plane)
ci_ecal_merger = CalHitsMerger("ci_ecal_merger",
......@@ -141,6 +155,7 @@ ci_ecal_merger = CalHitsMerger("ci_ecal_merger",
fields=["fiber_x", "fiber_y"],
fieldRefNumbers=[1, 1],
readoutClass="EcalEndcapPHits")
algs.append(ci_ecal_merger)
ci_ecal_cl = IslandCluster("ci_ecal_cl",
# OutputLevel=DEBUG,
......@@ -149,26 +164,31 @@ ci_ecal_cl = IslandCluster("ci_ecal_cl",
splitCluster=False,
minClusterCenterEdep=10.*MeV,
localDistXY=[10*mm, 10*mm])
algs.append(ci_ecal_cl)
ci_ecal_clreco = RecoCoG("ci_ecal_clreco",
inputProtoClusterCollection=ci_ecal_cl.outputProtoClusterCollection,
outputClusterCollection="EcalEndcapPClusters",
logWeightBase=6.2)
algs.append(ci_ecal_clreco)
# Central Barrel Ecal (Imaging Cal.)
cb_ecal_daq = dict(
# Central Barrel Ecal
if 'athena' in detector_name:
# Imaging calorimeter
cb_ecal_daq = dict(
dynamicRangeADC=3*MeV,
capacityADC=8192,
pedestalMean=400,
pedestalSigma=20) # about 6 keV
cb_ecal_digi = CalHitDigi("cb_ecal_digi",
cb_ecal_digi = CalHitDigi("cb_ecal_digi",
inputHitCollection="EcalBarrelHits",
outputHitCollection="EcalBarrelImagingHitsDigi",
energyResolutions=[0., 0.02, 0.], # 2% flat resolution
**cb_ecal_daq)
algs.append(cb_ecal_digi)
cb_ecal_reco = ImCalPixelReco("cb_ecal_reco",
cb_ecal_reco = ImCalPixelReco("cb_ecal_reco",
inputHitCollection=cb_ecal_digi.outputHitCollection,
outputHitCollection="EcalBarrelImagingHitsReco",
thresholdFactor=3, # about 20 keV
......@@ -177,35 +197,79 @@ cb_ecal_reco = ImCalPixelReco("cb_ecal_reco",
sectorField="module", # field to get sector id
samplingFraction=cb_ecal_sf,
**cb_ecal_daq)
algs.append(cb_ecal_reco)
cb_ecal_cl = ImagingCluster("cb_ecal_cl",
cb_ecal_cl = ImagingCluster("cb_ecal_cl",
inputHitCollection=cb_ecal_reco.outputHitCollection,
outputProtoClusterCollection="EcalBarrelImagingProtoClusters",
localDistXY=[2.*mm, 2*mm], # same layer
layerDistEtaPhi=[10*mrad, 10*mrad], # adjacent layer
neighbourLayersRange=2, # id diff for adjacent layer
sectorDist=3.*cm) # different sector
algs.append(cb_ecal_cl)
cb_ecal_clreco = ImagingClusterReco("cb_ecal_clreco",
cb_ecal_clreco = ImagingClusterReco("cb_ecal_clreco",
inputProtoClusters=cb_ecal_cl.outputProtoClusterCollection,
mcHits="EcalBarrelHits",
outputClusters="EcalBarrelImagingClusters",
outputLayers="EcalBarrelImagingLayers")
algs.append(cb_ecal_clreco)
else:
# SciGlass calorimeter
cb_ecal_daq = dict(
dynamicRangeADC=5.*GeV,
capacityADC=32768,
pedestalMean=400,
pedestalSigma=3)
cb_ecal_digi = CalHitDigi("cb_ecal_digi",
inputHitCollection="EcalBarrelHits",
outputHitCollection="EcalBarrelHitsDigi",
energyResolutions=[0., 0.02, 0.], # 2% flat resolution
**cb_ecal_daq)
algs.append(cb_ecal_digi)
cb_ecal_reco = CalHitReco("cb_ecal_reco",
inputHitCollection=cb_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
**cb_ecal_daq)
algs.append(cb_ecal_reco)
#Central ECAL SciFi
# use the same daq_setting for digi/reco pair
scfi_barrel_daq = dict(
cb_ecal_cl = IslandCluster("cb_ecal_cl",
inputHitCollection=cb_ecal_reco.outputHitCollection,
outputProtoClusterCollection="EcalBarrelProtoClusters",
splitCluster=False,
minClusterHitEdep=1.0*MeV, # discard low energy hits
minClusterCenterEdep=30*MeV,
sectorDist=5.0*cm)
algs.append(cb_ecal_cl)
cb_ecal_clreco = ImagingClusterReco("cb_ecal_clreco",
inputProtoClusters=cb_ecal_cl.outputProtoClusterCollection,
mcHits="EcalBarrelHits",
outputClusters="EcalBarrelClusters",
outputLayers="EcalBarrelLayers")
algs.append(cb_ecal_clreco)
# Central Barrel Ecal SciFi
if 'athena' in detector_name:
scfi_barrel_daq = dict(
dynamicRangeADC=50.*MeV,
capacityADC=32768,
pedestalMean=400,
pedestalSigma=10)
scfi_barrel_digi = CalHitDigi("scfi_barrel_digi",
scfi_barrel_digi = CalHitDigi("scfi_barrel_digi",
inputHitCollection="EcalBarrelScFiHits",
outputHitCollection="EcalBarrelScFiHitsDigi",
**scfi_barrel_daq)
algs.append(scfi_barrel_digi)
scfi_barrel_reco = CalHitReco("scfi_barrel_reco",
scfi_barrel_reco = CalHitReco("scfi_barrel_reco",
inputHitCollection=scfi_barrel_digi.outputHitCollection,
outputHitCollection="EcalBarrelScFiHitsReco",
thresholdFactor=5.0,
......@@ -215,29 +279,32 @@ scfi_barrel_reco = CalHitReco("scfi_barrel_reco",
localDetFields=["system", "module"], # use local coordinates in each module (stave)
samplingFraction=scifi_barrel_sf,
**scfi_barrel_daq)
algs.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",
# OutputLevel=DEBUG,
inputHitCollection=scfi_barrel_reco.outputHitCollection,
outputHitCollection="EcalBarrelScFiGridReco",
fields=["fiber"],
fieldRefNumbers=[1],
readoutClass="EcalBarrelScFiHits")
algs.append(scfi_barrel_merger)
scfi_barrel_cl = IslandCluster("scfi_barrel_cl",
scfi_barrel_cl = IslandCluster("scfi_barrel_cl",
# OutputLevel=DEBUG,
inputHitCollection=scfi_barrel_merger.outputHitCollection,
outputProtoClusterCollection="EcalBarrelScFiProtoClusters",
splitCluster=False,
minClusterCenterEdep=10.*MeV,
localDistXZ=[30*mm, 30*mm])
algs.append(scfi_barrel_cl)
scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco",
inputProtoClusterCollection=scfi_barrel_cl.outputProtoClusterCollection,
outputClusterCollection="EcalBarrelScFiClusters",
logWeightBase=6.2)
scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco",
inputProtoClusterCollection=scfi_barrel_cl.outputProtoClusterCollection,
outputClusterCollection="EcalBarrelScFiClusters",
logWeightBase=6.2)
algs.append(scfi_barrel_clreco)
# Central Barrel Hcal
cb_hcal_daq = dict(
......@@ -250,6 +317,7 @@ cb_hcal_digi = CalHitDigi("cb_hcal_digi",
inputHitCollection="HcalBarrelHits",
outputHitCollection="HcalBarrelHitsDigi",
**cb_hcal_daq)
algs.append(cb_hcal_digi)
cb_hcal_reco = CalHitReco("cb_hcal_reco",
inputHitCollection=cb_hcal_digi.outputHitCollection,
......@@ -260,6 +328,7 @@ cb_hcal_reco = CalHitReco("cb_hcal_reco",
sectorField="module",
samplingFraction=cb_hcal_sf,
**cb_hcal_daq)
algs.append(cb_hcal_reco)
cb_hcal_merger = CalHitsMerger("cb_hcal_merger",
inputHitCollection=cb_hcal_reco.outputHitCollection,
......@@ -267,6 +336,7 @@ cb_hcal_merger = CalHitsMerger("cb_hcal_merger",
readoutClass="HcalBarrelHits",
fields=["layer", "slice"],
fieldRefNumbers=[1, 0])
algs.append(cb_hcal_merger)
cb_hcal_cl = IslandCluster("cb_hcal_cl",
inputHitCollection=cb_hcal_merger.outputHitCollection,
......@@ -274,12 +344,13 @@ cb_hcal_cl = IslandCluster("cb_hcal_cl",
splitCluster=False,
minClusterCenterEdep=30.*MeV,
localDistXY=[15.*cm, 15.*cm])
algs.append(cb_hcal_cl)
cb_hcal_clreco = RecoCoG("cb_hcal_clreco",
inputProtoClusterCollection=cb_hcal_cl.outputProtoClusterCollection,
outputClusterCollection="HcalBarrelClusters",
logWeightBase=6.2)
algs.append(cb_hcal_clreco)
# Hcal Hadron Endcap
ci_hcal_daq = dict(
......@@ -287,10 +358,12 @@ ci_hcal_daq = dict(
capacityADC=32768,
pedestalMean=400,
pedestalSigma=10)
ci_hcal_digi = CalHitDigi("ci_hcal_digi",
inputHitCollection="HcalEndcapPHits",
outputHitCollection="HcalEndcapPHitsDigi",
**ci_hcal_daq)
algs.append(ci_hcal_digi)
ci_hcal_reco = CalHitReco("ci_hcal_reco",
inputHitCollection=ci_hcal_digi.outputHitCollection,
......@@ -298,6 +371,7 @@ ci_hcal_reco = CalHitReco("ci_hcal_reco",
thresholdFactor=5.0,
samplingFraction=ci_hcal_sf,
**ci_hcal_daq)
algs.append(ci_hcal_reco)
ci_hcal_merger = CalHitsMerger("ci_hcal_merger",
inputHitCollection=ci_hcal_reco.outputHitCollection,
......@@ -305,6 +379,7 @@ ci_hcal_merger = CalHitsMerger("ci_hcal_merger",
readoutClass="HcalEndcapPHits",
fields=["layer", "slice"],
fieldRefNumbers=[1, 0])
algs.append(ci_hcal_merger)
ci_hcal_cl = IslandCluster("ci_hcal_cl",
inputHitCollection=ci_hcal_merger.outputHitCollection,
......@@ -312,11 +387,13 @@ ci_hcal_cl = IslandCluster("ci_hcal_cl",
splitCluster=False,
minClusterCenterEdep=30.*MeV,
localDistXY=[15.*cm, 15.*cm])
algs.append(ci_hcal_cl)
ci_hcal_clreco = RecoCoG("ci_hcal_clreco",
inputProtoClusterCollection=ci_hcal_cl.outputProtoClusterCollection,
outputClusterCollection="HcalEndcapPClusters",
logWeightBase=6.2)
algs.append(ci_hcal_clreco)
# Hcal Electron Endcap
ce_hcal_daq = dict(
......@@ -329,6 +406,7 @@ ce_hcal_digi = CalHitDigi("ce_hcal_digi",
inputHitCollection="HcalEndcapNHits",
outputHitCollection="HcalEndcapNHitsDigi",
**ce_hcal_daq)
algs.append(ce_hcal_digi)
ce_hcal_reco = CalHitReco("ce_hcal_reco",
inputHitCollection=ce_hcal_digi.outputHitCollection,
......@@ -336,6 +414,7 @@ ce_hcal_reco = CalHitReco("ce_hcal_reco",
thresholdFactor=5.0,
samplingFraction=ce_hcal_sf,
**ce_hcal_daq)
algs.append(ce_hcal_reco)
ce_hcal_merger = CalHitsMerger("ce_hcal_merger",
inputHitCollection=ce_hcal_reco.outputHitCollection,
......@@ -343,6 +422,7 @@ ce_hcal_merger = CalHitsMerger("ce_hcal_merger",
readoutClass="HcalEndcapNHits",
fields=["layer", "slice"],
fieldRefNumbers=[1, 0])
algs.append(ce_hcal_merger)
ce_hcal_cl = IslandCluster("ce_hcal_cl",
inputHitCollection=ce_hcal_merger.outputHitCollection,
......@@ -350,32 +430,28 @@ ce_hcal_cl = IslandCluster("ce_hcal_cl",
splitCluster=False,
minClusterCenterEdep=30.*MeV,
localDistXY=[15.*cm, 15.*cm])
algs.append(ce_hcal_cl)
ce_hcal_clreco = RecoCoG("ce_hcal_clreco",
inputProtoClusterCollection=ce_hcal_cl.outputProtoClusterCollection,
outputClusterCollection="HcalEndcapNClusters",
logWeightBase=6.2)
algs.append(ce_hcal_clreco)
# output
podout = PodioOutput("out", filename=output_rec)
podout.outputCommands = ['drop *',
'keep MCParticles',
'keep *Digi',
'keep *Reco*',
'keep *Cluster*',
'keep *Layers']
algs.append(podout)
ApplicationMgr(
TopAlg = [podin,
ce_ecal_digi, ce_ecal_reco, ce_ecal_cl, ce_ecal_clreco,
ci_ecal_digi, ci_ecal_reco, ci_ecal_merger, ci_ecal_cl, ci_ecal_clreco,
cb_ecal_digi, cb_ecal_reco, cb_ecal_cl, cb_ecal_clreco,
scfi_barrel_digi, scfi_barrel_reco, scfi_barrel_merger, scfi_barrel_cl, scfi_barrel_clreco,
cb_hcal_digi, cb_hcal_reco, cb_hcal_merger, cb_hcal_cl, cb_hcal_clreco,
ce_hcal_digi, ce_hcal_reco, ce_hcal_merger, ce_hcal_cl, ce_hcal_clreco,
ci_hcal_digi, ci_hcal_reco, ci_hcal_merger, ci_hcal_cl, ci_hcal_clreco,
podout],
TopAlg = algs,
EvtSel = 'NONE',
EvtMax = n_events,
ExtSvc = [podioevent],
OutputLevel=DEBUG
OutputLevel=WARNING
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment