FairRoot/PandaRoot
Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
PndMvdMQTaskProcessor< T > Class Template Reference

#include <PndMvdMQTaskProcessor.h>

Inheritance diagram for PndMvdMQTaskProcessor< T >:

Public Types

enum  { Last }
 

Public Member Functions

 PndMvdMQTaskProcessor ()
 
virtual ~PndMvdMQTaskProcessor ()
 
void SetProperty (const int key, const std::string &value)
 
std::string GetProperty (const int key, const std::string &default_="")
 
void SetProperty (const int key, const int value)
 
int GetProperty (const int key, const int default_=0)
 
void SetDataToKeep (std::string tStr)
 

Protected Member Functions

virtual void Run ()
 
virtual void Init ()
 
void UpdateParameters ()
 
FairParGenericSet * UpdateParameter (FairParGenericSet *thisPar)
 

Static Protected Member Functions

static void CustomCleanup (void *data, void *hint)
 

Protected Attributes

FairEventHeader * fEventHeader
 
TList * fInput
 
TList * fOutput
 
int fNewRunId
 
int fCurrentRunId
 
std::string fDataToKeep
 
TfFairTask
 
TList * fParCList
 
FairGeoParSet * fGeoPar
 

Detailed Description

template<typename T>
class PndMvdMQTaskProcessor< T >

Definition at line 26 of file PndMvdMQTaskProcessor.h.

Member Enumeration Documentation

template<typename T >
anonymous enum
Enumerator
Last 

Definition at line 29 of file PndMvdMQTaskProcessor.h.

Constructor & Destructor Documentation

template<typename T >
PndMvdMQTaskProcessor< T >::PndMvdMQTaskProcessor ( )

Definition at line 32 of file PndMvdMQTaskProcessor.cxx.

33  : FairMQDevice()
34  , fNewRunId(1)
35  , fCurrentRunId(-1)
36  , fInput(NULL)
37  , fOutput(NULL)
38  , fEventHeader(NULL)
39  , fFairTask(NULL)
40  , fGeoPar(nullptr)
41  , fParCList(NULL)
42 {
43 
44 }
FairEventHeader * fEventHeader
template<typename T >
PndMvdMQTaskProcessor< T >::~PndMvdMQTaskProcessor ( )
virtual

Definition at line 46 of file PndMvdMQTaskProcessor.cxx.

References PndMvdMQTaskProcessor< T >::fGeoPar, PndMvdMQTaskProcessor< T >::fInput, and PndMvdMQTaskProcessor< T >::fOutput.

47 {
48  if(fGeoPar)
49  {
50  delete fGeoPar;
51  fGeoPar=nullptr;
52  }
53 
54  if(fInput)
55  {
56  delete fInput;
57  fInput=nullptr;
58  }
59 
60  if(fOutput)
61  {
62  delete fOutput;
63  fOutput=nullptr;
64  }
65 }

Member Function Documentation

template<typename T >
void PndMvdMQTaskProcessor< T >::CustomCleanup ( void *  data,
void *  hint 
)
staticprotected

Definition at line 147 of file PndMvdMQTaskProcessor.cxx.

Referenced by PndMvdMQTaskProcessor< T >::UpdateParameter().

148 {
149  delete (std::string*)hint;
150 }
template<typename T >
std::string PndMvdMQTaskProcessor< T >::GetProperty ( const int  key,
const std::string &  default_ = "" 
)

Definition at line 166 of file PndMvdMQTaskProcessor.cxx.

167 {
168  switch (key)
169  {
170  default:
171  return FairMQDevice::GetProperty(key, default_);
172  }
173 }
template<typename T >
int PndMvdMQTaskProcessor< T >::GetProperty ( const int  key,
const int  default_ = 0 
)

Definition at line 181 of file PndMvdMQTaskProcessor.cxx.

182 {
183  return FairMQDevice::GetProperty(key, value);
184 }
template<typename T >
void PndMvdMQTaskProcessor< T >::Init ( )
protectedvirtual

Definition at line 68 of file PndMvdMQTaskProcessor.cxx.

References PndMvdMQTaskProcessor< T >::fFairTask, PndMvdMQTaskProcessor< T >::fGeoPar, PndMvdMQTaskProcessor< T >::fInput, PndMvdMQTaskProcessor< T >::fOutput, and PndMvdMQTaskProcessor< T >::fParCList.

