Belle II Software  release-05-01-25
MCSegmentPairRelationFilter.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/filters/segmentPairRelation/MCSegmentPairRelationFilter.h>
11 
12 #include <tracking/trackFindingCDC/eventdata/tracks/CDCSegmentPair.h>
13 #include <tracking/trackFindingCDC/eventdata/segments/CDCSegment2D.h>
14 
15 #include <tracking/trackFindingCDC/filters/base/MCSymmetricFilter.icc.h>
16 
17 using namespace Belle2;
18 using namespace TrackFindingCDC;
19 
21 
23  : Super(allowReverse)
24  , m_mcSegmentPairFilter(allowReverse)
25 {
27 }
28 
30  const std::string& prefix)
31 {
32  m_mcSegmentPairFilter.exposeParameters(moduleParamList, prefix);
33 }
34 
36 {
39 }
40 
42  const CDCSegmentPair& toSegmentPair)
43 {
44  Weight mcFromPairWeight = m_mcSegmentPairFilter(fromSegmentPair);
45  Weight mcToPairWeight = m_mcSegmentPairFilter(toSegmentPair);
46 
47  ESign fromFBInfo = sign(mcFromPairWeight);
48  ESign toFBInfo = sign(mcToPairWeight);
49 
50  if (isValid(fromFBInfo) and isValid(toFBInfo) and fromFBInfo == toFBInfo) {
51  ESign commonFBInfo = fromFBInfo;
52 
53  size_t fromOverlapSize = fromSegmentPair.getToSegment()->size();
54  size_t fromSize = fromOverlapSize + fromSegmentPair.getFromSegment()->size();
55  Weight fromWeight = fromSegmentPair.getAutomatonCell().getCellWeight();
56 
57  size_t toOverlapSize = toSegmentPair.getFromSegment()->size();
58  size_t toSize = toOverlapSize + toSegmentPair.getToSegment()->size();
59  Weight toWeight = toSegmentPair.getAutomatonCell().getCellWeight();
60  double overlapWeight =
61  (fromWeight * fromOverlapSize / fromSize + toWeight * toOverlapSize / toSize) / 2.0;
62 
63  if (commonFBInfo < 0 and Super::getAllowReverse()) {
64  return -std::fabs(overlapWeight);
65  } else if (commonFBInfo > 0) {
66  return std::fabs(overlapWeight);
67  } else {
68  return NAN;
69  }
70  } else {
71  return NAN;
72  }
73 }
Belle2::TrackFindingCDC::MCSymmetric::getAllowReverse
bool getAllowReverse() const
Getter for the allow reverse parameter.
Definition: MCSymmetricFilter.icc.h:85
Belle2::TrackFindingCDC::MCSymmetric< BaseSegmentPairRelationFilter >::initialize
void initialize() override
Initialize the before event processing.
Definition: MCSymmetricFilter.icc.h:59
Belle2::TrackFindingCDC::CDCSegmentPair
Class representing a pair of one reconstructed axial segement and one stereo segment in adjacent supe...
Definition: CDCSegmentPair.h:44
Belle2::TrackFindingCDC::MCSegmentPairRelationFilter::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the parameters to a module.
Definition: MCSegmentPairRelationFilter.cc:29
Belle2::TrackFindingCDC::MCSymmetric< BaseSegmentPairRelationFilter >
Belle2::TrackFindingCDC::ESignUtil::ESign
ESign
Enumeration for the distinct sign values of floating point variables.
Definition: ESign.h:37
Belle2::TrackFindingCDC::CompositeProcessingSignalListener::addProcessingSignalListener
void addProcessingSignalListener(ProcessingSignalListener *psl)
Register a processing signal listener to be notified.
Definition: CompositeProcessingSignalListener.cc:57
Belle2::TrackFindingCDC::CDCSegmentPair::getAutomatonCell
AutomatonCell & getAutomatonCell() const
Mutable getter for the automaton cell.
Definition: CDCSegmentPair.h:243
Belle2::TrackFindingCDC::AutomatonCell::getCellWeight
Weight getCellWeight() const
Getter for the cell weight.
Definition: AutomatonCell.h:126
Belle2::TrackFindingCDC::MCSegmentPairRelationFilter::initialize
void initialize() final
Initialize the before event processing.
Definition: MCSegmentPairRelationFilter.cc:35
Belle2::TrackFindingCDC::CDCSegmentPair::getToSegment
const CDCSegment2D * getToSegment() const
Getter for the to segment.
Definition: CDCSegmentPair.h:132
Belle2::TrackFindingCDC::MCSegmentPairFilter::exposeParameters
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) final
Expose the set of parameters of the filter to the module parameter list.
Definition: MCSegmentPairFilter.cc:31
Belle2::TrackFindingCDC::MCSegmentPairRelationFilter::setAllowReverse
void setAllowReverse(bool allowReverse) final
Setter for the allow reverse parameter.
Definition: MCSegmentPairRelationFilter.h:58
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::TrackFindingCDC::MCSegmentPairRelationFilter::MCSegmentPairRelationFilter
MCSegmentPairRelationFilter(bool allowReverse=true)
Constructor setting to default reversal symmetry.
Definition: MCSegmentPairRelationFilter.cc:22
Belle2::ModuleParamList
The Module parameter list class.
Definition: ModuleParamList.h:46
Belle2::TrackFindingCDC::CDCSegmentPair::getFromSegment
const CDCSegment2D * getFromSegment() const
Getter for the from segment.
Definition: CDCSegmentPair.h:120
Belle2::TrackFindingCDC::MCSegmentPairRelationFilter::m_mcSegmentPairFilter
MCSegmentPairFilter m_mcSegmentPairFilter
Instance of the Monte Carlo axial stereo segment filter for rejection of false cells.
Definition: MCSegmentPairRelationFilter.h:65
Belle2::TrackFindingCDC::MCSegmentPairRelationFilter::operator()
Weight operator()(const CDCSegmentPair &fromSegmentPair, const CDCSegmentPair &toSegmentPair) final
Main filter method returning the weight of the neighborhood relation.
Definition: MCSegmentPairRelationFilter.cc:41