--- DarthVader/TrackerLevel2/src/TrkLevel2.cpp 2006/06/01 09:03:09 1.2 +++ DarthVader/TrackerLevel2/src/TrkLevel2.cpp 2006/06/30 09:22:04 1.4 @@ -18,7 +18,8 @@ // //-------------------------------------- TrkTrack::TrkTrack(){ - image = 0; + seqno = -1; + image = -1; chi2 = 0; for(int it1=0;it1<5;it1++){ al[it1] = 0; @@ -47,6 +48,7 @@ // //-------------------------------------- TrkTrack::TrkTrack(const TrkTrack& t){ + seqno = t.seqno; image = t.image; chi2 = t.chi2; for(int it1=0;it1<5;it1++){ @@ -238,6 +240,9 @@ Track = new TClonesArray("TrkTrack"); SingletX = new TClonesArray("TrkSinglet"); SingletY = new TClonesArray("TrkSinglet"); +// Track = 0; +// Singlet = 0; +// SingletY = 0; } //-------------------------------------- // @@ -266,6 +271,10 @@ * Fills a TrkLevel2 object with values from a struct cTrkLevel2 (to get data from F77 common). */ void TrkLevel2::FillCommonVar(cTrkLevel2 *l2){ + // +// Track = new TClonesArray("TrkTrack"); +// SingletX = new TClonesArray("TrkSinglet"); +// SingletY = new TClonesArray("TrkSinglet"); // temporary objects: TrkSinglet* t_singlet = new TrkSinglet(); TrkTrack* t_track = new TrkTrack(); @@ -277,7 +286,9 @@ // *** TRACKS *** TClonesArray &t = *Track; for(int i=0; intrk; i++){ + t_track->seqno = i; t_track->image = l2->image[i]-1; +// cout << "track "<seqno << t_track->image<chi2 = l2->chi2_nt[i]; for(int it1=0;it1<5;it1++){ t_track->al[it1] = l2->al_nt[i][it1]; @@ -345,6 +356,11 @@ * This method is overridden by PamLevel2::GetTracks(), where calorimeter and TOF information is used. */ TClonesArray *TrkLevel2::GetTracks(){ + TClonesArray *sorted = GetTracks_NFitSorted(); + return sorted; +}; + +TClonesArray *TrkLevel2::GetTracks_Chi2Sorted(){ TClonesArray *sorted = new TClonesArray("TrkTrack"); TClonesArray &t = *Track; @@ -373,6 +389,52 @@ } return sorted; } +TClonesArray *TrkLevel2::GetTracks_NFitSorted(){ + + TClonesArray *sorted = new TClonesArray("TrkTrack"); + TClonesArray &t = *Track; + TClonesArray &ts = *sorted; + int N=this->ntrk(); + vector m(N); for(int i=0; intrk(); i++){ + if( ((TrkTrack *)t[i])->GetNtot() >= nfit && m[i]==1){ + nfit = ((TrkTrack *)t[i])->GetNtot(); +// cout << "1** "<ntrk(); i++){ + if( ((TrkTrack *)t[i])->chi2 < chi2ref + && ((TrkTrack *)t[i])->GetNtot()== nfit + && m[i]==1){ + chi2ref = ((TrkTrack *)t[i])->chi2; + indi = i; +// cout << "2** "<HasImage() ){ + m[((TrkTrack *)t[indi])->image] = 0; + N--; + +// Int_t nfiti=((TrkTrack *)t[((TrkTrack *)t[indi])->image ])->GetNtot(); +// Float_t chi2i=((TrkTrack *)t[((TrkTrack *)t[indi])->image ])->chi2; + +// cout << "i** "<< ((TrkTrack *)t[indi])->image << " " << nfiti <<" "<