13#include "TrkReco/TFastFinder.h"
14#include "TrkReco/TConformalFinder0.h"
15#include "TrkReco/TMLink.h"
16#include "TrkReco/THistogram.h"
17#include "TrkReco/TMDCUtil.h"
18#include "TrkReco/TTrack.h"
23 _selector.
minPt(0.05);
47 _axialHits.removeAll();
48 _stereoHits.removeAll();
49 HepAListDeleteAll(_axialLinks);
50 HepAListDeleteAll(_stereoLinks);
59 selectHits2(axialHits, stereoHits);
71 hist.
fillX(_axialLinks);
75 unsigned n = clusters.length();
76 for (
unsigned i = 0; i <
n; i++) {
80 if (
t == NULL)
continue;
81#ifdef TRKRECO_DEBUG_DETAIL
82 std::cout <<
"TFastFinder::doit ... 2D track found" << std::endl;
88 findCloseHits(_stereoLinks,
90 if (ts == NULL)
continue;
91#ifdef TRKRECO_DEBUG_DETAIL
92 std::cout <<
"TFastFinder::doit ... 3D track found" << std::endl;
100 _stereoLinks.remove(
t->links());
104 HepAListDeleteAll(clusters);
111 unsigned n = axialHits.length();
112 for (
unsigned i = 0; i <
n; i++) {
117 n = stereoHits.length();
118 for (
unsigned i = 0; i <
n; i++) {
128 selectSimpleSegments(axialHits, _axialHits);
129 selectSimpleSegments(stereoHits, _stereoHits);
134 const TTrack & track)
const {
141 if (track.
links().length() == 0) {
142#ifdef TRKRECO_DEBUG_DETAIL
143 std::cout <<
"TConformalFinder::findCloseHits !!! ";
144 std::cout <<
" no links found in a track : This should not be happened";
145 std::cout << std::endl;
153 float dRcut[11] = {0., 4.3, 0., 6.5, 0., 7.5, 0., 8.0, 0., 9.5, 0.};
157 double xInnerWire = track.
links()[0]->wire()->xyPosition().x();
158 double yInnerWire = track.
links()[0]->wire()->xyPosition().y();
159 unsigned nall = links.length();
160 for (
unsigned j = 0; j < nall; j++) {
164 double Rmag2 = X.mag2();
165 double DR = fabs(sqrt(Rmag2) - fabs(R0));
168 if (DR < dRcut[
w.superLayerId()] &&
169 (xInnerWire*
w.xyPosition().x()+yInnerWire*
w.xyPosition().y())>0.){
181 while (hits.last()) {
189 toBeChecked.append(h);
190 while (toBeChecked.length()) {
192 toBeChecked.remove(a);
193 if (cluster.hasMember(a))
continue;
196 unsigned state = a.
state();
205 for (
unsigned i = 0; i < 6; i++) {
206 if ((ptn >> i) % 2) {
214 if ((cluster.length() < 4) || (cluster.length() > 8)) ok =
false;
217 if (ok) out.append(cluster);
220 hits.remove(cluster);
223#ifdef TRKRECO_DEBUG_DETAIL
224 std::cout <<
"TFastFinder::selectSimpleSegment ... cluster : ok = ";
225 std::cout << ok <<
" : ";
227 for (
unsigned i = 0; i < cluster.length(); i++) {
229#ifdef TRKRECO_DEBUG_DETAIL
230 std::cout << h.
wire()->
name() <<
",";
233 unsigned state = h.
state();
239#ifdef TRKRECO_DEBUG_DETAIL
240 std::cout << std::endl;
const HepPoint3D ORIGIN
Constants.
#define WireHitFastFinder
#define WireHitContinuous
#define WireHitNeighborPattern
const HepPoint3D & center(void) const
returns position of helix center(z = 0.);
TTrack * buildRphi(const AList< TMLink > &) const
builds a r/phi track from TMLinks or from Segments.
const TMSelector & trackSelector(void) const
returns a track selector.
virtual TTrack * buildStereo(TTrack &track, const AList< TMLink > &) const
appends stereo hits to a track.
std::string version(void) const
returns version.
void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.
void clear(void)
clear internal information.
int doit(const AList< TMDCWireHit > &axialHits, const AList< TMDCWireHit > &stereoHits, AList< TTrack > &tracks)
finds tracks.
virtual ~TFastFinder()
Destructor.
TFastFinder()
Constructor.
virtual void dump(const std::string &message=std::string(""), const std::string &prefix=std::string("")) const
dumps debug information.
A class for a histogram used in tracking.
AList< TSegment0 > clusters0(void) const
returns an AList<TSegment0> of clusters.
void fillX(const AList< TMLink > &links)
fills with hits.
unsigned state(void) const
returns state.
const TMDCWire *const wire(void) const
returns a pointer to a TMDCWire.
A class to represent a wire in MDC.
const TMDCWireHit *const hit(void) const
returns a pointer to a TMDCWireHit.
const TMDCWire *const neighbor(unsigned) const
returns a pointer to a neighbor wire.
std::string name(void) const
returns name.
A class to relate TMDCWireHit and TTrack objects.
double maxDistance(void) const
returns max. distance required for stereo hits.
unsigned nSuperLayers(void) const
returns min. # of super layers required.
double maxImpact(void) const
returns max. impact(2D) required.
unsigned nLinks(void) const
returns min. # of hits(TMLinks) requried.
double maxSigma(void) const
returns max. sigma for each TMLink.
unsigned nLinksStereo(void) const
returns min. # of stereo hits(TMLinks) requried.
double minPt(void) const
returns min. pt required.
const AList< TMLink > & links(unsigned mask=0) const
returns a list of masked TMLinks assigned to this track. 'mask' will be applied if mask is not 0.
A class to represent a track in tracking.
const Helix & helix(void) const
returns helix parameter.