69 {
70  //fHitFinder->InitMQ(fRootParFileName,fAsciiParFileName);
71  fFairTask = new PixelFindHits();
72  fGeoPar = new FairGeoParSet("FairGeoParSet");
73  fParCList = new TList();
74  fParCList->Add(fGeoPar);
75  fFairTask->GetParList(fParCList);
76 
77  fOutput = new TList();
78  fInput = new TList();
79 }
template<typename T >
void PndMvdMQTaskProcessor< T >::Run ( )
protectedvirtual

Definition at line 81 of file PndMvdMQTaskProcessor.cxx.

References PndMvdMQTaskProcessor< T >::fCurrentRunId, PndMvdMQTaskProcessor< T >::fEventHeader, PndMvdMQTaskProcessor< T >::fFairTask, PndMvdMQTaskProcessor< T >::fInput, PndMvdMQTaskProcessor< T >::fNewRunId, PndMvdMQTaskProcessor< T >::fOutput, PndMvdMQTaskProcessor< T >::fParCList, free_tmessage4(), and PndMvdMQTaskProcessor< T >::UpdateParameters().

82 {
83  int receivedMsgs = 0;
84  int sentMsgs = 0;
85 
86  while (CheckCurrentState(RUNNING))
87  {
88  FairMQParts parts;
89 
90  if ( Receive(parts,"data-in") >= 0 )
91  {
92  LOG(INFO)<<"message received";
93  receivedMsgs++;
94 
95  TObject* tempObjects[10];
96  for ( int ipart = 0 ; ipart < parts.Size() ; ipart++ )
97  {
98  Ex9TMessage2 tm(parts.At(ipart)->GetData(), parts.At(ipart)->GetSize());
99  tempObjects[ipart] = (TObject*)tm.ReadObject(tm.GetClass());
100  if ( strcmp(tempObjects[ipart]->GetName(),"EventHeader.") == 0 )
101  fEventHeader = (FairEventHeader*)tempObjects[ipart];
102  else {
103  fInput->Add(tempObjects[ipart]);
104  }
105  }
106 
107  fNewRunId = fEventHeader->GetRunId();
109  {
112  PixelDigiPar* tempDP = (PixelDigiPar*)fParCList->FindObject("PixelDigiParameters");
113  fFairTask->InitMQ(fParCList);
114  }
115 
116 
117  // Execute hit finder task
118  fOutput->Clear();
119  LOG(INFO) << " analyzing event " << fEventHeader->GetMCEntryNumber();
120  fFairTask->ExecMQ(fInput,fOutput);
121 
122  TMessage* messageFEH;
123  TMessage* messageTCA[10];
124  FairMQParts partsOut;
125 
126  messageFEH = new TMessage(kMESS_OBJECT);
127  messageFEH->WriteObject(fEventHeader);
128  partsOut.AddPart(NewMessage(messageFEH->Buffer(), messageFEH->BufferSize(), free_tmessage4, messageFEH));
129  for ( int iobj = 0 ; iobj < fOutput->GetEntries() ; iobj++ ) {
130  messageTCA[iobj] = new TMessage(kMESS_OBJECT);
131  messageTCA[iobj]->WriteObject(fOutput->At(iobj));
132  partsOut.AddPart(NewMessage(messageTCA[iobj]->Buffer(), messageTCA[iobj]->BufferSize(), free_tmessage4, messageTCA[iobj]));
133  Send(partsOut, "data-out");
134  }
135 
136  sentMsgs++;
137  }
138  fInput->Clear();
139  }
140 
141  MQLOG(INFO) << "Received " << receivedMsgs << " and sent " << sentMsgs << " messages!";
142 }
FairEventHeader * fEventHeader
void free_tmessage4(void *data, void *hint)
template<typename T >
void PndMvdMQTaskProcessor< T >::SetDataToKeep ( std::string  tStr)
inline

Definition at line 42 of file PndMvdMQTaskProcessor.h.

References PndMvdMQTaskProcessor< T >::fDataToKeep.

Referenced by main().

42 { fDataToKeep = tStr;}
template<typename T >
void PndMvdMQTaskProcessor< T >::SetProperty ( const int  key,
const std::string &  value 
)

