Belle II Software development
RaveV0VertexFitter.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#include <tracking/v0Finding/fitter/RaveV0VertexFitter.h>
9
10#include <framework/logging/Logger.h>
11#include <framework/utilities/IOIntercept.h>
12#include <tracking/v0Finding/dataobjects/VertexVector.h>
13
14#include <genfit/Track.h>
15#include <genfit/GFRaveVertexFactory.h>
16#include <genfit/GFRaveVertex.h>
17
18#include <vector>
19
20using namespace Belle2;
21
22bool RaveV0VertexFitter::fit(genfit::Track& trackPlus, genfit::Track& trackMinus, const int, const int,
23 genfit::GFRaveVertex& vertex)
24{
25 VertexVector vertexVector;
26 std::vector<genfit::Track*> trackPair {&trackPlus, &trackMinus};
27
28 try {
30 logCapture("V0Fitter GFRaveVertexFactory", LogConfig::c_Debug, LogConfig::c_Debug);
31 logCapture.start();
32
33 genfit::GFRaveVertexFactory vertexFactory;
34 vertexFactory.findVertices(&vertexVector.v, trackPair);
35 } catch (...) {
36 B2ERROR("Exception during vertex fit.");
37 return false;
38 }
39
40 if (vertexVector.size() != 1) {
41 B2DEBUG(21, "Vertex fit failed. Size of vertexVector not 1, but: " << vertexVector.size());
42 return false;
43 }
44
45 if ((*vertexVector[0]).getNTracks() != 2) {
46 B2DEBUG(20, "Wrong number of tracks in vertex.");
47 return false;
48 }
49
50 vertex = *vertexVector[0];
51 return true;
52}
bool start()
Start intercepting the output.
Capture stdout and stderr and convert into log messages.
@ c_Debug
Debug: for code development.
Definition LogConfig.h:26
bool fit(genfit::Track &trackPlus, genfit::Track &trackMinus, const int pdgTrackPlus, const int pdgTrackMinus, genfit::GFRaveVertex &vertex) override
Fit the V0 vertex. The PDG codes of the daughters are not used by Rave.
Need this container for exception-safe cleanup, GFRave's interface isn't exception-safe as is.
std::vector< genfit::GFRaveVertex * > v
Fitted vertices.
size_t size() const noexcept
Return size of vertex vector.
Abstract base class for different kinds of events.