//----------------------------------------------------------- // 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 "TVector3.h" #include "TPolyMarker3D.h" #include "TFile.h" // Collaborating Class Headers -------- #include "LSLTrackRep.h" #include "TestRecoHit.h" #include "Track.h" #include "DetPlane.h" #include "ExtrapolateToPCA.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); res.Print(); } //------------------------------------------------- void GenfitTester::test_DetPlane(){ std::cout<<"*** test DetPlane"<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="<gotoPoint(TVector3(20,20,z)); 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="<