Newer
Older
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
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",
)
algorithms.append(trk_b_reco)
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",
)
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)
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:
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)
# Hit Source linker
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",
)
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.0],
)
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",
# inputTrajectories = trk_find_alg.outputTrajectories,
# outputTrajectoryParameters = "outputTrajectoryParameters")
# algorithms.append(trajs_from_fit)
parts_with_truth_pid = ParticlesWithTruthPID(
"parts_with_truth_pid",
inputMCParticles="MCParticles",
inputTrackParameters=parts_from_fit.outputTrackParameters,
outputParticles="ReconstructedChargedParticles",
outputAssociations="ReconstructedChargedParticlesAssoc",
algorithms.append(parts_with_truth_pid)
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
match_clusters = MatchClusters(
"match_clusters",
inputMCParticles="MCParticles",
inputParticles=parts_with_truth_pid.outputParticles,
inputParticlesAssoc=parts_with_truth_pid.outputAssociations,
inputClusters=[
str(ce_ecal_clmerger.outputClusters),
str(barrel_clus_merger.outputClusters),
str(ci_ecal_clmerger.outputClusters),
str(ce_hcal_clreco.outputClusterCollection),
str(cb_hcal_clreco.outputClusterCollection),
str(ci_hcal_clreco.outputClusterCollection),
],
inputClustersAssoc=[
str(ce_ecal_clmerger.outputAssociations),
str(barrel_clus_merger.outputAssociations),
str(ci_ecal_clmerger.outputAssociations),
str(ce_hcal_clreco.outputAssociations),
str(cb_hcal_clreco.outputAssociations),
str(ci_hcal_clreco.outputAssociations),
],
outputParticles="ReconstructedParticles",
outputParticlesAssoc="ReconstructedParticlesAssoc",
)
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,
)
algorithms.append(fast_ff)
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",
)
algorithms.append(drich_reco)
# FIXME
# 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],
)
mrich_reco = PhotoMultiplierReco(
"mrich_reco",
inputHitCollection=mrich_digi.outputHitCollection,
outputHitCollection="MRICHRecHits",
)
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_da = InclusiveKinematicsDA(
"incl_kin_da",
inputMCParticles="MCParticles",
inputReconstructedParticles=parts_with_truth_pid.outputParticles,
inputParticleAssociations=parts_with_truth_pid.outputAssociations,
outputInclusiveKinematics="InclusiveKinematicsDA",
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",
)
algorithms.append(incl_kin_esigma)
# Output
podout = PodioOutput("out", filename=output_rec)
"keep *Clusters",
"drop *ProtoClusters",
"drop outputParticles",
"drop InitTrackParams",
]
+ ["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,
)