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

fix: support for the new EPIC tracking layout

parent 216ddc51
Branches
No related tags found
1 merge request!171fix: support for the new EPIC tracking layout
......@@ -6,30 +6,13 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad
import json
detector_name = "athena"
if "DETECTOR" in os.environ:
detector_name = str(os.environ["DETECTOR"])
detector_config = detector_name
if "DETECTOR_CONFIG" in os.environ:
detector_config = str(os.environ["DETECTOR_CONFIG"])
detector_path = ""
if "DETECTOR_PATH" in os.environ:
detector_path = str(os.environ["DETECTOR_PATH"])
detector_version = "default"
if "DETECTOR_VERSION" in os.environ:
env_version = str(os.environ["DETECTOR_VERSION"])
if "acadia" in env_version:
detector_version = "acadia"
detector_path = str(os.environ.get("DETECTOR_PATH", "."))
detector_name = str(os.environ.get("DETECTOR_CONFIG", "epic"))
detector_config = str(os.environ.get("DETECTOR_CONFIG", detector_name))
detector_version = str(os.environ.get("DETECTOR_VERSION", "main"))
# Detector features that affect reconstruction
has_ecal_barrel_scfi = False
if "athena" in detector_name:
has_ecal_barrel_scfi = True
if "ecce" in detector_name and "imaging" in detector_config:
has_ecal_barrel_scfi = True
if "epic" in detector_name and "imaging" in detector_config:
has_ecal_barrel_scfi = True
......@@ -40,7 +23,7 @@ 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)
"{}/calibrations/calo_digi_default.json".format(detector_path)
) as f:
calo_config = json.load(f)
## add proper ADC capacity based on bit depth
......
......@@ -6,30 +6,13 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad
import json
detector_name = "athena"
if "DETECTOR" in os.environ:
detector_name = str(os.environ["DETECTOR"])
detector_config = detector_name
if "DETECTOR_CONFIG" in os.environ:
detector_config = str(os.environ["DETECTOR_CONFIG"])
detector_path = ""
if "DETECTOR_PATH" in os.environ:
detector_path = str(os.environ["DETECTOR_PATH"])
detector_version = "default"
if "DETECTOR_VERSION" in os.environ:
env_version = str(os.environ["DETECTOR_VERSION"])
if "acadia" in env_version:
detector_version = "acadia"
detector_path = str(os.environ.get("DETECTOR_PATH", "."))
detector_name = str(os.environ.get("DETECTOR_CONFIG", "epic"))
detector_config = str(os.environ.get("DETECTOR_CONFIG", detector_name))
detector_version = str(os.environ.get("DETECTOR_VERSION", "main"))
# Detector features that affect reconstruction
has_ecal_barrel_scfi = False
if "athena" in detector_name:
has_ecal_barrel_scfi = True
if "ecce" in detector_name and "imaging" in detector_config:
has_ecal_barrel_scfi = True
if "epic" in detector_name and "imaging" in detector_config:
has_ecal_barrel_scfi = True
......@@ -42,7 +25,7 @@ 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)
"{}/calibrations/calo_digi_default.json".format(detector_path)
) as f:
calo_config = json.load(f)
## add proper ADC capacity based on bit depth
......
......@@ -8,30 +8,13 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad
import json
detector_name = "athena"
if "DETECTOR" in os.environ:
detector_name = str(os.environ["DETECTOR"])
detector_config = detector_name
if "DETECTOR_CONFIG" in os.environ:
detector_config = str(os.environ["DETECTOR_CONFIG"])
detector_path = ""
if "DETECTOR_PATH" in os.environ:
detector_path = str(os.environ["DETECTOR_PATH"])
detector_version = "default"
if "DETECTOR_VERSION" in os.environ:
env_version = str(os.environ["DETECTOR_VERSION"])
if "acadia" in env_version:
detector_version = "acadia"
detector_path = str(os.environ.get("DETECTOR_PATH", "."))
detector_name = str(os.environ.get("DETECTOR_CONFIG", "epic"))
detector_config = str(os.environ.get("DETECTOR_CONFIG", detector_name))
detector_version = str(os.environ.get("DETECTOR_VERSION", "main"))
# Detector features that affect reconstruction
has_ecal_barrel_scfi = False
if "athena" in detector_name:
has_ecal_barrel_scfi = True
if "ecce" in detector_name and "imaging" in detector_config:
has_ecal_barrel_scfi = True
if "epic" in detector_name and "imaging" in detector_config:
has_ecal_barrel_scfi = True
......@@ -91,7 +74,7 @@ print(calib_data)
# input calorimeter DAQ info
calo_daq = {}
with open(f"{detector_path}/calibrations/calo_digi_{detector_version}.json") as f:
with open(f"{detector_path}/calibrations/calo_digi_default.json") as f:
calo_config = json.load(f)
## add proper ADC capacity based on bit depth
for sys in calo_config:
......@@ -122,24 +105,14 @@ services.append(AuditorSvc("AuditorSvc", Auditors=["ChronoAuditor", "MemStatAudi
## note: old version of material map is called material-maps.XXX, new version is materials-map.XXX
## these names are somewhat inconsistent, and should probably all be renamed to 'material-map.XXX'
## FIXME
if detector_version == "acadia":
services.append(
GeoSvc(
"GeoSvc",
detectors=["{}/{}.xml".format(detector_path, detector_config)],
materials="config/material-maps.json",
OutputLevel=WARNING,
)
)
else:
services.append(
GeoSvc(
"GeoSvc",
detectors=["{}/{}.xml".format(detector_path, detector_config)],
materials="calibrations/materials-map.cbor",
OutputLevel=WARNING,
)
services.append(
GeoSvc(
"GeoSvc",
detectors=["{}/{}.xml".format(detector_path, detector_config)],
materials="calibrations/materials-map.cbor",
OutputLevel=WARNING,
)
)
# data service
services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING))
......@@ -262,44 +235,32 @@ forward_offmtracker_collections = [
sim_coll += forward_romanpot_collections + forward_offmtracker_collections
tracker_endcap_collections = [
"TrackerEndcapHits1",
"TrackerEndcapHits2",
"TrackerEndcapHits3",
"TrackerEndcapHits4",
"TrackerEndcapHits5",
"TrackerEndcapHits6",
"InnerTrackerEndcapPHits",
"InnerTrackerEndcapNHits",
"MiddleTrackerEndcapPHits",
"MiddleTrackerEndcapNHits",
"OuterTrackerEndcapPHits",
"OuterTrackerEndcapNHits",
]
tracker_barrel_collections = [
"TrackerBarrelHits",
"SagittaSiBarrelHits",
"OuterSiBarrelHits",
]
vertex_barrel_collections = [
"VertexBarrelHits",
]
gem_endcap_collections = [
"GEMTrackerEndcapHits1",
"GEMTrackerEndcapHits2",
"GEMTrackerEndcapHits3",
mpgd_barrel_collections = [
"InnerMPGDBarrelHits",
"OuterMPGDBarrelHits",
]
sim_coll += (
tracker_endcap_collections
+ tracker_barrel_collections
+ vertex_barrel_collections
+ gem_endcap_collections
+ mpgd_barrel_collections
)
vertex_endcap_collections = [
"VertexEndcapHits",
]
mpgd_barrel_collections = [
"MPGDTrackerBarrelHits1",
"MPGDTrackerBarrelHits2",
]
if "acadia" in detector_version:
sim_coll += vertex_endcap_collections
sim_coll.append("MRICHHits")
else:
sim_coll += mpgd_barrel_collections
sim_coll.append("MRICHHits")
# list of algorithms
algorithms = []
......@@ -995,51 +956,20 @@ vtx_b_digi = TrackerDigi(
)
algorithms.append(vtx_b_digi)
if "acadia" in detector_version:
vtx_ec_coll = SimTrackerHitsCollector(
"vtx_ec_coll",
inputSimTrackerHits=vertex_endcap_collections,
outputSimTrackerHits="VertexEndcapAllHits",
)
algorithms.append(vtx_ec_coll)
vtx_ec_digi = TrackerDigi(
"vtx_ec_digi",
inputHitCollection=vtx_ec_coll.outputSimTrackerHits,
outputHitCollection="VertexEndcapRawHits",
timeResolution=8,
)
algorithms.append(vtx_ec_digi)
else:
mm_b_coll = SimTrackerHitsCollector(
"mm_b_coll",
inputSimTrackerHits=mpgd_barrel_collections,
outputSimTrackerHits="MPGDTrackerBarrelAllHits",
)
algorithms.append(mm_b_coll)
mm_b_digi = TrackerDigi(
"mm_b_digi",
inputHitCollection=mm_b_coll.outputSimTrackerHits,
outputHitCollection="MPGDTrackerBarrelRawHits",
timeResolution=8,
)
algorithms.append(mm_b_digi)
gem_ec_coll = SimTrackerHitsCollector(
"gem_ec_coll",
inputSimTrackerHits=gem_endcap_collections,
outputSimTrackerHits="GEMTrackerEndcapAllHits",
mpgd_b_coll = SimTrackerHitsCollector(
"mpgd_b_coll",
inputSimTrackerHits=mpgd_barrel_collections,
outputSimTrackerHits="MPGDTrackerBarrelAllHits",
)
algorithms.append(gem_ec_coll)
algorithms.append(mpgd_b_coll)
gem_ec_digi = TrackerDigi(
"gem_ec_digi",
inputHitCollection=gem_ec_coll.outputSimTrackerHits,
outputHitCollection="GEMTrackerEndcapRawHits",
timeResolution=10,
mpgd_b_digi = TrackerDigi(
"mpgd_b_digi",
inputHitCollection=mpgd_b_coll.outputSimTrackerHits,
outputHitCollection="MPGDTrackerBarrelRawHits",
timeResolution=8,
)
algorithms.append(gem_ec_digi)
algorithms.append(mpgd_b_digi)
# Tracker and vertex reconstruction
trk_b_reco = TrackerHitReconstruction(
......@@ -1063,41 +993,24 @@ vtx_b_reco = TrackerHitReconstruction(
)
algorithms.append(vtx_b_reco)
if "acadia" in detector_version:
vtx_ec_reco = TrackerHitReconstruction(
"vtx_ec_reco",
inputHitCollection=vtx_ec_digi.outputHitCollection,
outputHitCollection="VertexEndcapRecHits",
)
algorithms.append(vtx_ec_reco)
else:
mm_b_reco = TrackerHitReconstruction(
"mm_b_reco",
inputHitCollection=mm_b_digi.outputHitCollection,
outputHitCollection="MPGDTrackerBarrelRecHits",
)
algorithms.append(mm_b_reco)
gem_ec_reco = TrackerHitReconstruction(
"gem_ec_reco",
inputHitCollection=gem_ec_digi.outputHitCollection,
outputHitCollection="GEMTrackerEndcapRecHits",
mpgd_b_reco = TrackerHitReconstruction(
"mpgd_b_reco",
inputHitCollection=mpgd_b_digi.outputHitCollection,
outputHitCollection="MPGDTrackerBarrelRecHits",
)
algorithms.append(gem_ec_reco)
algorithms.append(mpgd_b_reco)
input_tracking_hits = [
str(trk_b_reco.outputHitCollection),
str(trk_ec_reco.outputHitCollection),
str(vtx_b_reco.outputHitCollection),
str(gem_ec_reco.outputHitCollection),
str(mpgd_b_reco.outputHitCollection),
]
if "acadia" in detector_version:
input_tracking_hits.append(str(vtx_ec_reco.outputHitCollection))
else:
input_tracking_hits.append(str(mm_b_reco.outputHitCollection))
trk_hit_col = TrackingHitsCollector(
"trk_hit_col", inputTrackingHits=input_tracking_hits, trackingHits="trackingHits"
"trk_hit_col",
inputTrackingHits=input_tracking_hits,
trackingHits="trackingHits",
)
algorithms.append(trk_hit_col)
......@@ -1297,5 +1210,5 @@ ApplicationMgr(
ExtSvc=services,
OutputLevel=WARNING,
AuditAlgorithms=True,
HistogramPersistency='ROOT',
HistogramPersistency="ROOT",
)
......@@ -6,23 +6,10 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad
import json
detector_name = "athena"
if "DETECTOR" in os.environ:
detector_name = str(os.environ["DETECTOR"])
detector_config = detector_name
if "DETECTOR_CONFIG" in os.environ:
detector_config = str(os.environ["DETECTOR_CONFIG"])
detector_path = ""
if "DETECTOR_PATH" in os.environ:
detector_path = str(os.environ["DETECTOR_PATH"])
detector_version = "default"
if "DETECTOR_VERSION" in os.environ:
env_version = str(os.environ["DETECTOR_VERSION"])
if "acadia" in env_version:
detector_version = "acadia"
detector_path = str(os.environ.get("DETECTOR_PATH", "."))
detector_name = str(os.environ.get("DETECTOR_CONFIG", "epic"))
detector_config = str(os.environ.get("DETECTOR_CONFIG", detector_name))
detector_version = str(os.environ.get("DETECTOR_VERSION", "main"))
# Detector features that affect reconstruction
has_ecal_barrel_scfi = False
......@@ -42,7 +29,7 @@ qe_data = [
# input calorimeter DAQ info
calo_daq = {}
with open(
"{}/calibrations/calo_digi_{}.json".format(detector_path, detector_version)
"{}/calibrations/calo_digi_default.json".format(detector_path)
) as f:
calo_config = json.load(f)
## add proper ADC capacity based on bit depth
......@@ -124,45 +111,32 @@ forward_offmtracker_collections = [
sim_coll += forward_romanpot_collections + forward_offmtracker_collections
tracker_endcap_collections = [
"TrackerEndcapHits1",
"TrackerEndcapHits2",
"TrackerEndcapHits3",
"TrackerEndcapHits4",
"TrackerEndcapHits5",
"TrackerEndcapHits6",
"InnerTrackerEndcapPHits",
"InnerTrackerEndcapNHits",
"MiddleTrackerEndcapPHits",
"MiddleTrackerEndcapNHits",
"OuterTrackerEndcapPHits",
"OuterTrackerEndcapNHits",
]
tracker_barrel_collections = [
"TrackerBarrelHits",
"SagittaSiBarrelHits",
"OuterSiBarrelHits",
]
vertex_barrel_collections = [
"VertexBarrelHits",
]
gem_endcap_collections = [
"GEMTrackerEndcapHits1",
"GEMTrackerEndcapHits2",
"GEMTrackerEndcapHits3",
mpgd_barrel_collections = [
"InnerMPGDBarrelHits",
"OuterMPGDBarrelHits",
]
sim_coll += (
tracker_endcap_collections
+ tracker_barrel_collections
+ vertex_barrel_collections
+ gem_endcap_collections
+ mpgd_barrel_collections
)
vertex_endcap_collections = [
"VertexEndcapHits",
]
mpgd_barrel_collections = [
"MPGDTrackerBarrelHits1",
"MPGDTrackerBarrelHits2",
]
if "acadia" in detector_version:
sim_coll += vertex_endcap_collections
sim_coll.append("MRICHHits")
else:
sim_coll += mpgd_barrel_collections
sim_coll.append("MRICHHits")
# list of algorithms
algorithms = []
......@@ -349,51 +323,20 @@ vtx_b_digi = TrackerDigi(
)
algorithms.append(vtx_b_digi)
if "acadia" in detector_version:
vtx_ec_coll = SimTrackerHitsCollector(
"vtx_ec_coll",
inputSimTrackerHits=vertex_endcap_collections,
outputSimTrackerHits="VertexEndcapAllHits",
)
algorithms.append(vtx_ec_coll)
vtx_ec_digi = TrackerDigi(
"vtx_ec_digi",
inputHitCollection=vtx_ec_coll.outputSimTrackerHits,
outputHitCollection="VertexEndcapRawHits",
timeResolution=8,
)
algorithms.append(vtx_ec_digi)
else:
mm_b_coll = SimTrackerHitsCollector(
"mm_b_coll",
inputSimTrackerHits=mpgd_barrel_collections,
outputSimTrackerHits="MPGDTrackerBarrelAllHits",
)
algorithms.append(mm_b_coll)
mm_b_digi = TrackerDigi(
"mm_b_digi",
inputHitCollection=mm_b_coll.outputSimTrackerHits,
outputHitCollection="MPGDTrackerBarrelRawHits",
timeResolution=8,
)
algorithms.append(mm_b_digi)
gem_ec_coll = SimTrackerHitsCollector(
"gem_ec_coll",
inputSimTrackerHits=gem_endcap_collections,
outputSimTrackerHits="GEMTrackerEndcapAllHits",
mpgd_b_coll = SimTrackerHitsCollector(
"mpgd_b_coll",
inputSimTrackerHits=mpgd_barrel_collections,
outputSimTrackerHits="MPGDTrackerBarrelAllHits",
)
algorithms.append(gem_ec_coll)
algorithms.append(mpgd_b_coll)
gem_ec_digi = TrackerDigi(
"gem_ec_digi",
inputHitCollection=gem_ec_coll.outputSimTrackerHits,
outputHitCollection="GEMTrackerEndcapRawHits",
timeResolution=10,
mpgd_b_digi = TrackerDigi(
"mpgd_b_digi",
inputHitCollection=mpgd_b_coll.outputSimTrackerHits,
outputHitCollection="MPGDTrackerBarrelRawHits",
timeResolution=8,
)
algorithms.append(gem_ec_digi)
algorithms.append(mpgd_b_digi)
# DRICH
drich_digi = PhotoMultiplierDigi(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment