//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class TpcTrackVisTask // see TpcTrackVisTask.h for details // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- // Panda Headers ---------------------- // This Class' Header ------------------ #include "TpcTrackVisTask.h" // C/C++ Headers ---------------------- #include #include #include // Collaborating Class Headers -------- #include "CbmRootManager.h" #include "TClonesArray.h" #include "Track.h" #include "TrackCand.h" #include "TpcCluster.h" #include "AbsTrackRep.h" #include "RecoHitFactory.h" #include "TApplication.h" #include "TGeoManager.h" #include "TROOT.h" #include "TSystem.h" #include "TCanvas.h" #include "TList.h" #include "TGeoMaterial.h" #include "TVirtualGeoTrack.h" TpcTrackVisTask::TpcTrackVisTask() : CbmTask("TpcTrackVis"), _persistence(kFALSE)//, app("app",0,NULL) { _trackBranchName = "TrackPostFit"; } TpcTrackVisTask::~TpcTrackVisTask() { } InitStatus TpcTrackVisTask::Init() { //Get ROOT Manager CbmRootManager* ioman= CbmRootManager::Instance(); if(ioman==0) { Error("TrackReadTask::Init","RootManager not instantiated!"); return kERROR; } // Get input collection _trackArray=(TClonesArray*) ioman->GetObject(_trackBranchName); if(_trackArray==0) { Error("TrackReadTask::Init","Track-array not found!"); return kERROR; } _clusterArray=(TClonesArray*) ioman->GetObject("TpcCluster"); if(_clusterArray==0) { Error("TrackReadTask::Init","Cluster-array not found!"); return kERROR; } _geom=new TGeoManager("world","world"); TGeoMaterial *matVacuum = new TGeoMaterial("Vacuum", 0,0,0); TGeoMedium *Vacuum = new TGeoMedium("Vacuum",1, matVacuum); TGeoVolume *top = _geom->MakeBox("TOP", Vacuum, 50., 50., 110.); top->SetVisibility(kFALSE); top->SetTransparency(0); _geom->SetTopVolume(top); return kSUCCESS; } void TpcTrackVisTask::Exec(Option_t* opt) { std::cout << "TpcTrackVisTask::Exec" << std::endl; std::vector trackvec; Int_t nTracks=_trackArray->GetEntriesFast(); for(int i=0;iAt(i)); } _geom->ClearTracks(); if(trackvec.size()==0)return; TCanvas *c1 = new TCanvas("c1"); for(unsigned int i=0;igetCardinalRep()->getStatusFlag()==0){ std::cout<<"Filling track info"<GetTrack(_geom->AddTrack(i,13)); trackvec[i]->fillGeoTrack(geotrk); geotrk->SetLineColor(kBlue); } // draw hits TrackCand cand=trackvec[i]->getCand(); TVirtualGeoTrack* hittrk=_geom->GetTrack(_geom->AddTrack(i+nTracks,14)); std::cout<<"Filling hits"<At(hitid); //cl->pos().Print(); hittrk->AddPoint(cl->pos().X(),cl->pos().Y(),cl->pos().Z(),0); hittrk->SetLineColor(i); hittrk->SetMarkerStyle(24); hittrk->SetMarkerSize(1); } } _geom->SetVisLevel(4); _geom->GetTopVolume()->Draw(); _geom->DrawTracks(); std::cout << std::endl << "================================" << std::endl; std::cout << "To continue with next event, do:" << std::endl; std::cout << "MENU File -> Quit ROOT" << std::endl; std::cout << "================================" << std::endl; gApplication->SetReturnFromRun(kTRUE); gSystem->Run(); delete c1; return; } ClassImp(TpcTrackVisTask)