#include #include #include // Collaborating Class Headers -------- #include "TRandom.h" #include "TMath.h" #include "TPolyLine3D.h" #include "TPolyMarker3D.h" #include "TCanvas.h" #include "TView.h" #include "TApplication.h" #include "MCHitGenerator.h" #include "Track.h" #include "LSLTrackRep.h" #include "TpcRecoHit.h" #include "Slt2DHit.h" #include "Kalman.h" #include "statTree.h" #include "statTreeAnalyzer.h" // Class Member definitions ----------- void buildTracks(int ntracks, std::vector& tracklist, std::vector< TMatrixT >& MCtruth){ MCHitGenerator gen; for(int i=0; i pred(5,1); rep->extrapolate(z,pred); rep->setState(pred); rep->setS(z); double x=pred[0][0]; double y=pred[1][0]; //std::cout<< "x="<ShowAxis(); c1->Draw(); double x,y,r,phi,z,minx,maxx,miny,maxy,minz,maxz; minx=100000.; miny=100000.; minz=100000.; maxx=-100000.; maxy=-100000.; maxz=-100000.; for(int i=0;igetNumHits(); TPolyLine3D *l = new TPolyLine3D(nhits); TPolyMarker3D *points = new TPolyMarker3D((int)nhits/2); TPolyMarker3D *points2 = new TPolyMarker3D((int)nhits/2); points->SetMarkerStyle(24); points2->SetMarkerStyle(24); points2->SetMarkerColor(kRed); for(int ihits=0;ihitsgetHit(ihits); z = theHit->getS(); //phi = (theHit->getHitCoord())[0][0]/r; //z = (theHit->getHitCoord())[1][0]; x = (theHit->getHitCoord())[0][0]; y = (theHit->getHitCoord())[1][0]; if(xmaxx) maxx = x; if(y>maxy) maxy = y; if(z>maxz) maxz = z; std::cout <<"(x,y,z) = ("<SetPoint(ihits,x,y,z); if(ihitsSetPoint(ihits,x,y,z); else points2->SetPoint(ihits,x,y,z); } std::cout << "calling Draw() method" << std::endl; view->SetRange(minx,miny,minz,maxx,maxy,maxz); l->Draw(); points->Draw("same"); points2->Draw("same"); theApp.Run(kTRUE); std::string dummy; // cin >> dummy; delete l; std::cout << "++++++++++++++++++++++" << std::endl; } } void drawHitsAndTracks(std::vector tracks,int argc, char **argv) { TApplication theApp("App",&argc,argv); double x,y,r,phi,z,minx,maxx,miny,maxy,minz,maxz; minx=100000.; miny=100000.; minz=100000.; maxx=-100000.; maxy=-100000.; maxz=-100000.; MCHitGenerator gen; MCHitGenerator genStart; for(int i=0;iShowAxis(); c1->Draw(); int nhits = tracks[i]->getNumHits(); LSLTrackRep* rep = (LSLTrackRep*) tracks[i]->getTrackRep(0); TPolyLine3D *stateTrack = new TPolyLine3D(nhits); TPolyLine3D *startStateTrack = new TPolyLine3D(nhits); TMatrixT state(5,1); LSLTrackRep fittedTrack(*rep); fittedTrack.setState(rep->getState()); fittedTrack.setS(rep->getS()); fittedTrack.setCov(rep->getCov()); //extrapolate to start fittedTrack.extrapolate(rep->getStartS(),state); fittedTrack.setState(state); fittedTrack.setS(rep->getStartS()); //std::cout<<"extrapolating fitted to start"<getStartState()); startTrack.setS(rep->getStartS()); startTrack.setCov(rep->getStartCov()); TPolyMarker3D *points = new TPolyMarker3D(nhits); points->SetMarkerStyle(24); for(int ihits=0;ihitsgetHit(ihits); z = theHit->getS(); x = (theHit->getHitCoord())[0][0]; y = (theHit->getHitCoord())[1][0]; if(xmaxx) maxx = x; if(y>maxy) maxy = y; if(z>maxz) maxz = z; //std::cout <<"(x,y,z) = ("<SetPoint(ihits,x,y,z); // create fitted track fittedTrack.extrapolate(z,state); //std::cout<SetPoint(ihits,state[0][0],state[1][0],z); fittedTrack.setState(state); fittedTrack.setS(z); // create start value track startTrack.extrapolate(z,state); startTrack.setState(state); startTrack.setS(z); startStateTrack->SetPoint(ihits,state[0][0],state[1][0],z); } std::cout << "calling Draw() method" << std::endl; view->SetRange(minx,miny,minz,maxx,maxy,maxz); view->Centered(); view->Top(); stateTrack->SetLineWidth(5); stateTrack->SetLineColor(kGreen); startStateTrack->SetLineWidth(2); startStateTrack->SetLineColor(kRed); startStateTrack->SetLineStyle(2); stateTrack->Draw(); startStateTrack->Draw(); points->Draw(); points->Print(); stateTrack->Print(); startStateTrack->Print(); theApp.Run(kTRUE); delete stateTrack; delete startStateTrack; delete points; delete view; delete c1; std::cout << "++++++++++++++++++++++" << std::endl; } } int main(int argc, char **argv){ // create tracks std::vector tracks; std::vector< TMatrixT > MCtruth; buildTracks(1,tracks,MCtruth); std::cout<