diff --git a/benchmarks/full/options/full_reconstruction.py b/benchmarks/full/options/full_reconstruction.py index a40f0eddad05d6c7449bd26c62c45eacf3a3c8d4..8908bde4891ee94cd5df42782b5d7384c5a8aaa7 100644 --- a/benchmarks/full/options/full_reconstruction.py +++ b/benchmarks/full/options/full_reconstruction.py @@ -84,6 +84,7 @@ sim_coll = [ "EcalEndcapNHits", "EcalEndcapPHits", "EcalBarrelHits", + "EcalBarrelScFiHits", "HcalBarrelHits", "HcalHadronEndcapHits", "HcalElectronEndcapHits", @@ -99,12 +100,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 +243,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 +409,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 +441,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 +473,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 +495,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 +535,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,