#include "PndTorinoDetectorRecoTask.h" #include "PndTorinoDetectorHit.h" #include "PndTorinoDetectorDigi.h" #include "FairRootManager.h" #include "TMath.h" #include using namespace std; // ----- Default constructor ------------------------------------------- PndTorinoDetectorRecoTask::PndTorinoDetectorRecoTask() { } // ------------------------------------------------------------------------- // ----- Standard constructor ------------------------------------------ PndTorinoDetectorRecoTask::PndTorinoDetectorRecoTask(Int_t verbose) { } // ------------------------------------------------------------------------- // ----- Destructor ---------------------------------------------------- PndTorinoDetectorRecoTask::~PndTorinoDetectorRecoTask() { } // ------------------------------------------------------------------------- // ----- Public method Init (abstract in base class) -------------------- InitStatus PndTorinoDetectorRecoTask::Init() { FairRootManager* ioman = FairRootManager::Instance(); if (!ioman) { std::cout << "-E- PndTorinoDetectorRecoTask::Init: " ///todo replace with logger! << "RootManager not instantiated!" << std::endl; return kFATAL; } fDigiArray = (TClonesArray*) ioman->GetObject("PndTorinoDetectorDigi"); if (!fDigiArray) { std::cout << "-W- PndTorinoDetectorRecoTask::Init: " << "No Point array!" << std::endl; return kERROR; } // Create and register output array fHitArray = new TClonesArray("PndTorinoDetectorHit"); ioman->Register("PndTorinoDetectorHit", "PndTorinoDetector", fHitArray, kTRUE); return kSUCCESS; } // ----- Public method Exec -------------------------------------------- void PndTorinoDetectorRecoTask::Exec(Option_t* opt) { fHitArray->Delete(); // fill the map for(int ipnt = 0; ipnt < fDigiArray->GetEntries(); ipnt++) { PndTorinoDetectorDigi* digi = (PndTorinoDetectorDigi*) fDigiArray->At(ipnt); if(!digi) continue; Double_t timestamp = digi->GetTimeStamp(); TVector3 pos(digi->GetX()+0.5, digi->GetY()+0.5, digi->GetZ()+0.5); TVector3 dpos(1/TMath::Sqrt(12), 1/TMath::Sqrt(12), 1/TMath::Sqrt(12)); PndTorinoDetectorHit* hit = new ((*fHitArray)[ipnt]) PndTorinoDetectorHit(-1, -1, pos, dpos); hit->SetTimeStamp(digi->GetTimeStamp()); hit->SetTimeStampError(digi->GetTimeStampError()); hit->SetLink(FairLink("PndTorinoDetectorDigi", ipnt)); } } // ------------------------------------------------------------------------- ClassImp(PndTorinoDetectorRecoTask)