9 #include "trg/cdc/modules/ndFinder/CDCTriggerNDFinderModule.h"
18 setDescription(
"CDC Trigger NDFinder Module.\n"
19 "Implements a 3D Hough transformation for \n"
20 "3D track finding in omega, phi, theta. \n"
21 "Uses trained hit patterns for axial and \n"
22 "stereo TS and a density based clustering \n"
24 setPropertyFlags(c_ParallelProcessingCertified);
25 addParam(
"TrackSegmentHitsName", m_TrackSegmentHitsName,
26 "The name of the StoreArray of the CDCTriggerSegmentHits.",
27 string(
"CDCTriggerSegmentHits"));
28 addParam(
"NDFinderTracksName", m_NDFinderTracksName,
29 "The name of the StoreArray where the tracks found by this NDFinder Module are stored.",
30 string(
"CDCTrigger3DFinderTracks"));
31 addParam(
"minhits", m_minhits,
32 "Cluster pruning: Minimum number of hits related to a cluster "
33 "for the cluster to be considered as a track.",
35 addParam(
"minhits_axial", m_minhits_axial,
36 "Cluster pruning: Minimum number of axial hits related to a cluster "
37 "for the cluster to be considered as a track.",
39 addParam(
"minweight", m_minweight,
40 "Clustering: Minimum weight of a cell in Hough space "
41 "for the cell to be considered as a cluster member.",
43 addParam(
"minpts", m_minpts,
44 "Clustering: Minimum number of neighbor cells with minweight "
45 "for a cell to be considered a core cell.",
47 addParam(
"thresh", m_thresh,
48 "Track estimation: Minimum weight of a cluster member cell "
49 "relative to the peak weight of the cluster "
50 "for the cell to enter in the weighted mean "
51 "track parameter value estimation.",
53 addParam(
"minassign", m_minassign,
54 "Hit to cluster assignment limit: "
55 "Minimum relatively larger weight contribution to the largest cluster.",
57 addParam(
"diagonal", m_diagonal,
58 "Clustering: consider diagonal neighbors.",
60 addParam(
"mincells", m_mincells,
61 "Clustering: minimum number of cells for a cluster.",
63 addParam(
"verbose", m_verbose,
64 "Print Hough planes and verbose output. ",
66 addParam(
"axialFile", m_axialFile,
67 "File name of the axial hit patterns. ",
68 string(
"data/trg/cdc/ndFinderAxialShallow.txt.gz"));
69 addParam(
"stereoFile", m_stereoFile,
70 "File name of the stereo hit patterns. ",
71 string(
"data/trg/cdc/ndFinderStereoShallow.txt.gz"));
74 CDCTriggerNDFinderModule::~CDCTriggerNDFinderModule()
78 void CDCTriggerNDFinderModule::initialize()
80 B2DEBUG(11,
"CDCTriggerNDFinderModule initialize, m_minweight=" << m_minweight <<
81 ", m_minpts=" << m_minpts <<
", m_diagonal=" << m_diagonal <<
82 ", m_minhits=" << m_minhits <<
", m_minhits_axial=" << m_minhits_axial <<
83 ", m_thresh= " << m_thresh <<
84 ", m_minassign=" << m_minassign <<
85 ", m_mincells=" << m_mincells <<
86 ", m_verbose= " << m_verbose);
87 m_TrackSegmentHits.isRequired(m_TrackSegmentHitsName);
88 m_NDFinderTracks.registerInDataStore(m_NDFinderTracksName);
89 m_NDFinderTracks.registerRelationTo(m_TrackSegmentHits);
90 m_NDFinder.init(m_minweight, m_minpts, m_diagonal, m_minhits,
92 m_thresh, m_minassign, m_mincells, m_verbose,
93 m_axialFile, m_stereoFile);
94 m_NDFinder.printParams();
97 void CDCTriggerNDFinderModule::beginRun()
101 void CDCTriggerNDFinderModule::event()
105 m_NDFinder.addHit(hit.getSegmentID(), hit.getPriorityPosition());
107 m_NDFinder.findTracks();
109 vector<NDFinderTrack>* resultTracks = m_NDFinder.getFinderTracks();
112 m_NDFinderTracks.appendNew(trackND.getPhi0(), trackND.getOmega(),
113 0., 0., trackND.getCot(), 0.);
114 vector<unsigned short> relHits = trackND.get_relHits();
115 for (ulong i = 0; i < relHits.size(); i++) {
116 NDFinderTrack->addRelationTo(m_TrackSegmentHits[relHits[i]]);
121 void CDCTriggerNDFinderModule::endRun()
125 void CDCTriggerNDFinderModule::terminate()
127 m_NDFinder.printParams();
CDC Trigger NDFinder Module.
Combination of several CDCHits to a track segment hit for the trigger.
Track created by the CDC trigger.
Store track parameters of found tracks.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.