Belle II Software development
CDCSegmentTriple.cc
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8#include <tracking/trackingUtilities/eventdata/tracks/CDCSegmentTriple.h>
9
10#include <tracking/trackingUtilities/eventdata/tracks/CDCAxialSegmentPair.h>
11
12#include <tracking/trackingUtilities/eventdata/segments/CDCSegment2D.h>
13#include <tracking/trackingUtilities/eventdata/segments/CDCAxialSegment2D.h>
14#include <tracking/trackingUtilities/eventdata/segments/CDCStereoSegment2D.h>
15
16#include <tracking/trackingUtilities/eventdata/trajectories/CDCTrajectorySZ.h>
17#include <tracking/trackingUtilities/eventdata/trajectories/CDCTrajectory2D.h>
18#include <tracking/trackingUtilities/eventdata/trajectories/CDCTrajectory3D.h>
19
20#include <cdc/topology/ISuperLayer.h>
21
22#include <tracking/trackingUtilities/ca/AutomatonCell.h>
23
24#include <framework/logging/Logger.h>
25
26using namespace Belle2;
27using namespace CDC;
28using namespace TrackingUtilities;
29
31 : m_startSegment(nullptr)
32 , m_middleSegment(nullptr)
33 , m_endSegment(nullptr)
34{
35}
36
37CDCSegmentTriple::CDCSegmentTriple(const CDCAxialSegment2D* startSegment,
38 const CDCAxialSegment2D* endSegment)
39 : m_startSegment(startSegment)
40 , m_middleSegment(nullptr)
41 , m_endSegment(endSegment)
42{
43}
44
46 : m_startSegment(segmentPair.getStartSegment())
47 , m_middleSegment(nullptr)
48 , m_endSegment(segmentPair.getEndSegment())
49{
50}
51
52CDCSegmentTriple::CDCSegmentTriple(const CDCAxialSegment2D* startSegment,
53 const CDCStereoSegment2D* middleSegment,
54 const CDCAxialSegment2D* endSegment)
55 : m_startSegment(startSegment)
56 , m_middleSegment(middleSegment)
57 , m_endSegment(endSegment)
58{
59 B2ASSERT("CDCSegmentTriple initialized with nullptr as start segment", startSegment);
60 B2ASSERT("CDCSegmentTriple initialized with nullptr as middle segment", middleSegment);
61 B2ASSERT("CDCSegmentTriple initialized with nullptr as end segment", endSegment);
62}
63
64CDCSegmentTriple::CDCSegmentTriple(const CDCAxialSegment2D* startSegment,
65 const CDCStereoSegment2D* middleSegment,
66 const CDCAxialSegment2D* endSegment,
67 const CDCTrajectory3D& trajectory3D)
68 : m_startSegment(startSegment)
69 , m_middleSegment(middleSegment)
70 , m_endSegment(endSegment)
71 , m_trajectory3D(trajectory3D)
72{
73 B2ASSERT("CDCSegmentTriple initialized with nullptr as start segment", startSegment);
74 B2ASSERT("CDCSegmentTriple initialized with nullptr as middle segment", middleSegment);
75 B2ASSERT("CDCSegmentTriple initialized with nullptr as end segment", endSegment);
76}
77
82
87
92
97
102
104{
106 const bool toHits = true;
107 getStartSegment()->unsetAndForwardMaskedFlag(toHits);
108 getMiddleSegment()->unsetAndForwardMaskedFlag(toHits);
109 getEndSegment()->unsetAndForwardMaskedFlag(toHits);
110}
111
113{
115 const bool toHits = true;
116 getStartSegment()->setAndForwardMaskedFlag(toHits);
117 getMiddleSegment()->setAndForwardMaskedFlag(toHits);
118 getEndSegment()->setAndForwardMaskedFlag(toHits);
119}
120
122{
123 const bool fromHits = true;
124 getStartSegment()->receiveMaskedFlag(fromHits);
125 getMiddleSegment()->receiveMaskedFlag(fromHits);
126 getEndSegment()->receiveMaskedFlag(fromHits);
127
128 if (getStartSegment()->getAutomatonCell().hasMaskedFlag() or
129 getMiddleSegment()->getAutomatonCell().hasMaskedFlag() or
130 getEndSegment()->getAutomatonCell().hasMaskedFlag()) {
131
133 }
134}
void setMaskedFlag(bool setTo=true)
Sets the masked flag to the given value. Default value true.
void unsetMaskedFlag()
Resets the masked flag to false.
Class representing a pair of reconstructed axial segments in adjacent superlayer.
const CDCStereoSegment2D * getMiddleSegment() const
Getter for the middle stereo segment.
CDCTrajectory3D m_trajectory3D
Memory of the linear trajectory in the sz direction associated with the triple.
CDC::ISuperLayer getMiddleISuperLayer() const
Getter for the superlayer id of the middle segment.
CDC::ISuperLayer getStartISuperLayer() const
Getter for the superlayer id of the start segment.
const CDCAxialSegment2D * getEndSegment() const
Getter for the end axial segment.
CDCTrajectory2D getTrajectory2D() const
Getter for the circular trajectory in the xy direction.
const CDCAxialSegment2D * m_startSegment
Reference to the axial segment in the start of the triple.
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
CDCSegmentTriple()
Default constructor for ROOT compatibility.
void setAndForwardMaskedFlag() const
Sets the masked flag of the segment triple's automaton cell. Also forward the masked to the contained...
const CDCTrajectory3D & getTrajectory3D() const
Getter for the three dimensional helix trajectory.
void unsetAndForwardMaskedFlag() const
Unsets the masked flag of the segment triple's automaton cell, of the contained segments and of the c...
const CDCStereoSegment2D * m_middleSegment
Reference to the stereo segment in the middle of the triple.
CDCTrajectorySZ getTrajectorySZ() const
Getter for the linear trajectory in the sz direction.
const CDCAxialSegment2D * getStartSegment() const
Getter for the start axial segment.
const CDCAxialSegment2D * m_endSegment
Reference to the axial segment in the start of the triple.
CDC::ISuperLayer getEndISuperLayer() const
Getter for the superlayer id of the end segment.
void receiveMaskedFlag() const
If one of the contained segments is marked as masked this segment triple is set be masked as well.
Particle trajectory as it is seen in xy projection represented as a circle.
Particle full three dimensional trajectory.
CDCTrajectory2D getTrajectory2D() const
Getter for the two dimensional trajectory.
CDCTrajectorySZ getTrajectorySZ() const
Getter for the sz trajectory.
signed short ISuperLayer
The type of the layer and superlayer ids.
Definition ISuperLayer.h:24
Abstract base class for different kinds of events.
static ISuperLayer getFrom(const T &t)
Returns the superlayer of an object.