Belle II Software  release-05-01-25
BaseMeasurementCreatorFromHit.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Nils Braun *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #include <tracking/trackFitting/measurementCreator/creators/BaseMeasurementCreatorFromHit.h>
11 #include <tracking/dataobjects/RecoTrack.h>
12 #include <genfit/TrackPoint.h>
13 #include <genfit/WireTrackCandHit.h>
14 
15 using namespace Belle2;
16 
17 template <class HitType, Const::EDetector detector>
20  BaseMeasurementCreator(), m_measurementFactory(measurementFactory) {}
21 
22 template <class HitType, Const::EDetector detector>
24  const RecoHitInformation& /*recoHitInformation*/) const
25 {
26  // No one is using the trackCandHit (neither in SVDRecoHit nor in PXDRecoHit). So we do not provide any here!
27  genfit::AbsMeasurement* coordinateMeasurement = m_measurementFactory.createOne(detector, hit->getArrayIndex(),
28  nullptr);
29 
30  return coordinateMeasurement;
31 }
32 
33 template <class HitType, Const::EDetector detector>
35  genfit::AbsMeasurement* coordinateMeasurement,
36  RecoTrack& recoTrack, const RecoHitInformation& recoHitInformation) const
37 {
38  genfit::TrackPoint* coordinateTrackPoint = new genfit::TrackPoint(coordinateMeasurement,
40  coordinateTrackPoint->setSortingParameter(recoHitInformation.getSortingParameter());
41 
42  return coordinateTrackPoint;
43 }
44 
50 
51 template<>
53  const RecoHitInformation& recoHitInformation) const
54 {
55 
56  // From the genfit code: < 0 means left, > 0 means right, = 0 is undefined
57  signed char rightLeftGenfitInformation = 0;
58  RecoHitInformation::RightLeftInformation rightLeftHitInformation = recoHitInformation.getRightLeftInformation();
59  if (rightLeftHitInformation == RecoHitInformation::RightLeftInformation::c_left) {
60  rightLeftGenfitInformation = -1;
61  } else if (rightLeftHitInformation == RecoHitInformation::RightLeftInformation::c_right) {
62  rightLeftGenfitInformation = 1;
63  }
64 
65  // No one is using the WireTrackCandHit after this stage, as the CDCRecoHit does not store it (it is just needed or getting the rl info).
66  auto trackCandHit = std::unique_ptr<genfit::WireTrackCandHit>(new genfit::WireTrackCandHit(Const::CDC, cdcHit->getArrayIndex(), -1,
67  recoHitInformation.getSortingParameter(),
68  rightLeftGenfitInformation));
69 
70  genfit::AbsMeasurement* coordinateMeasurement = m_measurementFactory.createOne(trackCandHit->getDetId(), trackCandHit->getHitId(),
71  trackCandHit.get());
72 
73 
74 
75  return coordinateMeasurement;
76 }
genfit::TrackPoint
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition: TrackPoint.h:46
Belle2::RecoTrackGenfitAccess::getGenfitTrack
static genfit::Track & getGenfitTrack(RecoTrack &recoTrack)
Give access to the RecoTrack's genfit::Track.
Definition: RecoTrack.cc:389
Belle2::CDCHit
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
Definition: CDCHit.h:51
genfit::MeasurementFactory::createOne
measurement_T * createOne(int detID, int index, const TrackCandHit *hit) const
Create a Measurement.
Definition: MeasurementFactory.h:122
Belle2::BaseMeasurementCreatorFromHit::createTrackPointWithRecoHitInformation
genfit::TrackPoint * createTrackPointWithRecoHitInformation(genfit::AbsMeasurement *coordinateMeasurement, RecoTrack &recoTrack, const RecoHitInformation &recoHitInformation) const
Helper: Create a TrackPoint from a measurement with a given RecoHitInformation.
Definition: BaseMeasurementCreatorFromHit.cc:34
Belle2::RecoHitInformation::getRightLeftInformation
RightLeftInformation getRightLeftInformation() const
Get the right-left-information.
Definition: RecoHitInformation.h:236
Belle2::BaseMeasurementCreator
Base class for all measurement creators.
Definition: BaseMeasurementCreator.h:33
genfit::MeasurementFactory< genfit::AbsMeasurement >
genfit::AbsMeasurement
Contains the measurement and covariance in raw detector coordinates.
Definition: AbsMeasurement.h:42
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::BaseMeasurementCreatorFromHit
Base Class to create measurements based on a given hit related to the RecoTrack.
Definition: BaseMeasurementCreatorFromHit.h:42
Belle2::BaseMeasurementCreatorFromHit::createCoordinateMeasurement
genfit::AbsMeasurement * createCoordinateMeasurement(HitType *hit, const RecoHitInformation &recoHitInformation) const
You probably need a coordinate measurement on which you can base your measurements in createMeasureme...
Definition: BaseMeasurementCreatorFromHit.cc:23
Belle2::RecoHitInformation
This class stores additional information to every CDC/SVD/PXD hit stored in a RecoTrack.
Definition: RecoHitInformation.h:48
Belle2::RelationsInterface::getArrayIndex
int getArrayIndex() const
Returns this object's array index (in StoreArray), or -1 if not found.
Definition: RelationsObject.h:387
Belle2::RecoHitInformation::getSortingParameter
unsigned int getSortingParameter() const
Get the sorting parameter.
Definition: RecoHitInformation.h:224
Belle2::BaseMeasurementCreatorFromHit::m_measurementFactory
const genfit::MeasurementFactory< genfit::AbsMeasurement > & m_measurementFactory
A reference to the prefilled measurement factory.
Definition: BaseMeasurementCreatorFromHit.h:74
Belle2::RecoHitInformation::RightLeftInformation
RightLeftInformation
The RightLeft information of the hit which is only valid for CDC hits.
Definition: RecoHitInformation.h:72
Belle2::BaseMeasurementCreatorFromHit::BaseMeasurementCreatorFromHit
BaseMeasurementCreatorFromHit(const genfit::MeasurementFactory< genfit::AbsMeasurement > &measurementFactory)
Creates a MeasurementCreator which handles the creation of measurements of a given kind.
Definition: BaseMeasurementCreatorFromHit.cc:18
genfit::WireTrackCandHit
Hit object for use in TrackCand.
Definition: WireTrackCandHit.h:34