/[PAMELA software]/DarthVader/TrackerLevel2/src/TrkLevel2.cpp
ViewVC logotype

Diff of /DarthVader/TrackerLevel2/src/TrkLevel2.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by pam-fi, Thu Jun 1 09:03:09 2006 UTC revision 1.4 by mocchiut, Fri Jun 30 09:22:04 2006 UTC
# Line 18  extern "C" {     Line 18  extern "C" {    
18  //  //
19  //--------------------------------------  //--------------------------------------
20  TrkTrack::TrkTrack(){  TrkTrack::TrkTrack(){
21      image = 0;      seqno = -1;
22        image = -1;
23      chi2  = 0;      chi2  = 0;
24      for(int it1=0;it1<5;it1++){      for(int it1=0;it1<5;it1++){
25          al[it1] = 0;          al[it1] = 0;
# Line 47  TrkTrack::TrkTrack(){ Line 48  TrkTrack::TrkTrack(){
48  //  //
49  //--------------------------------------  //--------------------------------------
50  TrkTrack::TrkTrack(const TrkTrack& t){  TrkTrack::TrkTrack(const TrkTrack& t){
51        seqno = t.seqno;
52      image = t.image;      image = t.image;
53      chi2  = t.chi2;      chi2  = t.chi2;
54      for(int it1=0;it1<5;it1++){      for(int it1=0;it1<5;it1++){
# Line 238  TrkLevel2::TrkLevel2(){ Line 240  TrkLevel2::TrkLevel2(){
240      Track    = new TClonesArray("TrkTrack");      Track    = new TClonesArray("TrkTrack");
241      SingletX = new TClonesArray("TrkSinglet");      SingletX = new TClonesArray("TrkSinglet");
242      SingletY = new TClonesArray("TrkSinglet");      SingletY = new TClonesArray("TrkSinglet");
243    //    Track    = 0;
244    //    Singlet = 0;
245    //    SingletY = 0;
246  }  }
247  //--------------------------------------  //--------------------------------------
248  //  //
# Line 266  void TrkLevel2::Dump(){ Line 271  void TrkLevel2::Dump(){
271   * Fills a TrkLevel2 object with values from a struct cTrkLevel2 (to get data from F77 common).   * Fills a TrkLevel2 object with values from a struct cTrkLevel2 (to get data from F77 common).
272   */   */
273  void TrkLevel2::FillCommonVar(cTrkLevel2 *l2){  void TrkLevel2::FillCommonVar(cTrkLevel2 *l2){
274        //
275    //    Track    = new TClonesArray("TrkTrack");
276    //    SingletX = new TClonesArray("TrkSinglet");
277    //    SingletY = new TClonesArray("TrkSinglet");
278  //  temporary objects:  //  temporary objects:
279      TrkSinglet* t_singlet = new TrkSinglet();      TrkSinglet* t_singlet = new TrkSinglet();
280      TrkTrack*   t_track   = new TrkTrack();      TrkTrack*   t_track   = new TrkTrack();
# Line 277  void TrkLevel2::FillCommonVar(cTrkLevel2 Line 286  void TrkLevel2::FillCommonVar(cTrkLevel2
286  //  *** TRACKS ***  //  *** TRACKS ***
287      TClonesArray &t = *Track;      TClonesArray &t = *Track;
288      for(int i=0; i<l2->ntrk; i++){      for(int i=0; i<l2->ntrk; i++){
289            t_track->seqno = i;
290          t_track->image = l2->image[i]-1;          t_track->image = l2->image[i]-1;
291    //      cout << "track "<<i<<t_track->seqno << t_track->image<<endl;
292          t_track->chi2  = l2->chi2_nt[i];          t_track->chi2  = l2->chi2_nt[i];
293          for(int it1=0;it1<5;it1++){          for(int it1=0;it1<5;it1++){
294              t_track->al[it1] = l2->al_nt[i][it1];              t_track->al[it1] = l2->al_nt[i][it1];
# Line 345  void TrkLevel2::Clear(){ Line 356  void TrkLevel2::Clear(){
356   * This method is overridden by PamLevel2::GetTracks(), where calorimeter and TOF information is used.   * This method is overridden by PamLevel2::GetTracks(), where calorimeter and TOF information is used.
357   */   */
358  TClonesArray *TrkLevel2::GetTracks(){  TClonesArray *TrkLevel2::GetTracks(){
359        TClonesArray *sorted = GetTracks_NFitSorted();
360        return sorted;
361    };
362    
363    TClonesArray *TrkLevel2::GetTracks_Chi2Sorted(){
364    
365      TClonesArray *sorted = new TClonesArray("TrkTrack");      TClonesArray *sorted = new TClonesArray("TrkTrack");
366      TClonesArray &t = *Track;      TClonesArray &t = *Track;
# Line 373  TClonesArray *TrkLevel2::GetTracks(){ Line 389  TClonesArray *TrkLevel2::GetTracks(){
389      }      }
390      return sorted;      return sorted;
391  }  }
392    TClonesArray *TrkLevel2::GetTracks_NFitSorted(){
393    
394        TClonesArray *sorted = new TClonesArray("TrkTrack");
395        TClonesArray &t = *Track;
396        TClonesArray &ts = *sorted;
397        int N=this->ntrk();
398        vector<int> m(N); for(int i=0; i<N; i++)m[i]=1;
399    
400        int indo=0;
401        int indi=0;
402        while(N != 0){
403            int nfit =0;
404            float chi2ref=1000000;
405            // first loop to search maximum num. of fit points
406            for(int i=0; i<this->ntrk(); i++){
407                if( ((TrkTrack *)t[i])->GetNtot() >= nfit && m[i]==1){
408                    nfit =    ((TrkTrack *)t[i])->GetNtot();
409    //              cout << "1** "<<i<< " " << nfit<<endl;
410                }
411            }
412            //second loop to search minimum chi2 among selected
413            for(int i=0; i<this->ntrk(); i++){
414                if(    ((TrkTrack *)t[i])->chi2 < chi2ref
415                    && ((TrkTrack *)t[i])->GetNtot()== nfit
416                    && m[i]==1){
417                    chi2ref = ((TrkTrack *)t[i])->chi2;
418                    indi = i;
419    //              cout << "2** "<<i<< " " << nfit <<" "<<chi2ref<<endl;
420                }
421            }
422            if( ((TrkTrack *)t[indi])->HasImage() ){
423                m[((TrkTrack *)t[indi])->image] = 0;
424                N--;
425    
426    //          Int_t nfiti=((TrkTrack *)t[((TrkTrack *)t[indi])->image  ])->GetNtot();
427    //          Float_t chi2i=((TrkTrack *)t[((TrkTrack *)t[indi])->image  ])->chi2;
428                    
429    //          cout << "i** "<< ((TrkTrack *)t[indi])->image << " " << nfiti <<" "<<chi2i<<endl;
430            }
431            new(ts[indo]) TrkTrack(*(TrkTrack*)t[indi]);
432            m[indi] = 0;
433            N--;    
434            indo++;
435        }
436        return sorted;
437    }
438  //--------------------------------------  //--------------------------------------
439  //  //
440  //  //

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.23