diff --git a/reco/global/CbmFindPrimaryVertex.cxx b/reco/global/CbmFindPrimaryVertex.cxx index e882246617303ade212926c7bc480d7c5cf83b15..caf43ebea23528c3fe19a1149f6a05cc024bde2d 100644 --- a/reco/global/CbmFindPrimaryVertex.cxx +++ b/reco/global/CbmFindPrimaryVertex.cxx @@ -107,10 +107,14 @@ InitStatus CbmFindPrimaryVertex::Init() } // Create and register CbmVertex object - if (!fEvents) { - fPrimVert = new CbmVertex("Primary Vertex", "Global"); - ioman->Register("PrimaryVertex.", "Global", fPrimVert, IsOutputBranchPersistent("PrimaryVertex")); - } + // if (!fEvents) { + // TODO: This is here for legacy, since many analysis tasks use the vertex branch instead + // of retrieving the vertex from the event object. It shall be removed after the all analysis tasks + // are adjusted. Neither in event-based nor in time-based reconstruction a branch with a single + // vertex object makes sense. + fPrimVert = new CbmVertex("Primary Vertex", "Global"); + ioman->Register("PrimaryVertex.", "Global", fPrimVert, IsOutputBranchPersistent("PrimaryVertex")); + // } // Call the Init method of the vertex finder fFinder->Init(); @@ -142,6 +146,7 @@ void CbmFindPrimaryVertex::Exec(Option_t*) // Event-based mode else { + fPrimVert->Reset(); // TODO: Legacy nEvents = fEvents->GetEntriesFast(); for (Int_t iEvent = 0; iEvent < nEvents; iEvent++) { CbmEvent* event = dynamic_cast<CbmEvent*>(fEvents->At(iEvent)); @@ -149,6 +154,9 @@ void CbmFindPrimaryVertex::Exec(Option_t*) result = fFinder->FindEventVertex(event, fTracks); LOG(debug) << GetName() << ": Event " << iEvent << " " << event->GetVertex()->ToString(); nTracksUsed += result; + + // Legacy: copy event vertex object to event branch + if (iEvent == 0) *fPrimVert = *(event->GetVertex()); } }