--- DarthVader/TrackerLevel2/src/TrkLevel2.cpp 2006/10/27 16:59:20 1.14 +++ DarthVader/TrackerLevel2/src/TrkLevel2.cpp 2007/01/15 12:49:05 1.22 @@ -12,14 +12,17 @@ extern "C" { void dotrack_(int*, double*, double*, double*, double*, int*); void dotrack2_(int*, double*, double*, double*, double*,double*, double*, double*,int*); - int readb_(const char*); +// int readb_(const char*); + int readb_(); void mini2_(int*,int*,int*); + void guess_(); } //-------------------------------------- // // //-------------------------------------- TrkTrack::TrkTrack(){ +// cout << "TrkTrack::TrkTrack()" << endl; seqno = -1; image = -1; chi2 = 0; @@ -29,25 +32,23 @@ for(int it2=0;it2<5;it2++)coval[it1][it2] = 0; }; for(int ip=0;ip<6;ip++){ - xgood[ip] = 0; - ygood[ip] = 0; - xm[ip] = 0; - ym[ip] = 0; - zm[ip] = 0; - resx[ip] = 0; - resy[ip] = 0; - xv[ip] = 0; - yv[ip] = 0; - zv[ip] = 0; - axv[ip] = 0; - ayv[ip] = 0; - dedx_x[ip] = 0; - dedx_y[ip] = 0; -// clx[ip] = 0; -// cly[ip] = 0; - }; - clx = new TRefArray(6,0); - cly = new TRefArray(6,0); + xgood[ip] = 0; + ygood[ip] = 0; + xm[ip] = 0; + ym[ip] = 0; + zm[ip] = 0; + resx[ip] = 0; + resy[ip] = 0; + xv[ip] = 0; + yv[ip] = 0; + zv[ip] = 0; + axv[ip] = 0; + ayv[ip] = 0; + dedx_x[ip] = 0; + dedx_y[ip] = 0; + }; + clx = 0; + cly = 0; }; //-------------------------------------- // @@ -63,31 +64,64 @@ for(int it2=0;it2<5;it2++)coval[it1][it2] = t.coval[it1][it2]; }; for(int ip=0;ip<6;ip++){ - xgood[ip] = t.xgood[ip]; - ygood[ip] = t.ygood[ip]; - xm[ip] = t.xm[ip]; - ym[ip] = t.ym[ip]; - zm[ip] = t.zm[ip]; - resx[ip] = t.resx[ip]; - resy[ip] = t.resy[ip]; - xv[ip] = t.xv[ip]; - yv[ip] = t.yv[ip]; - zv[ip] = t.zv[ip]; - axv[ip] = t.axv[ip]; - ayv[ip] = t.ayv[ip]; - dedx_x[ip] = t.dedx_x[ip]; - dedx_y[ip] = t.dedx_y[ip]; - // clx[ip] = 0;//<<<al[i]; + for(int j=0; j<5; j++) coval[i][j]=track->cov[i][j]; + } + chi2 = track->chi2; + nstep = track->nstep; + for(int i=0; i<6; i++){ + xv[i] = track->xv[i]; + yv[i] = track->yv[i]; + zv[i] = track->zv[i]; + xm[i] = track->xm[i]; + ym[i] = track->ym[i]; + zm[i] = track->zm[i]; + axv[i] = track->axv[i]; + ayv[i] = track->ayv[i]; + } + + +} /** * Tracking method. It calls F77 mini routine. */ void TrkTrack::Fit(double pfixed, int& fail, int iprint){ + + float al_ini[] = {0.,0.,0.,0.,0.}; + extern cMini2track track_; fail = 0; -// extern cMini2fitinfo fit_info_; -// extern void mini_2_(int*,int*); -// track_.xm[0]=1.0; - for(int i=0; i<6; i++) track_.xm[i]=xm[i]; - for(int i=0; i<6; i++) track_.ym[i]=ym[i]; - for(int i=0; i<6; i++) track_.zm[i]=zm[i]; - for(int i=0; i<6; i++) track_.resx[i]=resx[i]; - for(int i=0; i<6; i++) track_.resy[i]=resy[i]; - for(int i=0; i<6; i++) track_.xgood[i]=xgood[i]; - for(int i=0; i<6; i++) track_.ygood[i]=ygood[i]; -// initial guess of "al" with linear fit - if(al[0]==-9999.&&al[1]==-9999.&&al[2]==-9999.&&al[3]==-9999.&&al[4]==-9999.){ - double szz=0., szx=0., szy=0., ssx=0., ssy=0., sz=0., s1=0.; - double det, ax, ay, bx, by; - for(int i=0; i " << track_.al[4] << endl; - for(int i=0; i<5; i++) al[i]=track_.al[i]; - chi2=track_.chi2; - nstep=track_.nstep; - for(int i=0; i<6; i++) xv[i]=track_.xv[i]; - for(int i=0; i<6; i++) yv[i]=track_.yv[i]; - for(int i=0; i<6; i++) zv[i]=track_.zv[i]; - for(int i=0; i<6; i++) axv[i]=track_.axv[i]; - for(int i=0; i<6; i++) ayv[i]=track_.ayv[i]; - for(int i=0; i<5; i++) { - for(int j=0; j<5; j++) coval[i][j]=track_.cov[i][j]; +// for(int i=0; i<5; i++) al[i]=track_.al[i]; +// chi2=track_.chi2; +// nstep=track_.nstep; +// for(int i=0; i<6; i++) xv[i]=track_.xv[i]; +// for(int i=0; i<6; i++) yv[i]=track_.yv[i]; +// for(int i=0; i<6; i++) zv[i]=track_.zv[i]; +// for(int i=0; i<6; i++) axv[i]=track_.axv[i]; +// for(int i=0; i<6; i++) ayv[i]=track_.ayv[i]; +// for(int i=0; i<5; i++) { +// for(int j=0; j<5; j++) coval[i][j]=track_.cov[i][j]; +// } + + if(fail){ + if(iprint)cout << " >>>> fit failed >>>> drawing initial par"<Clear(); - cly->Clear(); +// cout << "TrkTrack::Clear()"<Clear(); + if(cly)cly->Clear(); }; //-------------------------------------- // // //-------------------------------------- void TrkTrack::Delete(){ - Clear(); - clx->Delete(); - cly->Delete(); +// cout << "TrkTrack::Delete()"<ntrk() ; cout << endl << "nclsx() : " << this->nclsx(); cout << endl << "nclsy() : " << this->nclsy(); - for(int i=0; intrk(); i++) ((TrkTrack *)t[i])->Dump(); - for(int i=0; inclsx(); i++) ((TrkSinglet *)sx[i])->Dump(); - for(int i=0; inclsy(); i++) ((TrkSinglet *)sy[i])->Dump(); +// TClonesArray &t = *Track; +// TClonesArray &sx = *SingletX; +// TClonesArray &sy = *SingletY; +// for(int i=0; iDump(); +// for(int i=0; iDump(); +// for(int i=0; iDump(); + if(Track){ + TClonesArray &t = *Track; + for(int i=0; iDump(); + } + if(SingletX){ + TClonesArray &sx = *SingletX; + for(int i=0; iDump(); + } + if(SingletY){ + TClonesArray &sy = *SingletY; + for(int i=0; iDump(); + } } //-------------------------------------- // @@ -484,63 +596,66 @@ good[i] = l2->good[i]; }; // *** TRACKS *** + if(!Track) Track = new TClonesArray("TrkTrack"); TClonesArray &t = *Track; for(int i=0; intrk; i++){ - t_track->seqno = i;// NBNBNBNB deve sempre essere = i - t_track->image = l2->image[i]-1; + t_track->seqno = i;// NBNBNBNB deve sempre essere = i + t_track->image = l2->image[i]-1; // cout << "track "<seqno << t_track->image<chi2 = l2->chi2_nt[i]; - t_track->nstep = l2->nstep_nt[i]; - for(int it1=0;it1<5;it1++){ - t_track->al[it1] = l2->al_nt[i][it1]; - for(int it2=0;it2<5;it2++) - t_track->coval[it1][it2] = l2->coval[i][it2][it1]; - }; - for(int ip=0;ip<6;ip++){ - t_track->xgood[ip] = l2->xgood_nt[i][ip]; - t_track->ygood[ip] = l2->ygood_nt[i][ip]; - t_track->xm[ip] = l2->xm_nt[i][ip]; - t_track->ym[ip] = l2->ym_nt[i][ip]; - t_track->zm[ip] = l2->zm_nt[i][ip]; - t_track->resx[ip] = l2->resx_nt[i][ip]; - t_track->resy[ip] = l2->resy_nt[i][ip]; - t_track->xv[ip] = l2->xv_nt[i][ip]; - t_track->yv[ip] = l2->yv_nt[i][ip]; - t_track->zv[ip] = l2->zv_nt[i][ip]; - t_track->axv[ip] = l2->axv_nt[i][ip]; - t_track->ayv[ip] = l2->ayv_nt[i][ip]; - t_track->dedx_x[ip] = l2->dedx_x[i][ip]; - t_track->dedx_y[ip] = l2->dedx_y[i][ip]; + t_track->chi2 = l2->chi2_nt[i]; + t_track->nstep = l2->nstep_nt[i]; + for(int it1=0;it1<5;it1++){ + t_track->al[it1] = l2->al_nt[i][it1]; + for(int it2=0;it2<5;it2++) + t_track->coval[it1][it2] = l2->coval[i][it2][it1]; + }; + for(int ip=0;ip<6;ip++){ + t_track->xgood[ip] = l2->xgood_nt[i][ip]; + t_track->ygood[ip] = l2->ygood_nt[i][ip]; + t_track->xm[ip] = l2->xm_nt[i][ip]; + t_track->ym[ip] = l2->ym_nt[i][ip]; + t_track->zm[ip] = l2->zm_nt[i][ip]; + t_track->resx[ip] = l2->resx_nt[i][ip]; + t_track->resy[ip] = l2->resy_nt[i][ip]; + t_track->xv[ip] = l2->xv_nt[i][ip]; + t_track->yv[ip] = l2->yv_nt[i][ip]; + t_track->zv[ip] = l2->zv_nt[i][ip]; + t_track->axv[ip] = l2->axv_nt[i][ip]; + t_track->ayv[ip] = l2->ayv_nt[i][ip]; + t_track->dedx_x[ip] = l2->dedx_x[i][ip]; + t_track->dedx_y[ip] = l2->dedx_y[i][ip]; // t_track->clx[ip] = 0; // t_track->cly[ip] = 0; - }; - new(t[i]) TrkTrack(*t_track); - t_track->Clear(); + }; + new(t[i]) TrkTrack(*t_track); + t_track->Clear(); }; // *** SINGLETS *** + if(!SingletX)SingletX = new TClonesArray("TrkSinglet"); TClonesArray &sx = *SingletX; for(int i=0; inclsx; i++){ - t_singlet->plane = l2->planex[i]; - t_singlet->coord[0] = l2->xs[i][0]; - t_singlet->coord[1] = l2->xs[i][1]; - t_singlet->sgnl = l2->signlxs[i]; + t_singlet->plane = l2->planex[i]; + t_singlet->coord[0] = l2->xs[i][0]; + t_singlet->coord[1] = l2->xs[i][1]; + t_singlet->sgnl = l2->signlxs[i]; // t_singlet->cls = 0; - new(sx[i]) TrkSinglet(*t_singlet); - t_singlet->Clear(); + new(sx[i]) TrkSinglet(*t_singlet); + t_singlet->Clear(); } + if(!SingletY)SingletY = new TClonesArray("TrkSinglet"); TClonesArray &sy = *SingletY; for(int i=0; inclsy; i++){ - t_singlet->plane = l2->planey[i]; - t_singlet->coord[0] = l2->ys[i][0]; - t_singlet->coord[1] = l2->ys[i][1]; - t_singlet->sgnl = l2->signlys[i]; + t_singlet->plane = l2->planey[i]; + t_singlet->coord[0] = l2->ys[i][0]; + t_singlet->coord[1] = l2->ys[i][1]; + t_singlet->sgnl = l2->signlys[i]; // t_singlet->cls = 0; - new(sy[i]) TrkSinglet(*t_singlet); - t_singlet->Clear(); - }; + new(sy[i]) TrkSinglet(*t_singlet); + t_singlet->Clear(); + }; - delete t_track; - delete t_singlet; + delete t_track; + delete t_singlet; } //-------------------------------------- // @@ -562,7 +677,10 @@ good[i] = l2->good[i]; }; // *** TRACKS *** + if(!Track) Track = new TClonesArray("TrkTrack"); TClonesArray &t = *Track; + if(!t_track->clx)t_track->clx = new TRefArray(6,0); + if(!t_track->cly)t_track->cly = new TRefArray(6,0); for(int i=0; intrk; i++){ t_track->seqno = i;// NBNBNBNB deve sempre essere = i t_track->image = l2->image[i]-1; @@ -591,18 +709,19 @@ t_track->dedx_y[ip] = l2->dedx_y[i][ip]; // cout << "traccia "<cltrx[i][ip] <<" "<< l2->cltry[i][ip] <<" "<< t_track->xgood[ip] << t_track->ygood[ip]<clx[ip] = l1->GetCluster(l2->cltrx[i][ip]-1); -// t_track->cly[ip] = l1->GetCluster(l2->cltry[i][ip]-1); + //----------------------------------------------------- if(t_track->xgood[ip])t_track->clx->AddAt(l1->GetCluster(l2->cltrx[i][ip]-1),ip); if(t_track->ygood[ip])t_track->cly->AddAt(l1->GetCluster(l2->cltry[i][ip]-1),ip); // if(t_track->ygood[ip])cout<<" i "<cltry[i][ip] "<cltry[i][ip]<< " l1->GetCluster(l2->cltry[i][ip]-1) "<GetCluster(l2->cltry[i][ip]-1)<xgood[ip])cout<<" i "<cltrx[i][ip] "<cltrx[i][ip]<< " l1->GetCluster(l2->cltrx[i][ip]-1) "<GetCluster(l2->cltrx[i][ip]-1)<Clear(); }; // *** SINGLETS *** + if(!SingletX)SingletX = new TClonesArray("TrkSinglet"); TClonesArray &sx = *SingletX; for(int i=0; inclsx; i++){ t_singlet->plane = l2->planex[i]; @@ -617,6 +736,7 @@ new(sx[i]) TrkSinglet(*t_singlet); t_singlet->Clear(); } + if(!SingletY)SingletY = new TClonesArray("TrkSinglet"); TClonesArray &sy = *SingletY; for(int i=0; inclsy; i++){ t_singlet->plane = l2->planey[i]; @@ -649,48 +769,54 @@ }; // *** TRACKS *** - l2->ntrk = Track->GetEntries(); - for(Int_t i=0;intrk;i++){ - l2->image[i] = 1 + ((TrkTrack *)Track->At(i))->image; - l2->chi2_nt[i] = ((TrkTrack *)Track->At(i))->chi2; - l2->nstep_nt[i] = ((TrkTrack *)Track->At(i))->nstep; - for(int it1=0;it1<5;it1++){ - l2->al_nt[i][it1] = ((TrkTrack *)Track->At(i))->al[it1]; - for(int it2=0;it2<5;it2++) - l2->coval[i][it2][it1] = ((TrkTrack *)Track->At(i))->coval[it1][it2]; - }; - for(int ip=0;ip<6;ip++){ - l2->xgood_nt[i][ip] = ((TrkTrack *)Track->At(i))->xgood[ip]; - l2->ygood_nt[i][ip] = ((TrkTrack *)Track->At(i))->ygood[ip]; - l2->xm_nt[i][ip] = ((TrkTrack *)Track->At(i))->xm[ip]; - l2->ym_nt[i][ip] = ((TrkTrack *)Track->At(i))->ym[ip]; - l2->zm_nt[i][ip] = ((TrkTrack *)Track->At(i))->zm[ip]; - l2->resx_nt[i][ip] = ((TrkTrack *)Track->At(i))->resx[ip]; - l2->resy_nt[i][ip] = ((TrkTrack *)Track->At(i))->resy[ip]; - l2->xv_nt[i][ip] = ((TrkTrack *)Track->At(i))->xv[ip]; - l2->yv_nt[i][ip] = ((TrkTrack *)Track->At(i))->yv[ip]; - l2->zv_nt[i][ip] = ((TrkTrack *)Track->At(i))->zv[ip]; - l2->axv_nt[i][ip] = ((TrkTrack *)Track->At(i))->axv[ip]; - l2->ayv_nt[i][ip] = ((TrkTrack *)Track->At(i))->ayv[ip]; - l2->dedx_x[i][ip] = ((TrkTrack *)Track->At(i))->dedx_x[ip]; - l2->dedx_y[i][ip] = ((TrkTrack *)Track->At(i))->dedx_y[ip]; - }; + if(Track){ + l2->ntrk = Track->GetEntries(); + for(Int_t i=0;intrk;i++){ + l2->image[i] = 1 + ((TrkTrack *)Track->At(i))->image; + l2->chi2_nt[i] = ((TrkTrack *)Track->At(i))->chi2; + l2->nstep_nt[i] = ((TrkTrack *)Track->At(i))->nstep; + for(int it1=0;it1<5;it1++){ + l2->al_nt[i][it1] = ((TrkTrack *)Track->At(i))->al[it1]; + for(int it2=0;it2<5;it2++) + l2->coval[i][it2][it1] = ((TrkTrack *)Track->At(i))->coval[it1][it2]; + }; + for(int ip=0;ip<6;ip++){ + l2->xgood_nt[i][ip] = ((TrkTrack *)Track->At(i))->xgood[ip]; + l2->ygood_nt[i][ip] = ((TrkTrack *)Track->At(i))->ygood[ip]; + l2->xm_nt[i][ip] = ((TrkTrack *)Track->At(i))->xm[ip]; + l2->ym_nt[i][ip] = ((TrkTrack *)Track->At(i))->ym[ip]; + l2->zm_nt[i][ip] = ((TrkTrack *)Track->At(i))->zm[ip]; + l2->resx_nt[i][ip] = ((TrkTrack *)Track->At(i))->resx[ip]; + l2->resy_nt[i][ip] = ((TrkTrack *)Track->At(i))->resy[ip]; + l2->xv_nt[i][ip] = ((TrkTrack *)Track->At(i))->xv[ip]; + l2->yv_nt[i][ip] = ((TrkTrack *)Track->At(i))->yv[ip]; + l2->zv_nt[i][ip] = ((TrkTrack *)Track->At(i))->zv[ip]; + l2->axv_nt[i][ip] = ((TrkTrack *)Track->At(i))->axv[ip]; + l2->ayv_nt[i][ip] = ((TrkTrack *)Track->At(i))->ayv[ip]; + l2->dedx_x[i][ip] = ((TrkTrack *)Track->At(i))->dedx_x[ip]; + l2->dedx_y[i][ip] = ((TrkTrack *)Track->At(i))->dedx_y[ip]; + }; + } } - // *** SINGLETS *** - l2->nclsx = SingletX->GetEntries(); - for(Int_t i=0;inclsx;i++){ - l2->planex[i] = ((TrkSinglet *)SingletX->At(i))->plane; - l2->xs[i][0] = ((TrkSinglet *)SingletX->At(i))->coord[0]; - l2->xs[i][1] = ((TrkSinglet *)SingletX->At(i))->coord[1]; - l2->signlxs[i] = ((TrkSinglet *)SingletX->At(i))->sgnl; - } - l2->nclsy = SingletY->GetEntries(); - for(Int_t i=0;inclsy;i++){ - l2->planey[i] = ((TrkSinglet *)SingletY->At(i))->plane; - l2->ys[i][0] = ((TrkSinglet *)SingletY->At(i))->coord[0]; - l2->ys[i][1] = ((TrkSinglet *)SingletY->At(i))->coord[1]; - l2->signlys[i] = ((TrkSinglet *)SingletY->At(i))->sgnl; + if(SingletX){ + l2->nclsx = SingletX->GetEntries(); + for(Int_t i=0;inclsx;i++){ + l2->planex[i] = ((TrkSinglet *)SingletX->At(i))->plane; + l2->xs[i][0] = ((TrkSinglet *)SingletX->At(i))->coord[0]; + l2->xs[i][1] = ((TrkSinglet *)SingletX->At(i))->coord[1]; + l2->signlxs[i] = ((TrkSinglet *)SingletX->At(i))->sgnl; + } + } + + if(SingletY){ + l2->nclsy = SingletY->GetEntries(); + for(Int_t i=0;inclsy;i++){ + l2->planey[i] = ((TrkSinglet *)SingletY->At(i))->plane; + l2->ys[i][0] = ((TrkSinglet *)SingletY->At(i))->coord[0]; + l2->ys[i][1] = ((TrkSinglet *)SingletY->At(i))->coord[1]; + l2->signlys[i] = ((TrkSinglet *)SingletY->At(i))->sgnl; + } } } //-------------------------------------- @@ -698,29 +824,28 @@ // //-------------------------------------- void TrkLevel2::Clear(){ -// good2 = -1; for(Int_t i=0; i<12 ; i++){ -// crc[i] = -1; - good[i] = -1; - }; -/* Track->RemoveAll(); - SingletX->RemoveAll(); - SingletY->RemoveAll();*/ - // modify to avoid memory leakage - Track->Clear(); - SingletX->Clear(); - SingletY->Clear(); -} -//-------------------------------------- -// -// -//-------------------------------------- + good[i] = -1; + }; +// if(Track)Track->Clear("C"); +// if(SingletX)SingletX->Clear("C"); +// if(SingletY)SingletY->Clear("C"); + if(Track)Track->Delete(); + if(SingletX)SingletX->Delete(); + if(SingletY)SingletY->Delete(); +} +// //-------------------------------------- +// // +// // +// //-------------------------------------- void TrkLevel2::Delete(){ - Clear(); - Track->Delete(); - SingletX->Delete(); - SingletY->Delete(); +// cout << "void TrkLevel2::Delete()"< m(N); for(int i=0; i m(N); for(int i=0; i::max(); + int indo=0; + int indi=0; + while(N != 0){ + int nfit =0; + float chi2ref = numeric_limits::max(); - // first loop to search maximum num. of fit points - for(int i=0; i < ntrk(); i++){ - if( ((TrkTrack *)t[i])->GetNtot() >= nfit && m[i]==1){ - nfit = ((TrkTrack *)t[i])->GetNtot(); - } - } - //second loop to search minimum chi2 among selected - for(int i=0; intrk(); i++){ - Float_t chi2 = ((TrkTrack *)t[i])->chi2; - if(chi2 < 0) chi2 = chi2*1000; - if( chi2 < chi2ref - && ((TrkTrack *)t[i])->GetNtot() == nfit - && m[i]==1){ - chi2ref = ((TrkTrack *)t[i])->chi2; - indi = i; - }; - }; - if( ((TrkTrack *)t[indi])->HasImage() ){ - m[((TrkTrack *)t[indi])->image] = 0; - N--; + // first loop to search maximum num. of fit points + for(int i=0; i < ntrk(); i++){ + if( ((TrkTrack *)t[i])->GetNtot() >= nfit && m[i]==1){ + nfit = ((TrkTrack *)t[i])->GetNtot(); + } + } + //second loop to search minimum chi2 among selected + for(int i=0; intrk(); i++){ + Float_t chi2 = ((TrkTrack *)t[i])->chi2; + if(chi2 < 0) chi2 = chi2*1000; + if( chi2 < chi2ref + && ((TrkTrack *)t[i])->GetNtot() == nfit + && m[i]==1){ + chi2ref = ((TrkTrack *)t[i])->chi2; + indi = i; + }; + }; + if( ((TrkTrack *)t[indi])->HasImage() ){ + m[((TrkTrack *)t[indi])->image] = 0; + N--; - // cout << "i** "<< ((TrkTrack *)t[indi])->image << " " << nfiti <<" "<Add( (TrkTrack*)t[indi] ); + // cout << "i** "<< ((TrkTrack *)t[indi])->image << " " << nfiti <<" "<Add( (TrkTrack*)t[indi] ); - m[indi] = 0; + m[indi] = 0; // cout << "SORTED "<< indo << " "<< indi << " "<< N << endl; - N--; - indo++; - } - m.clear(); + N--; + indo++; + } + m.clear(); // cout << "GetTracks_NFitSorted(it): Done"<< endl; - return sorted; + return sorted; // return PhysicalTrack; } //-------------------------------------- @@ -798,6 +925,9 @@ cout << " Stored tracks ntrk() = "<< this->ntrk() << endl; return 0; } + if(!Track){ + cout << "TrkTrack *TrkLevel2::GetStoredTrack(int is) >> (TClonesArray*) Track ==0 "<image]; + if(!track->HasImage()){ + cout << "** TrkLevel2 ** Track "<< it << "does not have image! " << endl; + return 0; + } + if(!Track)return 0; + TrkTrack *image = (TrkTrack*)(*Track)[track->image]; - sorted->Delete(); - - return image; + sorted->Delete(); + delete sorted; + + return image; } //-------------------------------------- @@ -914,8 +1052,13 @@ * Loads the magnetic field. * @param s Path of the magnetic-field files. */ -void TrkLevel2::LoadField(TString s){ - readb_(s.Data()); +void TrkLevel2::LoadField(TString path){ +// + strcpy(path_.path,path.Data()); + path_.pathlen = path.Length(); + path_.error = 0; + readb_(); +// }; //-------------------------------------- // @@ -1013,17 +1156,27 @@ tl = new float[npoint]; int i=0; do{ - x[i] = 0; - y[i] = 0; - z[i] = zin[i]; - thx[i] = 0; - thy[i] = 0; - tl[i] = 0; - i++; + x[i] = 0; + y[i] = 0; + z[i] = zin[i]; + thx[i] = 0; + thy[i] = 0; + tl[i] = 0; + i++; }while(zin[i-1] > zin[i] && i < npoint); npoint=i; if(npoint != n)cout << "NB! Trajectory created with "<