From c7091d38d0f838329a64fd0000d2660763a284b3 Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wdconinc@gmail.com> Date: Thu, 28 Jul 2022 00:13:55 +0000 Subject: [PATCH] fix: black on options files --- options/reconstruction.ecal.py | 233 +++--- options/reconstruction.hcal.py | 220 +++--- options/reconstruction.py | 1304 +++++++++++++++++++------------- options/reconstruction.raw.py | 470 +++++++----- 4 files changed, 1291 insertions(+), 936 deletions(-) diff --git a/options/reconstruction.ecal.py b/options/reconstruction.ecal.py index 03622bec..b10d1aa5 100644 --- a/options/reconstruction.ecal.py +++ b/options/reconstruction.ecal.py @@ -7,28 +7,30 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json detector_name = "athena" -if "JUGGLER_DETECTOR" in os.environ : +if "JUGGLER_DETECTOR" in os.environ: detector_name = str(os.environ["JUGGLER_DETECTOR"]) detector_config = detector_name -if "JUGGLER_DETECTOR_CONFIG" in os.environ : +if "JUGGLER_DETECTOR_CONFIG" in os.environ: detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" -if "DETECTOR_PATH" in os.environ : - detector_path = str(os.environ["DETECTOR_PATH"]) +if "DETECTOR_PATH" in os.environ: + detector_path = str(os.environ["DETECTOR_PATH"]) -detector_version = 'default' +detector_version = "default" if "JUGGLER_DETECTOR_VERSION" in os.environ: env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"]) - if 'acadia' in env_version: - detector_version = 'acadia' + if "acadia" in env_version: + detector_version = "acadia" # Detector features that affect reconstruction has_ecal_barrel_scfi = False -if 'athena' in detector_name: +if "athena" in detector_name: has_ecal_barrel_scfi = True -if 'ecce' in detector_name and 'imaging' in detector_config: +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 # CAL reconstruction @@ -37,28 +39,38 @@ 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)) as f: +with open( + "{}/calibrations/calo_digi_{}.json".format(detector_path, 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']) + "dynamicRangeADC": eval(cfg["dynamicRange"]), + "capacityADC": 2 ** int(cfg["capacityBitsADC"]), + "pedestalMean": int(cfg["pedestalMean"]), + "pedestalSigma": float(cfg["pedestalSigma"]), } print(calo_daq) # input and output -input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] +input_sims = [ + f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip() +] output_rec = str(os.environ["JUGGLER_REC_FILE"]) n_events = int(os.environ["JUGGLER_N_EVENTS"]) # services services = [] # geometry service -services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], OutputLevel=WARNING)) +services.append( + GeoSvc( + "GeoSvc", + detectors=["{}/{}.xml".format(detector_path, detector_config)], + OutputLevel=WARNING, + ) +) # data service services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING)) @@ -70,15 +82,16 @@ from Configurables import Jug__Reco__CalorimeterHitsMerger as CalHitsMerger from Configurables import Jug__Reco__CalorimeterIslandCluster as IslandCluster from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG from Configurables import Jug__Fast__TruthClustering as TruthClustering -#from Configurables import Jug__Fast__ClusterMerger as ClusterMerger + +# from Configurables import Jug__Fast__ClusterMerger as ClusterMerger # branches needed from simulation root file sim_coll = [ "MCParticles", - 'EcalEndcapNHits', - 'EcalEndcapNHitsContributions', - 'EcalEndcapPHits', - 'EcalEndcapPHitsContributions', + "EcalEndcapNHits", + "EcalEndcapNHitsContributions", + "EcalEndcapPHits", + "EcalEndcapPHitsContributions", ] # list of algorithms @@ -89,29 +102,35 @@ podin = PodioInput("PodioReader", collections=sim_coll) algorithms.append(podin) # Crystal Endcap Ecal -ce_ecal_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_ecal_daq = calo_daq["ecal_neg_endcap"] +ce_ecal_digi = CalHitDigi( + "ce_ecal_digi", + inputHitCollection="EcalEndcapNHits", + outputHitCollection="EcalEndcapNRawHits", + energyResolutions=[0.0, 0.02, 0.0], + **ce_ecal_daq +) algorithms.append(ce_ecal_digi) -ce_ecal_reco = CalHitReco("ce_ecal_reco", - inputHitCollection=ce_ecal_digi.outputHitCollection, - outputHitCollection="EcalEndcapNRecHits", - thresholdFactor=4, # 4 sigma cut on pedestal sigma - samplingFraction=0.998, # this accounts for a small fraction of leakage - readoutClass="EcalEndcapNHits", - sectorField="sector", - **ce_ecal_daq) +ce_ecal_reco = CalHitReco( + "ce_ecal_reco", + inputHitCollection=ce_ecal_digi.outputHitCollection, + outputHitCollection="EcalEndcapNRecHits", + thresholdFactor=4, # 4 sigma cut on pedestal sigma + samplingFraction=0.998, # this accounts for a small fraction of leakage + readoutClass="EcalEndcapNHits", + sectorField="sector", + **ce_ecal_daq +) algorithms.append(ce_ecal_reco) -ce_ecal_cl = TruthClustering("ce_ecal_cl", - inputHits=ce_ecal_reco.outputHitCollection, - mcHits="EcalEndcapNHits", - outputProtoClusters="EcalEndcapNProtoClusters") -#ce_ecal_cl = IslandCluster("ce_ecal_cl", +ce_ecal_cl = TruthClustering( + "ce_ecal_cl", + inputHits=ce_ecal_reco.outputHitCollection, + mcHits="EcalEndcapNHits", + outputProtoClusters="EcalEndcapNProtoClusters", +) +# ce_ecal_cl = IslandCluster("ce_ecal_cl", # inputHitCollection=ce_ecal_reco.outputHitCollection, # outputProtoClusterCollection="EcalEndcapNProtoClusters", # splitCluster=False, @@ -121,92 +140,104 @@ ce_ecal_cl = TruthClustering("ce_ecal_cl", # dimScaledLocalDistXY=[1.8, 1.8]) # dimension scaled dist is good for hybrid sectors with different module size algorithms.append(ce_ecal_cl) -ce_ecal_clreco = RecoCoG("ce_ecal_clreco", - inputProtoClusterCollection=ce_ecal_cl.outputProtoClusters, - outputClusterCollection="EcalEndcapNClusters", - logWeightBase=4.6) +ce_ecal_clreco = RecoCoG( + "ce_ecal_clreco", + inputProtoClusterCollection=ce_ecal_cl.outputProtoClusters, + outputClusterCollection="EcalEndcapNClusters", + logWeightBase=4.6, +) algorithms.append(ce_ecal_clreco) -#ce_ecal_clmerger = ClusterMerger("ce_ecal_clmerger", +# ce_ecal_clmerger = ClusterMerger("ce_ecal_clmerger", # inputClusters = ce_ecal_clreco.outputClusterCollection, # outputClusters = "EcalEndcapNMergedClusters", # outputRelations = "EcalEndcapNMergedClusterRelations") -#algorithms.append(ce_ecal_clmerger) +# algorithms.append(ce_ecal_clmerger) # Endcap ScFi Ecal -ci_ecal_daq = calo_daq['ecal_pos_endcap'] - -ci_ecal_digi = CalHitDigi("ci_ecal_digi", - inputHitCollection="EcalEndcapPHits", - outputHitCollection="EcalEndcapPRawHits", - scaleResponse=ci_ecal_sf, - energyResolutions=[.1, .0015, 0.], - **ci_ecal_daq) +ci_ecal_daq = calo_daq["ecal_pos_endcap"] + +ci_ecal_digi = CalHitDigi( + "ci_ecal_digi", + inputHitCollection="EcalEndcapPHits", + outputHitCollection="EcalEndcapPRawHits", + scaleResponse=ci_ecal_sf, + energyResolutions=[0.1, 0.0015, 0.0], + **ci_ecal_daq +) algorithms.append(ci_ecal_digi) -ci_ecal_reco = CalHitReco("ci_ecal_reco", - inputHitCollection=ci_ecal_digi.outputHitCollection, - outputHitCollection="EcalEndcapPRecHits", - thresholdFactor=5.0, - samplingFraction=ci_ecal_sf, - **ci_ecal_daq) +ci_ecal_reco = CalHitReco( + "ci_ecal_reco", + inputHitCollection=ci_ecal_digi.outputHitCollection, + outputHitCollection="EcalEndcapPRecHits", + thresholdFactor=5.0, + samplingFraction=ci_ecal_sf, + **ci_ecal_daq +) algorithms.append(ci_ecal_reco) # merge hits in different layer (projection to local x-y plane) -ci_ecal_merger = CalHitsMerger("ci_ecal_merger", - inputHitCollection=ci_ecal_reco.outputHitCollection, - outputHitCollection="EcalEndcapPRecMergedHits", - fields=["fiber_x", "fiber_y"], - fieldRefNumbers=[1, 1], - # fields=["layer", "slice"], - # fieldRefNumbers=[1, 0], - readoutClass="EcalEndcapPHits") +ci_ecal_merger = CalHitsMerger( + "ci_ecal_merger", + inputHitCollection=ci_ecal_reco.outputHitCollection, + outputHitCollection="EcalEndcapPRecMergedHits", + fields=["fiber_x", "fiber_y"], + fieldRefNumbers=[1, 1], + # fields=["layer", "slice"], + # fieldRefNumbers=[1, 0], + readoutClass="EcalEndcapPHits", +) algorithms.append(ci_ecal_merger) -ci_ecal_cl = TruthClustering("ci_ecal_cl", - inputHits=ci_ecal_reco.outputHitCollection, - mcHits="EcalEndcapPHits", - outputProtoClusters="EcalEndcapPProtoClusters") -#ci_ecal_cl = IslandCluster("ci_ecal_cl", - #inputHitCollection=ci_ecal_merger.outputHitCollection, - #outputProtoClusterCollection="EcalEndcapPProtoClusters", - #splitCluster=False, - #minClusterCenterEdep=10.*MeV, - #localDistXY=[10*mm, 10*mm]) +ci_ecal_cl = TruthClustering( + "ci_ecal_cl", + inputHits=ci_ecal_reco.outputHitCollection, + mcHits="EcalEndcapPHits", + outputProtoClusters="EcalEndcapPProtoClusters", +) +# ci_ecal_cl = IslandCluster("ci_ecal_cl", +# inputHitCollection=ci_ecal_merger.outputHitCollection, +# outputProtoClusterCollection="EcalEndcapPProtoClusters", +# splitCluster=False, +# minClusterCenterEdep=10.*MeV, +# localDistXY=[10*mm, 10*mm]) algorithms.append(ci_ecal_cl) -ci_ecal_clreco = RecoCoG("ci_ecal_clreco", - inputProtoClusterCollection=ci_ecal_cl.outputProtoClusters, - outputClusterCollection="EcalEndcapPClusters", - enableEtaBounds=True, - logWeightBase=6.2) +ci_ecal_clreco = RecoCoG( + "ci_ecal_clreco", + inputProtoClusterCollection=ci_ecal_cl.outputProtoClusters, + outputClusterCollection="EcalEndcapPClusters", + enableEtaBounds=True, + logWeightBase=6.2, +) algorithms.append(ci_ecal_clreco) -#ci_ecal_clmerger = ClusterMerger("ci_ecal_clmerger", +# ci_ecal_clmerger = ClusterMerger("ci_ecal_clmerger", # inputClusters = ci_ecal_clreco.outputClusterCollection, # outputClusters = "EcalEndcapPMergedClusters", # outputRelations = "EcalEndcapPMergedClusterRelations") -#algorithms.append(ci_ecal_clmerger) +# algorithms.append(ci_ecal_clmerger) # Output podout = PodioOutput("out", filename=output_rec) podout.outputCommands = [ - "keep *", - "drop *Hits", - "keep *RecHits", - "keep *Layers", - "keep *Clusters", - "drop *ProtoClusters", - "drop outputParticles", - "drop InitTrackParams", - ] + [ "drop " + c for c in sim_coll] + "keep *", + "drop *Hits", + "keep *RecHits", + "keep *Layers", + "keep *Clusters", + "drop *ProtoClusters", + "drop outputParticles", + "drop InitTrackParams", +] + ["drop " + c for c in sim_coll] algorithms.append(podout) ApplicationMgr( - TopAlg = algorithms, - EvtSel = 'NONE', - EvtMax = n_events, - ExtSvc = services, - OutputLevel = WARNING, - AuditAlgorithms = True - ) + TopAlg=algorithms, + EvtSel="NONE", + EvtMax=n_events, + ExtSvc=services, + OutputLevel=WARNING, + AuditAlgorithms=True, +) diff --git a/options/reconstruction.hcal.py b/options/reconstruction.hcal.py index 79babb7a..d199849d 100644 --- a/options/reconstruction.hcal.py +++ b/options/reconstruction.hcal.py @@ -7,28 +7,30 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json detector_name = "athena" -if "JUGGLER_DETECTOR" in os.environ : +if "JUGGLER_DETECTOR" in os.environ: detector_name = str(os.environ["JUGGLER_DETECTOR"]) detector_config = detector_name -if "JUGGLER_DETECTOR_CONFIG" in os.environ : +if "JUGGLER_DETECTOR_CONFIG" in os.environ: detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" -if "DETECTOR_PATH" in os.environ : - detector_path = str(os.environ["DETECTOR_PATH"]) +if "DETECTOR_PATH" in os.environ: + detector_path = str(os.environ["DETECTOR_PATH"]) -detector_version = 'default' +detector_version = "default" if "JUGGLER_DETECTOR_VERSION" in os.environ: env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"]) - if 'acadia' in env_version: - detector_version = 'acadia' + if "acadia" in env_version: + detector_version = "acadia" # Detector features that affect reconstruction has_ecal_barrel_scfi = False -if 'athena' in detector_name: +if "athena" in detector_name: has_ecal_barrel_scfi = True -if 'ecce' in detector_name and 'imaging' in detector_config: +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 # CAL reconstruction @@ -39,28 +41,38 @@ 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)) as f: +with open( + "{}/calibrations/calo_digi_{}.json".format(detector_path, 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']) + "dynamicRangeADC": eval(cfg["dynamicRange"]), + "capacityADC": 2 ** int(cfg["capacityBitsADC"]), + "pedestalMean": int(cfg["pedestalMean"]), + "pedestalSigma": float(cfg["pedestalSigma"]), } print(calo_daq) # input and output -input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] +input_sims = [ + f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip() +] output_rec = str(os.environ["JUGGLER_REC_FILE"]) n_events = int(os.environ["JUGGLER_N_EVENTS"]) # services services = [] # geometry service -services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], OutputLevel=WARNING)) +services.append( + GeoSvc( + "GeoSvc", + detectors=["{}/{}.xml".format(detector_path, detector_config)], + OutputLevel=WARNING, + ) +) # data service services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING)) @@ -75,12 +87,12 @@ from Configurables import Jug__Reco__ClusterRecoCoG as RecoCoG # branches needed from simulation root file sim_coll = [ "MCParticles", - 'HcalBarrelHits', - 'HcalBarrelHitsContributions', - 'HcalEndcapPHits', - 'HcalEndcapPHitsContributions', - 'HcalEndcapNHits', - 'HcalEndcapNHitsContributions', + "HcalBarrelHits", + "HcalBarrelHitsContributions", + "HcalEndcapPHits", + "HcalEndcapPHitsContributions", + "HcalEndcapNHits", + "HcalEndcapNHitsContributions", ] # list of algorithms @@ -91,102 +103,122 @@ podin = PodioInput("PodioReader", collections=sim_coll) algorithms.append(podin) # Hcal Hadron Endcap -ci_hcal_daq = calo_daq['hcal_pos_endcap'] - -ci_hcal_digi = CalHitDigi("ci_hcal_digi", - inputHitCollection="HcalEndcapPHits", - outputHitCollection="HcalEndcapPRawHits", - **ci_hcal_daq) +ci_hcal_daq = calo_daq["hcal_pos_endcap"] + +ci_hcal_digi = CalHitDigi( + "ci_hcal_digi", + inputHitCollection="HcalEndcapPHits", + outputHitCollection="HcalEndcapPRawHits", + **ci_hcal_daq +) algorithms.append(ci_hcal_digi) -ci_hcal_reco = CalHitReco("ci_hcal_reco", - inputHitCollection=ci_hcal_digi.outputHitCollection, - outputHitCollection="HcalEndcapPRecHits", - thresholdFactor=5.0, - samplingFraction=ci_hcal_sf, - **ci_hcal_daq) +ci_hcal_reco = CalHitReco( + "ci_hcal_reco", + inputHitCollection=ci_hcal_digi.outputHitCollection, + outputHitCollection="HcalEndcapPRecHits", + thresholdFactor=5.0, + samplingFraction=ci_hcal_sf, + **ci_hcal_daq +) algorithms.append(ci_hcal_reco) -ci_hcal_merger = CalHitsMerger("ci_hcal_merger", - inputHitCollection=ci_hcal_reco.outputHitCollection, - outputHitCollection="HcalEndcapPMergedHits", - readoutClass="HcalEndcapPHits", - fields=["layer", "slice"], - fieldRefNumbers=[1, 0]) +ci_hcal_merger = CalHitsMerger( + "ci_hcal_merger", + inputHitCollection=ci_hcal_reco.outputHitCollection, + outputHitCollection="HcalEndcapPMergedHits", + readoutClass="HcalEndcapPHits", + fields=["layer", "slice"], + fieldRefNumbers=[1, 0], +) algorithms.append(ci_hcal_merger) -ci_hcal_cl = IslandCluster("ci_hcal_cl", - inputHitCollection=ci_hcal_merger.outputHitCollection, - outputProtoClusterCollection="HcalEndcapPProtoClusters", - splitCluster=False, - minClusterCenterEdep=30.*MeV, - localDistXY=[15.*cm, 15.*cm]) +ci_hcal_cl = IslandCluster( + "ci_hcal_cl", + inputHitCollection=ci_hcal_merger.outputHitCollection, + outputProtoClusterCollection="HcalEndcapPProtoClusters", + splitCluster=False, + minClusterCenterEdep=30.0 * MeV, + localDistXY=[15.0 * cm, 15.0 * cm], +) algorithms.append(ci_hcal_cl) -ci_hcal_clreco = RecoCoG("ci_hcal_clreco", - inputProtoClusterCollection=ci_hcal_cl.outputProtoClusterCollection, - outputClusterCollection="HcalEndcapPClusters", - logWeightBase=6.2) +ci_hcal_clreco = RecoCoG( + "ci_hcal_clreco", + inputProtoClusterCollection=ci_hcal_cl.outputProtoClusterCollection, + outputClusterCollection="HcalEndcapPClusters", + logWeightBase=6.2, +) algorithms.append(ci_hcal_clreco) # Hcal Electron Endcap -ce_hcal_daq = calo_daq['hcal_neg_endcap'] - -ce_hcal_digi = CalHitDigi("ce_hcal_digi", - inputHitCollection="HcalEndcapNHits", - outputHitCollection="HcalEndcapNRawHits", - **ce_hcal_daq) +ce_hcal_daq = calo_daq["hcal_neg_endcap"] + +ce_hcal_digi = CalHitDigi( + "ce_hcal_digi", + inputHitCollection="HcalEndcapNHits", + outputHitCollection="HcalEndcapNRawHits", + **ce_hcal_daq +) algorithms.append(ce_hcal_digi) -ce_hcal_reco = CalHitReco("ce_hcal_reco", - inputHitCollection=ce_hcal_digi.outputHitCollection, - outputHitCollection="HcalEndcapNRecHits", - thresholdFactor=5.0, - samplingFraction=ce_hcal_sf, - **ce_hcal_daq) +ce_hcal_reco = CalHitReco( + "ce_hcal_reco", + inputHitCollection=ce_hcal_digi.outputHitCollection, + outputHitCollection="HcalEndcapNRecHits", + thresholdFactor=5.0, + samplingFraction=ce_hcal_sf, + **ce_hcal_daq +) algorithms.append(ce_hcal_reco) -ce_hcal_merger = CalHitsMerger("ce_hcal_merger", - inputHitCollection=ce_hcal_reco.outputHitCollection, - outputHitCollection="HcalEndcapNMergedHits", - readoutClass="HcalEndcapNHits", - fields=["layer", "slice"], - fieldRefNumbers=[1, 0]) +ce_hcal_merger = CalHitsMerger( + "ce_hcal_merger", + inputHitCollection=ce_hcal_reco.outputHitCollection, + outputHitCollection="HcalEndcapNMergedHits", + readoutClass="HcalEndcapNHits", + fields=["layer", "slice"], + fieldRefNumbers=[1, 0], +) algorithms.append(ce_hcal_merger) -ce_hcal_cl = IslandCluster("ce_hcal_cl", - inputHitCollection=ce_hcal_merger.outputHitCollection, - outputProtoClusterCollection="HcalEndcapNProtoClusters", - splitCluster=False, - minClusterCenterEdep=30.*MeV, - localDistXY=[15.*cm, 15.*cm]) +ce_hcal_cl = IslandCluster( + "ce_hcal_cl", + inputHitCollection=ce_hcal_merger.outputHitCollection, + outputProtoClusterCollection="HcalEndcapNProtoClusters", + splitCluster=False, + minClusterCenterEdep=30.0 * MeV, + localDistXY=[15.0 * cm, 15.0 * cm], +) algorithms.append(ce_hcal_cl) -ce_hcal_clreco = RecoCoG("ce_hcal_clreco", - inputProtoClusterCollection=ce_hcal_cl.outputProtoClusterCollection, - outputClusterCollection="HcalEndcapNClusters", - logWeightBase=6.2) +ce_hcal_clreco = RecoCoG( + "ce_hcal_clreco", + inputProtoClusterCollection=ce_hcal_cl.outputProtoClusterCollection, + outputClusterCollection="HcalEndcapNClusters", + logWeightBase=6.2, +) algorithms.append(ce_hcal_clreco) # Output podout = PodioOutput("out", filename=output_rec) podout.outputCommands = [ - "keep *", - "drop *Hits", - "keep *RecHits", - "keep *Layers", - "keep *Clusters", - "drop *ProtoClusters", - "drop outputParticles", - "drop InitTrackParams", - ] + [ "drop " + c for c in sim_coll] + "keep *", + "drop *Hits", + "keep *RecHits", + "keep *Layers", + "keep *Clusters", + "drop *ProtoClusters", + "drop outputParticles", + "drop InitTrackParams", +] + ["drop " + c for c in sim_coll] algorithms.append(podout) ApplicationMgr( - TopAlg = algorithms, - EvtSel = 'NONE', - EvtMax = n_events, - ExtSvc = services, - OutputLevel = WARNING, - AuditAlgorithms = True - ) + TopAlg=algorithms, + EvtSel="NONE", + EvtMax=n_events, + ExtSvc=services, + OutputLevel=WARNING, + AuditAlgorithms=True, +) diff --git a/options/reconstruction.py b/options/reconstruction.py index bb47ab6d..f10674e3 100644 --- a/options/reconstruction.py +++ b/options/reconstruction.py @@ -7,28 +7,30 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json detector_name = "athena" -if "JUGGLER_DETECTOR" in os.environ : +if "JUGGLER_DETECTOR" in os.environ: detector_name = str(os.environ["JUGGLER_DETECTOR"]) detector_config = detector_name -if "JUGGLER_DETECTOR_CONFIG" in os.environ : +if "JUGGLER_DETECTOR_CONFIG" in os.environ: detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" -if "DETECTOR_PATH" in os.environ : +if "DETECTOR_PATH" in os.environ: detector_path = str(os.environ["DETECTOR_PATH"]) -detector_version = 'default' +detector_version = "default" if "JUGGLER_DETECTOR_VERSION" in os.environ: env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"]) - if 'acadia' in env_version: - detector_version = 'acadia' + if "acadia" in env_version: + detector_version = "acadia" # Detector features that affect reconstruction has_ecal_barrel_scfi = False -if 'athena' in detector_name: +if "athena" in detector_name: has_ecal_barrel_scfi = True -if 'ecce' in detector_name and 'imaging' in detector_config: +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 if "PBEAM" in os.environ: @@ -38,30 +40,39 @@ else: # ZDC reconstruction calibrations try: - ffi_zdc_calibrations = 'calibrations/ffi_zdc.json' - with open(os.path.join(detector_path,ffi_zdc_calibrations)) as f: + ffi_zdc_calibrations = "calibrations/ffi_zdc.json" + with open(os.path.join(detector_path, ffi_zdc_calibrations)) as f: ffi_zdc_config = json.load(f) + def ffi_zdc_cal_parse(ffi_zdc_cal): - ffi_zdc_cal_sf = float(ffi_zdc_cal['sampling_fraction']) + ffi_zdc_cal_sf = float(ffi_zdc_cal["sampling_fraction"]) ffi_zdc_cal_cl_kwargs = { - 'minClusterCenterEdep': eval(ffi_zdc_cal['minClusterCenterEdep']), - 'minClusterHitEdep': eval(ffi_zdc_cal['minClusterHitEdep']), - 'localDistXY': [ - eval(ffi_zdc_cal['localDistXY'][0]), - eval(ffi_zdc_cal['localDistXY'][1]) + "minClusterCenterEdep": eval(ffi_zdc_cal["minClusterCenterEdep"]), + "minClusterHitEdep": eval(ffi_zdc_cal["minClusterHitEdep"]), + "localDistXY": [ + eval(ffi_zdc_cal["localDistXY"][0]), + eval(ffi_zdc_cal["localDistXY"][1]), ], - 'splitCluster': bool(ffi_zdc_cal['splitCluster']) + "splitCluster": bool(ffi_zdc_cal["splitCluster"]), } return ffi_zdc_cal_sf, ffi_zdc_cal_cl_kwargs - ffi_zdc_ecal_sf, ffi_zdc_ecal_cl_kwargs = ffi_zdc_cal_parse(ffi_zdc_config['ffi_zdc_ecal']) - ffi_zdc_hcal_sf, ffi_zdc_hcal_cl_kwargs = ffi_zdc_cal_parse(ffi_zdc_config['ffi_zdc_hcal']) + + ffi_zdc_ecal_sf, ffi_zdc_ecal_cl_kwargs = ffi_zdc_cal_parse( + ffi_zdc_config["ffi_zdc_ecal"] + ) + ffi_zdc_hcal_sf, ffi_zdc_hcal_cl_kwargs = ffi_zdc_cal_parse( + ffi_zdc_config["ffi_zdc_hcal"] + ) except (IOError, OSError): - print(f'Using default ffi_zdc calibrations; {ffi_zdc_calibrations} not found.') + print(f"Using default ffi_zdc calibrations; {ffi_zdc_calibrations} not found.") ffi_zdc_ecal_sf = float(os.environ.get("FFI_ZDC_ECAL_SAMP_FRAC", 1.0)) ffi_zdc_hcal_sf = float(os.environ.get("FFI_ZDC_HCAL_SAMP_FRAC", 1.0)) # RICH reconstruction -qe_data = [(1.0, 0.25), (7.5, 0.25),] +qe_data = [ + (1.0, 0.25), + (7.5, 0.25), +] # CAL reconstruction # get sampling fractions from system environment variable @@ -71,50 +82,62 @@ ci_hcal_sf = float(os.environ.get("CI_HCAL_SAMP_FRAC", 0.025)) ce_hcal_sf = float(os.environ.get("CE_HCAL_SAMP_FRAC", 0.025)) # input arguments from calibration file -with open(f'{detector_path}/calibrations/emcal_barrel_calibration.json') as f: - calib_data = json.load(f)['electron'] +with open(f"{detector_path}/calibrations/emcal_barrel_calibration.json") as f: + calib_data = json.load(f)["electron"] 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_{detector_version}.json") 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']) + "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']) +img_barrel_sf = float(calib_data["sampling_fraction_img"]) +scifi_barrel_sf = float(calib_data["sampling_fraction_scfi"]) # input and output -input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] +input_sims = [ + f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip() +] output_rec = str(os.environ["JUGGLER_REC_FILE"]) n_events = int(os.environ["JUGGLER_N_EVENTS"]) # services services = [] # auditor service -services.append(AuditorSvc("AuditorSvc", Auditors=['ChronoAuditor', 'MemStatAuditor'])) +services.append(AuditorSvc("AuditorSvc", Auditors=["ChronoAuditor", "MemStatAuditor"])) # geometry service ## 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)) +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)) @@ -124,10 +147,13 @@ from Configurables import PodioInput from Configurables import Jug__Fast__MC2SmearedParticle as MC2DummyParticle from Configurables import Jug__Fast__ParticlesWithTruthPID as ParticlesWithTruthPID from Configurables import Jug__Fast__SmearedFarForwardParticles as FFSmearedParticles -#from Configurables import Jug__Fast__MatchClusters as MatchClusters -#from Configurables import Jug__Fast__ClusterMerger as ClusterMerger -#from Configurables import Jug__Fast__TruthEnergyPositionClusterMerger as EnergyPositionClusterMerger -from Configurables import Jug__Fast__InclusiveKinematicsTruth as InclusiveKinematicsTruth + +# from Configurables import Jug__Fast__MatchClusters as MatchClusters +# from Configurables import Jug__Fast__ClusterMerger as ClusterMerger +# from Configurables import Jug__Fast__TruthEnergyPositionClusterMerger as EnergyPositionClusterMerger +from Configurables import ( + Jug__Fast__InclusiveKinematicsTruth as InclusiveKinematicsTruth, +) from Configurables import Jug__Fast__TruthClustering as TruthClustering from Configurables import Jug__Digi__SimTrackerHitsCollector as SimTrackerHitsCollector @@ -137,21 +163,32 @@ from Configurables import Jug__Digi__SiliconTrackerDigi as TrackerDigi from Configurables import Jug__Reco__FarForwardParticles as FarForwardParticles -from Configurables import Jug__Reco__TrackerHitReconstruction as TrackerHitReconstruction +from Configurables import ( + Jug__Reco__TrackerHitReconstruction as TrackerHitReconstruction, +) from Configurables import Jug__Reco__TrackingHitsCollector2 as TrackingHitsCollector from Configurables import Jug__Reco__TrackerSourceLinker as TrackerSourceLinker from Configurables import Jug__Reco__TrackParamTruthInit as TrackParamTruthInit from Configurables import Jug__Reco__TrackParamClusterInit as TrackParamClusterInit -from Configurables import Jug__Reco__TrackParamVertexClusterInit as TrackParamVertexClusterInit +from Configurables import ( + Jug__Reco__TrackParamVertexClusterInit as TrackParamVertexClusterInit, +) from Configurables import Jug__Reco__CKFTracking as CKFTracking from Configurables import Jug__Reco__ParticlesFromTrackFit as ParticlesFromTrackFit + # from Configurables import Jug__Reco__TrajectoryFromTrackFit as TrajectoryFromTrackFit -from Configurables import Jug__Reco__InclusiveKinematicsElectron as InclusiveKinematicsElectron +from Configurables import ( + Jug__Reco__InclusiveKinematicsElectron as InclusiveKinematicsElectron, +) from Configurables import Jug__Reco__InclusiveKinematicsDA as InclusiveKinematicsDA from Configurables import Jug__Reco__InclusiveKinematicsJB as InclusiveKinematicsJB -from Configurables import Jug__Reco__InclusiveKinematicsSigma as InclusiveKinematicsSigma -from Configurables import Jug__Reco__InclusiveKinematicseSigma as InclusiveKinematicseSigma +from Configurables import ( + Jug__Reco__InclusiveKinematicsSigma as InclusiveKinematicsSigma, +) +from Configurables import ( + Jug__Reco__InclusiveKinematicseSigma as InclusiveKinematicseSigma, +) from Configurables import Jug__Reco__FarForwardParticles as FFRecoRP from Configurables import Jug__Reco__FarForwardParticlesOMD as FFRecoOMD @@ -173,77 +210,82 @@ from Configurables import Jug__Reco__ParticleCollector as ParticleCollector # branches needed from simulation root file sim_coll = [ - 'MCParticles', - 'B0TrackerHits', - 'EcalEndcapNHits', - 'EcalEndcapNHitsContributions', - 'EcalEndcapPHits', - 'EcalEndcapPHitsContributions', - 'EcalBarrelHits', - 'EcalBarrelHitsContributions', - 'HcalBarrelHits', - 'HcalBarrelHitsContributions', - 'HcalEndcapPHits', - 'HcalEndcapPHitsContributions', - 'HcalEndcapNHits', - 'HcalEndcapNHitsContributions', - 'DRICHHits', - 'ZDCEcalHits', - 'ZDCEcalHitsContributions', - 'ZDCHcalHits', - 'ZDCHcalHitsContributions', + "MCParticles", + "B0TrackerHits", + "EcalEndcapNHits", + "EcalEndcapNHitsContributions", + "EcalEndcapPHits", + "EcalEndcapPHitsContributions", + "EcalBarrelHits", + "EcalBarrelHitsContributions", + "HcalBarrelHits", + "HcalBarrelHitsContributions", + "HcalEndcapPHits", + "HcalEndcapPHitsContributions", + "HcalEndcapNHits", + "HcalEndcapNHitsContributions", + "DRICHHits", + "ZDCEcalHits", + "ZDCEcalHitsContributions", + "ZDCHcalHits", + "ZDCHcalHitsContributions", ] ecal_barrel_scfi_collections = [ - 'EcalBarrelScFiHits', - 'EcalBarrelScFiHitsContributions' + "EcalBarrelScFiHits", + "EcalBarrelScFiHitsContributions", ] if has_ecal_barrel_scfi: sim_coll += ecal_barrel_scfi_collections forward_romanpot_collections = [ - 'ForwardRomanPotHits1', - 'ForwardRomanPotHits2' + "ForwardRomanPotHits1", + "ForwardRomanPotHits2", ] forward_offmtracker_collections = [ - 'ForwardOffMTrackerHits1', - 'ForwardOffMTrackerHits2', - 'ForwardOffMTrackerHits3', - 'ForwardOffMTrackerHits4' + "ForwardOffMTrackerHits1", + "ForwardOffMTrackerHits2", + "ForwardOffMTrackerHits3", + "ForwardOffMTrackerHits4", ] sim_coll += forward_romanpot_collections + forward_offmtracker_collections tracker_endcap_collections = [ - 'TrackerEndcapHits1', - 'TrackerEndcapHits2', - 'TrackerEndcapHits3', - 'TrackerEndcapHits4', - 'TrackerEndcapHits5', - 'TrackerEndcapHits6' + "TrackerEndcapHits1", + "TrackerEndcapHits2", + "TrackerEndcapHits3", + "TrackerEndcapHits4", + "TrackerEndcapHits5", + "TrackerEndcapHits6", ] tracker_barrel_collections = [ - 'TrackerBarrelHits' + "TrackerBarrelHits", ] vertex_barrel_collections = [ - 'VertexBarrelHits' + "VertexBarrelHits", ] gem_endcap_collections = [ - 'GEMTrackerEndcapHits1', - 'GEMTrackerEndcapHits2', - 'GEMTrackerEndcapHits3' + "GEMTrackerEndcapHits1", + "GEMTrackerEndcapHits2", + "GEMTrackerEndcapHits3", ] -sim_coll += tracker_endcap_collections + tracker_barrel_collections + vertex_barrel_collections + gem_endcap_collections +sim_coll += ( + tracker_endcap_collections + + tracker_barrel_collections + + vertex_barrel_collections + + gem_endcap_collections +) vertex_endcap_collections = [ - 'VertexEndcapHits' + "VertexEndcapHits", ] mpgd_barrel_collections = [ - 'MPGDTrackerBarrelHits1', - 'MPGDTrackerBarrelHits2' + "MPGDTrackerBarrelHits1", + "MPGDTrackerBarrelHits2", ] -if 'acadia' in detector_version: +if "acadia" in detector_version: sim_coll += vertex_endcap_collections - sim_coll.append('MRICHHits') + sim_coll.append("MRICHHits") else: sim_coll += mpgd_barrel_collections @@ -255,149 +297,194 @@ podin = PodioInput("PodioReader", collections=sim_coll) algorithms.append(podin) # Generated particles -dummy = MC2DummyParticle("dummy", - inputParticles="MCParticles", - outputParticles="GeneratedParticles", - smearing=0) +dummy = MC2DummyParticle( + "dummy", + inputParticles="MCParticles", + outputParticles="GeneratedParticles", + smearing=0, +) algorithms.append(dummy) # Truth level kinematics -truth_incl_kin = InclusiveKinematicsTruth("truth_incl_kin", - inputMCParticles = "MCParticles", - outputInclusiveKinematics = "InclusiveKinematicsTruth" +truth_incl_kin = InclusiveKinematicsTruth( + "truth_incl_kin", + inputMCParticles="MCParticles", + outputInclusiveKinematics="InclusiveKinematicsTruth", ) algorithms.append(truth_incl_kin) ## Roman pots -ffi_romanpot_coll = SimTrackerHitsCollector("ffi_romanpot_coll", - inputSimTrackerHits = forward_romanpot_collections, - outputSimTrackerHits = "ForwardRomanPotAllHits") +ffi_romanpot_coll = SimTrackerHitsCollector( + "ffi_romanpot_coll", + inputSimTrackerHits=forward_romanpot_collections, + outputSimTrackerHits="ForwardRomanPotAllHits", +) algorithms.append(ffi_romanpot_coll) -ffi_romanpot_digi = TrackerDigi("ffi_romanpot_digi", - inputHitCollection = ffi_romanpot_coll.outputSimTrackerHits, - outputHitCollection = "ForwardRomanPotRawHits", - timeResolution = 8) +ffi_romanpot_digi = TrackerDigi( + "ffi_romanpot_digi", + inputHitCollection=ffi_romanpot_coll.outputSimTrackerHits, + outputHitCollection="ForwardRomanPotRawHits", + timeResolution=8, +) algorithms.append(ffi_romanpot_digi) -ffi_romanpot_reco = TrackerHitReconstruction("ffi_romanpot_reco", - inputHitCollection = ffi_romanpot_digi.outputHitCollection, - outputHitCollection = "ForwardRomanPotRecHits") +ffi_romanpot_reco = TrackerHitReconstruction( + "ffi_romanpot_reco", + inputHitCollection=ffi_romanpot_digi.outputHitCollection, + outputHitCollection="ForwardRomanPotRecHits", +) algorithms.append(ffi_romanpot_reco) -ffi_romanpot_parts = FarForwardParticles("ffi_romanpot_parts", - inputCollection = ffi_romanpot_reco.outputHitCollection, - outputCollection = "ForwardRomanPotParticles") +ffi_romanpot_parts = FarForwardParticles( + "ffi_romanpot_parts", + inputCollection=ffi_romanpot_reco.outputHitCollection, + outputCollection="ForwardRomanPotParticles", +) algorithms.append(ffi_romanpot_parts) ## Off momentum tracker -ffi_offmtracker_coll = SimTrackerHitsCollector("ffi_offmtracker_coll", - inputSimTrackerHits = forward_offmtracker_collections, - outputSimTrackerHits = "ForwardOffMTrackerAllHits") +ffi_offmtracker_coll = SimTrackerHitsCollector( + "ffi_offmtracker_coll", + inputSimTrackerHits=forward_offmtracker_collections, + outputSimTrackerHits="ForwardOffMTrackerAllHits", +) algorithms.append(ffi_offmtracker_coll) -ffi_offmtracker_digi = TrackerDigi("ffi_offmtracker_digi", - inputHitCollection = ffi_offmtracker_coll.outputSimTrackerHits, - outputHitCollection = "ForwardOffMTrackerRawHits", - timeResolution = 8) +ffi_offmtracker_digi = TrackerDigi( + "ffi_offmtracker_digi", + inputHitCollection=ffi_offmtracker_coll.outputSimTrackerHits, + outputHitCollection="ForwardOffMTrackerRawHits", + timeResolution=8, +) algorithms.append(ffi_offmtracker_digi) -ffi_offmtracker_reco = TrackerHitReconstruction("ffi_offmtracker_reco", - inputHitCollection = ffi_offmtracker_digi.outputHitCollection, - outputHitCollection = "ForwardOffMTrackerRecHits") +ffi_offmtracker_reco = TrackerHitReconstruction( + "ffi_offmtracker_reco", + inputHitCollection=ffi_offmtracker_digi.outputHitCollection, + outputHitCollection="ForwardOffMTrackerRecHits", +) algorithms.append(ffi_offmtracker_reco) -ffi_offmtracker_parts = FarForwardParticles("ffi_offmtracker_parts", - inputCollection = ffi_offmtracker_reco.outputHitCollection, - outputCollection = "ForwardOffMTrackerParticles") +ffi_offmtracker_parts = FarForwardParticles( + "ffi_offmtracker_parts", + inputCollection=ffi_offmtracker_reco.outputHitCollection, + outputCollection="ForwardOffMTrackerParticles", +) algorithms.append(ffi_offmtracker_parts) ## B0 tracker -trk_b0_digi = TrackerDigi("trk_b0_digi", - inputHitCollection="B0TrackerHits", - outputHitCollection="B0TrackerRawHits", - timeResolution=8) +trk_b0_digi = TrackerDigi( + "trk_b0_digi", + inputHitCollection="B0TrackerHits", + outputHitCollection="B0TrackerRawHits", + timeResolution=8, +) algorithms.append(trk_b0_digi) -trk_b0_reco = TrackerHitReconstruction("trk_b0_reco", - inputHitCollection = trk_b0_digi.outputHitCollection, - outputHitCollection="B0TrackerRecHits") +trk_b0_reco = TrackerHitReconstruction( + "trk_b0_reco", + inputHitCollection=trk_b0_digi.outputHitCollection, + outputHitCollection="B0TrackerRecHits", +) algorithms.append(trk_b0_reco) # ZDC ECAL WSciFi -ffi_zdc_ecal_digi = CalHitDigi('ffi_zdc_ecal_digi', - inputHitCollection = 'ZDCEcalHits', - outputHitCollection = 'ZDCEcalRawHits') +ffi_zdc_ecal_digi = CalHitDigi( + "ffi_zdc_ecal_digi", + inputHitCollection="ZDCEcalHits", + outputHitCollection="ZDCEcalRawHits", +) algorithms.append(ffi_zdc_ecal_digi) -ffi_zdc_ecal_reco = CalHitReco('ffi_zdc_ecal_reco', - inputHitCollection = ffi_zdc_ecal_digi.outputHitCollection, - outputHitCollection = 'ZDCEcalRecHits', - readoutClass = 'ZDCEcalHits', - localDetFields = ['system']) +ffi_zdc_ecal_reco = CalHitReco( + "ffi_zdc_ecal_reco", + inputHitCollection=ffi_zdc_ecal_digi.outputHitCollection, + outputHitCollection="ZDCEcalRecHits", + readoutClass="ZDCEcalHits", + localDetFields=["system"], +) algorithms.append(ffi_zdc_ecal_reco) -ffi_zdc_ecal_cl = IslandCluster('ffi_zdc_ecal_cl', - inputHitCollection = ffi_zdc_ecal_reco.outputHitCollection, - outputProtoClusterCollection = 'ZDCEcalProtoClusters', - **ffi_zdc_ecal_cl_kwargs) +ffi_zdc_ecal_cl = IslandCluster( + "ffi_zdc_ecal_cl", + inputHitCollection=ffi_zdc_ecal_reco.outputHitCollection, + outputProtoClusterCollection="ZDCEcalProtoClusters", + **ffi_zdc_ecal_cl_kwargs, +) algorithms.append(ffi_zdc_ecal_cl) -ffi_zdc_ecal_clreco = RecoCoG('ffi_zdc_ecal_clreco', - inputProtoClusterCollection = ffi_zdc_ecal_cl.outputProtoClusterCollection, - outputClusterCollection = 'ZDCEcalClusters', - logWeightBase = 3.6, - samplingFraction = ffi_zdc_ecal_sf) +ffi_zdc_ecal_clreco = RecoCoG( + "ffi_zdc_ecal_clreco", + inputProtoClusterCollection=ffi_zdc_ecal_cl.outputProtoClusterCollection, + outputClusterCollection="ZDCEcalClusters", + logWeightBase=3.6, + samplingFraction=ffi_zdc_ecal_sf, +) algorithms.append(ffi_zdc_ecal_clreco) # ZDC HCAL PbSciFi -ffi_zdc_hcal_digi = CalHitDigi('ffi_zdc_hcal_digi', - inputHitCollection = 'ZDCHcalHits', - outputHitCollection = 'ZDCHcalRawHits') +ffi_zdc_hcal_digi = CalHitDigi( + "ffi_zdc_hcal_digi", + inputHitCollection="ZDCHcalHits", + outputHitCollection="ZDCHcalRawHits", +) algorithms.append(ffi_zdc_hcal_digi) -ffi_zdc_hcal_reco = CalHitReco('ffi_zdc_hcal_reco', - inputHitCollection = ffi_zdc_hcal_digi.outputHitCollection, - outputHitCollection = 'ZDCHcalRecHits', - readoutClass = 'ZDCHcalHits', - localDetFields = ['system']) +ffi_zdc_hcal_reco = CalHitReco( + "ffi_zdc_hcal_reco", + inputHitCollection=ffi_zdc_hcal_digi.outputHitCollection, + outputHitCollection="ZDCHcalRecHits", + readoutClass="ZDCHcalHits", + localDetFields=["system"], +) algorithms.append(ffi_zdc_hcal_reco) -ffi_zdc_hcal_cl = IslandCluster('ffi_zdc_hcal_cl', - inputHitCollection = ffi_zdc_hcal_reco.outputHitCollection, - outputProtoClusterCollection = 'ZDCHcalProtoClusters', - **ffi_zdc_hcal_cl_kwargs) +ffi_zdc_hcal_cl = IslandCluster( + "ffi_zdc_hcal_cl", + inputHitCollection=ffi_zdc_hcal_reco.outputHitCollection, + outputProtoClusterCollection="ZDCHcalProtoClusters", + **ffi_zdc_hcal_cl_kwargs, +) algorithms.append(ffi_zdc_hcal_cl) -ffi_zdc_hcal_clreco = RecoCoG('ffi_zdc_hcal_clreco', - inputProtoClusterCollection = ffi_zdc_hcal_cl.outputProtoClusterCollection, - outputClusterCollection = 'ZDCHcalClusters', - logWeightBase = 3.6, - samplingFraction = ffi_zdc_hcal_sf) +ffi_zdc_hcal_clreco = RecoCoG( + "ffi_zdc_hcal_clreco", + inputProtoClusterCollection=ffi_zdc_hcal_cl.outputProtoClusterCollection, + outputClusterCollection="ZDCHcalClusters", + logWeightBase=3.6, + samplingFraction=ffi_zdc_hcal_sf, +) algorithms.append(ffi_zdc_hcal_clreco) # Crystal Endcap Ecal -ce_ecal_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_ecal_daq = calo_daq["ecal_neg_endcap"] +ce_ecal_digi = CalHitDigi( + "ce_ecal_digi", + inputHitCollection="EcalEndcapNHits", + outputHitCollection="EcalEndcapNRawHits", + energyResolutions=[0.0, 0.02, 0.0], + **ce_ecal_daq, +) algorithms.append(ce_ecal_digi) -ce_ecal_reco = CalHitReco("ce_ecal_reco", - inputHitCollection = ce_ecal_digi.outputHitCollection, - outputHitCollection = "EcalEndcapNRecHits", - thresholdFactor = 4, # 4 sigma cut on pedestal sigma - samplingFraction = 0.998, # this accounts for a small fraction of leakage - readoutClass = "EcalEndcapNHits", - sectorField = "sector", - **ce_ecal_daq) +ce_ecal_reco = CalHitReco( + "ce_ecal_reco", + inputHitCollection=ce_ecal_digi.outputHitCollection, + outputHitCollection="EcalEndcapNRecHits", + thresholdFactor=4, # 4 sigma cut on pedestal sigma + samplingFraction=0.998, # this accounts for a small fraction of leakage + readoutClass="EcalEndcapNHits", + sectorField="sector", + **ce_ecal_daq, +) algorithms.append(ce_ecal_reco) -ce_ecal_cl = TruthClustering("ce_ecal_cl", - inputHits = ce_ecal_reco.outputHitCollection, - mcHits = "EcalEndcapNHits", - outputProtoClusters = "EcalEndcapNProtoClusters") -#ce_ecal_cl = IslandCluster("ce_ecal_cl", +ce_ecal_cl = TruthClustering( + "ce_ecal_cl", + inputHits=ce_ecal_reco.outputHitCollection, + mcHits="EcalEndcapNHits", + outputProtoClusters="EcalEndcapNProtoClusters", +) +# ce_ecal_cl = IslandCluster("ce_ecal_cl", # inputHitCollection=ce_ecal_reco.outputHitCollection, # outputProtoClusterCollection="EcalEndcapNProtoClusters", # splitCluster=False, @@ -407,467 +494,581 @@ ce_ecal_cl = TruthClustering("ce_ecal_cl", # dimScaledLocalDistXY=[1.8, 1.8]) # dimension scaled dist is good for hybrid sectors with different module size algorithms.append(ce_ecal_cl) -ce_ecal_clreco = RecoCoG("ce_ecal_clreco", - inputProtoClusterCollection = ce_ecal_cl.outputProtoClusters, - outputClusterCollection = "EcalEndcapNClusters", - logWeightBase = 4.6) +ce_ecal_clreco = RecoCoG( + "ce_ecal_clreco", + inputProtoClusterCollection=ce_ecal_cl.outputProtoClusters, + outputClusterCollection="EcalEndcapNClusters", + logWeightBase=4.6, +) algorithms.append(ce_ecal_clreco) -#ce_ecal_clmerger = ClusterMerger("ce_ecal_clmerger", +# ce_ecal_clmerger = ClusterMerger("ce_ecal_clmerger", # inputClusters = ce_ecal_clreco.outputClusterCollection, # outputClusters = "EcalEndcapNMergedClusters", # outputRelations = "EcalEndcapNMergedClusterRelations") -#algorithms.append(ce_ecal_clmerger) +# algorithms.append(ce_ecal_clmerger) # Endcap ScFi Ecal -ci_ecal_daq = calo_daq['ecal_pos_endcap'] - -ci_ecal_digi = CalHitDigi("ci_ecal_digi", - inputHitCollection="EcalEndcapPHits", - outputHitCollection="EcalEndcapPRawHits", - scaleResponse=ci_ecal_sf, - energyResolutions=[.1, .0015, 0.], - **ci_ecal_daq) +ci_ecal_daq = calo_daq["ecal_pos_endcap"] + +ci_ecal_digi = CalHitDigi( + "ci_ecal_digi", + inputHitCollection="EcalEndcapPHits", + outputHitCollection="EcalEndcapPRawHits", + scaleResponse=ci_ecal_sf, + energyResolutions=[0.1, 0.0015, 0.0], + **ci_ecal_daq, +) algorithms.append(ci_ecal_digi) -ci_ecal_reco = CalHitReco("ci_ecal_reco", - inputHitCollection=ci_ecal_digi.outputHitCollection, - outputHitCollection="EcalEndcapPRecHits", - thresholdFactor=5.0, - samplingFraction=ci_ecal_sf, - **ci_ecal_daq) +ci_ecal_reco = CalHitReco( + "ci_ecal_reco", + inputHitCollection=ci_ecal_digi.outputHitCollection, + outputHitCollection="EcalEndcapPRecHits", + thresholdFactor=5.0, + samplingFraction=ci_ecal_sf, + **ci_ecal_daq, +) algorithms.append(ci_ecal_reco) # merge hits in different layer (projection to local x-y plane) -ci_ecal_merger = CalHitsMerger("ci_ecal_merger", - inputHitCollection=ci_ecal_reco.outputHitCollection, - outputHitCollection="EcalEndcapPRecMergedHits", - fields=["fiber_x", "fiber_y"], - fieldRefNumbers=[1, 1], - # fields=["layer", "slice"], - # fieldRefNumbers=[1, 0], - readoutClass="EcalEndcapPHits") +ci_ecal_merger = CalHitsMerger( + "ci_ecal_merger", + inputHitCollection=ci_ecal_reco.outputHitCollection, + outputHitCollection="EcalEndcapPRecMergedHits", + fields=["fiber_x", "fiber_y"], + fieldRefNumbers=[1, 1], + # fields=["layer", "slice"], + # fieldRefNumbers=[1, 0], + readoutClass="EcalEndcapPHits", +) algorithms.append(ci_ecal_merger) -ci_ecal_cl = TruthClustering("ci_ecal_cl", - inputHits=ci_ecal_reco.outputHitCollection, - mcHits="EcalEndcapPHits", - outputProtoClusters="EcalEndcapPProtoClusters") -#ci_ecal_cl = IslandCluster("ci_ecal_cl", - #inputHitCollection=ci_ecal_merger.outputHitCollection, - #outputProtoClusterCollection="EcalEndcapPProtoClusters", - #splitCluster=False, - #minClusterCenterEdep=10.*MeV, - #localDistXY=[10*mm, 10*mm]) +ci_ecal_cl = TruthClustering( + "ci_ecal_cl", + inputHits=ci_ecal_reco.outputHitCollection, + mcHits="EcalEndcapPHits", + outputProtoClusters="EcalEndcapPProtoClusters", +) +# ci_ecal_cl = IslandCluster("ci_ecal_cl", +# inputHitCollection=ci_ecal_merger.outputHitCollection, +# outputProtoClusterCollection="EcalEndcapPProtoClusters", +# splitCluster=False, +# minClusterCenterEdep=10.*MeV, +# localDistXY=[10*mm, 10*mm]) algorithms.append(ci_ecal_cl) -ci_ecal_clreco = RecoCoG("ci_ecal_clreco", - inputProtoClusterCollection=ci_ecal_cl.outputProtoClusters, - outputClusterCollection="EcalEndcapPClusters", - enableEtaBounds=True, - logWeightBase=6.2) +ci_ecal_clreco = RecoCoG( + "ci_ecal_clreco", + inputProtoClusterCollection=ci_ecal_cl.outputProtoClusters, + outputClusterCollection="EcalEndcapPClusters", + enableEtaBounds=True, + logWeightBase=6.2, +) algorithms.append(ci_ecal_clreco) -#ci_ecal_clmerger = ClusterMerger("ci_ecal_clmerger", +# ci_ecal_clmerger = ClusterMerger("ci_ecal_clmerger", # inputClusters = ci_ecal_clreco.outputClusterCollection, # outputClusters = "EcalEndcapPMergedClusters", # outputRelations = "EcalEndcapPMergedClusterRelations") -#algorithms.append(ci_ecal_clmerger) +# algorithms.append(ci_ecal_clmerger) # Central Barrel Ecal if has_ecal_barrel_scfi: # Central ECAL Imaging Calorimeter - img_barrel_daq = calo_daq['ecal_barrel_imaging'] + 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) + energyResolutions=[0.0, 0.02, 0.0], # 2% flat resolution + **img_barrel_daq, + ) 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 samplingFraction=img_barrel_sf, readoutClass="EcalBarrelHits", # readout class - layerField="layer", # field to get layer id - sectorField="module", # field to get sector id - **img_barrel_daq) + layerField="layer", # field to get layer id + sectorField="module", # field to get sector id + **img_barrel_daq, + ) 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.*mm, 2*mm], # same layer - layerDistEtaPhi=[10*mrad, 10*mrad], # adjacent layer - neighbourLayersRange=2, # id diff for adjacent layer - sectorDist=3.*cm) # different sector + localDistXY=[2.0 * mm, 2 * mm], # same layer + layerDistEtaPhi=[10 * mrad, 10 * mrad], # adjacent layer + neighbourLayersRange=2, # id diff for adjacent layer + sectorDist=3.0 * cm, + ) # different sector 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") + outputLayers="EcalBarrelImagingLayers", + ) algorithms.append(img_barrel_clreco) # Central ECAL SciFi - scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] + 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) + **scfi_barrel_daq, + ) 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, - samplingFraction= scifi_barrel_sf, + samplingFraction=scifi_barrel_sf, readoutClass="EcalBarrelScFiHits", layerField="layer", sectorField="module", - localDetFields=["system", "module"], # use local coordinates in each module (stave) - **scfi_barrel_daq) + localDetFields=[ + "system", + "module", + ], # use local coordinates in each module (stave) + **scfi_barrel_daq, + ) algorithms.append(scfi_barrel_reco) # 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") + 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) - scfi_barrel_cl = IslandCluster("scfi_barrel_cl", - inputHitCollection=scfi_barrel_merger.outputHitCollection, - outputProtoClusterCollection="EcalBarrelScFiProtoClusters", - splitCluster=False, - minClusterCenterEdep=10.*MeV, - localDistXZ=[30*mm, 30*mm]) + scfi_barrel_cl = IslandCluster( + "scfi_barrel_cl", + inputHitCollection=scfi_barrel_merger.outputHitCollection, + outputProtoClusterCollection="EcalBarrelScFiProtoClusters", + splitCluster=False, + minClusterCenterEdep=10.0 * MeV, + localDistXZ=[30 * mm, 30 * mm], + ) algorithms.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, + ) algorithms.append(scfi_barrel_clreco) ## barrel cluster merger - #barrel_clus_merger = EnergyPositionClusterMerger("barrel_clus_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) + # algorithms.append(barrel_clus_merger) else: # SciGlass calorimeter sciglass_ecal_daq = dict( - dynamicRangeADC=5.*GeV, - capacityADC=32768, - pedestalMean=400, - pedestalSigma=3) + dynamicRangeADC=5.0 * GeV, capacityADC=32768, pedestalMean=400, pedestalSigma=3 + ) - sciglass_ecal_digi = CalHitDigi("sciglass_ecal_digi", + sciglass_ecal_digi = CalHitDigi( + "sciglass_ecal_digi", inputHitCollection="EcalBarrelHits", outputHitCollection="EcalBarrelHitsDigi", - energyResolutions=[0., 0.02, 0.], # 2% flat resolution - **sciglass_ecal_daq) + energyResolutions=[0.0, 0.02, 0.0], # 2% flat resolution + **sciglass_ecal_daq, + ) algorithms.append(sciglass_ecal_digi) - sciglass_ecal_reco = CalHitReco("sciglass_ecal_reco", + 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) + 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", + 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) + 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", + sciglass_ecal_clreco = ImagingClusterReco( + "sciglass_ecal_clreco", inputProtoClusters=sciglass_ecal_cl.outputProtoClusterCollection, mcHits="EcalBarrelHits", outputClusters="EcalBarrelClusters", - outputLayers="EcalBarrelLayers") + outputLayers="EcalBarrelLayers", + ) algorithms.append(sciglass_ecal_clreco) # Central Barrel Hcal -cb_hcal_daq = calo_daq['hcal_barrel'] +cb_hcal_daq = calo_daq["hcal_barrel"] -cb_hcal_digi = CalHitDigi("cb_hcal_digi", - inputHitCollection="HcalBarrelHits", - outputHitCollection="HcalBarrelRawHits", - **cb_hcal_daq) +cb_hcal_digi = CalHitDigi( + "cb_hcal_digi", + inputHitCollection="HcalBarrelHits", + outputHitCollection="HcalBarrelRawHits", + **cb_hcal_daq, +) algorithms.append(cb_hcal_digi) -cb_hcal_reco = CalHitReco("cb_hcal_reco", - inputHitCollection=cb_hcal_digi.outputHitCollection, - outputHitCollection="HcalBarrelRecHits", - thresholdFactor=5.0, - samplingFraction=cb_hcal_sf, - readoutClass="HcalBarrelHits", - layerField="layer", - sectorField="module", - **cb_hcal_daq) +cb_hcal_reco = CalHitReco( + "cb_hcal_reco", + inputHitCollection=cb_hcal_digi.outputHitCollection, + outputHitCollection="HcalBarrelRecHits", + thresholdFactor=5.0, + samplingFraction=cb_hcal_sf, + readoutClass="HcalBarrelHits", + layerField="layer", + sectorField="module", + **cb_hcal_daq, +) algorithms.append(cb_hcal_reco) -cb_hcal_merger = CalHitsMerger("cb_hcal_merger", - inputHitCollection=cb_hcal_reco.outputHitCollection, - outputHitCollection="HcalBarrelMergedHits", - readoutClass="HcalBarrelHits", - fields=["layer", "slice"], - fieldRefNumbers=[1, 0]) +cb_hcal_merger = CalHitsMerger( + "cb_hcal_merger", + inputHitCollection=cb_hcal_reco.outputHitCollection, + outputHitCollection="HcalBarrelMergedHits", + readoutClass="HcalBarrelHits", + fields=["layer", "slice"], + fieldRefNumbers=[1, 0], +) algorithms.append(cb_hcal_merger) -cb_hcal_cl = IslandCluster("cb_hcal_cl", - inputHitCollection=cb_hcal_merger.outputHitCollection, - outputProtoClusterCollection="HcalBarrelProtoClusters", - splitCluster=False, - minClusterCenterEdep=30.*MeV, - localDistXY=[15.*cm, 15.*cm]) +cb_hcal_cl = IslandCluster( + "cb_hcal_cl", + inputHitCollection=cb_hcal_merger.outputHitCollection, + outputProtoClusterCollection="HcalBarrelProtoClusters", + splitCluster=False, + minClusterCenterEdep=30.0 * MeV, + localDistXY=[15.0 * cm, 15.0 * cm], +) algorithms.append(cb_hcal_cl) -cb_hcal_clreco = RecoCoG("cb_hcal_clreco", - inputProtoClusterCollection=cb_hcal_cl.outputProtoClusterCollection, - outputClusterCollection="HcalBarrelClusters", - logWeightBase=6.2) +cb_hcal_clreco = RecoCoG( + "cb_hcal_clreco", + inputProtoClusterCollection=cb_hcal_cl.outputProtoClusterCollection, + outputClusterCollection="HcalBarrelClusters", + logWeightBase=6.2, +) algorithms.append(cb_hcal_clreco) # Hcal Hadron Endcap -ci_hcal_daq = calo_daq['hcal_pos_endcap'] +ci_hcal_daq = calo_daq["hcal_pos_endcap"] -ci_hcal_digi = CalHitDigi("ci_hcal_digi", - inputHitCollection="HcalEndcapPHits", - outputHitCollection="HcalEndcapPRawHits", - **ci_hcal_daq) +ci_hcal_digi = CalHitDigi( + "ci_hcal_digi", + inputHitCollection="HcalEndcapPHits", + outputHitCollection="HcalEndcapPRawHits", + **ci_hcal_daq, +) algorithms.append(ci_hcal_digi) -ci_hcal_reco = CalHitReco("ci_hcal_reco", - inputHitCollection=ci_hcal_digi.outputHitCollection, - outputHitCollection="HcalEndcapPRecHits", - thresholdFactor=5.0, - samplingFraction=ci_hcal_sf, - **ci_hcal_daq) +ci_hcal_reco = CalHitReco( + "ci_hcal_reco", + inputHitCollection=ci_hcal_digi.outputHitCollection, + outputHitCollection="HcalEndcapPRecHits", + thresholdFactor=5.0, + samplingFraction=ci_hcal_sf, + **ci_hcal_daq, +) algorithms.append(ci_hcal_reco) -ci_hcal_merger = CalHitsMerger("ci_hcal_merger", - inputHitCollection=ci_hcal_reco.outputHitCollection, - outputHitCollection="HcalEndcapPMergedHits", - readoutClass="HcalEndcapPHits", - fields=["layer", "slice"], - fieldRefNumbers=[1, 0]) +ci_hcal_merger = CalHitsMerger( + "ci_hcal_merger", + inputHitCollection=ci_hcal_reco.outputHitCollection, + outputHitCollection="HcalEndcapPMergedHits", + readoutClass="HcalEndcapPHits", + fields=["layer", "slice"], + fieldRefNumbers=[1, 0], +) algorithms.append(ci_hcal_merger) -ci_hcal_cl = IslandCluster("ci_hcal_cl", - inputHitCollection=ci_hcal_merger.outputHitCollection, - outputProtoClusterCollection="HcalEndcapPProtoClusters", - splitCluster=False, - minClusterCenterEdep=30.*MeV, - localDistXY=[15.*cm, 15.*cm]) +ci_hcal_cl = IslandCluster( + "ci_hcal_cl", + inputHitCollection=ci_hcal_merger.outputHitCollection, + outputProtoClusterCollection="HcalEndcapPProtoClusters", + splitCluster=False, + minClusterCenterEdep=30.0 * MeV, + localDistXY=[15.0 * cm, 15.0 * cm], +) algorithms.append(ci_hcal_cl) -ci_hcal_clreco = RecoCoG("ci_hcal_clreco", - inputProtoClusterCollection=ci_hcal_cl.outputProtoClusterCollection, - outputClusterCollection="HcalEndcapPClusters", - logWeightBase=6.2) +ci_hcal_clreco = RecoCoG( + "ci_hcal_clreco", + inputProtoClusterCollection=ci_hcal_cl.outputProtoClusterCollection, + outputClusterCollection="HcalEndcapPClusters", + logWeightBase=6.2, +) algorithms.append(ci_hcal_clreco) # Hcal Electron Endcap -ce_hcal_daq = calo_daq['hcal_neg_endcap'] +ce_hcal_daq = calo_daq["hcal_neg_endcap"] -ce_hcal_digi = CalHitDigi("ce_hcal_digi", - inputHitCollection="HcalEndcapNHits", - outputHitCollection="HcalEndcapNRawHits", - **ce_hcal_daq) +ce_hcal_digi = CalHitDigi( + "ce_hcal_digi", + inputHitCollection="HcalEndcapNHits", + outputHitCollection="HcalEndcapNRawHits", + **ce_hcal_daq, +) algorithms.append(ce_hcal_digi) -ce_hcal_reco = CalHitReco("ce_hcal_reco", - inputHitCollection=ce_hcal_digi.outputHitCollection, - outputHitCollection="HcalEndcapNRecHits", - thresholdFactor=5.0, - samplingFraction=ce_hcal_sf, - **ce_hcal_daq) +ce_hcal_reco = CalHitReco( + "ce_hcal_reco", + inputHitCollection=ce_hcal_digi.outputHitCollection, + outputHitCollection="HcalEndcapNRecHits", + thresholdFactor=5.0, + samplingFraction=ce_hcal_sf, + **ce_hcal_daq, +) algorithms.append(ce_hcal_reco) -ce_hcal_merger = CalHitsMerger("ce_hcal_merger", - inputHitCollection=ce_hcal_reco.outputHitCollection, - outputHitCollection="HcalEndcapNMergedHits", - readoutClass="HcalEndcapNHits", - fields=["layer", "slice"], - fieldRefNumbers=[1, 0]) +ce_hcal_merger = CalHitsMerger( + "ce_hcal_merger", + inputHitCollection=ce_hcal_reco.outputHitCollection, + outputHitCollection="HcalEndcapNMergedHits", + readoutClass="HcalEndcapNHits", + fields=["layer", "slice"], + fieldRefNumbers=[1, 0], +) algorithms.append(ce_hcal_merger) -ce_hcal_cl = IslandCluster("ce_hcal_cl", - inputHitCollection=ce_hcal_merger.outputHitCollection, - outputProtoClusterCollection="HcalEndcapNProtoClusters", - splitCluster=False, - minClusterCenterEdep=30.*MeV, - localDistXY=[15.*cm, 15.*cm]) +ce_hcal_cl = IslandCluster( + "ce_hcal_cl", + inputHitCollection=ce_hcal_merger.outputHitCollection, + outputProtoClusterCollection="HcalEndcapNProtoClusters", + splitCluster=False, + minClusterCenterEdep=30.0 * MeV, + localDistXY=[15.0 * cm, 15.0 * cm], +) algorithms.append(ce_hcal_cl) -ce_hcal_clreco = RecoCoG("ce_hcal_clreco", - inputProtoClusterCollection=ce_hcal_cl.outputProtoClusterCollection, - outputClusterCollection="HcalEndcapNClusters", - logWeightBase=6.2) +ce_hcal_clreco = RecoCoG( + "ce_hcal_clreco", + inputProtoClusterCollection=ce_hcal_cl.outputProtoClusterCollection, + outputClusterCollection="HcalEndcapNClusters", + logWeightBase=6.2, +) algorithms.append(ce_hcal_clreco) # Tracking -trk_b_coll = SimTrackerHitsCollector("trk_b_coll", - inputSimTrackerHits = tracker_barrel_collections, - outputSimTrackerHits = "TrackerBarrelAllHits") -algorithms.append( trk_b_coll ) - -trk_b_digi = TrackerDigi("trk_b_digi", - inputHitCollection = trk_b_coll.outputSimTrackerHits, - outputHitCollection = "TrackerBarrelRawHits", - timeResolution=8) +trk_b_coll = SimTrackerHitsCollector( + "trk_b_coll", + inputSimTrackerHits=tracker_barrel_collections, + outputSimTrackerHits="TrackerBarrelAllHits", +) +algorithms.append(trk_b_coll) + +trk_b_digi = TrackerDigi( + "trk_b_digi", + inputHitCollection=trk_b_coll.outputSimTrackerHits, + outputHitCollection="TrackerBarrelRawHits", + timeResolution=8, +) algorithms.append(trk_b_digi) -trk_ec_coll = SimTrackerHitsCollector("trk_ec_coll", - inputSimTrackerHits = tracker_endcap_collections, - outputSimTrackerHits = "TrackerEndcapAllHits") -algorithms.append( trk_ec_coll ) +trk_ec_coll = SimTrackerHitsCollector( + "trk_ec_coll", + inputSimTrackerHits=tracker_endcap_collections, + outputSimTrackerHits="TrackerEndcapAllHits", +) +algorithms.append(trk_ec_coll) -trk_ec_digi = TrackerDigi("trk_ec_digi", - inputHitCollection = trk_ec_coll.outputSimTrackerHits, - outputHitCollection = "TrackerEndcapRawHits", - timeResolution=8) +trk_ec_digi = TrackerDigi( + "trk_ec_digi", + inputHitCollection=trk_ec_coll.outputSimTrackerHits, + outputHitCollection="TrackerEndcapRawHits", + timeResolution=8, +) algorithms.append(trk_ec_digi) -vtx_b_coll = SimTrackerHitsCollector("vtx_b_coll", - inputSimTrackerHits = vertex_barrel_collections, - outputSimTrackerHits = "VertexBarrelAllHits") -algorithms.append( vtx_b_coll ) +vtx_b_coll = SimTrackerHitsCollector( + "vtx_b_coll", + inputSimTrackerHits=vertex_barrel_collections, + outputSimTrackerHits="VertexBarrelAllHits", +) +algorithms.append(vtx_b_coll) -vtx_b_digi = TrackerDigi("vtx_b_digi", - inputHitCollection = vtx_b_coll.outputSimTrackerHits, - outputHitCollection = "VertexBarrelRawHits", - timeResolution=8) +vtx_b_digi = TrackerDigi( + "vtx_b_digi", + inputHitCollection=vtx_b_coll.outputSimTrackerHits, + outputHitCollection="VertexBarrelRawHits", + timeResolution=8, +) 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 ) +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") -algorithms.append( gem_ec_coll ) - -gem_ec_digi = TrackerDigi("gem_ec_digi", - inputHitCollection = gem_ec_coll.outputSimTrackerHits, - outputHitCollection = "GEMTrackerEndcapRawHits", - timeResolution=10) + 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", +) +algorithms.append(gem_ec_coll) + +gem_ec_digi = TrackerDigi( + "gem_ec_digi", + inputHitCollection=gem_ec_coll.outputSimTrackerHits, + outputHitCollection="GEMTrackerEndcapRawHits", + timeResolution=10, +) algorithms.append(gem_ec_digi) # Tracker and vertex reconstruction -trk_b_reco = TrackerHitReconstruction("trk_b_reco", - inputHitCollection = trk_b_digi.outputHitCollection, - outputHitCollection="TrackerBarrelRecHits") +trk_b_reco = TrackerHitReconstruction( + "trk_b_reco", + inputHitCollection=trk_b_digi.outputHitCollection, + outputHitCollection="TrackerBarrelRecHits", +) algorithms.append(trk_b_reco) -trk_ec_reco = TrackerHitReconstruction("trk_ec_reco", - inputHitCollection = trk_ec_digi.outputHitCollection, - outputHitCollection="TrackerEndcapRecHits") +trk_ec_reco = TrackerHitReconstruction( + "trk_ec_reco", + inputHitCollection=trk_ec_digi.outputHitCollection, + outputHitCollection="TrackerEndcapRecHits", +) algorithms.append(trk_ec_reco) -vtx_b_reco = TrackerHitReconstruction("vtx_b_reco", - inputHitCollection = vtx_b_digi.outputHitCollection, - outputHitCollection="VertexBarrelRecHits") +vtx_b_reco = TrackerHitReconstruction( + "vtx_b_reco", + inputHitCollection=vtx_b_digi.outputHitCollection, + outputHitCollection="VertexBarrelRecHits", +) 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 ) +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") + 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", +) algorithms.append(gem_ec_reco) input_tracking_hits = [ str(trk_b_reco.outputHitCollection), str(trk_ec_reco.outputHitCollection), str(vtx_b_reco.outputHitCollection), - str(gem_ec_reco.outputHitCollection) ] -if 'acadia' in detector_version: + str(gem_ec_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") -algorithms.append( trk_hit_col ) +trk_hit_col = TrackingHitsCollector( + "trk_hit_col", inputTrackingHits=input_tracking_hits, trackingHits="trackingHits" +) +algorithms.append(trk_hit_col) # Hit Source linker -sourcelinker = TrackerSourceLinker("trk_srcslnkr", - inputHitCollection = trk_hit_col.trackingHits, - outputSourceLinks = "TrackSourceLinks", - outputMeasurements = "TrackMeasurements") +sourcelinker = TrackerSourceLinker( + "trk_srcslnkr", + inputHitCollection=trk_hit_col.trackingHits, + outputSourceLinks="TrackSourceLinks", + outputMeasurements="TrackMeasurements", +) algorithms.append(sourcelinker) ## Track param init -truth_trk_init = TrackParamTruthInit("truth_trk_init", - inputMCParticles="MCParticles", - outputInitialTrackParameters="InitTrackParams") +truth_trk_init = TrackParamTruthInit( + "truth_trk_init", + inputMCParticles="MCParticles", + outputInitialTrackParameters="InitTrackParams", +) algorithms.append(truth_trk_init) # Tracking algorithms -trk_find_alg = CKFTracking("trk_find_alg", - inputSourceLinks = sourcelinker.outputSourceLinks, - inputMeasurements = sourcelinker.outputMeasurements, - inputInitialTrackParameters = truth_trk_init.outputInitialTrackParameters, - outputTrajectories = "trajectories", - chi2CutOff = [50.]) +trk_find_alg = CKFTracking( + "trk_find_alg", + inputSourceLinks=sourcelinker.outputSourceLinks, + inputMeasurements=sourcelinker.outputMeasurements, + inputInitialTrackParameters=truth_trk_init.outputInitialTrackParameters, + outputTrajectories="trajectories", + chi2CutOff=[50.0], +) algorithms.append(trk_find_alg) -parts_from_fit = ParticlesFromTrackFit("parts_from_fit", - inputTrajectories = trk_find_alg.outputTrajectories, - outputParticles = "outputParticles", - outputTrackParameters = "outputTrackParameters") +parts_from_fit = ParticlesFromTrackFit( + "parts_from_fit", + inputTrajectories=trk_find_alg.outputTrajectories, + outputParticles="outputParticles", + outputTrackParameters="outputTrackParameters", +) algorithms.append(parts_from_fit) # trajs_from_fit = TrajectoryFromTrackFit("trajs_from_fit", @@ -876,15 +1077,17 @@ algorithms.append(parts_from_fit) # algorithms.append(trajs_from_fit) # Event building -parts_with_truth_pid = ParticlesWithTruthPID("parts_with_truth_pid", - inputMCParticles = "MCParticles", - inputTrackParameters = parts_from_fit.outputTrackParameters, - outputParticles = "ReconstructedParticles", - outputAssociations = "ReconstructedParticlesAssoc") +parts_with_truth_pid = ParticlesWithTruthPID( + "parts_with_truth_pid", + inputMCParticles="MCParticles", + inputTrackParameters=parts_from_fit.outputTrackParameters, + outputParticles="ReconstructedParticles", + outputAssociations="ReconstructedParticlesAssoc", +) # outputParticles = "ReconstructedChargedParticles") algorithms.append(parts_with_truth_pid) -#match_clusters = MatchClusters("match_clusters", +# match_clusters = MatchClusters("match_clusters", # inputMCParticles = "MCParticles", # inputParticles = parts_with_truth_pid.outputParticles, # inputEcalClusters = [ @@ -898,91 +1101,107 @@ algorithms.append(parts_with_truth_pid) # str(ci_hcal_clreco.outputClusterCollection) # ], # outputParticles = "ReconstructedParticles") -#algorithms.append(match_clusters) +# algorithms.append(match_clusters) ## Far Forward for now stored separately -fast_ff = FFSmearedParticles("fast_ff", - inputMCParticles = "MCParticles", - outputParticles = "ReconstructedFFParticles", - outputAssociations = "ReconstructedFFParticlesAssoc", - enableZDC = True, - enableB0 = True, - enableRP = True, - enableOMD = True, - ionBeamEnergy = ionBeamEnergy, - crossingAngle = -0.025) +fast_ff = FFSmearedParticles( + "fast_ff", + inputMCParticles="MCParticles", + outputParticles="ReconstructedFFParticles", + outputAssociations="ReconstructedFFParticlesAssoc", + enableZDC=True, + enableB0=True, + enableRP=True, + enableOMD=True, + ionBeamEnergy=ionBeamEnergy, + crossingAngle=-0.025, +) algorithms.append(fast_ff) # DRICH -drich_digi = PhotoMultiplierDigi("drich_digi", - inputHitCollection="DRICHHits", - outputHitCollection="DRICHRawHits", - quantumEfficiency=[(a*eV, b) for a, b in qe_data]) +drich_digi = PhotoMultiplierDigi( + "drich_digi", + inputHitCollection="DRICHHits", + outputHitCollection="DRICHRawHits", + quantumEfficiency=[(a * eV, b) for a, b in qe_data], +) algorithms.append(drich_digi) -drich_reco = PhotoMultiplierReco("drich_reco", - inputHitCollection=drich_digi.outputHitCollection, - outputHitCollection="DRICHRecHits") +drich_reco = PhotoMultiplierReco( + "drich_reco", + inputHitCollection=drich_digi.outputHitCollection, + outputHitCollection="DRICHRecHits", +) algorithms.append(drich_reco) # FIXME -#drich_cluster = PhotoRingClusters("drich_cluster", +# drich_cluster = PhotoRingClusters("drich_cluster", # inputHitCollection=pmtreco.outputHitCollection, # #inputTrackCollection=parts_with_truth_pid.outputParticles, # outputClusterCollection="ForwardRICHClusters") # MRICH -if 'acadia' in detector_version: - mrich_digi = PhotoMultiplierDigi("mrich_digi", - inputHitCollection="MRICHHits", - outputHitCollection="MRICHRawHits", - quantumEfficiency=[(a*eV, b) for a, b in qe_data]) +if "acadia" in detector_version: + mrich_digi = PhotoMultiplierDigi( + "mrich_digi", + inputHitCollection="MRICHHits", + outputHitCollection="MRICHRawHits", + quantumEfficiency=[(a * eV, b) for a, b in qe_data], + ) algorithms.append(mrich_digi) - mrich_reco = PhotoMultiplierReco("mrich_reco", - inputHitCollection=mrich_digi.outputHitCollection, - outputHitCollection="MRICHRecHits") + mrich_reco = PhotoMultiplierReco( + "mrich_reco", + inputHitCollection=mrich_digi.outputHitCollection, + outputHitCollection="MRICHRecHits", + ) algorithms.append(mrich_reco) # Inclusive kinematics -incl_kin_electron = InclusiveKinematicsElectron("incl_kin_electron", - inputMCParticles = "MCParticles", - inputReconstructedParticles = parts_with_truth_pid.outputParticles, - inputParticleAssociations = parts_with_truth_pid.outputAssociations, - outputInclusiveKinematics = "InclusiveKinematicsElectron" +incl_kin_electron = InclusiveKinematicsElectron( + "incl_kin_electron", + inputMCParticles="MCParticles", + inputReconstructedParticles=parts_with_truth_pid.outputParticles, + inputParticleAssociations=parts_with_truth_pid.outputAssociations, + outputInclusiveKinematics="InclusiveKinematicsElectron", ) algorithms.append(incl_kin_electron) -incl_kin_jb = InclusiveKinematicsJB("incl_kin_jb", - inputMCParticles = "MCParticles", - inputReconstructedParticles = parts_with_truth_pid.outputParticles, - inputParticleAssociations = parts_with_truth_pid.outputAssociations, - outputInclusiveKinematics = "InclusiveKinematicsJB" +incl_kin_jb = InclusiveKinematicsJB( + "incl_kin_jb", + inputMCParticles="MCParticles", + inputReconstructedParticles=parts_with_truth_pid.outputParticles, + inputParticleAssociations=parts_with_truth_pid.outputAssociations, + outputInclusiveKinematics="InclusiveKinematicsJB", ) algorithms.append(incl_kin_jb) -incl_kin_da = InclusiveKinematicsDA("incl_kin_da", - inputMCParticles = "MCParticles", - inputReconstructedParticles = parts_with_truth_pid.outputParticles, - inputParticleAssociations = parts_with_truth_pid.outputAssociations, - outputInclusiveKinematics = "InclusiveKinematicsDA" +incl_kin_da = InclusiveKinematicsDA( + "incl_kin_da", + inputMCParticles="MCParticles", + inputReconstructedParticles=parts_with_truth_pid.outputParticles, + inputParticleAssociations=parts_with_truth_pid.outputAssociations, + outputInclusiveKinematics="InclusiveKinematicsDA", ) algorithms.append(incl_kin_da) -incl_kin_sigma = InclusiveKinematicsSigma("incl_kin_sigma", - inputMCParticles = "MCParticles", - inputReconstructedParticles = parts_with_truth_pid.outputParticles, - inputParticleAssociations = parts_with_truth_pid.outputAssociations, - outputInclusiveKinematics = "InclusiveKinematicsSigma" +incl_kin_sigma = InclusiveKinematicsSigma( + "incl_kin_sigma", + inputMCParticles="MCParticles", + inputReconstructedParticles=parts_with_truth_pid.outputParticles, + inputParticleAssociations=parts_with_truth_pid.outputAssociations, + outputInclusiveKinematics="InclusiveKinematicsSigma", ) algorithms.append(incl_kin_sigma) -incl_kin_esigma = InclusiveKinematicseSigma("incl_kin_esigma", - inputMCParticles = "MCParticles", - inputReconstructedParticles = parts_with_truth_pid.outputParticles, - inputParticleAssociations = parts_with_truth_pid.outputAssociations, - outputInclusiveKinematics = "InclusiveKinematicseSigma" +incl_kin_esigma = InclusiveKinematicseSigma( + "incl_kin_esigma", + inputMCParticles="MCParticles", + inputReconstructedParticles=parts_with_truth_pid.outputParticles, + inputParticleAssociations=parts_with_truth_pid.outputAssociations, + outputInclusiveKinematics="InclusiveKinematicseSigma", ) algorithms.append(incl_kin_esigma) # Output podout = PodioOutput("out", filename=output_rec) -podout.outputCommands = [ +podout.outputCommands = ( + [ "keep *", "drop *Hits", "keep *Layers", @@ -990,18 +1209,17 @@ podout.outputCommands = [ "drop *ProtoClusters", "drop outputParticles", "drop InitTrackParams", - ] + [ - "drop " + c for c in sim_coll - ] + [ - "keep MCParticles" - ] + ] + + ["drop " + c for c in sim_coll] + + ["keep MCParticles"] +) algorithms.append(podout) ApplicationMgr( - TopAlg = algorithms, - EvtSel = 'NONE', - EvtMax = n_events, - ExtSvc = services, - OutputLevel = WARNING, - AuditAlgorithms = True - ) + TopAlg=algorithms, + EvtSel="NONE", + EvtMax=n_events, + ExtSvc=services, + OutputLevel=WARNING, + AuditAlgorithms=True, +) diff --git a/options/reconstruction.raw.py b/options/reconstruction.raw.py index de8412c3..b2a31f06 100644 --- a/options/reconstruction.raw.py +++ b/options/reconstruction.raw.py @@ -7,59 +7,74 @@ from GaudiKernel.SystemOfUnits import eV, MeV, GeV, mm, cm, mrad import json detector_name = "athena" -if "JUGGLER_DETECTOR" in os.environ : +if "JUGGLER_DETECTOR" in os.environ: detector_name = str(os.environ["JUGGLER_DETECTOR"]) detector_config = detector_name -if "JUGGLER_DETECTOR_CONFIG" in os.environ : +if "JUGGLER_DETECTOR_CONFIG" in os.environ: detector_config = str(os.environ["JUGGLER_DETECTOR_CONFIG"]) detector_path = "" -if "DETECTOR_PATH" in os.environ : +if "DETECTOR_PATH" in os.environ: detector_path = str(os.environ["DETECTOR_PATH"]) -detector_version = 'default' +detector_version = "default" if "JUGGLER_DETECTOR_VERSION" in os.environ: env_version = str(os.environ["JUGGLER_DETECTOR_VERSION"]) - if 'acadia' in env_version: - detector_version = 'acadia' + if "acadia" in env_version: + detector_version = "acadia" # Detector features that affect reconstruction has_ecal_barrel_scfi = False -if 'athena' in detector_name: +if "athena" in detector_name: has_ecal_barrel_scfi = True -if 'ecce' in detector_name and 'imaging' in detector_config: +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 # RICH reconstruction -qe_data = [(1.0, 0.25), (7.5, 0.25),] +qe_data = [ + (1.0, 0.25), + (7.5, 0.25), +] # input calorimeter DAQ info calo_daq = {} -with open('{}/calibrations/calo_digi_{}.json'.format(detector_path, detector_version)) as f: +with open( + "{}/calibrations/calo_digi_{}.json".format(detector_path, 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']) + "dynamicRangeADC": eval(cfg["dynamicRange"]), + "capacityADC": 2 ** int(cfg["capacityBitsADC"]), + "pedestalMean": int(cfg["pedestalMean"]), + "pedestalSigma": float(cfg["pedestalSigma"]), } print(calo_daq) # input and output -input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] +input_sims = [ + f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip() +] output_rec = str(os.environ["JUGGLER_REC_FILE"]) n_events = int(os.environ["JUGGLER_N_EVENTS"]) # services services = [] # auditor service -services.append(AuditorSvc("AuditorSvc", Auditors=['ChronoAuditor', 'MemStatAuditor'])) +services.append(AuditorSvc("AuditorSvc", Auditors=["ChronoAuditor", "MemStatAuditor"])) # geometry service -services.append(GeoSvc("GeoSvc", detectors=["{}/{}.xml".format(detector_path,detector_config)], OutputLevel=WARNING)) +services.append( + GeoSvc( + "GeoSvc", + detectors=["{}/{}.xml".format(detector_path, detector_config)], + OutputLevel=WARNING, + ) +) # data service services.append(EICDataSvc("EventDataSvc", inputs=input_sims, OutputLevel=WARNING)) @@ -73,74 +88,79 @@ from Configurables import Jug__Digi__SiliconTrackerDigi as TrackerDigi # branches needed from simulation root file sim_coll = [ - 'MCParticles', - 'B0TrackerHits', - 'EcalEndcapNHits', - 'EcalEndcapNHitsContributions', - 'EcalEndcapPHits', - 'EcalEndcapPHitsContributions', - 'EcalBarrelHits', - 'EcalBarrelHitsContributions', - 'HcalBarrelHits', - 'HcalBarrelHitsContributions', - 'HcalEndcapPHits', - 'HcalEndcapPHitsContributions', - 'HcalEndcapNHits', - 'HcalEndcapNHitsContributions', - 'DRICHHits', + "MCParticles", + "B0TrackerHits", + "EcalEndcapNHits", + "EcalEndcapNHitsContributions", + "EcalEndcapPHits", + "EcalEndcapPHitsContributions", + "EcalBarrelHits", + "EcalBarrelHitsContributions", + "HcalBarrelHits", + "HcalBarrelHitsContributions", + "HcalEndcapPHits", + "HcalEndcapPHitsContributions", + "HcalEndcapNHits", + "HcalEndcapNHitsContributions", + "DRICHHits", ] ecal_barrel_scfi_collections = [ - 'EcalBarrelScFiHits', - 'EcalBarrelScFiHitsContributions' + "EcalBarrelScFiHits", + "EcalBarrelScFiHitsContributions", ] if has_ecal_barrel_scfi: sim_coll += ecal_barrel_scfi_collections forward_romanpot_collections = [ - 'ForwardRomanPotHits1', - 'ForwardRomanPotHits2' + "ForwardRomanPotHits1", + "ForwardRomanPotHits2", ] forward_offmtracker_collections = [ - 'ForwardOffMTrackerHits1', - 'ForwardOffMTrackerHits2', - 'ForwardOffMTrackerHits3', - 'ForwardOffMTrackerHits4' + "ForwardOffMTrackerHits1", + "ForwardOffMTrackerHits2", + "ForwardOffMTrackerHits3", + "ForwardOffMTrackerHits4", ] sim_coll += forward_romanpot_collections + forward_offmtracker_collections tracker_endcap_collections = [ - 'TrackerEndcapHits1', - 'TrackerEndcapHits2', - 'TrackerEndcapHits3', - 'TrackerEndcapHits4', - 'TrackerEndcapHits5', - 'TrackerEndcapHits6' + "TrackerEndcapHits1", + "TrackerEndcapHits2", + "TrackerEndcapHits3", + "TrackerEndcapHits4", + "TrackerEndcapHits5", + "TrackerEndcapHits6", ] tracker_barrel_collections = [ - 'TrackerBarrelHits' + "TrackerBarrelHits", ] vertex_barrel_collections = [ - 'VertexBarrelHits' + "VertexBarrelHits", ] gem_endcap_collections = [ - 'GEMTrackerEndcapHits1', - 'GEMTrackerEndcapHits2', - 'GEMTrackerEndcapHits3' + "GEMTrackerEndcapHits1", + "GEMTrackerEndcapHits2", + "GEMTrackerEndcapHits3", ] -sim_coll += tracker_endcap_collections + tracker_barrel_collections + vertex_barrel_collections + gem_endcap_collections +sim_coll += ( + tracker_endcap_collections + + tracker_barrel_collections + + vertex_barrel_collections + + gem_endcap_collections +) vertex_endcap_collections = [ - 'VertexEndcapHits' + "VertexEndcapHits", ] mpgd_barrel_collections = [ - 'MPGDTrackerBarrelHits1', - 'MPGDTrackerBarrelHits2' + "MPGDTrackerBarrelHits1", + "MPGDTrackerBarrelHits2", ] -if 'acadia' in detector_version: +if "acadia" in detector_version: sim_coll += vertex_endcap_collections - sim_coll.append('MRICHHits') + sim_coll.append("MRICHHits") else: sim_coll += mpgd_barrel_collections @@ -152,197 +172,252 @@ podin = PodioInput("PodioReader", collections=sim_coll) algorithms.append(podin) ## Roman pots -ffi_romanpot_coll = SimTrackerHitsCollector("ffi_romanpot_coll", - inputSimTrackerHits = forward_romanpot_collections, - outputSimTrackerHits = "ForwardRomanPotAllHits") +ffi_romanpot_coll = SimTrackerHitsCollector( + "ffi_romanpot_coll", + inputSimTrackerHits=forward_romanpot_collections, + outputSimTrackerHits="ForwardRomanPotAllHits", +) algorithms.append(ffi_romanpot_coll) -ffi_romanpot_digi = TrackerDigi("ffi_romanpot_digi", - inputHitCollection = ffi_romanpot_coll.outputSimTrackerHits, - outputHitCollection = "ForwardRomanPotRawHits", - timeResolution = 8) +ffi_romanpot_digi = TrackerDigi( + "ffi_romanpot_digi", + inputHitCollection=ffi_romanpot_coll.outputSimTrackerHits, + outputHitCollection="ForwardRomanPotRawHits", + timeResolution=8, +) algorithms.append(ffi_romanpot_digi) ## Off momentum tracker -ffi_offmtracker_coll = SimTrackerHitsCollector("ffi_offmtracker_coll", - inputSimTrackerHits = forward_offmtracker_collections, - outputSimTrackerHits = "ForwardOffMTrackerAllHits") +ffi_offmtracker_coll = SimTrackerHitsCollector( + "ffi_offmtracker_coll", + inputSimTrackerHits=forward_offmtracker_collections, + outputSimTrackerHits="ForwardOffMTrackerAllHits", +) algorithms.append(ffi_offmtracker_coll) -ffi_offmtracker_digi = TrackerDigi("ffi_offmtracker_digi", - inputHitCollection = ffi_offmtracker_coll.outputSimTrackerHits, - outputHitCollection = "ForwardOffMTrackerRawHits", - timeResolution = 8) +ffi_offmtracker_digi = TrackerDigi( + "ffi_offmtracker_digi", + inputHitCollection=ffi_offmtracker_coll.outputSimTrackerHits, + outputHitCollection="ForwardOffMTrackerRawHits", + timeResolution=8, +) algorithms.append(ffi_offmtracker_digi) ## B0 tracker -trk_b0_digi = TrackerDigi("trk_b0_digi", - inputHitCollection="B0TrackerHits", - outputHitCollection="B0TrackerRawHits", - timeResolution=8) +trk_b0_digi = TrackerDigi( + "trk_b0_digi", + inputHitCollection="B0TrackerHits", + outputHitCollection="B0TrackerRawHits", + timeResolution=8, +) algorithms.append(trk_b0_digi) # Crystal Endcap Ecal -ce_ecal_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_ecal_daq = calo_daq["ecal_neg_endcap"] + +ce_ecal_digi = CalHitDigi( + "ce_ecal_digi", + inputHitCollection="EcalEndcapNHits", + outputHitCollection="EcalEndcapNRawHits", + energyResolutions=[0.0, 0.02, 0.0], + **ce_ecal_daq +) algorithms.append(ce_ecal_digi) # Endcap Sampling Ecal -ci_ecal_daq = calo_daq['ecal_pos_endcap'] - -ci_ecal_digi = CalHitDigi("ci_ecal_digi", - inputHitCollection="EcalEndcapPHits", - outputHitCollection="EcalEndcapPRawHits", - **ci_ecal_daq) +ci_ecal_daq = calo_daq["ecal_pos_endcap"] + +ci_ecal_digi = CalHitDigi( + "ci_ecal_digi", + inputHitCollection="EcalEndcapPHits", + outputHitCollection="EcalEndcapPRawHits", + **ci_ecal_daq +) algorithms.append(ci_ecal_digi) # Central Barrel Ecal if has_ecal_barrel_scfi: # Central ECAL Imaging Calorimeter - img_barrel_daq = calo_daq['ecal_barrel_imaging'] + 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) + energyResolutions=[0.0, 0.02, 0.0], # 2% flat resolution + **img_barrel_daq + ) algorithms.append(img_barrel_digi) # Central ECAL SciFi - scfi_barrel_daq = calo_daq['ecal_barrel_scfi'] + 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) + **scfi_barrel_daq + ) algorithms.append(scfi_barrel_digi) else: # SciGlass calorimeter - sciglass_ecal_daq = calo_daq['ecal_barrel_sciglass'] + sciglass_ecal_daq = calo_daq["ecal_barrel_sciglass"] - sciglass_ecal_digi = CalHitDigi("sciglass_ecal_digi", + sciglass_ecal_digi = CalHitDigi( + "sciglass_ecal_digi", inputHitCollection="EcalBarrelHits", outputHitCollection="EcalBarrelRawHits", - energyResolutions=[0., 0.02, 0.], # 2% flat resolution - **sciglass_ecal_daq) + energyResolutions=[0.0, 0.02, 0.0], # 2% flat resolution + **sciglass_ecal_daq + ) algorithms.append(sciglass_ecal_digi) # Central Barrel Hcal -cb_hcal_daq = calo_daq['hcal_barrel'] - -cb_hcal_digi = CalHitDigi("cb_hcal_digi", - inputHitCollection="HcalBarrelHits", - outputHitCollection="HcalBarrelRawHits", - **cb_hcal_daq) +cb_hcal_daq = calo_daq["hcal_barrel"] + +cb_hcal_digi = CalHitDigi( + "cb_hcal_digi", + inputHitCollection="HcalBarrelHits", + outputHitCollection="HcalBarrelRawHits", + **cb_hcal_daq +) algorithms.append(cb_hcal_digi) # Hcal Hadron Endcap -ci_hcal_daq = calo_daq['hcal_pos_endcap'] - -ci_hcal_digi = CalHitDigi("ci_hcal_digi", - inputHitCollection="HcalEndcapPHits", - outputHitCollection="HcalEndcapPRawHits", - **ci_hcal_daq) +ci_hcal_daq = calo_daq["hcal_pos_endcap"] + +ci_hcal_digi = CalHitDigi( + "ci_hcal_digi", + inputHitCollection="HcalEndcapPHits", + outputHitCollection="HcalEndcapPRawHits", + **ci_hcal_daq +) algorithms.append(ci_hcal_digi) # Hcal Electron Endcap -ce_hcal_daq = calo_daq['hcal_neg_endcap'] - -ce_hcal_digi = CalHitDigi("ce_hcal_digi", - inputHitCollection="HcalEndcapNHits", - outputHitCollection="HcalEndcapNRawHits", - **ce_hcal_daq) +ce_hcal_daq = calo_daq["hcal_neg_endcap"] + +ce_hcal_digi = CalHitDigi( + "ce_hcal_digi", + inputHitCollection="HcalEndcapNHits", + outputHitCollection="HcalEndcapNRawHits", + **ce_hcal_daq +) algorithms.append(ce_hcal_digi) # Tracking -trk_b_coll = SimTrackerHitsCollector("trk_b_coll", - inputSimTrackerHits = tracker_barrel_collections, - outputSimTrackerHits = "TrackerBarrelAllHits") -algorithms.append( trk_b_coll ) - -trk_b_digi = TrackerDigi("trk_b_digi", - inputHitCollection = trk_b_coll.outputSimTrackerHits, - outputHitCollection = "TrackerBarrelRawHits", - timeResolution=8) +trk_b_coll = SimTrackerHitsCollector( + "trk_b_coll", + inputSimTrackerHits=tracker_barrel_collections, + outputSimTrackerHits="TrackerBarrelAllHits", +) +algorithms.append(trk_b_coll) + +trk_b_digi = TrackerDigi( + "trk_b_digi", + inputHitCollection=trk_b_coll.outputSimTrackerHits, + outputHitCollection="TrackerBarrelRawHits", + timeResolution=8, +) algorithms.append(trk_b_digi) -trk_ec_coll = SimTrackerHitsCollector("trk_ec_coll", - inputSimTrackerHits = tracker_endcap_collections, - outputSimTrackerHits = "TrackerEndcapAllHits") -algorithms.append( trk_ec_coll ) - -trk_ec_digi = TrackerDigi("trk_ec_digi", - inputHitCollection = trk_ec_coll.outputSimTrackerHits, - outputHitCollection = "TrackerEndcapRawHits", - timeResolution=8) +trk_ec_coll = SimTrackerHitsCollector( + "trk_ec_coll", + inputSimTrackerHits=tracker_endcap_collections, + outputSimTrackerHits="TrackerEndcapAllHits", +) +algorithms.append(trk_ec_coll) + +trk_ec_digi = TrackerDigi( + "trk_ec_digi", + inputHitCollection=trk_ec_coll.outputSimTrackerHits, + outputHitCollection="TrackerEndcapRawHits", + timeResolution=8, +) algorithms.append(trk_ec_digi) -vtx_b_coll = SimTrackerHitsCollector("vtx_b_coll", - inputSimTrackerHits = vertex_barrel_collections, - outputSimTrackerHits = "VertexBarrelAllHits") -algorithms.append( vtx_b_coll ) - -vtx_b_digi = TrackerDigi("vtx_b_digi", - inputHitCollection = vtx_b_coll.outputSimTrackerHits, - outputHitCollection = "VertexBarrelRawHits", - timeResolution=8) +vtx_b_coll = SimTrackerHitsCollector( + "vtx_b_coll", + inputSimTrackerHits=vertex_barrel_collections, + outputSimTrackerHits="VertexBarrelAllHits", +) +algorithms.append(vtx_b_coll) + +vtx_b_digi = TrackerDigi( + "vtx_b_digi", + inputHitCollection=vtx_b_coll.outputSimTrackerHits, + outputHitCollection="VertexBarrelRawHits", + timeResolution=8, +) 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 ) +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") -algorithms.append( gem_ec_coll ) - -gem_ec_digi = TrackerDigi("gem_ec_digi", - inputHitCollection = gem_ec_coll.outputSimTrackerHits, - outputHitCollection = "GEMTrackerEndcapRawHits", - timeResolution=10) -algorithms.append( gem_ec_digi ) + 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", +) +algorithms.append(gem_ec_coll) + +gem_ec_digi = TrackerDigi( + "gem_ec_digi", + inputHitCollection=gem_ec_coll.outputSimTrackerHits, + outputHitCollection="GEMTrackerEndcapRawHits", + timeResolution=10, +) +algorithms.append(gem_ec_digi) # DRICH -drich_digi = PhotoMultiplierDigi("drich_digi", - inputHitCollection="DRICHHits", - outputHitCollection="DRICHRawHits", - quantumEfficiency=[(a*eV, b) for a, b in qe_data]) +drich_digi = PhotoMultiplierDigi( + "drich_digi", + inputHitCollection="DRICHHits", + outputHitCollection="DRICHRawHits", + quantumEfficiency=[(a * eV, b) for a, b in qe_data], +) algorithms.append(drich_digi) # MRICH -if 'acadia' in detector_version: - mrich_digi = PhotoMultiplierDigi("mrich_digi", - inputHitCollection="MRICHHits", - outputHitCollection="MRICHRawHits", - quantumEfficiency=[(a*eV, b) for a, b in qe_data]) +if "acadia" in detector_version: + mrich_digi = PhotoMultiplierDigi( + "mrich_digi", + inputHitCollection="MRICHHits", + outputHitCollection="MRICHRawHits", + quantumEfficiency=[(a * eV, b) for a, b in qe_data], + ) algorithms.append(mrich_digi) # Output podout = PodioOutput("out", filename=output_rec) -podout.outputCommands = [ +podout.outputCommands = ( + [ "keep *", "drop *Hits", "keep *Layers", @@ -350,18 +425,17 @@ podout.outputCommands = [ "drop *ProtoClusters", "drop outputParticles", "drop InitTrackParams", - ] + [ - "drop " + c for c in sim_coll - ] + [ - "keep *RawHits" - ] + ] + + ["drop " + c for c in sim_coll] + + ["keep *RawHits"] +) algorithms.append(podout) ApplicationMgr( - TopAlg = algorithms, - EvtSel = 'NONE', - EvtMax = n_events, - ExtSvc = services, - OutputLevel = WARNING, - AuditAlgorithms = True - ) + TopAlg=algorithms, + EvtSel="NONE", + EvtMax=n_events, + ExtSvc=services, + OutputLevel=WARNING, + AuditAlgorithms=True, +) -- GitLab