Belle II Software development
SimpleFacetRelationFilter.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/trackFindingCDC/filters/facetRelation/SimpleFacetRelationFilter.h>
9
10#include <tracking/trackingUtilities/eventdata/hits/CDCFacet.h>
11#include <tracking/trackingUtilities/eventdata/hits/CDCWireHit.h>
12
13#include <tracking/trackingUtilities/utilities/StringManipulation.h>
14
15#include <framework/core/ModuleParamList.templateDetails.h>
16#include <framework/geometry/VectorUtil.h>
17
18using namespace Belle2;
19using namespace TrackFindingCDC;
20using namespace TrackingUtilities;
21
26
28 : m_param_deviationCosCut(deviationCosCut)
29{
30}
31
33 const std::string& prefix)
34{
35 Super::exposeParameters(moduleParamList, prefix);
36 moduleParamList->addParameter(prefixed(prefix, "deviationCosCut"),
38 "Acceptable deviation cosine in the angle of adjacent tangents "
39 "to the drift circles.",
41}
42
44 const CDCFacet& toFacet)
45{
46 if (fromFacet.getStartWireHit().isOnWire(toFacet.getEndWire())) return NAN;
47
48 // the compatibility of the short legs or all?
49 // start end to continuation middle end
50 // start middle to continuation start end
51
52 const ParameterLine2D& fromStartToMiddle = fromFacet.getStartToMiddleLine();
53 const ParameterLine2D& fromStartToEnd = fromFacet.getStartToEndLine();
54
55 const ParameterLine2D& toStartToEnd = toFacet.getStartToEndLine();
56 const ParameterLine2D& toMiddleToEnd = toFacet.getMiddleToEndLine();
57
58 const double fromMiddleCos = VectorUtil::CosPhi(fromStartToMiddle.tangential(), toStartToEnd.tangential());
59 const double toMiddleCos = VectorUtil::CosPhi(fromStartToEnd.tangential(), toMiddleToEnd.tangential());
60
61 // check both
62 if (fromMiddleCos > m_param_deviationCosCut and toMiddleCos > m_param_deviationCosCut) {
63 // the weight must be -2 because the overlap of the facets is two points
64 // so the amount of two facets is 4 points hence the cellular automat
65 // must calculate 3 + (-2) + 3 = 4 as cellstate
66 // this can of course be adjusted for a more realistic information measure
67 // ( together with the facet creator filter)
68 return -2;
69 } else {
70 return NAN;
71 }
72}
The Module parameter list class.
SimpleFacetRelationFilter()
Constructor using default direction of flight deviation cut off.
TrackingUtilities::Weight operator()(const TrackingUtilities::CDCFacet &fromFacet, const TrackingUtilities::CDCFacet &toFacet) final
Main filter method returning the weight of the neighborhood relation.
void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix) override
Expose the set of parameters of the filter to the module parameter list.
double m_param_deviationCosCut
Memory for the used direction of flight deviation.
Class representing a triple of neighboring oriented wire with additional trajectory information.
Definition CDCFacet.h:33
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
const CDC::CDCWire & getEndWire() const
Getter for the wire the third oriented wire hit is based on.
const CDCWireHit & getStartWireHit() const
Getter for the hit wire of the first oriented wire hit.
bool isOnWire(const CDC::CDCWire &wire) const
Checks if the wire hit is based on the given wire.
Definition CDCWireHit.h:243
virtual void exposeParameters(ModuleParamList *moduleParamList, const std::string &prefix)
Expose the set of parameters of the filter to the module parameter list.
A line with a support point and tangential vector.
const ROOT::Math::XYVector & tangential() const
Gives the tangential vector of the line.
void addParameter(const std::string &name, T &paramVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module list.
Abstract base class for different kinds of events.