--- DarthVader/TrackerLevel2/src/ExtTrack.cpp 2014/06/04 07:57:03 1.2 +++ DarthVader/TrackerLevel2/src/ExtTrack.cpp 2016/02/26 12:03:36 1.9 @@ -135,7 +135,7 @@ // cout << " ExtTrack::Copy( ExtTrack& t ) "<0){ - if(xgood) delete [] xgood; - if(ygood) delete [] ygood; - if(multmaxx) delete [] multmaxx; - if(multmaxy) delete [] multmaxy; - if(xm) delete [] xm; - if(ym) delete [] ym; - if(zm) delete [] zm; - if(xma) delete [] xma; - if(yma) delete [] yma; - if(zma) delete [] zma; - if(xmb) delete [] xmb; - if(ymb) delete [] ymb; - if(zmb) delete [] zmb; - if(resx) delete [] resx; - if(resy) delete [] resy; - if(xv) delete [] xv; - if(yv) delete [] yv; - if(zv) delete [] zv; - if(axv) delete [] axv; - if(ayv) delete [] ayv; - if(dedx_x)delete [] dedx_x; - if(dedx_y)delete [] dedx_y; - //} - - xgood = NULL; - ygood = NULL; - multmaxx = NULL; - multmaxy = NULL; - xm = NULL; - ym = NULL; - zm = NULL; - xma = NULL; - yma = NULL; - zma = NULL; - xmb = NULL; - ymb = NULL; - zmb = NULL; - resx = NULL; - resy = NULL; - xv = NULL; - yv = NULL; - zv = NULL; - axv = NULL; - ayv = NULL; - dedx_x = NULL; - dedx_y = NULL; - - nplanes = 0; + nplanes = 0; - // Reset(); + } }; void ExtTrack::Delete(){ - Clear(); + Clear("C"); // delete [] xGF; // delete [] yGF; } @@ -734,6 +763,17 @@ if(iprint)cout << " >>>> fit failed "<=nplanes)return -1; return ((int)fabs(xgood[ip]))%10000000-1; }; /** @@ -812,10 +853,88 @@ * */ int ExtTrack::GetClusterY_ID(int ip){ + if(ip<0 || ip>=nplanes)return -1; return ((int)fabs(ygood[ip]))%10000000-1; }; /** + * Method to retrieve the dE/dx measured on a tracker view. + * @param ip plane (0-5) + * @param iv view (0=x 1=y) + */ +Float_t ExtTrack::GetDEDX(int ip, int iv){ + if(iv==0 && ip>=0 && ip=0 && ip0)return dedx/np; + return -1; +}; +/** + * Method to evaluate the dE/dx averaged over all Y views. + */ +Float_t ExtTrack::GetDEDXY(bool cutSat){ + Float_t dedx=0; + Int_t np=0; + for(Int_t ip=0; ip0)return dedx/np; + return -1; +}; + +/** + * Returns 1 if the cluster on a tracker view includes bad strips + * (at least one bad strip among the four strip used by p.f.a.) + * @param ip plane (0-5) + * @param iv view (0=x 1=y) + */ +Bool_t ExtTrack::IsBad(int ip,int iv){ + if(ip>=6&&ip<8)return false; + if(iv==0 && ip>=0 && ip<6)return (xgood[ip]<0) ; + else if(iv==1 && ip>=0 && ip<6)return (ygood[ip]<0) ; + else { + cout << "ExtTrack::IsBad(int ip, int iv) -- wrong input parameters "<0)def=al[4]; + return def; +}; + + +// +// all that follows: EM porting from TrkLevel2 +// +Bool_t ExtTrack::IsInsideAcceptance(float toll){ + int ngf = TrkParams::nGF; + float* zgf = TrkParams::zGF; + + //this is a patch, to assign correctly xGF and yGF cordinates. + + Trajectory tj = Trajectory(ngf,zgf); + tj.DoTrack(al,zini); + + //NB the folowing assignment is NOT permanent!!! + for(int i=0; i<14; i++){ + xGF[i] = tj.x[i]; + yGF[i] = tj.y[i]; + } + + for(int i=0; i= TrkParams::xGF_max[i] - toll || +// yGF[i] <= TrkParams::yGF_min[i] + toll || +// yGF[i] >= TrkParams::yGF_max[i] - toll || + tj.x[i] <= TrkParams::xGF_min[i] + toll || + tj.x[i] >= TrkParams::xGF_max[i] - toll || + tj.y[i] <= TrkParams::yGF_min[i] + toll || + tj.y[i] >= TrkParams::yGF_max[i] - toll || + false){ + + return false; + } + } + return true; +} + +/** + * Returns the reduced chi-square of track x-projection + */ +Float_t ExtTrack::GetChi2X(){ + float chiq=0; + for(int ip=0; ip3)chiq=chiq/(GetNX()-3); + else chiq=0; + // if(chiq==0)cout << " Float_t ExtTrack::GetChi2X() -- WARNING -- value not defined "<2)chiq=chiq/(GetNY()-2); + else chiq=0; + // if(chiq==0)cout << " Float_t ExtTrack::GetChi2Y() -- WARNING -- value not defined "<=6 && ip<8)return false; + if(iv==0 && ip>=0 && ip<6)return (dedx_x[ip]<0) ; + else if(iv==1 && ip>=0 && ip<6)return (dedx_y[ip]<0) ; + else { + cout << "ExtTrack::IsSaturated(int ip, int iv) -- wrong input parameters "<