Belle II Software  release-05-01-25
V0Fitter.h
1 #pragma once
2 
3 #include <framework/datastore/StoreArray.h>
4 #include <framework/gearbox/Const.h>
5 #include <mdst/dataobjects/TrackFitResult.h>
6 #include <mdst/dataobjects/V0.h>
7 #include <tracking/dataobjects/V0ValidationVertex.h>
8 #include <tracking/dataobjects/RecoTrack.h>
9 #include <genfit/Track.h>
10 
11 #include <TVector3.h>
12 
13 #include <utility>
14 
15 namespace genfit {
16  class MeasuredStateOnPlane;
17  class GFRaveVertex;
18  class Track;
19 }
20 
21 namespace Belle2 {
32  class V0Fitter {
33  friend class V0FitterTest_GetTrackHypotheses_Test;
34  friend class V0FitterTest_EnableValidation_Test;
35  friend class V0FitterTest_InitializeCuts_Test;
36 
37  public:
39  V0Fitter(const std::string& trackFitResultsName = "", const std::string& v0sName = "",
40  const std::string& v0ValidationVerticesName = "",
41  const std::string& recoTracksName = "",
42  const std::string& copiedRecoTracksName = "CopiedRecoTracks",
43  bool enableValidation = false);
44 
46  void initializeCuts(double beamPipeRadius,
47  double vertexChi2CutOutside);
48 
54  void setFitterMode(int fitterMode);
55 
57  bool fitAndStore(const Track* trackPlus, const Track* trackMinus, const Const::ParticleType& v0Hypothesis);
58 
60  std::pair<Const::ParticleType, Const::ParticleType> getTrackHypotheses(const Const::ParticleType& v0Hypothesis) const;
61 
62  private:
63 
78  bool vertexFitWithRecoTracks(const Track* trackPlus, const Track* trackMinus,
79  RecoTrack* recoTrackPlus, RecoTrack* recoTrackMinus,
80  const Const::ParticleType& v0Hypothesis,
81  unsigned int& hasInnerHitStatus, TVector3& vertexPos,
82  const bool forceStore);
83 
89  RecoTrack* copyRecoTrack(RecoTrack* origRecoTrack, const int trackPDG);
90 
102  bool removeInnerHits(RecoTrack* origRecoTrack, RecoTrack* recoTrack,
103  const int trackPDG, unsigned int& nRemoveHits);
104 
105 
120 
128  bool fitGFRaveVertex(genfit::Track& trackPlus, genfit::Track& trackMinus, genfit::GFRaveVertex& vertex);
129 
132  const TVector3& vertexPosition);
133 
137  const TVector3& vertexPosition, unsigned int& hasInnerHitStatus);
138 
140  double getBzAtVertex(const TVector3& vertexPosition);
141 
143  TrackFitResult* buildTrackFitResult(const genfit::Track& track, const RecoTrack* recoTrack,
144  const genfit::MeasuredStateOnPlane& msop, const double Bz,
145  const Const::ParticleType& trackHypothesis);
146 
147 
148  private:
150  std::string m_recoTracksName;
156 
159  int m_v0FitterMode;
162  };
163 
165 }
166 
Belle2::V0Fitter::fitAndStore
bool fitAndStore(const Track *trackPlus, const Track *trackMinus, const Const::ParticleType &v0Hypothesis)
Fit V0 with given hypothesis and store if fit was successful.
Definition: V0Fitter.cc:209
Belle2::V0Fitter::vertexFitWithRecoTracks
bool vertexFitWithRecoTracks(const Track *trackPlus, const Track *trackMinus, RecoTrack *recoTrackPlus, RecoTrack *recoTrackMinus, const Const::ParticleType &v0Hypothesis, unsigned int &hasInnerHitStatus, TVector3 &vertexPos, const bool forceStore)
fit V0 vertex using RecoTrack's as inputs.
Definition: V0Fitter.cc:310
Belle2::V0Fitter::m_v0s
StoreArray< V0 > m_v0s
V0 (output).
Definition: V0Fitter.h:153
Belle2::V0Fitter::m_forcestore
bool m_forcestore
0: store V0 at the first vertex fit, regardless of inner hits, 1: remove hits inside the V0 vertex po...
Definition: V0Fitter.h:160
Belle2::V0Fitter::getBzAtVertex
double getBzAtVertex(const TVector3 &vertexPosition)
Getter for magnetic field in z direction at the vertex position.
Definition: V0Fitter.cc:167
Belle2::V0Fitter::m_trackFitResults
StoreArray< TrackFitResult > m_trackFitResults
TrackFitResult (output).
Definition: V0Fitter.h:152
genfit::GFRaveVertex
GFRaveVertex class.
Definition: GFRaveVertex.h:48
genfit::MeasuredStateOnPlane
#StateOnPlane with additional covariance matrix.
Definition: MeasuredStateOnPlane.h:39
Belle2::V0Fitter::m_recoTracksName
std::string m_recoTracksName
RecoTrackColName (input).
Definition: V0Fitter.h:150
Belle2::V0Fitter::m_copiedRecoTracks
StoreArray< RecoTrack > m_copiedRecoTracks
RecoTrack used to refit tracks (output)
Definition: V0Fitter.h:155
genfit
Defines for I/O streams used for error and debug printing.
Definition: AlignablePXDRecoHit.h:19
genfit::Track
Collection of TrackPoint objects, AbsTrackRep objects and FitStatus objects.
Definition: Track.h:71
Belle2::V0Fitter::extrapolateToVertex
bool extrapolateToVertex(genfit::MeasuredStateOnPlane &stPlus, genfit::MeasuredStateOnPlane &stMinus, const TVector3 &vertexPosition)
Extrapolate the fit results to the perigee to the vertex.
Belle2::V0Fitter::m_beamPipeRadius
double m_beamPipeRadius
Radius where inside/outside beampipe is defined.
Definition: V0Fitter.h:157
Belle2::V0Fitter::m_useOnlyOneSVDHitPair
bool m_useOnlyOneSVDHitPair
true only if the V0Fitter mode is 1
Definition: V0Fitter.h:161
Belle2::V0Fitter::copyRecoTrack
RecoTrack * copyRecoTrack(RecoTrack *origRecoTrack, const int trackPDG)
Create a copy of RecoTrack.
Definition: V0Fitter.cc:436
Belle2::TrackFitResult
Values of the result of a track fit with a given particle hypothesis.
Definition: TrackFitResult.h:59
Belle2::V0Fitter::rejectCandidate
bool rejectCandidate(genfit::MeasuredStateOnPlane &stPlus, genfit::MeasuredStateOnPlane &stMinus)
Starting point: point closest to axis where either track is defined This is intended to reject tracks...
Definition: V0Fitter.cc:93
Belle2::V0Fitter::V0Fitter
V0Fitter(const std::string &trackFitResultsName="", const std::string &v0sName="", const std::string &v0ValidationVerticesName="", const std::string &recoTracksName="", const std::string &copiedRecoTracksName="CopiedRecoTracks", bool enableValidation=false)
Constructor for the V0Fitter.
Definition: V0Fitter.cc:34
Belle2::V0Fitter::buildTrackFitResult
TrackFitResult * buildTrackFitResult(const genfit::Track &track, const RecoTrack *recoTrack, const genfit::MeasuredStateOnPlane &msop, const double Bz, const Const::ParticleType &trackHypothesis)
Build TrackFitResult of V0 Track and set relation to genfit Track.
Definition: V0Fitter.cc:177
Belle2::RecoTrack
This is the Reconstruction Event-Data Model Track.
Definition: RecoTrack.h:78
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::V0Fitter::getTrackHypotheses
std::pair< Const::ParticleType, Const::ParticleType > getTrackHypotheses(const Const::ParticleType &v0Hypothesis) const
Get track hypotheses for a given v0 hypothesis.
Definition: V0Fitter.cc:193
Belle2::V0Fitter::setFitterMode
void setFitterMode(int fitterMode)
set V0 fitter mode.
Definition: V0Fitter.cc:68
Belle2::V0Fitter::initializeCuts
void initializeCuts(double beamPipeRadius, double vertexChi2CutOutside)
Initialize the cuts which will be applied during the fit and store process.
Definition: V0Fitter.cc:85
Belle2::V0Fitter::m_vertexChi2CutOutside
double m_vertexChi2CutOutside
Chi2 cut outside beampipe.
Definition: V0Fitter.h:158
Belle2::V0Fitter::m_recoTracks
StoreArray< RecoTrack > m_recoTracks
RecoTrack (input)
Definition: V0Fitter.h:151
Belle2::Const::ParticleType
The ParticleType class for identifying different particle types.
Definition: Const.h:284
Belle2::V0Fitter
V0Fitter class to create V0 mdst's from reconstructed tracks.
Definition: V0Fitter.h:32
Belle2::Track
Class that bundles various TrackFitResults.
Definition: Track.h:35
Belle2::StoreArray
Accessor to arrays stored in the data store.
Definition: ECLMatchingPerformanceExpertModule.h:33
Belle2::V0Fitter::fitGFRaveVertex
bool fitGFRaveVertex(genfit::Track &trackPlus, genfit::Track &trackMinus, genfit::GFRaveVertex &vertex)
Fit the V0 vertex.
Definition: V0Fitter.cc:111
Belle2::V0Fitter::m_validation
bool m_validation
Validation flag.
Definition: V0Fitter.h:149
Belle2::V0Fitter::m_validationV0s
StoreArray< V0ValidationVertex > m_validationV0s
V0ValidationVertex (output, optional).
Definition: V0Fitter.h:154
Belle2::V0Fitter::removeInnerHits
bool removeInnerHits(RecoTrack *origRecoTrack, RecoTrack *recoTrack, const int trackPDG, unsigned int &nRemoveHits)
Remove inner hits from RecoTrack.
Definition: V0Fitter.cc:460