Definition at line 154 of file PndMvdMQTaskProcessor.cxx.

155 {
156  switch (key)
157  {
158  default:
159  FairMQDevice::SetProperty(key, value);
160  break;
161  }
162 }
template<typename T >
void PndMvdMQTaskProcessor< T >::SetProperty ( const int  key,
const int  value 
)

Definition at line 176 of file PndMvdMQTaskProcessor.cxx.

177 {
178  FairMQDevice::SetProperty(key, value);
179 }
template<typename T >
FairParGenericSet * PndMvdMQTaskProcessor< T >::UpdateParameter ( FairParGenericSet *  thisPar)
protected

Definition at line 200 of file PndMvdMQTaskProcessor.cxx.

References PndMvdMQTaskProcessor< T >::CustomCleanup(), and PndMvdMQTaskProcessor< T >::fCurrentRunId.

Referenced by PndMvdMQTaskProcessor< T >::UpdateParameters().

200  {
201  std::string paramName = thisPar->GetName();
202  // boost::this_thread::sleep(boost::posix_time::milliseconds(1000));
203  std::string* reqStr = new std::string(paramName + "," + std::to_string(fCurrentRunId));
204  LOG(WARN) << "Requesting parameter \"" << paramName << "\" for Run ID " << fCurrentRunId << " (" << thisPar << ")";
205  std::unique_ptr<FairMQMessage> req(NewMessage(const_cast<char*>(reqStr->c_str()), reqStr->length(), CustomCleanup, reqStr));
206  std::unique_ptr<FairMQMessage> rep(NewMessage());
207 
208  if (Send(req,"param") > 0)
209  {
210  if (Receive(rep,"param") > 0)
211  {
212  Ex9TMessage2 tm(rep->GetData(), rep->GetSize());
213  thisPar = (FairParGenericSet*)tm.ReadObject(tm.GetClass());
214  LOG(WARN) << "Received parameter"<< paramName <<" from the server (" << thisPar << ")";
215  return thisPar;
216  }
217  }
218  return NULL;
219 }
static void CustomCleanup(void *data, void *hint)
template<typename T >
void PndMvdMQTaskProcessor< T >::UpdateParameters ( )
protected

Definition at line 192 of file PndMvdMQTaskProcessor.cxx.

References PndMvdMQTaskProcessor< T >::fParCList, and PndMvdMQTaskProcessor< T >::UpdateParameter().

Referenced by PndMvdMQTaskProcessor< T >::Run().

192  {
193  for ( int iparC = 0 ; iparC < fParCList->GetEntries() ; iparC++ ) {
194  FairParGenericSet* tempObj = (FairParGenericSet*)(fParCList->At(iparC));
195  fParCList->Remove(tempObj);
196  fParCList->AddAt(UpdateParameter(tempObj),iparC);
197  }
198 }
FairParGenericSet * UpdateParameter(FairParGenericSet *thisPar)

Member Data Documentation

template<typename T >
int PndMvdMQTaskProcessor< T >::fCurrentRunId
protected
template<typename T >
std::string PndMvdMQTaskProcessor< T >::fDataToKeep
protected

Definition at line 60 of file PndMvdMQTaskProcessor.h.

Referenced by PndMvdMQTaskProcessor< T >::SetDataToKeep().

template<typename T >
FairEventHeader* PndMvdMQTaskProcessor< T >::fEventHeader
protected

Definition at line 53 of file PndMvdMQTaskProcessor.h.

Referenced by PndMvdMQTaskProcessor< T >::Run().

template<typename T >
T* PndMvdMQTaskProcessor< T >::fFairTask
protected
template<typename T >
FairGeoParSet* PndMvdMQTaskProcessor< T >::fGeoPar
protected
template<typename T >
TList* PndMvdMQTaskProcessor< T >::fInput
protected
template<typename T >
int PndMvdMQTaskProcessor< T >::fNewRunId
protected

Definition at line 57 of file PndMvdMQTaskProcessor.h.

Referenced by PndMvdMQTaskProcessor< T >::Run().

template<typename T >
TList* PndMvdMQTaskProcessor< T >::fOutput
protected
template<typename T >
TList* PndMvdMQTaskProcessor< T >::fParCList
protected

The documentation for this class was generated from the following files: