Belle II Software  release-05-01-25
BaseMeasurementCreatorFromCoordinateMeasurement.h
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 #pragma once
11 
12 #include <tracking/trackFitting/measurementCreator/creators/BaseMeasurementCreatorFromHit.h>
13 
14 namespace Belle2 {
25  template <class HitType, Const::EDetector detector>
26  class BaseMeasurementCreatorFromCoordinateMeasurement : public BaseMeasurementCreatorFromHit<HitType, detector> {
27  public:
28 
31  measurementFactory) :
32  BaseMeasurementCreatorFromHit<HitType, detector>(measurementFactory) {}
33 
35  std::vector<genfit::TrackPoint*> createMeasurementPoints(HitType* hit, RecoTrack& recoTrack,
36  const RecoHitInformation& recoHitInformation) const override
37  {
38  genfit::AbsMeasurement* coordinateMeasurement = this->createCoordinateMeasurement(hit,
39  recoHitInformation);
40 
41  const std::vector<genfit::AbsMeasurement*>& measurements =
42  this->createMeasurementFromCoordinateMeasurement(hit, recoTrack, recoHitInformation, coordinateMeasurement);
43 
44  // TODO: Do we want to create one track point for each or one track point for all?
45  // TODO: This is especially important in the question to which the track point should be related!
46  std::vector<genfit::TrackPoint*> trackPoints;
47  trackPoints.reserve(measurements.size());
48  for (genfit::AbsMeasurement* measurement : measurements) {
49  trackPoints.push_back(this->createTrackPointWithRecoHitInformation(measurement, recoTrack, recoHitInformation));
50  }
51 
52  return trackPoints;
53  }
54 
57 
58  protected:
68  virtual std::vector<genfit::AbsMeasurement*> createMeasurementFromCoordinateMeasurement(HitType* hit,
69  const RecoTrack& recoTrack, const RecoHitInformation& recoHitInformation,
70  genfit::AbsMeasurement* coordinateMeasurement) const = 0;
71 
72  };
74 }
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
genfit::MeasurementFactory< genfit::AbsMeasurement >
genfit::AbsMeasurement
Contains the measurement and covariance in raw detector coordinates.
Definition: AbsMeasurement.h:42
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::BaseMeasurementCreatorFromCoordinateMeasurement::createMeasurementPoints
std::vector< genfit::TrackPoint * > createMeasurementPoints(HitType *hit, RecoTrack &recoTrack, const RecoHitInformation &recoHitInformation) const override
Create measurements based on coordinate measurements.
Definition: BaseMeasurementCreatorFromCoordinateMeasurement.h:43
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::BaseMeasurementCreatorFromCoordinateMeasurement::createMeasurementFromCoordinateMeasurement
virtual std::vector< genfit::AbsMeasurement * > createMeasurementFromCoordinateMeasurement(HitType *hit, const RecoTrack &recoTrack, const RecoHitInformation &recoHitInformation, genfit::AbsMeasurement *coordinateMeasurement) const =0
Overload this method if you want to create measurements from coordinate measurements.
Belle2::BaseMeasurementCreatorFromCoordinateMeasurement::~BaseMeasurementCreatorFromCoordinateMeasurement
virtual ~BaseMeasurementCreatorFromCoordinateMeasurement()
Destructor.
Definition: BaseMeasurementCreatorFromCoordinateMeasurement.h:64
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
Belle2::BaseMeasurementCreatorFromCoordinateMeasurement::BaseMeasurementCreatorFromCoordinateMeasurement
BaseMeasurementCreatorFromCoordinateMeasurement(const genfit::MeasurementFactory< genfit::AbsMeasurement > &measurementFactory)
Needs the genfit MeasurementFactory for this.
Definition: BaseMeasurementCreatorFromCoordinateMeasurement.h:38