Belle II Software  release-05-01-25
CDCSegmentTriple.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2012 - 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 #include <tracking/trackFindingCDC/eventdata/tracks/CDCSegmentTriple.h>
11 
12 #include <tracking/trackFindingCDC/eventdata/tracks/CDCAxialSegmentPair.h>
13 
14 #include <tracking/trackFindingCDC/eventdata/segments/CDCSegment2D.h>
15 #include <tracking/trackFindingCDC/eventdata/segments/CDCAxialSegment2D.h>
16 #include <tracking/trackFindingCDC/eventdata/segments/CDCStereoSegment2D.h>
17 
18 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectorySZ.h>
19 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory2D.h>
20 #include <tracking/trackFindingCDC/eventdata/trajectories/CDCTrajectory3D.h>
21 
22 #include <tracking/trackFindingCDC/topology/ISuperLayer.h>
23 
24 #include <tracking/trackFindingCDC/ca/AutomatonCell.h>
25 
26 #include <framework/logging/Logger.h>
27 
28 using namespace Belle2;
29 using namespace TrackFindingCDC;
30 
32  : m_startSegment(nullptr)
33  , m_middleSegment(nullptr)
34  , m_endSegment(nullptr)
35 {
36 }
37 
39  const CDCAxialSegment2D* endSegment)
40  : m_startSegment(startSegment)
41  , m_middleSegment(nullptr)
42  , m_endSegment(endSegment)
43 {
44 }
45 
47  : m_startSegment(segmentPair.getStartSegment())
48  , m_middleSegment(nullptr)
49  , m_endSegment(segmentPair.getEndSegment())
50 {
51 }
52 
54  const CDCStereoSegment2D* middleSegment,
55  const CDCAxialSegment2D* endSegment)
56  : m_startSegment(startSegment)
57  , m_middleSegment(middleSegment)
58  , m_endSegment(endSegment)
59 {
60  B2ASSERT("CDCSegmentTriple initialized with nullptr as start segment", startSegment);
61  B2ASSERT("CDCSegmentTriple initialized with nullptr as middle segment", middleSegment);
62  B2ASSERT("CDCSegmentTriple initialized with nullptr as end segment", endSegment);
63 }
64 
66  const CDCStereoSegment2D* middleSegment,
67  const CDCAxialSegment2D* endSegment,
68  const CDCTrajectory3D& trajectory3D)
69  : m_startSegment(startSegment)
70  , m_middleSegment(middleSegment)
71  , m_endSegment(endSegment)
72  , m_trajectory3D(trajectory3D)
73 {
74  B2ASSERT("CDCSegmentTriple initialized with nullptr as start segment", startSegment);
75  B2ASSERT("CDCSegmentTriple initialized with nullptr as middle segment", middleSegment);
76  B2ASSERT("CDCSegmentTriple initialized with nullptr as end segment", endSegment);
77 }
78 
80 {
82 }
83 
85 {
87 }
88 
90 {
92 }
93 
95 {
97 }
98 
100 {
101  return getTrajectory3D().getTrajectory2D();
102 }
103 
105 {
107  const bool toHits = true;
108  getStartSegment()->unsetAndForwardMaskedFlag(toHits);
109  getMiddleSegment()->unsetAndForwardMaskedFlag(toHits);
110  getEndSegment()->unsetAndForwardMaskedFlag(toHits);
111 }
112 
114 {
116  const bool toHits = true;
117  getStartSegment()->setAndForwardMaskedFlag(toHits);
118  getMiddleSegment()->setAndForwardMaskedFlag(toHits);
119  getEndSegment()->setAndForwardMaskedFlag(toHits);
120 }
121 
123 {
124  const bool fromHits = true;
125  getStartSegment()->receiveMaskedFlag(fromHits);
126  getMiddleSegment()->receiveMaskedFlag(fromHits);
127  getEndSegment()->receiveMaskedFlag(fromHits);
128 
129  if (getStartSegment()->getAutomatonCell().hasMaskedFlag() or
130  getMiddleSegment()->getAutomatonCell().hasMaskedFlag() or
131  getEndSegment()->getAutomatonCell().hasMaskedFlag()) {
132 
134  }
135 }
Belle2::TrackFindingCDC::CDCSegmentTriple::receiveMaskedFlag
void receiveMaskedFlag() const
If one of the contained segments is marked as masked this segment triple is set be masked as well.
Definition: CDCSegmentTriple.cc:122
Belle2::TrackFindingCDC::CDCSegmentTriple::getStartSegment
const CDCAxialSegment2D * getStartSegment() const
Getter for the start axial segment.
Definition: CDCSegmentTriple.h:111
Belle2::TrackFindingCDC::ISuperLayerUtil::getFrom
static ISuperLayer getFrom(const T &t)
Returns the superlayer of an object.
Definition: ISuperLayer.h:112
Belle2::TrackFindingCDC::CDCSegmentTriple::getMiddleSegment
const CDCStereoSegment2D * getMiddleSegment() const
Getter for the middle stereo segment.
Definition: CDCSegmentTriple.h:123
Belle2::TrackFindingCDC::CDCSegmentTriple::CDCSegmentTriple
CDCSegmentTriple()
Default constructor for ROOT compatability.
Definition: CDCSegmentTriple.cc:31
Belle2::TrackFindingCDC::CDCSegmentTriple::getEndISuperLayer
ISuperLayer getEndISuperLayer() const
Getter for the superlayer id of the end segment.
Definition: CDCSegmentTriple.cc:89
Belle2::TrackFindingCDC::AutomatonCell::unsetMaskedFlag
void unsetMaskedFlag()
Resets the masked flag to false.
Definition: AutomatonCell.h:222
Belle2::TrackFindingCDC::CDCSegmentTriple::getTrajectory3D
const CDCTrajectory3D & getTrajectory3D() const
Getter for the three dimensional helix trajectory.
Definition: CDCSegmentTriple.h:153
Belle2::TrackFindingCDC::CDCTrajectorySZ
Linear trajectory in sz space.
Definition: CDCTrajectorySZ.h:41
Belle2::TrackFindingCDC::CDCSegmentTriple::getEndSegment
const CDCAxialSegment2D * getEndSegment() const
Getter for the end axial segment.
Definition: CDCSegmentTriple.h:135
Belle2::TrackFindingCDC::CDCTrajectory2D
Particle trajectory as it is seen in xy projection represented as a circle.
Definition: CDCTrajectory2D.h:46
Belle2::TrackFindingCDC::AutomatonCell::setMaskedFlag
void setMaskedFlag(bool setTo=true)
Sets the masked flag to the given value. Default value true.
Definition: AutomatonCell.h:216
Belle2::TrackFindingCDC::CDCSegmentTriple::unsetAndForwardMaskedFlag
void unsetAndForwardMaskedFlag() const
Unsets the masked flag of the segment triple's automaton cell, of the contained segments and of the c...
Definition: CDCSegmentTriple.cc:104
Belle2::TrackFindingCDC::CDCTrajectory3D::getTrajectory2D
CDCTrajectory2D getTrajectory2D() const
Getter for the two dimensional trajectory.
Definition: CDCTrajectory3D.cc:336
Belle2::TrackFindingCDC::CDCTrajectory3D::getTrajectorySZ
CDCTrajectorySZ getTrajectorySZ() const
Getter for the sz trajectory.
Definition: CDCTrajectory3D.cc:343
Belle2::TrackFindingCDC::CDCAxialSegmentPair
Class representing a pair of reconstructed axial segements in adjacent superlayer.
Definition: CDCAxialSegmentPair.h:41
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::CDCSegmentTriple::getStartISuperLayer
ISuperLayer getStartISuperLayer() const
Getter for the superlayer id of the start segment.
Definition: CDCSegmentTriple.cc:79
Belle2::TrackFindingCDC::CDCSegmentTriple::getMiddleISuperLayer
ISuperLayer getMiddleISuperLayer() const
Getter for the superlayer id of the middle segment.
Definition: CDCSegmentTriple.cc:84
Belle2::TrackFindingCDC::CDCSegmentTriple::setAndForwardMaskedFlag
void setAndForwardMaskedFlag() const
Sets the masked flag of the segment triple's automaton cell. Also forward the masked to the contained...
Definition: CDCSegmentTriple.cc:113
Belle2::TrackFindingCDC::CDCSegment2D
A reconstructed sequence of two dimensional hits in one super layer.
Definition: CDCSegment2D.h:40
Belle2::TrackFindingCDC::CDCSegmentTriple::getAutomatonCell
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
Definition: CDCSegmentTriple.h:180
Belle2::TrackFindingCDC::CDCSegmentTriple::getTrajectorySZ
CDCTrajectorySZ getTrajectorySZ() const
Getter for the linear trajectory in the sz direction.
Definition: CDCSegmentTriple.cc:94
Belle2::TrackFindingCDC::CDCTrajectory3D
Particle full three dimensional trajectory.
Definition: CDCTrajectory3D.h:47
Belle2::TrackFindingCDC::CDCSegmentTriple::getTrajectory2D
CDCTrajectory2D getTrajectory2D() const
Getter for the circular trajectory in the xy direction.
Definition: CDCSegmentTriple.cc:99