Vertex reconstruction algorithm

Hi,

I have been trying to reconstruct displaced vertices with the VertexFitterSimple agorithm, but it seems like the signal is too collimated and the reconstruction of the vertices does not work. The signal samples are self generated and I am performing this analysis on the pre-edm4hep1 branch. The way I implement the algorithm is as follows:

# MC event primary vertex
            .Define("MC_PrimaryVertex",      "FCCAnalyses::MCParticle::get_EventPrimaryVertex(21)(Particle)" ) #21 is the PDG ID of the collision point, at coo (0,0,0)
            .Define("n_tracks",              "ReconstructedParticle2Track::getTK_n(EFlowTracks)")    #number of tracks

            #First, reconstruct a vertex from all tracks 
            #Input parameters are 1 = primary vertex, EFlowTracks contains all tracks, bool beamspotconstraint = true, bsc sigma x/y/z
            .Define("VertexObject_allTracks", "VertexFitterSimple::VertexFitter_Tk(1, EFlowTracks, true, 4.5, 20e-3, 300)")
            .Define("RecoedPrimaryTracks",    "VertexFitterSimple::get_PrimaryTracks(EFlowTracks, true, 4.5, 20e-3, 300, 0., 0., 0.)")         
            .Define("n_RecoedPrimaryTracks",  "ReconstructedParticle2Track::getTK_n(RecoedPrimaryTracks)")      #Number of reconstructed primary tracks
            .Define("PrimaryVertexObject",    "VertexFitterSimple::VertexFitter_Tk(1, RecoedPrimaryTracks, true, 4.5, 20e-3, 300) ")  #The final primary vertex
            .Define("PrimaryVertex",          "VertexingUtils::get_VertexData(PrimaryVertexObject)")

            .Define("DV1_VertexObject",         "VertexFitterSimple::VertexFitter(0, MuonPair1, EFlowTracks)")
            .Define("DV2_VertexObject",         "VertexFitterSimple::VertexFitter(0, MuonPair1, EFlowTracks)")
            
            .Define("DV1_VertexData",           "VertexingUtils::get_VertexData(DV1_VertexObject)")
            .Define("DV2_VertexData",           "VertexingUtils::get_VertexData(DV2_VertexObject)")

            .Define("DV1_chi2",                 "DV1_VertexData.chi2")
            .Define("DV2_chi2",                 "DV2_VertexData.chi2")
            
            .Define("DV1_Lxyz",                 "sqrt(pow(DV1_VertexData.position[0],2) + pow(DV1_VertexData.position[1],2) + pow(DV1_VertexData.position[2],2))")
            .Define("DV2_Lxyz",                 "sqrt(pow(DV2_VertexData.position[0],2) + pow(DV2_VertexData.position[1],2) + pow(DV2_VertexData.position[2],2))")
            
            .Define("DV1_invM",                 "VertexingUtils::get_invM_pairs(DV1_VertexObject, 0.105658, 0.105658)")
            .Define("DV2_invM",                 "VertexingUtils::get_invM_pairs(DV2_VertexObject, 0.105658, 0.105658)")
          
            .Define("n_DVs",                    "VertexingUtils::get_VertexNtrk(DV1_VertexObject)")
        

            #Reco Muons vertexing            
            .Define("RecoMuons_tracks_all",         "ReconstructedParticle2Track::getRP2TRK(RecoMuons, EFlowTracks)")
            .Define("RecoMuons_tracks_pt",          "VertexingUtils::sel_pt_tracks(1)(RecoMuons_tracks_all)")
            .Define("RecoMuons_tracks",             "VertexingUtils::sel_d0_tracks(2)(RecoMuons_tracks_pt)")
            .Define("RecoMuons_VertexObject",       "VertexFitterSimple::VertexFitter(0, RecoMuons, EFlowTracks)")          
            .Define("RecoMuons_VertexData",         "VertexingUtils::get_VertexData(RecoMuons_VertexObject)")
            .Define("RecoMuons_chi2",               "RecoMuons_VertexData.chi2")
            .Define("RecoMuons_Lxyz",               "sqrt(RecoMuons_VertexData.position[0]*RecoMuons_VertexData.position[0] + RecoMuons_VertexData.position[1]*RecoMuons_VertexData.position[1] + RecoMuons_VertexData.position[2]*RecoMuons_VertexData.position[2])")
            
            .Define("n_GlobalDVs",                  "int(RecoMuons_chi2 >= 0)")

I either get stuck in an infinite loop, or if I impose a minimum value of dR between the two muons, all the events get killed.
Is there any other algorithm that is better suited for this analyisis? Or am I doing something wrong with the way I use the VertexFitterSimple algorithm?

Many thanks!

Hi @sbenabde,

could you provide one of your signal files?

Best,
Juraj

Hi @jsmiesko !

I have added the root files to this path /eos/experiment/fcc/ee/analyses_storage/BSM/LLPs/DarkPhotons

Kind regards,
Sarah