8#include <tracking/trackFindingCDC/findlets/minimal/SegmentTripleCreator.h>
10#include <tracking/trackingUtilities/eventdata/tracks/CDCSegmentTriple.h>
11#include <tracking/trackingUtilities/eventdata/tracks/CDCAxialSegmentPair.h>
12#include <tracking/trackingUtilities/eventdata/segments/CDCSegment2D.h>
14#include <cdc/topology/ISuperLayer.h>
16#include <framework/logging/Logger.h>
25using namespace TrackFindingCDC;
26using namespace TrackingUtilities;
35 return "Creates segment triples from a set of middle segments and already combined axial "
36 "segment pairs filtered by some acceptance criterion";
45 const std::vector<CDCAxialSegmentPair>& inputAxialSegmentPairs,
46 std::vector<CDCSegmentTriple>& segmentTriples)
50 segementsInSuperLayer.clear();
60 const CDCSegment2D* startSegment = axialSegmentPair.getStartSegment();
61 const CDCSegment2D* endSegment = axialSegmentPair.getEndSegment();
63 ISuperLayer startISuperLayer = startSegment->getISuperLayer();
64 ISuperLayer endISuperLayer = endSegment->getISuperLayer();
69 if (startISuperLayer != endISuperLayer) {
70 ISuperLayer middleISuperLayer = (startISuperLayer + endISuperLayer) / 2;
75 create(axialSegmentPair, middleSegments, segmentTriples);
81 for (
ISuperLayer middleISuperLayer : {middleISuperLayerIn, middleISuperLayerOut}) {
84 create(axialSegmentPair, middleSegments, segmentTriples);
89 std::sort(segmentTriples.begin(), segmentTriples.end());
93 const std::vector<const CDCSegment2D*>& middleSegments,
94 std::vector<CDCSegmentTriple>& segmentTriples)
97 for (
const CDCSegment2D* middleSegment : middleSegments) {
104 if (not std::isnan(weight)) {
106 segmentTriples.insert(segmentTriples.end(), segmentTriple);
The Module parameter list class.
void create(const TrackingUtilities::CDCAxialSegmentPair &axialSegmentPair, const std::vector< const TrackingUtilities::CDCSegment2D * > &middleSegments, std::vector< TrackingUtilities::CDCSegmentTriple > &segmentTriples)
Creates segment triples by adding the middle segment to the axial segments and filter out the valuabl...
std::string getDescription() final
Short description of the findlet.
std::array< std::vector< const TrackingUtilities::CDCSegment2D * >, CDC::ISuperLayerUtil::c_N > m_segmentsBySuperLayer
Structure for the segments grouped by super layer id.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
SegmentTripleCreator()
Constructor adding the filter as a subordinary processing signal listener.
void apply(const std::vector< TrackingUtilities::CDCSegment2D > &inputSegments, const std::vector< TrackingUtilities::CDCAxialSegmentPair > &inputAxialSegmentPairs, std::vector< TrackingUtilities::CDCSegmentTriple > &segmentTriples) final
Main method constructing pairs in adjacent super layers.
ChooseableSegmentTripleFilter m_segmentTripleFilter
The filter to be used for the segment triple generation.
void setCellWeight(Weight weight)
Setter for the cell weight.
Class representing a pair of reconstructed axial segments in adjacent superlayer.
A reconstructed sequence of two dimensional hits in one super layer.
Class representing a triple of reconstructed segments in adjacent superlayer.
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
void setMiddleSegment(const CDCStereoSegment2D *middleSegment)
Setter for the middle stereo segment.
void clearTrajectory3D() const
Clears the three dimensional helix trajectory.
void addProcessingSignalListener(ProcessingSignalListener *psl)
signed short ISuperLayer
The type of the layer and superlayer ids.
Abstract base class for different kinds of events.
static bool isAxial(ISuperLayer iSuperLayer)
Returns if the super layer with the given id is axial.
static ISuperLayer getNextInwards(ISuperLayer iSuperLayer)
Returns the super layer that is inside of the given super layer.
static ISuperLayer getNextOutwards(ISuperLayer iSuperLayer)
Returns the super layer that is outside of the given super layer.
static bool isInCDC(ISuperLayer iSuperLayer)
Indicates if the given number corresponds to a true cdc superlayer - excludes the logic ids for inner...