//--------------------------------------------- // Go4 Tasca analysis // Author: Hans G. Essel // H.Essel@gsi.de // GSI, Experiment Electronics, Data Processing // July 2021 - cleanup by JAM (j.adamczewski@gsi.de) //--------------------------------------------- #ifndef TascaUNPACKPROCESSOR_H #define TascaUNPACKPROCESSOR_H #include "TGo4EventProcessor.h" #include "TascaUnpackEvent.h" ////////// FEBEX //#define WR_TIME_STAMP 1 // white rabbit time stamp is head of data #define USE_MBS_PARAM 1 // #define MAX_SFP 4 #define MAX_SLAVE 16 #define N_CHA 16 #ifdef WR_TIME_STAMP #define SUB_SYSTEM_ID 0x100 // sub-system identifier pci express #define TS__ID_L16 0x0f7 #define TS__ID_M16 0x1f7 #define TS__ID_H16 0x2f7 #endif // WR_TIME_STAMP #ifdef USE_MBS_PARAM #define MAX_TRACE_SIZE 4000 // in samples #define MAX_TRAPEZ_N_AVG 1000 // in samples #else #define TRACE_SIZE 1024 // in samples #define TRAPEZ_N_AVG 64 // in samples // nr of slaves on SFP 0 1 2 3 // | | | | #define NR_SLAVES { 0, 9, 0, 0} #define ADC_TYPE { 0, 0xffff, 0, 0} // 12 bit: 0, 14 bit: 1 // bit 0 fuer slave module 0 // bit n fuer slave module n (max n = 31) #endif #define RON "\x1B[7m" #define RES "\x1B[0m" #define BASE_LINE_SUBT_START 0 #define BASE_LINE_SUBT_SIZE 150 /////////////////////// class TascaUnpackEvent; class TascaUnpackProc: public TGo4EventProcessor { public: TascaUnpackProc(); TascaUnpackProc(const char* name); virtual ~TascaUnpackProc(); void TascaUnpack(TascaUnpackEvent* target); void f_make_histo(Int_t l_mode); private: FILE * ER_out; // FILE * OverFlow; //ADN TH1 *h_trace[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_trace_blr[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_trapez_fpga[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_fpga_e[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_peak[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_valley[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_trgti_hitti[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_ch_hitpat[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_hitpat[MAX_SFP][MAX_SLAVE]; //! TH1 *h_ch_hitpat_tr[MAX_SFP][MAX_SLAVE][N_CHA]; //! TH1 *h_hitpat_tr[MAX_SFP][MAX_SLAVE]; //! TH1 *h_mwd_f[MAX_SFP][MAX_SLAVE][N_CHA]; //! TascaUnpackEvent* pUnpackEvent; TGo4MbsEvent *fInput; UInt_t i, k, n, evcount; UInt_t gammaTimeLast; UInt_t secTimeLast; UInt_t mysecTimeLast; UInt_t adcTimeLast; UInt_t spillTime0; UInt_t spillIndex; ULong64_t last_time; ULong64_t time; ULong64_t abs_time; UInt_t reload_time; Int_t target_bit1; Int_t target_bit2; Int_t spillBins[100]; Bool_t spillOn; Bool_t spillTest; UInt_t beam_pro_sec, beam_pro_min, ruth_pro_sec, ruth_pro_min, start, start_sec; ClassDef(TascaUnpackProc,1) }; #endif //TascaUNPACKPROCESSOR_H