Belle II Software development
RealisticFacetFilter Class Reference

Filter for the constuction of good facets based on simple criterions. More...

#include <RealisticFacetFilter.h>

Inheritance diagram for RealisticFacetFilter:
Filter< AObject > CompositeProcessingSignalListener ProcessingSignalListener

Public Types

using Object = AObject
 Type of the object to be analysed.
 
using Interface = Filter< AObject >
 Mark this class as the basic interface.
 

Public Member Functions

 RealisticFacetFilter ()
 Constructor using default direction of flight deviation cut off.
 
 RealisticFacetFilter (double phiPullCut)
 Constructor using given direction of flight deviation cut off.
 
void exposeParameters (ModuleParamList *moduleParamList, const std::string &prefix) final
 Expose the set of parameters of the filter to the module parameter list.
 
Weight operator() (const CDCFacet &facet) final
 Main filter method returning the weight of the facet Returns NAN if the cell shall be rejected.
 
virtual bool needsTruthInformation ()
 Indicates if the filter requires Monte Carlo information.
 
virtual Weight operator() (const Object &obj)
 Function to evaluate the object.
 
Weight operator() (const Object *obj)
 Function to evaluate the object.
 
virtual std::vector< float > operator() (const std::vector< Object * > &objs)
 Function to evaluate a vector of objects Base implementation applies the function to each object.
 
void initialize () override
 Receive and dispatch signal before the start of the event processing.
 
void beginRun () override
 Receive and dispatch signal for the beginning of a new run.
 
void beginEvent () override
 Receive and dispatch signal for the start of a new event.
 
void endRun () override
 Receive and dispatch signal for the end of the run.
 
void terminate () override
 Receive and dispatch Signal for termination of the event processing.
 

Protected Member Functions

void addProcessingSignalListener (ProcessingSignalListener *psl)
 Register a processing signal listener to be notified.
 
int getNProcessingSignalListener ()
 Get the number of currently registered listeners.
 

Private Types

using Super = BaseFacetFilter
 Type of the super class.
 

Private Attributes

double m_param_phiPullCut
 Memory for the pull cu.
 
std::vector< ProcessingSignalListener * > m_subordinaryProcessingSignalListeners
 References to subordinary signal processing listener contained in this findlet.
 
bool m_initialized = false
 Flag to keep track whether initialization happend before.
 
bool m_terminated = false
 Flag to keep track whether termination happend before.
 
std::string m_initializedAs
 Name of the type during initialisation.
 

Detailed Description

Filter for the constuction of good facets based on simple criterions.

Definition at line 25 of file RealisticFacetFilter.h.

Member Typedef Documentation

◆ Interface

using Interface = Filter<AObject>
inherited

Mark this class as the basic interface.

Definition at line 38 of file Filter.dcl.h.

◆ Object

using Object = AObject
inherited

Type of the object to be analysed.

Definition at line 35 of file Filter.dcl.h.

◆ Super

using Super = BaseFacetFilter
private

Type of the super class.

Definition at line 29 of file RealisticFacetFilter.h.

Constructor & Destructor Documentation

◆ RealisticFacetFilter() [1/2]

Constructor using default direction of flight deviation cut off.

Definition at line 23 of file RealisticFacetFilter.cc.

25{
26}
double m_param_phiPullCut
Memory for the pull cu.

◆ RealisticFacetFilter() [2/2]

RealisticFacetFilter ( double  phiPullCut)
explicit

Constructor using given direction of flight deviation cut off.

Definition at line 28 of file RealisticFacetFilter.cc.

29 : m_param_phiPullCut(phiPullCut)
30{
31}

Member Function Documentation

◆ addProcessingSignalListener()

void addProcessingSignalListener ( ProcessingSignalListener psl)
protectedinherited

Register a processing signal listener to be notified.

Definition at line 55 of file CompositeProcessingSignalListener.cc.

56{
58}
std::vector< ProcessingSignalListener * > m_subordinaryProcessingSignalListeners
References to subordinary signal processing listener contained in this findlet.

◆ beginEvent()

void beginEvent ( )
overridevirtualinherited

Receive and dispatch signal for the start of a new event.

Reimplemented from ProcessingSignalListener.

