//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Implementation of class TpcClusterAlignmentTask // see TpcClusterAlignmentTask.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 "TpcClusterAlignmentTask.h" // C/C++ Headers ---------------------- #include #include // Collaborating Class Headers -------- #include "FairRootManager.h" #include "FairRunAna.h" #include "FairRuntimeDb.h" #include "TClonesArray.h" #include "GFRecoHitFactory.h" #include "TStopwatch.h" #include "TpcAlignmentManager.h" //#define PERFMON // Class Member definitions ----------- TpcClusterAlignmentTask::TpcClusterAlignmentTask() : FairTask("TPC Cluster Finder"), fpersistence(kFALSE), fDetName("tpc") { fClusterInName = "TpcCluster"; fClusterOutName = "TpClusterAligned"; } TpcClusterAlignmentTask::~TpcClusterAlignmentTask() { } void TpcClusterAlignmentTask::SetParContainers() { std::cout<<"TpcClusterAlignmentTask::SetParContainers"<GetRuntimeDb(); if ( ! db ) Fatal("SetParContainers", "No runtime database"); // Get Tpc digitisation parameter container fpar= (TpcDigiPar*) db->getContainer("TpcDigiPar"); if (! fpar ) Fatal("SetParContainers", "TpcDigiPar not found"); } InitStatus TpcClusterAlignmentTask::Init() { //Get ROOT Manager FairRootManager* ioman= FairRootManager::Instance(); if(ioman==0) { Error("TpcClusterAlignmentTask::Init","RootManager not instantiated!"); return kERROR; } // Get input collection fclusterInArray=(TClonesArray*) ioman->GetObject(fClusterInName); if(fclusterInArray==0){ Error("TpcClusterAlignmentTask::Init","Cluster-array not found!"); return kERROR; } // create and register output array fclusterOutArray = new TClonesArray("TpcCluster"); ioman->Register(fClusterOutName,"Tpc",fclusterOutArray,fpersistence); alMan = TpcAlignmentManager::getInstance(); return kSUCCESS; } void TpcClusterAlignmentTask::Exec(Option_t* opt) { std::cerr<<"TpcClusterAlignmentTask::Exec"<Delete(); // Call instance for Alignment Manager unsigned int nClusters=fclusterInArray->GetEntriesFast(); for(unsigned int iCl=0;iClAt(iCl); TVector3 alignedPos = alMan->localToMaster(fDetName,cl->pos()); //std::cerr<<"pos before: "<pos().x()<<" after: "<SetPos(alignedPos); } return; } ClassImp(TpcClusterAlignmentTask)