//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class TpcRecoTester // see TpcRecoTester.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 "TpcRecoTester.h" // C/C++ Headers ---------------------- #include #include #include // Collaborating Class Headers -------- #include "TpcCluster.h" #include "Kalman.h" #include "TpcClusterRadius.h" #include "TpcConfMapRecoHit.h" #include "TpcConfMapFit.h" #include "DetPlane.h" #include "TpcConfTrackFinder.h" #include "TrackCand.h" #include "Track.h" #include "TGraph.h" #include "TFile.h" #include "TRandom.h" #include "TH1I.h" #include "DebugLogger.h" #include "dbgstream.h" // Class Member definitions ----------- ClassImp(TpcRecoTester) void TpcRecoTester::testConfMap(){ TpcCluster mycl(TVector3(5,5,3),1,0); TpcConfMapRecoHit hit(&mycl); hit.getHitCoord(DetPlane()).Print(); hit.setReferencePoint(1,1); hit.getHitCoord(DetPlane()).Print(); //DebugLogger::Instance(); LOG<<"blablabla"< cov(2,2); //cov[0][0]=10; //cov[1][1]=10; //cov[0][1]=-1; //cov[1][0]=-1; //myfit.setCov(cov); myfit.Print(); TpcCluster mycl(TVector3(5,5,3),1,0); TpcConfMapRecoHit hit(&mycl); std::cout<<"Residual:"< cands; _finder.buildTracks(cll,cands); //std::cout<getNHits()<<" hits"<Fill(testConfFinder()); } TFile* outfile=new TFile("toystat.root","RECREATE"); histo->Write(); outfile->Close(); } void TpcRecoTester::maketoytracks(int n,std::vector& cll) { //produce hits TGraph* hits=new TGraph(); TGraph* confhits=new TGraph(); TGraph* hitsxz=new TGraph(); unsigned int hitcounter=0; double sig=0.01; // sigma in space for(int t=0;tUniform(30,70); std::cout<<"Radius r="<Circle(dirstartx,dirstarty,15); //double phistart=TMath::Pi()/180*85; //dirstartx=cos(phistart); //dirstarty=sin(phistart); TVector2 dir(dirstartx,dirstarty); TVector2 radial=dir.Unit().Rotate(TMath::Pi()/2)*r; TVector2 origin=start+radial; double dphi=0.5/r; // a hit every 5 mm double dz_dphi=gRandom->Uniform(1.,100.); for(int i=1; i<60; ++i){// hit loop 1 degrees double phi=i*dphi; TVector2 point=origin-radial.Rotate(phi); double xhit=point.X()+gRandom->Gaus(0,sig); double yhit=point.Y()+gRandom->Gaus(0,sig); double zhit=phi*dz_dphi+gRandom->Gaus(0,sig); double r=sqrt(xhit*xhit+yhit*yhit); if(r<5) continue; hits->SetPoint(hitcounter,xhit,yhit); hitsxz->SetPoint(hitcounter,xhit,zhit); TpcCluster* cl=new TpcCluster(TVector3(xhit,yhit,zhit),1,hitcounter); TpcConfMapRecoHit conf(cl); conf.setRotated(); cll.push_back(cl); confhits->SetPoint(hitcounter,conf.getXcf(),conf.getHitCoord(DetPlane())[0][0]); ++hitcounter; ++hitsintrk; } //std::cout<Write("hits"); hitsxz->Write("hitsxz"); confhits->Write("confhits"); outfile->Close(); }