From f7bd1f902e45e48c73ff914fe73fb516c057dadd Mon Sep 17 00:00:00 2001 From: Wouter Deconinck <wouter.deconinck@umanitoba.ca> Date: Wed, 21 Jul 2021 23:38:39 +0000 Subject: [PATCH] Full reconstruction: ScFi reconstruction --- .../full/options/full_reconstruction.py | 92 ++++++++++++++----- 1 file changed, 69 insertions(+), 23 deletions(-) diff --git a/benchmarks/full/options/full_reconstruction.py b/benchmarks/full/options/full_reconstruction.py index a40f0edd..26f07b04 100644 --- a/benchmarks/full/options/full_reconstruction.py +++ b/benchmarks/full/options/full_reconstruction.py @@ -25,6 +25,7 @@ cb_ecal_sf = float(os.environ.get("CB_ECAL_SAMP_FRAC", 0.01324)) cb_hcal_sf = float(os.environ.get("CB_HCAL_SAMP_FRAC", 0.038)) 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)) +scifi_barrel_sf = float(os.environ.get("CB_EMCAL_SCFI_SAMP_FRAC",0.0938)) # input and output input_sims = [f.strip() for f in str.split(os.environ["JUGGLER_SIM_FILE"], ",") if f.strip()] @@ -84,6 +85,7 @@ sim_coll = [ "EcalEndcapNHits", "EcalEndcapPHits", "EcalBarrelHits", + "EcalBarrelScFiHits", "HcalBarrelHits", "HcalHadronEndcapHits", "HcalElectronEndcapHits", @@ -99,12 +101,12 @@ podin = PodioInput("PodioReader", collections=sim_coll) podout = PodioOutput("out", filename=output_rec) ## copiers to get around input --> output copy bug. Note the "2" appended to the output collection. -copier = MCCopier("MCCopier", - inputCollection="mcparticles", - outputCollection="mcparticles2") -trkcopier = TrkCopier("TrkCopier", - inputCollection="TrackerBarrelHits", - outputCollection="TrackerBarrelHits2") +copier = MCCopier("MCCopier", + inputCollection="mcparticles", + outputCollection="mcparticles2") +trkcopier = TrkCopier("TrkCopier", + inputCollection="TrackerBarrelHits", + outputCollection="TrackerBarrelHits2") pmtcopier = PMTCopier("PMTCopier", inputCollection="ForwardRICHHits", outputCollection="ForwardRICHHits2") @@ -242,6 +244,49 @@ cb_ecal_clreco = ImagingClusterReco("cb_ecal_clreco", outputClusterCollection="EcalBarrelClusters", outputLayerCollection="EcalBarrelLayers") +# Central ECAL SciFi +scfi_barrel_daq = dict( + dynamicRangeADC=50.*MeV, + capacityADC=32768, + pedestalMean=400, + pedestalSigma=10) + +scfi_barrel_digi = CalHitDigi("scfi_barrel_digi", + inputHitCollection="EcalBarrelScFiHits", + outputHitCollection="EcalBarrelScFiHitsDigi", + **scfi_barrel_daq) + +scfi_barrel_reco = CalHitReco("scfi_barrel_reco", + inputHitCollection="EcalBarrelScFiHitsDigi", + outputHitCollection="EcalBarrelScFiHitsReco", + thresholdFactor=5.0, + readoutClass="EcalBarrelScFiHits", + layerField="layer", + sectorField="module", + localDetFields=["system", "module"], # use local coordinates in each module (stave) + **scfi_barrel_daq) + +# merge hits in different layer (projection to local x-y plane) +scfi_barrel_merger = CalHitsMerger("scfi_barrel_merger", + inputHitCollection="EcalBarrelScFiHitsReco", + outputHitCollection="EcalBarrelScFiGridReco", + fields=["fiber"], + fieldRefNumbers=[1], + readoutClass="EcalBarrelScFiHits") + +scfi_barrel_cl = IslandCluster("scfi_barrel_cl", + inputHitCollection="EcalBarrelScFiGridReco", + outputHitCollection="EcalBarrelScFiClusterHits", + splitCluster=False, + minClusterCenterEdep=10.*MeV, + localDistXZ=[30*mm, 30*mm]) + +scfi_barrel_clreco = RecoCoG("scfi_barrel_clreco", + inputHitCollection="EcalBarrelScFiClusterHits", + outputClusterCollection="EcalBarrelScFiClusters", + logWeightBase=6.2, + samplingFraction= scifi_barrel_sf) + # Central Barrel Hcal cb_hcal_daq = dict( dynamicRangeADC=50.*units.MeV, @@ -365,17 +410,17 @@ trk_b_digi = TrackerDigi("trk_b_digi", inputHitCollection="TrackerBarrelHits", outputHitCollection="TrackerBarrelRawHits", timeResolution=8) -trk_ec_digi = TrackerDigi("trk_ec_digi", +trk_ec_digi = TrackerDigi("trk_ec_digi", inputHitCollection="TrackerEndcapHits", outputHitCollection="TrackerEndcapRawHits", timeResolution=8) -vtx_b_digi = TrackerDigi("vtx_b_digi", +vtx_b_digi = TrackerDigi("vtx_b_digi", inputHitCollection="VertexBarrelHits", outputHitCollection="VertexBarrelRawHits", timeResolution=8) -vtx_ec_digi = TrackerDigi("vtx_ec_digi", +vtx_ec_digi = TrackerDigi("vtx_ec_digi", inputHitCollection="VertexEndcapHits", outputHitCollection="VertexEndcapRawHits", timeResolution=8) @@ -397,11 +442,11 @@ vtx_ec_reco = TrackerHitReconstruction("vtx_ec_reco", inputHitCollection = vtx_ec_digi.outputHitCollection, outputHitCollection="VertexEndcapRecHits") -# Hit Source linker -sourcelinker = TrackerSourceLinker("sourcelinker", - inputHitCollection=trk_b_reco.outputHitCollection, - outputSourceLinks="BarrelTrackSourceLinks", - outputMeasurements="BarrelTrackMeasurements") +# Hit Source linker +sourcelinker = TrackerSourcesLinker("trk_srcslnkr", + inputHitCollections = ["VertexBarrelRecHits", "TrackerBarrelRecHits"], + outputSourceLinks = "TrackerSourceLinks", + outputMeasurements = "TrackerMeasurements") #trk_hits_srclnkr = TrackerSourcesLinker("trk_srcslnkr", # ITrackerBarrelHits = vtx_b_reco.outputHitCollection, @@ -429,18 +474,18 @@ truth_trk_init = TrackParamTruthInit("truth_trk_init", trk_find_alg = TrackFindingAlgorithm("trk_find_alg", inputSourceLinks = sourcelinker.outputSourceLinks, inputMeasurements = sourcelinker.outputMeasurements, - inputInitialTrackParameters= "InitTrackParamsFromTruth", - outputTrajectories="trajectories") + inputInitialTrackParameters = "InitTrackParamsFromTruth", + outputTrajectories = "trajectories") parts_from_fit = ParticlesFromTrackFit("parts_from_fit", - inputTrajectories="trajectories", - outputParticles="ReconstructedParticlesInitFromTruth", - outputTrackParameters="outputTrackParameters") + inputTrajectories = "trajectories", + outputParticles = "ReconstructedParticlesInitFromTruth", + outputTrackParameters = "outputTrackParameters") #trk_find_alg1 = TrackFindingAlgorithm("trk_find_alg1", # inputSourceLinks = sourcelinker.outputSourceLinks, # inputMeasurements = sourcelinker.outputMeasurements, -# inputInitialTrackParameters= "InitTrackParamsFromClusters", +# inputInitialTrackParameters= "InitTrackParamsFromClusters", # outputTrajectories="trajectories1") #parts_from_fit1 = ParticlesFromTrackFit("parts_from_fit1", @@ -451,7 +496,7 @@ parts_from_fit = ParticlesFromTrackFit("parts_from_fit", #trk_find_alg2 = TrackFindingAlgorithm("trk_find_alg2", # inputSourceLinks = trk_hits_srclnkr.outputSourceLinks, # inputMeasurements = trk_hits_srclnkr.outputMeasurements, -# inputInitialTrackParameters= "InitTrackParamsFromVtxClusters", +# inputInitialTrackParameters= "InitTrackParamsFromVtxClusters", # outputTrajectories="trajectories2") #parts_from_fit2 = ParticlesFromTrackFit("parts_from_fit2", # inputTrajectories="trajectories2", @@ -491,15 +536,16 @@ ApplicationMgr( ce_ecal_digi, ce_ecal_reco, ce_ecal_cl, ce_ecal_clreco, ci_ecal_digi, ci_ecal_reco, ci_ecal_merger, ci_ecal_cl, ci_ecal_clreco, cb_ecal_digi, cb_ecal_reco, cb_ecal_cl, cb_ecal_clreco, + scfi_barrel_digi, scfi_barrel_reco, scfi_barrel_merger, scfi_barrel_cl, scfi_barrel_clreco, cb_hcal_digi, cb_hcal_reco, cb_hcal_merger, cb_hcal_cl, cb_hcal_clreco, ce_hcal_digi, ce_hcal_reco, ce_hcal_merger, ce_hcal_cl, ce_hcal_clreco, ci_hcal_digi, ci_hcal_reco, ci_hcal_merger, ci_hcal_cl, ci_hcal_clreco, trk_b_digi, trk_ec_digi, vtx_b_digi, vtx_ec_digi, - trk_b_reco, trk_ec_reco, vtx_b_reco, vtx_ec_reco, + trk_b_reco, trk_ec_reco, vtx_b_reco, vtx_ec_reco, sourcelinker, #trk_hits_srclnkr, #clust_trk_init, truth_trk_init, - #vtxcluster_trk_init, + #vtxcluster_trk_init, trk_find_alg, parts_from_fit, #trk_find_alg1, parts_from_fit1, #trk_find_alg2, parts_from_fit2, -- GitLab