// @sample:codesample1
#include "xtcdata/xtc/ShapesData.hh"
#include "xtcdata/xtc/DescData.hh"
#include "xtcdata/xtc/Dgram.hh"
#include "xtcdata/xtc/TypeId.hh"
#include "xtcdata/xtc/XtcIterator.hh"
#include "xtcdata/xtc/VarDef.hh"
using namespace XtcData;
#define BUFSIZE 0x4000000
CSPADXtcWriter::CSPADXtcWriter()
{
// Squirrel away algorithm definitions in a VarDef
class FexDef:public VarDef
{
public:
enum index
{
floatFex,
arrayFex,
intFex
};
FexDef()
{
NameVec.push_back({"floatFex",Name::DOUBLE});
NameVec.push_back({"arrayFex",Name::FLOAT,2});
NameVec.push_back({"intFex",Name::INT64});
}
} FexDef;
// Define some instance variables.
FILE *this->xtcoutfile;
Dgram& this->configDgram;
std::vector<NameIndex>& this->namesVec;
this->FexDef = new FexDef();
// Now initialize various things
_initializeConfigDgram();
}
void CSPADXtcWriter::_initializeConfigDgram()
{
TypeId tid(TypeId::Parent, 0);
void* configbuf = malloc(BUFSIZE);
this->configDgram = *(Dgram*)configbuf;
this->configDgram.xtc.contains = tid;
this->configDgram.xtc.damage = 0;
this->configDgram.xtc.extent = sizeof(Xtc);
}
void CSPADWriter::_addNames(Xtc& parent, std::vector<NameIndex>& namesVec)
{
Alg hsdFexAlg("fex",4,5,6);
Names& fexNamesthis->fexNames = *new(parent) Names("xpphsd", hsdFexAlg, "hsd","detnum1234")
this->fexNames.add(parent, FexDef);
namesVec.push_back(NameIndex(this->fexNames));
}
void CSPADXtcWriter::setup()
{
_addNames(this->configDgram.xtc, this->namesVec);
}
void CSPADXtcWriter::openXtcFile(xtcoutfilename)
{
this->xtcoutfile = fopen(xtcoutfilename, "w");
}
void CSPADXtcWriter::writeImage()
{
}
void CSPADXtcWriter::closeXtcFile()
{
fclose(this->xtcoutfile);
} |