Belle II Software  release-05-01-25
MeasurementAdder.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/adder/MeasurementAdder.h>
13 
14 #include <tracking/trackFitting/measurementCreator/factories/CDCMeasurementCreatorFactory.h>
15 #include <tracking/trackFitting/measurementCreator/factories/SVDMeasurementCreatorFactory.h>
16 #include <tracking/trackFitting/measurementCreator/factories/PXDMeasurementCreatorFactory.h>
17 #include <tracking/trackFitting/measurementCreator/factories/BKLMMeasurementCreatorFactory.h>
18 #include <tracking/trackFitting/measurementCreator/factories/EKLMMeasurementCreatorFactory.h>
19 #include <tracking/trackFitting/measurementCreator/factories/AdditionalMeasurementCreatorFactory.h>
20 
21 #include <genfit/MeasurementFactory.h>
22 #include <string>
23 #include <map>
24 
25 
26 namespace genfit {
27  class AbsMeasurement;
28 }
29 
30 
31 namespace Belle2 {
37  class RecoTrack;
38 
79  public:
84  MeasurementAdder(const std::string& storeArrayNameOfPXDHits,
85  const std::string& storeArrayNameOfSVDHits,
86  const std::string& storeArrayNameOfCDCHits,
87  const std::string& storeArrayNameOfBKLMHits,
88  const std::string& storeArrayNameOfEKLMHits,
89  const bool initializeCDCTranslators = true);
90 
96 
108  const std::vector<std::shared_ptr<PXDBaseMeasurementCreator>>& pxdMeasurementCreators,
109  const std::vector<std::shared_ptr<SVDBaseMeasurementCreator>>& svdMeasurementCreators,
110  const std::vector<std::shared_ptr<CDCBaseMeasurementCreator>>& cdcMeasurementCreators,
111  const std::vector<std::shared_ptr<BKLMBaseMeasurementCreator>>& bklmMeasurementCreators,
112  const std::vector<std::shared_ptr<EKLMBaseMeasurementCreator>>& eklmMeasurementCreators,
113  const std::vector<std::shared_ptr<BaseMeasurementCreator>>& additionalMeasurementCreators);
114 
133  const std::map<std::string, std::map<std::string, std::string>>& pxdMeasurementCreators,
134  const std::map<std::string, std::map<std::string, std::string>>& svdMeasurementCreators,
135  const std::map<std::string, std::map<std::string, std::string>>& cdcMeasurementCreators,
136  const std::map<std::string, std::map<std::string, std::string>>& bklmMeasurementCreators,
137  const std::map<std::string, std::map<std::string, std::string>>& eklmMeasurementCreators,
138  const std::map<std::string, std::map<std::string, std::string>>& additionalMeasurementCreators);
139 
152  bool addMeasurements(RecoTrack& recoTrack) const;
153 
154  private:
166  bool m_skipDirtyCheck = false;
167 
169  std::vector<std::shared_ptr<PXDBaseMeasurementCreator>> m_pxdMeasurementCreators;
171  std::vector<std::shared_ptr<SVDBaseMeasurementCreator>> m_svdMeasurementCreators;
173  std::vector<std::shared_ptr<CDCBaseMeasurementCreator>> m_cdcMeasurementCreators;
175  std::vector<std::shared_ptr<BKLMBaseMeasurementCreator>> m_bklmMeasurementCreators;
177  std::vector<std::shared_ptr<EKLMBaseMeasurementCreator>> m_eklmMeasurementCreators;
179  std::vector<std::shared_ptr<BaseMeasurementCreator>> m_additionalMeasurementCreators;
180 
183 
186 
188  template <class HitType, Const::EDetector detector>
189  void addMeasurementsFromHitToRecoTrack(RecoTrack& recoTrack, RecoHitInformation& recoHitInformation, HitType* hit,
190  const std::vector<std::shared_ptr<BaseMeasurementCreatorFromHit<HitType, detector>>>& measurementCreators,
191  std::map<genfit::TrackPoint*, RecoHitInformation*>& trackPointHitMapping) const
192  {
193  if (not recoHitInformation.useInFit()) {
194  return;
195  }
196 
197  genfit::Track& genfitTrack = RecoTrackGenfitAccess::getGenfitTrack(recoTrack);
198 
199  for (const auto& measurementCreator : measurementCreators) {
200  const std::vector<genfit::TrackPoint*>& trackPoints = measurementCreator->createMeasurementPoints(hit, recoTrack,
201  recoHitInformation);
202  for (genfit::TrackPoint* trackPoint : trackPoints) {
203  genfitTrack.insertPoint(trackPoint);
204  // FIXME: hotfix: to get a correct mapping between reco hit information and the track point.
205  // We are not able to store the TrackPoint in the RecoHitInformation directly because of problems in streaming
206  // the genfit::TrackPoint. So what we do is store the index of the track points in the vector of the genfit::Track.
207  // As this vector is sorted after this function, we can not set it here directly.
208  trackPointHitMapping[trackPoint] = &recoHitInformation;
209  }
210  }
211  }
212 
214  void addMeasurementsToRecoTrack(RecoTrack& recoTrack,
215  const std::vector<std::shared_ptr<BaseMeasurementCreator>>& measurementCreators) const;
216  };
218 }
219 
Belle2::MeasurementAdder::m_svdMeasurementCreators
std::vector< std::shared_ptr< SVDBaseMeasurementCreator > > m_svdMeasurementCreators
Internal storage of the SVD measurement creators.
Definition: MeasurementAdder.h:171
Belle2::MeasurementAdder::addMeasurementsFromHitToRecoTrack
void addMeasurementsFromHitToRecoTrack(RecoTrack &recoTrack, RecoHitInformation &recoHitInformation, HitType *hit, const std::vector< std::shared_ptr< BaseMeasurementCreatorFromHit< HitType, detector >>> &measurementCreators, std::map< genfit::TrackPoint *, RecoHitInformation * > &trackPointHitMapping) const
Helper: Go through all measurement creators in the given list and create the measurement with a given...
Definition: MeasurementAdder.h:189
genfit::TrackPoint
Object containing AbsMeasurement and AbsFitterInfo objects.
Definition: TrackPoint.h:46
Belle2::MeasurementAdder::addMeasurements
bool addMeasurements(RecoTrack &recoTrack) const
After you have filled the internal storage with measurement creators (either by providing your own or...
Definition: MeasurementAdder.cc:162
Belle2::MeasurementAdder::MeasurementAdder
MeasurementAdder(const std::string &storeArrayNameOfPXDHits, const std::string &storeArrayNameOfSVDHits, const std::string &storeArrayNameOfCDCHits, const std::string &storeArrayNameOfBKLMHits, const std::string &storeArrayNameOfEKLMHits, const bool initializeCDCTranslators=true)
Create a new instance of the measurement adder.
Definition: MeasurementAdder.cc:40
Belle2::RecoTrackGenfitAccess::getGenfitTrack
static genfit::Track & getGenfitTrack(RecoTrack &recoTrack)
Give access to the RecoTrack's genfit::Track.
Definition: RecoTrack.cc:389
genfit::Track::insertPoint
void insertPoint(TrackPoint *point, int id=-1)
Insert TrackPoint BEFORE TrackPoint with position id, if id >= 0.
Definition: Track.cc:360
Belle2::MeasurementAdder::m_param_storeArrayNameOfBKLMHits
std::string m_param_storeArrayNameOfBKLMHits
The name of the store array for the BKLM hits.
Definition: MeasurementAdder.h:162
Belle2::MeasurementAdder::m_skipDirtyCheck
bool m_skipDirtyCheck
Flag to skip the dirty check. Useful when using non default measurement creators.
Definition: MeasurementAdder.h:166
Belle2::MeasurementAdder::m_genfitMeasurementFactory
genfit::MeasurementFactory< genfit::AbsMeasurement > m_genfitMeasurementFactory
Internal storage of the genfit measurement factory;.
Definition: MeasurementAdder.h:182
Belle2::MeasurementAdder::resetMeasurementCreatorsToDefaultSettings
void resetMeasurementCreatorsToDefaultSettings()
Reset the internal measurement creator storage to the default settings.
Definition: MeasurementAdder.cc:93
Belle2::MeasurementAdder::m_param_storeArrayNameOfEKLMHits
std::string m_param_storeArrayNameOfEKLMHits
The name of the store array for the EKLM hits.
Definition: MeasurementAdder.h:164
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
genfit::MeasurementFactory< genfit::AbsMeasurement >
Belle2::MeasurementAdder::m_param_storeArrayNameOfSVDHits
std::string m_param_storeArrayNameOfSVDHits
The name of the store array for the SVD hits.
Definition: MeasurementAdder.h:158
Belle2::MeasurementAdder::resetMeasurementCreatorsUsingFactories
void resetMeasurementCreatorsUsingFactories(const std::map< std::string, std::map< std::string, std::string >> &pxdMeasurementCreators, const std::map< std::string, std::map< std::string, std::string >> &svdMeasurementCreators, const std::map< std::string, std::map< std::string, std::string >> &cdcMeasurementCreators, const std::map< std::string, std::map< std::string, std::string >> &bklmMeasurementCreators, const std::map< std::string, std::map< std::string, std::string >> &eklmMeasurementCreators, const std::map< std::string, std::map< std::string, std::string >> &additionalMeasurementCreators)
If you want to use non-default settings for the store arrays, you can create your own instances of th...
Definition: MeasurementAdder.cc:123
Belle2::MeasurementAdder::resetMeasurementCreators
void resetMeasurementCreators(const std::vector< std::shared_ptr< PXDBaseMeasurementCreator >> &pxdMeasurementCreators, const std::vector< std::shared_ptr< SVDBaseMeasurementCreator >> &svdMeasurementCreators, const std::vector< std::shared_ptr< CDCBaseMeasurementCreator >> &cdcMeasurementCreators, const std::vector< std::shared_ptr< BKLMBaseMeasurementCreator >> &bklmMeasurementCreators, const std::vector< std::shared_ptr< EKLMBaseMeasurementCreator >> &eklmMeasurementCreators, const std::vector< std::shared_ptr< BaseMeasurementCreator >> &additionalMeasurementCreators)
If you want to use non-default settings for the store arrays, you can create your own instances of th...
Definition: MeasurementAdder.cc:105
Belle2::MeasurementAdder::m_additionalMeasurementCreators
std::vector< std::shared_ptr< BaseMeasurementCreator > > m_additionalMeasurementCreators
Internal storage of the additional measurement creators.
Definition: MeasurementAdder.h:179
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::MeasurementAdder::addMeasurementsToRecoTrack
void addMeasurementsToRecoTrack(RecoTrack &recoTrack, const std::vector< std::shared_ptr< BaseMeasurementCreator >> &measurementCreators) const
Helper: Go through all measurement creators in the given list and create the measurement without a gi...
Definition: MeasurementAdder.cc:254
Belle2::BaseMeasurementCreatorFromHit
Base Class to create measurements based on a given hit related to the RecoTrack.
Definition: BaseMeasurementCreatorFromHit.h:42
Belle2::RecoHitInformation
This class stores additional information to every CDC/SVD/PXD hit stored in a RecoTrack.
Definition: RecoHitInformation.h:48
Belle2::MeasurementAdder::m_param_storeArrayNameOfCDCHits
std::string m_param_storeArrayNameOfCDCHits
The name of the store array for the CDC hits.
Definition: MeasurementAdder.h:160
Belle2::MeasurementAdder::m_bklmMeasurementCreators
std::vector< std::shared_ptr< BKLMBaseMeasurementCreator > > m_bklmMeasurementCreators
Internal storage of the BKLM measurement creators.
Definition: MeasurementAdder.h:175
Belle2::RecoHitInformation::useInFit
bool useInFit() const
Get the flag, whether this his should be used in a fit or not.
Definition: RecoHitInformation.h:254
Belle2::MeasurementAdder::m_cdcMeasurementCreators
std::vector< std::shared_ptr< CDCBaseMeasurementCreator > > m_cdcMeasurementCreators
Internal storage of the CDC measurement creators.
Definition: MeasurementAdder.h:173
Belle2::MeasurementAdder
Algorithm class to translate the added detector hits (e.g.
Definition: MeasurementAdder.h:78
Belle2::MeasurementAdder::m_pxdMeasurementCreators
std::vector< std::shared_ptr< PXDBaseMeasurementCreator > > m_pxdMeasurementCreators
Internal storage of the PXD measurement creators.
Definition: MeasurementAdder.h:169
Belle2::MeasurementAdder::m_eklmMeasurementCreators
std::vector< std::shared_ptr< EKLMBaseMeasurementCreator > > m_eklmMeasurementCreators
Internal storage of the EKLM measurement creators.
Definition: MeasurementAdder.h:177
Belle2::MeasurementAdder::m_param_storeArrayNameOfPXDHits
std::string m_param_storeArrayNameOfPXDHits
The name of the store array for the PXD hits.
Definition: MeasurementAdder.h:156
Belle2::MeasurementAdder::createGenfitMeasurementFactory
void createGenfitMeasurementFactory()
Helper function to create a genfit::MeasurementFactory, needed in the MeasurementCreators.
Definition: MeasurementAdder.cc:67