90 lines
1.7 KiB
C
90 lines
1.7 KiB
C
|
#ifndef MuLTI_BUILDER_H
|
||
|
#define MuLTI_BUILDER_H
|
||
|
|
||
|
#include "ClassData.h"
|
||
|
|
||
|
#define MaxNEvent 5000 // circular
|
||
|
|
||
|
class EventMember{
|
||
|
public:
|
||
|
unsigned short bd;
|
||
|
unsigned short ch;
|
||
|
unsigned short energy;
|
||
|
unsigned short energy2;
|
||
|
unsigned long long timestamp;
|
||
|
unsigned short fineTime;
|
||
|
|
||
|
std::vector<short> trace;
|
||
|
|
||
|
EventMember(){
|
||
|
Clear();
|
||
|
}
|
||
|
|
||
|
EventMember operator = (EventMember e){
|
||
|
bd = e.bd;
|
||
|
ch = e.ch;
|
||
|
energy = e.energy;
|
||
|
energy2 = e.energy2;
|
||
|
timestamp = e.timestamp;
|
||
|
fineTime = e.fineTime;
|
||
|
trace = e.trace;
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
void Clear(){
|
||
|
bd = 0;
|
||
|
ch = 0;
|
||
|
energy = 0;
|
||
|
energy2 = 0;
|
||
|
timestamp = 0;
|
||
|
fineTime = 0;
|
||
|
trace.clear();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
class MultiBuilder {
|
||
|
|
||
|
public:
|
||
|
MultiBuilder(Data ** inData, std::vector<int> type);
|
||
|
~MultiBuilder();
|
||
|
|
||
|
void SetTimeWindow(int ticks) {timeWindow = ticks;}
|
||
|
int GetTimeWindow() const{return timeWindow;}
|
||
|
|
||
|
void BuildEvents(bool isFinal = false, bool skipTrace = false, bool verbose = false);
|
||
|
|
||
|
void ClearEvents();
|
||
|
// void PrintStat();
|
||
|
|
||
|
long eventIndex;
|
||
|
long eventBuilt; // reset once call BuildEvents()
|
||
|
long totalEventBuilt;
|
||
|
std::vector<EventMember> events[MaxNEvent];
|
||
|
|
||
|
private:
|
||
|
std::vector<int> typeList;
|
||
|
const unsigned short nData;
|
||
|
Data ** data; // assume all data has MaxNChannel (16)
|
||
|
|
||
|
unsigned short timeWindow;
|
||
|
int loopIndex[MaxNDigitizer][MaxNChannels];
|
||
|
int nextIndex[MaxNDigitizer][MaxNChannels];
|
||
|
|
||
|
int nExhaushedCh;
|
||
|
bool chExhaused[MaxNDigitizer][MaxNChannels];
|
||
|
unsigned long long earlistTime;
|
||
|
unsigned long long latestTime;
|
||
|
int earlistDigi;
|
||
|
int earlistCh;
|
||
|
void FindEarlistTimeAndCh(bool verbose = false);
|
||
|
void FindLatestTime(bool verbose = false);
|
||
|
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif
|