//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class TpcSimpleVertexingTask // // Environment: // Software developed for the Fopi GEM-TPC // // Author List: // Sverre Doerheim TUM (original author) // // //----------------------------------------------------------- // This Class' Header ------------------ #include "TpcSimpleVertexingTask.h" // Collaborating Class Headers -------- #include "FairRootManager.h" #include "FairRuntimeDb.h" #include "TpcVertex.h" //Genfit Class Headers #include #include "GFException.h" // ROOT Classes #include "TClonesArray.h" #include "TVector3.h" ClassImp(TpcSimpleVertexingTask) TpcSimpleVertexingTask::TpcSimpleVertexingTask() : FairTask("TpcVertexing"), _persistence(kFALSE), _trackBranchName("TrackPostFit"), _vertexBranchName("TpcSimpleVertex"), _z1(0,0,-100), _z2(0,0,200) { fVerbose = 0; } TpcSimpleVertexingTask::~TpcSimpleVertexingTask(){ } InitStatus TpcSimpleVertexingTask::Init() { //Get ROOT Manager FairRootManager* ioman= FairRootManager::Instance(); if(ioman==0){ Error("TpcVertexingTask::Init","RootManager not instantiated!"); return kERROR; } // Get input collection _trackArray=(TClonesArray*) ioman->GetObject(_trackBranchName); if(_trackArray==0){ Error("TpcSimpleVertexingTask::Init","GFTrack-array not found!"); return kERROR; } // register output arrays _vertexArray = new TClonesArray("TpcVertex"); ioman->Register(_vertexBranchName,"Tpc",_vertexArray,_persistence); return kSUCCESS; } void TpcSimpleVertexingTask::SetParContainers() { ; } void TpcSimpleVertexingTask::Exec(Option_t* opt) { static unsigned int counter(0); //std::cout<<"TpcSimpleVertexingTask::Exec - Event Nr. " << counter++ << "\n"; std::map trackMap; // Reset output Array if(_vertexArray==0) Fatal("TpcVertexingTask::Exec","No TpcVertex Array"); _vertexArray->Delete(); TVector3 poca, normVec, poca_onwire; // skip if not enough tracks unsigned int nTrks=_trackArray->GetEntriesFast(); for(unsigned int iTr=0;iTrAt(iTr))->getCardinalRep(); if(theTrk->getStatusFlag()!=0) continue; try{ theTrk->extrapolateToLine(_z1,_z2,poca,normVec,poca_onwire); }catch(GFException &exp){ std::cerr< tracks; tracks.push_back(iTr); TpcVertex* theVtx2=new((*_vertexArray)[_vertexArray->GetEntriesFast()]) TpcVertex(poca,err, tracks, _trackBranchName); theVtx2->setIndex(_vertexArray->GetEntriesFast()-1); } }