/* * SttHitDemo.cxx * * Created on: Dec 6, 2012 * Author: dklein */ #include "SttHitDemo.h" #include "PndPayload.h" #include "FairMQLogger.h" SttHitDemo::SttHitDemo() { } SttHitDemo::~SttHitDemo() { } //void SttHitDemo::Init() //{ //} void SttHitDemo::Exec(FairMQMessage* msg, Option_t* opt) { Int_t inputSize = msg->Size(); Int_t numInput = inputSize / sizeof(PndPayload::SttHit); PndPayload::SttHit* input = static_cast(msg->GetMessage()->data()); Int_t numOutput = 3; Int_t outputSize = numOutput * sizeof(Double_t); void* buffer = operator new[](outputSize); Double_t* output = static_cast(buffer); Double_t sumIsochrone = .0; Double_t sumPulse = .0; Double_t sumDepCharge = .0; for (Int_t i = 0; i < numInput; ++i) { sumIsochrone = sumIsochrone + input[i].fIsochrone; sumPulse = sumPulse + input[i].fPulse; sumDepCharge = sumDepCharge + input[i].fDepCharge; } //std::stringstream logmsg; //logmsg << "sum Isochrone: " << sumIsochrone << ", sum Pulse: " << sumPulse << ", sum DepCharge: " << sumDepCharge << ", outputSize: " << outputSize; //FairMQLogger::GetInstance()->Log(FairMQLogger::DEBUG, logmsg.str()); if (inputSize > 0) { output[0] = sumIsochrone / (Double_t)numInput; output[1] = sumPulse / (Double_t)numInput; output[2] = sumDepCharge / (Double_t)numInput; } msg->GetMessage()->rebuild(buffer, outputSize, 0); }