1 #ifndef __CMYEVENTSEGMENT_H
2 #define __CMYEVENTSEGMENT_H
4 #include <CExperiment.h>
5 #include <CEventSegment.h>
7 #include <CRingBuffer.h>
18 #define FILENAME_STR_MAXLEN 256
19 #define MAX_NUM_PIXIE16_MODULES 24
20 #define TOTAL_PIXIE16_VARIANTS 8
31 vector<uint32_t> data;
35 double GetTime()
const {
return time;};
37 double GetChannelLength()
const {
return channellength;};
38 int SetChannelLength();
40 int GetChannel()
const {
return chanid;};
56 unsigned short CrateNum;
57 unsigned short NumModules;
58 unsigned short *PXISlotMap;
61 char ComFPGAConfigFile[80];
62 char SPFPGAConfigFile[80];
63 char TrigFPGAConfigFile[80];
68 char ComFPGAConfigFile_RevBCD[FILENAME_STR_MAXLEN];
69 char ComFPGAConfigFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
70 char ComFPGAConfigFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
71 char ComFPGAConfigFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
72 char ComFPGAConfigFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
73 char ComFPGAConfigFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
74 char ComFPGAConfigFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
75 char ComFPGAConfigFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
77 char SPFPGAConfigFile_RevBCD[FILENAME_STR_MAXLEN];
78 char SPFPGAConfigFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
79 char SPFPGAConfigFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
80 char SPFPGAConfigFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
81 char SPFPGAConfigFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
82 char SPFPGAConfigFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
83 char SPFPGAConfigFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
84 char SPFPGAConfigFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
86 char DSPCodeFile_RevBCD[FILENAME_STR_MAXLEN];
87 char DSPCodeFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
88 char DSPCodeFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
89 char DSPCodeFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
90 char DSPCodeFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
91 char DSPCodeFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
92 char DSPCodeFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
93 char DSPCodeFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
95 char DSPVarFile_RevBCD[FILENAME_STR_MAXLEN];
96 char DSPVarFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
97 char DSPVarFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
98 char DSPVarFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
99 char DSPVarFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
100 char DSPVarFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
101 char DSPVarFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
102 char DSPVarFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
104 unsigned short ModRev[MAX_NUM_PIXIE16_MODULES];
105 unsigned short ModADCBits[MAX_NUM_PIXIE16_MODULES];
106 unsigned short ModADCMSPS[MAX_NUM_PIXIE16_MODULES];
107 unsigned int ModSerNum[MAX_NUM_PIXIE16_MODULES];
108 unsigned int ModuleRevBitMSPSWord[MAX_NUM_PIXIE16_MODULES];
109 unsigned int ModClockCal[MAX_NUM_PIXIE16_MODULES];
110 char Pixie16_Com_FPGA_File[FILENAME_STR_MAXLEN];
111 char Pixie16_SP_FPGA_File[FILENAME_STR_MAXLEN];
112 char Pixie16_DSP_Code_File[FILENAME_STR_MAXLEN];
113 char Pixie16_DSP_Var_File[FILENAME_STR_MAXLEN];
114 char Pixie16_Trig_FPGA_File[FILENAME_STR_MAXLEN];
119 unsigned int nFIFOWords;
122 unsigned short EndOfRunRead;
124 unsigned int *CrateData;
125 unsigned int **PositionInCrateData;
126 unsigned long totwords;
127 vector<unsigned int *> ChannelList;
128 vector<unsigned int *>::iterator ChannelList_it;
131 deque<channel *> ModuleDeque[MAXMOD];
132 deque<channel *> ModuleDequeTemp;
133 vector<uint32_t> ModuleData[MAXMOD];
135 vector<uint32_t> DataToWorld;
137 vector<uint32_t> nFIFOWordsinModuleCurrentRead;
138 vector<uint64_t> nFIFOWordsinModuleTotal;
141 vector<double> CurrentTimeinModuleRead;
142 vector<double> FirstTimeinModuleRead;
144 unsigned long CurrentTime;
145 unsigned long lasttime;
146 unsigned long TimeWindow;
154 double m_tstampScaleFactor;
160 virtual void initialize();
162 virtual size_t read(
void* rBuffer,
size_t maxwords);
163 virtual void disable();
164 virtual void clear();
166 virtual void onEnd(CExperiment* pExperiment);
167 int GetNumberOfModules() {
return (
int)NumModules;}
168 unsigned short GetCrateID() {
return CrateNum;}
170 bool IsUniqueEvent(
const channel* event);
174 void setTimestampScaleFactor(
double value);
175 double getTimestampScaleFactor()
const;
178 size_t SelectivelyOutputData(
void* rBuffer,
size_t maxwords);
180 void PushDataOntoQueue(std::deque<channel*>& deque, std::deque<channel*>& buffer);
181 uint64_t extractExternalTimestamp(
const std::vector<uint32_t>& data);