Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DTrackHitSelector.cc
Go to the documentation of this file.
1 // $Id$
2 //
3 // File: DTrackHitSelector.cc
4 // Created: Thu Feb 5 13:34:58 EST 2009
5 // Creator: davidl (on Darwin harriet.jlab.org 9.6.0 i386)
6 //
7 
8 #include "DTrackHitSelector.h"
9 
10 
11 // The methods here are just convenience methods that delegate
12 // to the virtual methods that get implemented in the subclass.
13 
14 // Note that we sort the hits in the same way as is done in
15 // DTrack_factory just so it is easier to compare the lists
16 // of hits from that and other factories using this hit
17 // selector. These routines are defined in DTrack_factory.cc
18 extern bool CDCSortByRincreasing(const DCDCTrackHit* const &hit1, const DCDCTrackHit* const &hit2);
19 extern bool FDCSortByZincreasing(const DFDCPseudo* const &hit1, const DFDCPseudo* const &hit2);
20 
21 //---------------------
22 // DTrackHitSelector (Constructor)
23 //---------------------
25 {
26  this->loop = loop;
27 }
28 
29 //---------------------
30 // GetCDCHits
31 //---------------------
32 void DTrackHitSelector::GetCDCHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector<const DCDCTrackHit*> &cdchits_in, DTrackFitter *fitter,int N) const
33 {
34  /// Get all hits from the CDC and add them to the specified DTrackFitter object
35 
36  vector<const DCDCTrackHit*> cdchits_out;
37  GetCDCHits(fit_type, rt, cdchits_in, cdchits_out,N);
38  sort(cdchits_out.begin(), cdchits_out.end(), CDCSortByRincreasing);
39  for(unsigned int i=0; i<cdchits_out.size(); i++)fitter->AddHit(cdchits_out[i]);
40 }
41 
42 //---------------------
43 // GetCDCHits
44 //---------------------
45 void DTrackHitSelector::GetCDCHits(double Bz, double q,const vector<DTrackFitter::Extrapolation_t> &extrapolations, const vector<const DCDCTrackHit*> &cdchits_in, DTrackFitter *fitter,int N) const
46 {
47  /// Get all hits from the CDC and add them to the specified DTrackFitter object
48 
49  vector<const DCDCTrackHit*> cdchits_out;
50  GetCDCHits(Bz,q,extrapolations, cdchits_in, cdchits_out,N);
51  sort(cdchits_out.begin(), cdchits_out.end(), CDCSortByRincreasing);
52  for(unsigned int i=0; i<cdchits_out.size(); i++)fitter->AddHit(cdchits_out[i]);
53 }
54 
55 //---------------------
56 // GetFDCHits
57 //---------------------
58 void DTrackHitSelector::GetFDCHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector<const DFDCPseudo*> &fdchits_in, DTrackFitter *fitter,int N) const
59 {
60  /// Get all hits from the FDC and add them to the specified DTrackFitter object
61 
62  vector<const DFDCPseudo*> fdchits_out;
63  GetFDCHits(fit_type, rt, fdchits_in, fdchits_out,N);
64  sort(fdchits_out.begin(), fdchits_out.end(), FDCSortByZincreasing);
65  for(unsigned int i=0; i<fdchits_out.size(); i++)fitter->AddHit(fdchits_out[i]);
66 }
67 //---------------------
68 // GetFDCHits
69 //---------------------
70 void DTrackHitSelector::GetFDCHits(double Bz,double q,const vector<DTrackFitter::Extrapolation_t> &extrapolations, const vector<const DFDCPseudo*> &fdchits_in, DTrackFitter *fitter,int N) const
71 {
72  /// Get all hits from the FDC and add them to the specified DTrackFitter object
73 
74  vector<const DFDCPseudo*> fdchits_out;
75  GetFDCHits(Bz,q,extrapolations, fdchits_in, fdchits_out,N);
76  sort(fdchits_out.begin(), fdchits_out.end(), FDCSortByZincreasing);
77  for(unsigned int i=0; i<fdchits_out.size(); i++)fitter->AddHit(fdchits_out[i]);
78 }
79 
80 //---------------------
81 // GetAllHits
82 //---------------------
83 void DTrackHitSelector::GetAllHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector<const DCDCTrackHit*> &cdchits_in, const vector<const DFDCPseudo*> &fdchits_in, DTrackFitter *fitter,int N) const
84 {
85 
86  /// Get all hits from both CDC and FDC and add them to the specified DTrackFitter object
87  if (cdchits_in.size()>0) GetCDCHits(fit_type, rt, cdchits_in, fitter, N);
88  if (fdchits_in.size()>0) GetFDCHits(fit_type, rt, fdchits_in, fitter, N);
89 }
90 
91 
The DTrackFitter class is a base class for different charged track fitting algorithms. It does not actually fit the track itself, but provides the interface and some common support features most algorthims will need to implement.
Definition: DTrackFitter.h:61
class DFDCPseudo: definition for a reconstructed point in the FDC
Definition: DFDCPseudo.h:74
virtual void GetCDCHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector< const DCDCTrackHit * > &cdchits_in, vector< const DCDCTrackHit * > &cdchits_out, int N=20) const =0
bool FDCSortByZincreasing(DTrackCandidate_factory_FDC::DFDCTrkHit *const &hit1, DTrackCandidate_factory_FDC::DFDCTrkHit *const &hit2)
void AddHit(const DCDCTrackHit *cdchit)
const DTrackFitter * fitter
virtual void GetFDCHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector< const DFDCPseudo * > &fdchits_in, vector< const DFDCPseudo * > &fdchits_out, int N=20) const =0
bool CDCSortByRincreasing(const DCDCTrackHit *const &hit1, const DCDCTrackHit *const &hit2)
void GetAllHits(fit_type_t fit_type, const DReferenceTrajectory *rt, const vector< const DCDCTrackHit * > &cdchits_in, const vector< const DFDCPseudo * > &fdchits_in, DTrackFitter *fitter, int N=20) const