20 FTSCATrack() : fChi2(0), fNDF(-5), fIHits(), fLevel(0) { fIHits.reserve(PndFTSCAParameters::MaxNStations); };
22 int NHits()
const {
return fIHits.size(); }
24 vector<TES> &
IHits() {
return fIHits; }
25 const vector<TES> &
IHits()
const {
return fIHits; }
29 fIHits.erase(
IHits().begin() + iH);
39 fIHits.push_back(
TES(iS, iH));
58 fIHits.insert(
IHits().begin(), hits.begin(), hits.end());
62 fNDF += 2 * hits.size();
66 float &
Chi2() {
return fChi2; }
67 const float &
Chi2()
const {
return fChi2; }
68 char &
NDF() {
return fNDF; }
69 const char &
NDF()
const {
return fNDF; }
70 char &
Level() {
return fLevel; }
71 const char &
Level()
const {
return fLevel; }
82 return (a->fIHits.size() > b->fIHits.size()) || ((a->fIHits.size() == b->fIHits.size()) && (a->fChi2 < b->fChi2));
88 for (
unsigned int iH = 0; iH < fIHits.size(); ++iH) {
89 const FTSCAHit &h = hits[fIHits[iH]];
98 for (
unsigned int iH = 0; iH < fIHits.size(); ++iH) {
126 const FTSCAHit &
Hit(
int iH,
int iT)
const {
return (*fHitsRef)[(*this)[iT].IHits()[iH]]; }
139 void SortTracksByZ();
150 for (
int i = this->size() - 1;
i > -1;
i--) {
151 for (
int j = 1; j <
i + 1; j++) {
160 float diff12 = abs((*(this->HitsRef()))[t1.
IHits()[0]].X0() - 467.84);
161 float diff22 = abs((*(this->HitsRef()))[t2.
IHits()[0]].X0() - 467.84);
167 tempTrack = (*this)[j - 1];
168 (*this)[j - 1] = (*this)[j];
169 (*this)[j] = tempTrack;
178 vector<FTSCATrack *> vptrackcandidate;
179 vptrackcandidate.resize(size());
181 for (
unsigned int iC = 0; iC < size(); ++iC) {
182 vptrackcandidate[iC] = &((*this)[iC]);
187 for (vector<FTSCATrack *>::iterator trIt = vptrackcandidate.begin(); trIt != vptrackcandidate.end(); ++trIt) {
193 #ifndef SAVE_ALL_CANDIDATES_DBG 197 tracks.push_back(*tr);
204 vector<TESV> iHits(
NHits());
205 const int NTHits = iHits.size();
207 for (
unsigned short ihit = 0; ihit < NTHits; ihit++) {
209 iHits[ihit] =
IHits()[ihit];
225 param.SetQP(outerParam.
QP());
232 fChi2 = paramS.
Chi2();
240 vector<TESV> iHits(
NHits());
241 const int NTHits = iHits.size();
243 for (
unsigned short ihit = 0; ihit < NTHits; ihit++) {
244 iHits[ihit] =
IHits()[ihit];
255 fChi2 = paramS.
Chi2();
const FTSCAHit & Hit(int iH, int iT) const
const char & Level() const
void SetChi2(const float_v &v)
const PndFTSCATrackParam Fit2Times(const FTSCAHits &hits, const FTSCATarget &target0, const PndFTSCAParam &caParam, bool dir)
void AddHitsToTheBeginning(vector< TES > &hits)
FTSCATracks(FTSCAHits *hits)
float_m FitUseParam(const PndFTSCAParam &caParam, const FTSCAHits &hits, PndFTSCATrackParamVector ¶m, const vector< TESV > &iHits, const FTSCATarget &target, bool dir, bool usePar=false, const float_m &mask=float_m(true))
int NUsedHits(const FTSCAHits &hits) const
const PndFTSCATrackParam Fit(const FTSCAHits &hits, const FTSCATarget &target, const PndFTSCAParam &caParam, bool dir=true, bool usePar=false, PndFTSCATrackParam outerParam=PndFTSCATrackParam())
const vector< TES > & IHits() const
float_m Fit(const PndFTSCAParam &caParam, const FTSCAHits &hits, PndFTSCATrackParamVector ¶m, const vector< TESV > &iHits, const FTSCATarget &target, bool dir, const float_m &active=float_m(true))
void AddHit(char iS, int iH)
void AddHit(const TES &iH)
static bool Compare(const FTSCATrack *a, const FTSCATrack *b)
void SetHitsAsUsed(FTSCAHits &hits) const
const float & Chi2() const
void SelectAndSaveTracks(FTSCATracks &tracks)