Reimplemented in SpacePointTagger< Belle2::CKFToPXDResult, Belle2::PXDCluster >, SpacePointTagger< Belle2::CKFToSVDResult, Belle2::SVDCluster >, BaseEventTimeExtractor< RecoTrack * >, BaseEventTimeExtractor< TrackFindingCDC::CDCWireHit & >, SharingHitsMatcher< Belle2::TrackFindingCDC::CDCTrack, Belle2::TrackFindingCDC::CDCSegment2D >, MCSymmetric< BaseAxialSegmentPairFilter >, MCSymmetric< BaseFacetFilter >, MCSymmetric< BaseFacetRelationFilter >, MCSymmetric< BaseSegmentPairFilter >, MCSymmetric< BaseSegmentPairRelationFilter >, MCSymmetric< BaseSegmentRelationFilter >, MCSymmetric< BaseSegmentTripleFilter >, MCSymmetric< BaseSegmentTripleRelationFilter >, MCSymmetric< BaseTrackRelationFilter >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCFacet >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCWireHit, true >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegment2D >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCTrack >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentPair >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentTriple >, RecoTrackStorer, ROIFinder, and SVDHoughTracking.

Definition at line 31 of file CompositeProcessingSignalListener.cc.

32{
35 psl->beginEvent();
36 }
37}
Interface for an algorithm part that needs to receive the module processing signals.
virtual void beginEvent()
Receive signal for the start of a new event.

◆ beginRun()

void beginRun ( )
overridevirtualinherited

Receive and dispatch signal for the beginning of a new run.

Reimplemented from ProcessingSignalListener.

Reimplemented in LayerRelationFilter< AFilter >, FourHitFilter, QualityIndicatorFilter, ThreeHitFilter, TwoHitVirtualIPFilter, TwoHitVirtualIPQIFilter, RecoTrackStorer, ROIFinder, SpacePointLoaderAndPreparer, and TrackCandidateResultRefiner.

Definition at line 23 of file CompositeProcessingSignalListener.cc.

24{
27 psl->beginRun();
28 }
29}
virtual void beginRun()
Receive signal for the beginning of a new run.

◆ endRun()

void endRun ( )
overridevirtualinherited

Receive and dispatch signal for the end of the run.

Reimplemented from ProcessingSignalListener.

Definition at line 39 of file CompositeProcessingSignalListener.cc.

40{
42 psl->endRun();
43 }
45}
virtual void endRun()
Receive signal for the end of the run.

◆ exposeParameters()

void exposeParameters ( ModuleParamList moduleParamList,
const std::string &  prefix 
)
finalvirtual

Expose the set of parameters of the filter to the module parameter list.

Reimplemented from Filter< AObject >.

Definition at line 33 of file RealisticFacetFilter.cc.

35{
36 Super::exposeParameters(moduleParamList, prefix);
37 moduleParamList->addParameter(prefixed(prefix, "phiPullCut"),
39 "Acceptable angle pull in the angle of adjacent tangents to the "
40 "drift circles.",
42}
virtual void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix)
Expose the set of parameters of the filter to the module parameter list.
Definition: Filter.icc.h:40
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.

◆ getNProcessingSignalListener()

int getNProcessingSignalListener ( )
protectedinherited

Get the number of currently registered listeners.

Definition at line 60 of file CompositeProcessingSignalListener.cc.

61{
63}

◆ initialize()

void initialize ( )
overridevirtualinherited

Receive and dispatch signal before the start of the event processing.

Reimplemented from ProcessingSignalListener.

Reimplemented in UnionVarSet< AObject >, UnionVarSet< Object >, VariadicUnionVarSet< AVarSets >, ResultStorer< Belle2::CKFToPXDResult >, ResultStorer< Belle2::CKFToSVDResult >, BaseEventTimeExtractor< RecoTrack * >, BaseEventTimeExtractor< TrackFindingCDC::CDCWireHit & >, StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::HyperHough >, StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::QuadraticLegendre >, StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::Z0TanLambdaLegendre >, OnVarSet< Filter< ATruthVarSet::Object > >, OnVarSet< Filter< AVarSet::Object > >, OnVarSet< BaseFacetFilter >, OnVarSet< BaseFacetRelationFilter >, OnVarSet< BaseAxialSegmentPairFilter >, OnVarSet< BaseSegmentRelationFilter >, OnVarSet< BaseTrackRelationFilter >, OnVarSet< BaseSegmentPairRelationFilter >, MCSymmetric< BaseAxialSegmentPairFilter >, MCSymmetric< BaseFacetFilter >, MCSymmetric< BaseFacetRelationFilter >, MCSymmetric< BaseSegmentPairFilter >, MCSymmetric< BaseSegmentPairRelationFilter >, MCSymmetric< BaseSegmentRelationFilter >, MCSymmetric< BaseSegmentTripleFilter >, MCSymmetric< BaseSegmentTripleRelationFilter >, MCSymmetric< BaseTrackRelationFilter >, StoreArrayLoader< const Belle2::SpacePoint >, StoreArrayLoader< DataStoreInputTypeRefType >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCFacet >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCWireHit, true >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegment2D >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCTrack >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentPair >, StoreVectorSwapper< Belle2::TrackFindingCDC::CDCSegmentTriple >, RelationVarSet< ABaseVarSet >, QualityIndicatorFilter, TwoHitVirtualIPQIFilter, MultiHoughSpaceFastInterceptFinder, RawTrackCandCleaner< AHit >, RawTrackCandCleaner< Belle2::vxdHoughTracking::VXDHoughState >, RecoTrackStorer, ROIFinder, SingleHoughSpaceFastInterceptFinder, SpacePointLoaderAndPreparer, TrackCandidateOverlapResolver, and TrackCandidateResultRefiner.

