//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class GeaneTrackRep // see GeaneTrackRep.hh for details // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- // Panda Headers ---------------------- // This Class' Header ------------------ #include "GeaneTrackRep.h" #include "CbmGeaneUtil.h" #include "CbmTrackParH.h" // C/C++ Headers ---------------------- #include // Collaborating Class Headers -------- #include "AbsRecoHit.h" #include "CbmGeanePro.h" // Class Member definitions ----------- GeaneTrackRep::GeaneTrackRep() : AbsTrackRep(5) { std::cout<<"GeaneTrackRep::Standard Ctor"<& statePred) { // double sExtrapolateTo=pl.getO().Z(); // Nystrom rungeKutta(_eqm); // //prepare the vectors // TVectorT u(3);u[0]=state[0][0];u[1]=state[1][0];u[2]=s; // TVectorT uprim(3);uprim[0]=state[2][0];uprim[1]=state[3][0];uprim[2]=1; // TVectorT par(1);par[0]=state[4][0]; // TVectorT unew(3); // TVectorT uprimnew(3); // rungeKutta.propagate(s,sExtrapolateTo, // u, uprim, par, // unew, uprimnew); // // write results into statePred // statePred[0][0]=unew[0]; // statePred[1][0]=unew[1]; // statePred[2][0]=uprimnew[0]; // statePred[3][0]=uprimnew[1]; // statePred[4][0]=state[4][0]; // //std::cout<<"unew[2]=z="<& statePred, TMatrixT& covPred, TMatrixT& jacobian) { TVector3 o=pl.getO(); TVector3 u=pl.getU(); TVector3 v=pl.getV(); TVector3 ofrom=_refPlane.getO(); TVector3 ufrom=_refPlane.getU(); TVector3 vfrom=_refPlane.getV(); //_geane->SetPoint(og); _geane->PropagateFromPlane(ufrom,vfrom); _geane->PropagateToPlane(o,u,v); CbmTrackParP result; CbmTrackParH result2; //std::cout<<"Before prop:"<GetDPx() << endl; // fUtil->FromSDToSC(PD, RD, H, CH, SPU, DJ, DK, IERR, PC, RC); // result2.SetQp(PC[0]); // result2.SetLambda(PC[1]); // result2.SetPhi(PC[2]); statePred[0][0]=result.GetQp(); statePred[1][0]=result.GetTV(); statePred[2][0]=result.GetTW(); statePred[3][0]=result.GetV(); statePred[4][0]=result.GetW(); double* rescov=result.GetCov(); count=0; for(int i=0;i<5;++i){ for(int j=i;j<5;++j){ covPred[i][j]=rescov[count]; if(i!=j)covPred[j][i]=rescov[count]; ++count; } } // // statePred[0][0]=result2.GetQp(); // // statePred[1][0]=result2.GetLambda(); // // statePred[2][0]=result2.GetPhi(); // // statePred[3][0]=result2.GetY(); // // statePred[4][0]=result2.GetZ(); // //std::cout << "Extr from To: " << s << " " << sExtrapolateTo << std::endl; // extrapolate(pl,statePred); // // covPred=JCovJ^T with J being Jacobian // jacobian.ResizeTo(5,5); // Jacobian(pl,statePred,jacobian); // TMatrixT dummy(cov,TMatrixT::kMultTranspose,jacobian); // covPred=jacobian*dummy; //covPred=cov; } void GeaneTrackRep::predict(const DetPlane& pl, TMatrixT& statePred, TMatrixT& covPred, TMatrixT& jacobian) { extrapolate(pl,statePred,covPred,jacobian); } TVector3 GeaneTrackRep::getPos(const DetPlane& pl) { // double z=pl.getO().Z(); // TMatrixT statePred(state); // DetPlane p(TVector3(0,0,z),TVector3(1,0,0),TVector3(0,1,0)); // extrapolate(p,statePred); throw; return TVector3(0,0,0); } TVector3 GeaneTrackRep::getMom(const DetPlane& pl) { // double z=pl.getO().Z(); // TMatrixT statePred(state); // //statePred.Print(); // DetPlane p(TVector3(0,0,z),TVector3(1,0,0),TVector3(0,1,0)); // extrapolate(p,statePred); // //statePred.Print(); // TVector3 result(statePred[2][0],statePred[3][0],1); // result.SetMag(1./statePred[4][0]); throw; return TVector3(0,0,0); } ClassImp(GeaneTrackRep)