/********************************************************** * * PndEmcTestHitProducer generates PndEmcHits with * specified energies. * * Author: Christian Hammann, chammann@hiskp.uni-bonn.de * * Date: 14..08.2012 * ********************************************************/ #include "PndEmcTestHitProducer.h" #include "FairRootManager.h" #include "TClonesArray.h" #include "PndEmcStructure.h" #include "PndEmcGeoPar.h" #include "PndEmcHit.h" #include "PndEmcMapper.h" #include "FairRun.h" #include "FairRuntimeDb.h" #include PndEmcTestHitProducer::PndEmcTestHitProducer():FairTask("EmcTestHitProducer"),fEMin(0),fEMax(10),fEStep(0.2),fECurrent(0),fHitArray(NULL),fDetId(0){ }; InitStatus PndEmcTestHitProducer::Init(){ FairRootManager *ioman = FairRootManager::Instance(); if(ioman == NULL){ return kFATAL; std::cout << "PndEmcTestHitProducer could not get ioman" << std::endl; } fHitArray = new TClonesArray("PndEmcHit"); ioman->Register("EmcHit","Emc",fHitArray,kTRUE); std::cout << "PndEmcTestHitProducer initialized" << std::endl; fGeoPar->SetMapperVersion(1); fGeoPar->InitEmcMapper(); PndEmcMapper::Instance(); PndEmcStructure::Instance(); return kSUCCESS; } void PndEmcTestHitProducer::Exec(Option_t *){ fHitArray->Delete(); TClonesArray &array = *fHitArray; new(array[0]) PndEmcHit(0,fDetId,fECurrent,0,0,0,0); std::cout << "New Hit for DetId " << fDetId << " with Energy " << fECurrent << " GeV" << std::endl; fECurrent +=fEStep; if(fECurrent > fEMax){ fECurrent = fEMin; } } void PndEmcTestHitProducer::SetParContainers(){ // Get run and runtime database FairRun* run = FairRun::Instance(); if (! run ) Fatal("SetParContainers", "No analysis run"); FairRuntimeDb* db = run->GetRuntimeDb(); if (! db ) Fatal("SetParContainers", "No runtime database"); // Get Emc geometry parameter container fGeoPar = (PndEmcGeoPar*) db->getContainer("PndEmcGeoPar"); } ClassImp(PndEmcTestHitProducer)