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 int SetTime(
double clockcal);
38 double GetChannelLength()
const {
return channellength;};
39 int SetChannelLength();
41 int GetChannel()
const {
return chanid;};
57 unsigned short CrateNum;
58 unsigned short NumModules;
59 unsigned short *PXISlotMap;
69 char ComFPGAConfigFile_RevBCD[FILENAME_STR_MAXLEN];
70 char ComFPGAConfigFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
71 char ComFPGAConfigFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
72 char ComFPGAConfigFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
73 char ComFPGAConfigFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
74 char ComFPGAConfigFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
75 char ComFPGAConfigFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
76 char ComFPGAConfigFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
78 char SPFPGAConfigFile_RevBCD[FILENAME_STR_MAXLEN];
79 char SPFPGAConfigFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
80 char SPFPGAConfigFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
81 char SPFPGAConfigFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
82 char SPFPGAConfigFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
83 char SPFPGAConfigFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
84 char SPFPGAConfigFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
85 char SPFPGAConfigFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
87 char DSPCodeFile_RevBCD[FILENAME_STR_MAXLEN];
88 char DSPCodeFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
89 char DSPCodeFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
90 char DSPCodeFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
91 char DSPCodeFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
92 char DSPCodeFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
93 char DSPCodeFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
94 char DSPCodeFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
96 char DSPVarFile_RevBCD[FILENAME_STR_MAXLEN];
97 char DSPVarFile_RevF_100MHz_14Bit[FILENAME_STR_MAXLEN];
98 char DSPVarFile_RevF_100MHz_16Bit[FILENAME_STR_MAXLEN];
99 char DSPVarFile_RevF_250MHz_12Bit[FILENAME_STR_MAXLEN];
100 char DSPVarFile_RevF_250MHz_14Bit[FILENAME_STR_MAXLEN];
101 char DSPVarFile_RevF_250MHz_16Bit[FILENAME_STR_MAXLEN];
102 char DSPVarFile_RevF_500MHz_12Bit[FILENAME_STR_MAXLEN];
103 char DSPVarFile_RevF_500MHz_14Bit[FILENAME_STR_MAXLEN];
105 unsigned short ModRev[MAX_NUM_PIXIE16_MODULES];
106 unsigned short ModADCBits[MAX_NUM_PIXIE16_MODULES];
107 unsigned short ModADCMSPS[MAX_NUM_PIXIE16_MODULES];
108 unsigned int ModSerNum[MAX_NUM_PIXIE16_MODULES];
109 unsigned int ModuleRevBitMSPSWord[MAX_NUM_PIXIE16_MODULES];
110 unsigned int ModClockCal[MAX_NUM_PIXIE16_MODULES];
111 char Pixie16_Com_FPGA_File[FILENAME_STR_MAXLEN];
112 char Pixie16_SP_FPGA_File[FILENAME_STR_MAXLEN];
113 char Pixie16_DSP_Code_File[FILENAME_STR_MAXLEN];
114 char Pixie16_DSP_Var_File[FILENAME_STR_MAXLEN];
115 char Pixie16_Trig_FPGA_File[FILENAME_STR_MAXLEN];
120 unsigned int nFIFOWords;
123 unsigned short EndOfRunRead;
125 unsigned int *CrateData;
126 unsigned int **PositionInCrateData;
127 unsigned long totwords;
128 vector<unsigned int *> ChannelList;
129 vector<unsigned int *>::iterator ChannelList_it;
132 deque<channel *> ModuleDeque[MAXMOD];
133 deque<channel *> ModuleDequeTemp;
134 vector<uint32_t> ModuleData[MAXMOD];
136 vector<uint32_t> DataToWorld;
138 vector<uint32_t> nFIFOWordsinModuleCurrentRead;
139 vector<uint64_t> nFIFOWordsinModuleTotal;
142 vector<double> CurrentTimeinModuleRead;
143 vector<double> FirstTimeinModuleRead;
145 unsigned long CurrentTime;
146 unsigned long lasttime;
147 unsigned long TimeWindow;
159 virtual void initialize();
161 virtual size_t read(
void* rBuffer,
size_t maxwords);
162 virtual void disable();
163 virtual void clear();
165 virtual void onEnd(CExperiment* pExperiment);
166 int GetNumberOfModules() {
return (
int)NumModules;}
167 unsigned short GetCrateID() {
return CrateNum;}
169 bool IsUniqueEvent(
const channel* event);
173 size_t SelectivelyOutputData(
void* rBuffer,
size_t maxwords);
175 void PushDataOntoQueue(std::deque<channel*>& deque, std::deque<channel*>& buffer);