Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Df250EmulatorAlgorithm.h
Go to the documentation of this file.
1 #ifndef _Df250EmulatorAlgorithm_
2 #define _Df250EmulatorAlgorithm_
3 #include <JANA/JObject.h>
4 #include <JANA/JFactory.h>
5 #include <JANA/JEventLoop.h>
6 
8 #include <DAQ/Df250PulseTime.h>
9 #include <DAQ/Df250PulseData.h>
10 #include <DAQ/Df250PulsePedestal.h>
11 #include <DAQ/Df250PulseIntegral.h>
12 #include <DAQ/Df250Config.h>
13 #include <DAQ/Df250BORConfig.h>
14 
15 using namespace std;
16 using namespace jana;
17 
18 /////////////////////////////////////////////////////////////////
19 // This implements the base class for the f250 firmware emulation
20 // EmulateFirmware needs to be virtually overwritten by the user
21 ////////////////////////////////////////////////////////////////
22 
23 class Df250EmulatorAlgorithm:public jana::JObject{
24  public:
25  JOBJECT_PUBLIC(Df250EmulatorAlgorithm);
26  Df250EmulatorAlgorithm(JEventLoop *loop){};
28 
29  // The main emulation routines are overwritten in the inherited classes
30 
31  // firmware v1 data format
32  virtual void EmulateFirmware(const Df250WindowRawData* wrd,
33  std::vector<Df250PulseTime*> &pt_objs,
34  std::vector<Df250PulsePedestal*> &pp_objs,
35  std::vector<Df250PulseIntegral*> &pi_objs)=0;
36 
37  virtual void EmulateFirmware(const Df250WindowRawData* rawData,
38  std::vector<JObject*> &pt_objs,
39  std::vector<JObject*> &pp_objs,
40  std::vector<JObject*> &pi_objs)
41  {
42  std::vector<Df250PulseTime*> mypt_objs;
43  std::vector<Df250PulsePedestal*> mypp_objs;
44  std::vector<Df250PulseIntegral*> mypi_objs;
45  EmulateFirmware(rawData, mypt_objs, mypp_objs, mypi_objs);
46  for(auto p : mypt_objs) pt_objs.push_back(p);
47  for(auto p : mypp_objs) pp_objs.push_back(p);
48  for(auto p : mypi_objs) pi_objs.push_back(p);
49 
50  }
51 
52  // firmware v2 data format
53  virtual void EmulateFirmware(const Df250WindowRawData* wrd,
54  std::vector<Df250PulseData*> &pdat_objs)=0;
55 
56  virtual void EmulateFirmware(const Df250WindowRawData* rawData,
57  std::vector<JObject*> &pdat_objs)
58  {
59  std::vector<Df250PulseData*> mypdat_objs;
60  EmulateFirmware(rawData, mypdat_objs);
61  for(auto p : mypdat_objs) pdat_objs.push_back(p);
62 
63  }
64  protected:
65  // Suppress default constructor
67 
68 };
69 
70 #endif // _Df250EmulatorAlgorithm_factory_
virtual void EmulateFirmware(const Df250WindowRawData *rawData, std::vector< JObject * > &pt_objs, std::vector< JObject * > &pp_objs, std::vector< JObject * > &pi_objs)
virtual void EmulateFirmware(const Df250WindowRawData *rawData, std::vector< JObject * > &pdat_objs)
Df250EmulatorAlgorithm(JEventLoop *loop)