//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class GenfitTester // see GenfitTester.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 "GenfitTester.h" // C/C++ Headers ---------------------- #include #include #include "TVector3.h" #include "TPolyMarker3D.h" #include "TFile.h" #include "TRandom.h" // Collaborating Class Headers -------- #include "LSLTrackRep.h" #include "TestRecoHit.h" #include "Track.h" #include "DetPlane.h" #include "trackProximity.h" #include "VirtSpacePointRecoHit.h" // Class Member definitions ----------- GenfitTester::GenfitTester() {} GenfitTester::~GenfitTester() {} void GenfitTester::test_RecoHit(){ TestRecoHit hit(2,2,10); } void GenfitTester::test_locTrkRep(){ std::cout<<"*** test local track rep"< bla(5,1); DetPlane p(TVector3(2,3,150),TVector3(1,0,0),TVector3(0,1,0)); trkRep.extrapolate(p,bla); bla.Print(); TestRecoHit hit(2,2,10); std::cout<<"hit in coordinate system of track:"< res=hit.residualVector(&trkRep,bla,p); res.Print(); } //------------------------------------------------- void GenfitTester::test_DetPlane(){ std::cout<<"*** test DetPlane"<Sphere(x,y,z,gRandom->Uniform(1,10)); TVector3 ao(x,y,z); gRandom->Sphere(x,y,z,1); TVector3 au(x,y,z); gRandom->Sphere(x,y,z,1); TVector3 av(x,y,z); DetPlane aplane(ao,au,av); aplane.Print(); gRandom->Sphere(x,y,z,gRandom->Uniform(1,20)); TVector3 p(x,y,z); // check dist TVector3 d=aplane.dist(p); TVector3 pinplane=aplane.toLab(aplane.LabToPlane(p)); TVector3 pback=pinplane-d; std::cout<<"Check dist: "<setRungeKuttaAcc(accuracy); rep->setRungeKuttaAdaptive(adaptive); Track* trk=new Track(rep); std::cout<<"Pos before extrapolation:"<getPos().Print(); TMatrixT state1=trk->getTrackRep(0)->getState(); state1.Print(); TPolyMarker3D* mark=new TPolyMarker3D(); std::vector success; for(double z=10; z<300; z+=20){ trk->getTrackRep(0)->setState(state1); std::cout<<"Extrapolate to z="<getTrackRep(0)->extrapolate(pl); std::cout<<"length="<gotoPoint(); std::cout<<"Pos after extrapolation:"<getPos(); p.Print(); mark->SetNextPoint(p.X(),p.Y(),p.Z()); trk->gotoPoint(TVector3(20,20,z0)); TMatrixT state2=trk->getTrackRep(0)->getState(); TVector3 pos2=trk->getPos(); TMatrixT dif=state2-state1; bool out=false; for(int i=0;i<2;++i){ double d=dif[i][0]; if(d>accuracy)out=true; } if(out){ std::cout<<"Out of bounds!"<getTrackRep(0)->getReferencePlane().Print(); //break; } success.push_back(!out); } TVector3 pos3=trk->getPos(); trk->stepalong(10); TVector3 pos4=trk->getPos(); std::cout<<"doing a step of 10 cm. before/after"<Write("trk"); f->Close(); } void GenfitTester::test_PCA(){ std::cout<<"*** test Extrapolate to PCA ***"<stepalong(70); trk2->stepalong(80); std::cout<<"Start positions"<getPos().Print(); trk2->getPos().Print(); TVector3 dif1=trk1->getPos()-trk2->getPos(); std::cout<<"d="<getPos().Print(); trk2->getPos().Print(); TVector3 dif2=trk1->getPos()-trk2->getPos(); std::cout<<"d="<Print(); TVectorT glob=rep->getGlobal(); std::cout<<"glob=("< cov=rep->getGlobalCov(); cov.Print(); } ClassImp(GenfitTester)