Skip to content
Snippets Groups Projects
reconstruction.py 38.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • algorithms.append(mpgd_b_reco)
    
    Sylvester Joosten's avatar
    Sylvester Joosten committed
    input_tracking_hits = [
        str(trk_b_reco.outputHitCollection),
        str(trk_ec_reco.outputHitCollection),
        str(vtx_b_reco.outputHitCollection),
    
        str(mpgd_b_reco.outputHitCollection),
    
    trk_hit_col = TrackingHitsCollector(
    
        "trk_hit_col",
        inputTrackingHits=input_tracking_hits,
        trackingHits="trackingHits",
    
    )
    algorithms.append(trk_hit_col)
    
    sourcelinker = TrackerSourceLinker(
        "trk_srcslnkr",
        inputHitCollection=trk_hit_col.trackingHits,
        outputSourceLinks="TrackSourceLinks",
        outputMeasurements="TrackMeasurements",
    )
    
    algorithms.append(sourcelinker)
    
    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],
    )
    
    algorithms.append(trk_find_alg)
    
    parts_from_fit = ParticlesFromTrackFit(
        "parts_from_fit",
        inputTrajectories=trk_find_alg.outputTrajectories,
        outputParticles="outputParticles",
        outputTrackParameters="outputTrackParameters",
    )
    
    # trajs_from_fit = TrajectoryFromTrackFit("trajs_from_fit",
    #         inputTrajectories = trk_find_alg.outputTrajectories,
    #         outputTrajectoryParameters = "outputTrajectoryParameters")
    # algorithms.append(trajs_from_fit)
    
    # Event building
    
    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)
    
    
    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],
        )
    
    Sylvester Joosten's avatar
    Sylvester Joosten committed
        algorithms.append(mrich_digi)
    
        mrich_reco = PhotoMultiplierReco(
            "mrich_reco",
            inputHitCollection=mrich_digi.outputHitCollection,
            outputHitCollection="MRICHRecHits",
        )
    
    Sylvester Joosten's avatar
    Sylvester Joosten committed
        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",
    
    )
    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",
    
    )
    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",
    
    )
    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",
    
    )
    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)
    
    podout.outputCommands = (
        [
    
            "drop *Hits",
    
            "keep *Clusters",
            "drop *ProtoClusters",
            "drop outputParticles",
    
        ]
        + ["drop " + c for c in sim_coll]
        + ["keep MCParticles"]
    )
    
    algorithms.append(podout)
    
        TopAlg=algorithms,
        EvtSel="NONE",
        EvtMax=n_events,
        ExtSvc=services,
        OutputLevel=WARNING,
        AuditAlgorithms=True,
    
        HistogramPersistency="ROOT",