Belle II Software  release-05-02-19
CDCMCMap.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2014 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Oliver Frost *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 #pragma once
11 
12 #include <tracking/trackFindingCDC/utilities/Range.h>
13 #include <tracking/trackFindingCDC/utilities/MayBePtr.h>
14 
15 #include <map>
16 #include <set>
17 
18 namespace Belle2 {
23  class MCParticle;
24  class CDCSimHit;
25  class CDCHit;
26 
27  namespace TrackFindingCDC {
28 
30  class CDCMCMap {
31 
32  public:
33 
35  CDCMCMap() = default;
37  CDCMCMap& operator=(const CDCMCMap&) = delete;
39  CDCMCMap(CDCMCMap&) = delete;
40 
41  public:
42 
44  void clear();
45 
47  void fill();
48 
49  private:
54  static bool indicatesReassignedSecondary(double weight)
55  {
56  return weight <= 0;
57  }
58 
60  void fillSimHitByHitMap();
61 
64 
67 
69  void validateRelations() const;
70 
72  void validateReassignedSecondaries() const;
73 
74  public:
76  MayBePtr<const CDCSimHit> getSimHit(const CDCHit* hit) const;
77 
79  MayBePtr<const CDCHit> getHit(const CDCSimHit* simHit) const;
80 
82  bool isBackground(const CDCSimHit* simHit) const;
83 
85  bool isBackground(const CDCHit* hit) const;
86 
91  MayBePtr<const MCParticle> getMCParticle(const CDCHit* hit) const;
92 
97  MayBePtr<const MCParticle> getMCParticle(const CDCSimHit* simHit) const;
98 
100  auto getSimHits(const MCParticle* mcParticle) const
101  {
102  return asRange(m_simHitsByMCParticle.equal_range(mcParticle));
103  }
104 
106  auto getHits(const MCParticle* mcParticle) const
107  {
108  return asRange(m_hitsByMCParticle.equal_range(mcParticle));
109  }
110 
112  bool isReassignedSecondary(const CDCSimHit* ptrSimHit) const
113  {
114  return m_reassignedSecondarySimHits.count(ptrSimHit) > 0;
115  }
116 
118  bool isReassignedSecondary(const CDCHit* ptrHit) const
119  {
120  return m_reassignedSecondaryHits.count(ptrHit) > 0;
121  }
122 
124  const std::set<const CDCHit*>& getReassignedSecondaryHits() const
125  {
127  }
128 
130  const std::set<const CDCSimHit*>& getReassignedSecondarySimHits() const
131  {
133  }
134 
136  const std::multimap<const CDCHit*, const CDCSimHit*>& getSimHitsByHit() const
137  {
139  }
140 
142  const std::multimap<const MCParticle*, const CDCHit*>& getHitsByMCParticle() const
143  {
145  }
146 
148  const std::multimap<const MCParticle*, const CDCSimHit*>& getSimHitsByMCParticle() const
149  {
151  }
152 
153  private:
155  std::multimap<const CDCHit*, const CDCSimHit*> m_simHitsByHit;
156 
158  std::multimap<const MCParticle*, const CDCHit*> m_hitsByMCParticle;
159 
161  std::multimap<const MCParticle*, const CDCSimHit*> m_simHitsByMCParticle;
162 
164  std::set<const CDCHit*> m_reassignedSecondaryHits;
165 
167  std::set<const CDCSimHit*> m_reassignedSecondarySimHits;
168  };
169  }
171 }
Belle2::TrackFindingCDC::CDCMCMap::getSimHits
auto getSimHits(const MCParticle *mcParticle) const
Getter for the range MCParticle to CDCSimHits relations which come from the given MCParticle.
Definition: CDCMCMap.h:108
Belle2::TrackFindingCDC::CDCMCMap::m_simHitsByMCParticle
std::multimap< const MCParticle *, const CDCSimHit * > m_simHitsByMCParticle
Memory for a one to n relation from MCParticles to CDCSimHit.
Definition: CDCMCMap.h:169
Belle2::TrackFindingCDC::CDCMCMap::fill
void fill()
Fill the Monte Carlo information retrieved from the DataStore into the local multimaps.
Definition: CDCMCMap.cc:46
Belle2::TrackFindingCDC::CDCMCMap::getReassignedSecondaryHits
const std::set< const CDCHit * > & getReassignedSecondaryHits() const
Getter for all reassigned secondary CDCHits.
Definition: CDCMCMap.h:132
Belle2::TrackFindingCDC::CDCMCMap::getSimHitsByMCParticle
const std::multimap< const MCParticle *, const CDCSimHit * > & getSimHitsByMCParticle() const
Getter for the MCParticle -> CDCSimHit relations.
Definition: CDCMCMap.h:156
Belle2::TrackFindingCDC::CDCMCMap::getHit
MayBePtr< const CDCHit > getHit(const CDCSimHit *simHit) const
Seeks the CDCHit related to the CDCSimHit - nullptr if no CDCHit is related.
Definition: CDCMCMap.cc:258
Belle2::TrackFindingCDC::CDCMCMap::operator=
CDCMCMap & operator=(const CDCMCMap &)=delete
Delete the assignement operator in order to avoid accidental copies.
Belle2::CDCHit
Class containing the result of the unpacker in raw data and the result of the digitizer in simulation...
Definition: CDCHit.h:51
Belle2::TrackFindingCDC::CDCMCMap::m_hitsByMCParticle
std::multimap< const MCParticle *, const CDCHit * > m_hitsByMCParticle
Memory for a one to n relation from MCParticles to CDCHit.
Definition: CDCMCMap.h:166
Belle2::TrackFindingCDC::CDCMCMap::m_simHitsByHit
std::multimap< const CDCHit *, const CDCSimHit * > m_simHitsByHit
Memory for a one to one relation from CDCHit to CDCSimHits.
Definition: CDCMCMap.h:163
Belle2::TrackFindingCDC::CDCMCMap::getMCParticle
MayBePtr< const MCParticle > getMCParticle(const CDCHit *hit) const
Seeks the MCParticle related to the CDCHit.
Definition: CDCMCMap.cc:273
Belle2::CDCSimHit
Example Detector.
Definition: CDCSimHit.h:33
Belle2::TrackFindingCDC::CDCMCMap::indicatesReassignedSecondary
static bool indicatesReassignedSecondary(double weight)
Indicate if the given weight suggests that the corresponding hit to MCParticle relation has been redi...
Definition: CDCMCMap.h:62
Belle2::TrackFindingCDC::CDCMCMap::m_reassignedSecondarySimHits
std::set< const CDCSimHit * > m_reassignedSecondarySimHits
The set of reassigned secondary CDCSimHits.
Definition: CDCMCMap.h:175
Belle2::TrackFindingCDC::CDCMCMap::fillMCParticleBySimHitMap
void fillMCParticleBySimHitMap()
Retrieve the relations array from MCParticle to CDCSimHits and fill it in to the local map which does...
Definition: CDCMCMap.cc:188
Belle2::TrackFindingCDC::CDCMCMap::getHits
auto getHits(const MCParticle *mcParticle) const
Getter for the range MCParticle to CDCHits relations which come from the given MCParticle.
Definition: CDCMCMap.h:114
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::CDCMCMap::validateReassignedSecondaries
void validateReassignedSecondaries() const
Checks if each CDCHit is marked as reassigned secondary is related to a reassigned secondary CDCSimHi...
Definition: CDCMCMap.cc:242
Belle2::TrackFindingCDC::CDCMCMap::validateRelations
void validateRelations() const
Checks if the relations CDCHit -> MCParticle and CDCHit -> CDCSimHit -> MCParticle commute.
Definition: CDCMCMap.cc:223
Belle2::TrackFindingCDC::CDCMCMap::m_reassignedSecondaryHits
std::set< const CDCHit * > m_reassignedSecondaryHits
The set of reassigned secondary CDCHits.
Definition: CDCMCMap.h:172
Belle2::TrackFindingCDC::CDCMCMap::fillMCParticleByHitMap
void fillMCParticleByHitMap()
Retrieve the relations array from MCParticle to CDCHits and fill it in to the local map which does th...
Definition: CDCMCMap.cc:105
Belle2::TrackFindingCDC::CDCMCMap::getSimHit
MayBePtr< const CDCSimHit > getSimHit(const CDCHit *hit) const
Seeks the CDCSimHit related to the CDCHit.
Definition: CDCMCMap.cc:253
Belle2::TrackFindingCDC::CDCMCMap::clear
void clear()
Clear all information from the former event.
Definition: CDCMCMap.cc:34
Belle2::TrackFindingCDC::CDCMCMap::CDCMCMap
CDCMCMap()=default
Default constructor, needs to be public for initialization in CDCMCManager.
Belle2::TrackFindingCDC::CDCMCMap::getReassignedSecondarySimHits
const std::set< const CDCSimHit * > & getReassignedSecondarySimHits() const
Getter for all reassigned secondary CDCSimHits.
Definition: CDCMCMap.h:138
Belle2::TrackFindingCDC::CDCMCMap::isReassignedSecondary
bool isReassignedSecondary(const CDCSimHit *ptrSimHit) const
Indicates if the CDCSimHit has been reassigned to a primary MCParticle.
Definition: CDCMCMap.h:120
Belle2::TrackFindingCDC::CDCMCMap::getHitsByMCParticle
const std::multimap< const MCParticle *, const CDCHit * > & getHitsByMCParticle() const
Getter for the MCParticle -> CDCHit relations.
Definition: CDCMCMap.h:150
Belle2::TrackFindingCDC::CDCMCMap::isBackground
bool isBackground(const CDCSimHit *simHit) const
Indicates if the CDCSimHit is considered background.
Definition: CDCMCMap.cc:263
Belle2::TrackFindingCDC::CDCMCMap::fillSimHitByHitMap
void fillSimHitByHitMap()
Retrieve the relations array from CDCSimHits to CDCHits and fill it in to the local map which does th...
Definition: CDCMCMap.cc:67
Belle2::TrackFindingCDC::CDCMCMap::getSimHitsByHit
const std::multimap< const CDCHit *, const CDCSimHit * > & getSimHitsByHit() const
Getter for the CDCHit -> CDCSimHit relations.
Definition: CDCMCMap.h:144