Definition at line 15 of file CompositeProcessingSignalListener.cc.

16{
19 psl->initialize();
20 }
21}
virtual void initialize()
Receive signal before the start of the event processing.

◆ needsTruthInformation()

◆ operator()() [1/4]

Weight operator() ( const CDCFacet facet)
final

Main filter method returning the weight of the facet Returns NAN if the cell shall be rejected.

Definition at line 44 of file RealisticFacetFilter.cc.

45{
46 facet.adjustFitLine();
47
48 const CDCRLWireHit& startRLWirehit = facet.getStartRLWireHit();
49 const double startDriftLengthVar = startRLWirehit.getRefDriftLengthVariance();
50 const double startDriftLengthStd = sqrt(startDriftLengthVar);
51
52 const CDCRLWireHit& middleRLWirehit = facet.getMiddleRLWireHit();
53 const double middleDriftLengthVar = middleRLWirehit.getRefDriftLengthVariance();
54 const double middleDriftLengthStd = sqrt(middleDriftLengthVar);
55
56 const CDCRLWireHit& endRLWirehit = facet.getEndRLWireHit();
57 const double endDriftLengthVar = endRLWirehit.getRefDriftLengthVariance();
58 const double endDriftLengthStd = sqrt(endDriftLengthVar);
59
60 const ParameterLine2D& startToMiddleLine = facet.getStartToMiddleLine();
61 const ParameterLine2D& startToEndLine = facet.getStartToEndLine();
62 const ParameterLine2D& middleToEndLine = facet.getMiddleToEndLine();
63
64 const Vector2D& startToMiddleTangentialVector = startToMiddleLine.tangential();
65 const Vector2D& startToEndTangentialVector = startToEndLine.tangential();
66 const Vector2D& middleToEndTangentialVector = middleToEndLine.tangential();
67
68 const double startToMiddleLength = startToMiddleTangentialVector.norm();
69 const double startToEndLength = startToEndTangentialVector.norm();
70 const double middleToEndLength = middleToEndTangentialVector.norm();
71
72 const double startCos = startToMiddleTangentialVector.cosWith(startToEndTangentialVector);
73 const double middleCos = startToMiddleTangentialVector.cosWith(middleToEndTangentialVector);
74 const double endCos = startToEndTangentialVector.cosWith(middleToEndTangentialVector);
75
76 const double startPhi = acos(startCos);
77 const double middlePhi = acos(middleCos);
78 const double endPhi = acos(endCos);
79
80 const double startToMiddleSigmaPhi = startDriftLengthStd / startToMiddleLength;
81 const double startToEndSigmaPhi = startDriftLengthStd / startToEndLength;
82
83 const double middleToStartSigmaPhi = middleDriftLengthStd / startToMiddleLength;
84 const double middleToEndSigmaPhi = middleDriftLengthStd / middleToEndLength;
85
86 const double endToStartSigmaPhi = endDriftLengthStd / startToEndLength;
87 const double endToMiddleSigmaPhi = endDriftLengthStd / middleToEndLength;
88
89 const double startPhiSigma = hypot3(startToEndSigmaPhi - startToMiddleSigmaPhi,
90 middleToStartSigmaPhi,
91 endToStartSigmaPhi);
92
93 const double middlePhiSigma = hypot3(startToMiddleSigmaPhi,
94 middleToStartSigmaPhi + middleToEndSigmaPhi,
95 endToMiddleSigmaPhi);
96
97 const double endPhiSigma = hypot3(startToEndSigmaPhi,
98 middleToEndSigmaPhi,
99 endToStartSigmaPhi - endToMiddleSigmaPhi);
100
101 const double startPhiPull = startPhi / startPhiSigma;
102 const double middlePhiPull = middlePhi / middlePhiSigma;
103 const double endPhiPull = endPhi / endPhiSigma;
104
105 if (startPhiPull < m_param_phiPullCut and
106 middlePhiPull < m_param_phiPullCut and
107 endPhiPull < m_param_phiPullCut) {
108
109 // Introducing a mini penalty to distiguish straighter facets as better
110 // This is important since otherwise the ordering of the wires takes precedence and biases
111 // for counterclockwise tracks.
112 double miniPenalty =
113 std::fmin(0.1, (startPhiPull + middlePhiPull + endPhiPull) / m_param_phiPullCut / 1000);
114
115 // Good facet contains three points of the track
116 // the amount carried by this facet can the adjusted more realistically
117 return 3 - miniPenalty;
118 } else {
119 return NAN;
120 }
121}
void adjustFitLine() const
Adjusts the contained fit line to touch such that it touches the first and third hit.
Definition: CDCFacet.cc:61
ParameterLine2D getStartToEndLine() const
Getter for the tangential line from the first to the third hit.
Definition: CDCFacet.cc:94
ParameterLine2D getStartToMiddleLine() const
Getter for the tangential line from the first to the second hit.
Definition: CDCFacet.cc:86
ParameterLine2D getMiddleToEndLine() const
Getter for the tangential line from the second to the third hit.
Definition: CDCFacet.cc:102
CDCRLWireHit & getStartRLWireHit()
Getter for the first oriented wire hit.
CDCRLWireHit & getEndRLWireHit()
Getter for the third oriented wire hit.
CDCRLWireHit & getMiddleRLWireHit()
Getter for the second oriented wire hit.
Class representing an oriented hit wire including a hypotheses whether the causing track passes left ...
Definition: CDCRLWireHit.h:41
double getRefDriftLengthVariance() const
Getter for the variance of the drift length at the reference position of the wire.
Definition: CDCRLWireHit.h:222
A line with a support point and tangential vector.
const Vector2D & tangential() const
Gives the tangential vector of the line.
A two dimensional vector which is equipped with functions for correct handeling of orientation relat...
Definition: Vector2D.h:32
double cosWith(const Vector2D &rhs) const
Definition: Vector2D.h:187
double norm() const
Calculates the length of the vector.
Definition: Vector2D.h:175
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28

