// ------------------------------------------------------------------------- // ----- PndSorterTaskT source file ----- // ------------------------------------------------------------------------- #include "PndSorterTask.h" #include "FairRootManager.h" InitStatus PndSorterTask::ReInit() { return kSUCCESS; } // ----- Public method Init -------------------------------------------- InitStatus PndSorterTask::Init() { FairRootManager* ioman = FairRootManager::Instance(); if ( ! ioman ) { std::cout << "-E- PndSorterTaskT::Init: " << "RootManager not instantiated!" << std::endl; return kFATAL; } fSorter = InitSorter(fNumberOfCells, fWidthOfCells); // Create and register output array fInputArray = FairRootManager::Instance()->GetTClonesArray(fInputBranch); if(fVerbose>1) Info("Init","Registering this branch: %s/%s","PndMvd",fOutputBranch.Data()); fOutputArray = ioman->Register(fOutputBranch, fInputArray->GetClass()->GetName(), fFolder, fPersistance); return kSUCCESS; } // ------------------------------------------------------------------------- // ----- Public method Exec -------------------------------------------- void PndSorterTask::Exec(Option_t* opt) { fInputArray = FairRootManager::Instance()->GetTClonesArray(fInputBranch); std::cout << "-I- PndSorterTask: Size PixelArray: " << fInputArray->GetEntriesFast() << std::endl; for (int i = 0; i < fInputArray->GetEntriesFast(); i++){ FairTimeStamp* myData = (FairTimeStamp*)fInputArray->At(i); myData->SetEntryNr(FairLink(0, fEntryNr, fInputBranch, i)); // if (fVerbose > 2){ std::cout << "Sorter filled with: "; myData->Print(); std::cout<< std::endl; // } fSorter->AddElement(myData, myData->GetTimeStamp()); } if (fVerbose > 2)fSorter->Print(); std::vector sortedData = fSorter->GetOutputData(); fOutputArray = FairRootManager::Instance()->GetEmptyTClonesArray(fOutputBranch); for (int i = 0; i < sortedData.size(); i++) { AddNewDataToTClonesArray(sortedData[i]); } fSorter->DeleteOutputData(); fEntryNr++; } // ------------------------------------------------------------------------- void PndSorterTask::FinishEvent(){ fOutputArray->Delete(); } void PndSorterTask::FinishTask() { fInputArray = FairRootManager::Instance()->GetTClonesArray(fInputBranch); if (fVerbose > 2) std::cout << "-I- PndSorterTaskT::FinishTask Size InputArray: " << fInputArray->GetEntriesFast() << std::endl; for (int i = 0; i < fInputArray->GetEntriesFast(); i++) { FairTimeStamp* myDigi = (FairTimeStamp*) fInputArray->At(i); fSorter->AddElement(myDigi, ((FairTimeStamp*)myDigi)->GetTimeStamp()); } fSorter->Print(); fSorter->WriteOutAll(); std::vector sortedData = fSorter->GetOutputData(); FairRootManager* ioman = FairRootManager::Instance(); fOutputArray = ioman->GetEmptyTClonesArray(fOutputBranch); for (int i = 0; i < sortedData.size(); i++) { std::cout << i << " FinishTask : "; sortedData[i]->Print(); std::cout << std::endl; AddNewDataToTClonesArray(sortedData[i]); } fSorter->DeleteOutputData(); fSorter->Print(); ioman->SetLastFill(); } ClassImp(PndSorterTask);