◆ operator()() [2/4]

◆ operator()() [3/4]

Weight operator() ( const Object obj)
inherited

Function to evaluate the object.

Base implementation accepts all objects, except nullptr.

Parameters
objThe object to be accepted or rejected.
Returns
A finit float value if the object is accepted. NAN if the object is rejected. Nullptr is always rejected.

Definition at line 58 of file Filter.icc.h.

59 {
60 return obj ? operator()(*obj) : NAN;
61 }
virtual Weight operator()(const Object &obj)
Function to evaluate the object.
Definition: Filter.icc.h:52

◆ operator()() [4/4]

std::vector< float > operator() ( const std::vector< Object * > &  objs)
virtualinherited

Function to evaluate a vector of objects Base implementation applies the function to each object.

Can be optimized for MVA filters

Parameters
objsA vector of pointers to objects
Returns
A vector of float or NAN values. See above

Definition at line 64 of file Filter.icc.h.

65 {
66 std::vector<float> out;
67 for (const auto& obj : objs) {
68 out.push_back(operator()(obj));
69 }
70 return out;
71 }

◆ terminate()

void terminate ( )
overridevirtualinherited

Receive and dispatch Signal for termination of the event processing.

Reimplemented from ProcessingSignalListener.

Reimplemented in StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::HyperHough >, StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::QuadraticLegendre >, and StereoHitTrackQuadTreeMatcher< Belle2::TrackFindingCDC::Z0TanLambdaLegendre >.

Definition at line 47 of file CompositeProcessingSignalListener.cc.

48{
50 psl->terminate();
51 }
53}
virtual void terminate()
Receive Signal for termination of the event processing.

Member Data Documentation

◆ m_initialized

bool m_initialized = false
privateinherited

Flag to keep track whether initialization happend before.

Definition at line 52 of file ProcessingSignalListener.h.

◆ m_initializedAs

std::string m_initializedAs
privateinherited

Name of the type during initialisation.

Definition at line 58 of file ProcessingSignalListener.h.

◆ m_param_phiPullCut

double m_param_phiPullCut
private

Memory for the pull cu.

Definition at line 51 of file RealisticFacetFilter.h.

◆ m_subordinaryProcessingSignalListeners

std::vector<ProcessingSignalListener*> m_subordinaryProcessingSignalListeners
privateinherited

References to subordinary signal processing listener contained in this findlet.

Definition at line 52 of file CompositeProcessingSignalListener.h.

◆ m_terminated

bool m_terminated = false
privateinherited

Flag to keep track whether termination happend before.

Definition at line 55 of file ProcessingSignalListener.h.


The documentation for this class was generated from the following files: