File indexing completed on 2025-08-03 08:20:36
0001 #ifndef __ONCSSUB_IDMVTXV0_H__
0002 #define __ONCSSUB_IDMVTXV0_H__
0003
0004 #include "oncsSubevent.h"
0005 #include <vector>
0006
0007 #ifndef __CINT__
0008 class WINDOWSEXPORT oncsSub_idmvtxv0 : public oncsSubevent_w4 {
0009 #else
0010 class oncsSub_idmvtxv0 : public oncsSubevent_w4 {
0011 #endif
0012
0013 #define MAXRUID 1
0014 #define RUHEADER 0xE0
0015 #define RUTRAILER 0xF0
0016 #define MAXRUCHN 28
0017 #define MAXCHIPID 9
0018 public:
0019 oncsSub_idmvtxv0( subevtdata_ptr);
0020 ~oncsSub_idmvtxv0();
0021
0022
0023
0024
0025 int iValue(const int ich, const char *what);
0026
0027 int iValue(const int chip, const int region, const int row);
0028 int iValue(const int chip, const int row);
0029
0030 void dump ( OSTREAM& os = COUT) ;
0031 void gdump ( const int how=EVT_HEXADECIMAL, OSTREAM& os = COUT) const;
0032
0033 protected:
0034 int *mvtx_decode ();
0035
0036 int _is_decoded;
0037 int _unexpected_felix_counter;
0038 int _bad_ruid;
0039 int _bad_ruchns;
0040 int _bad_chipids;
0041 int _highest_row_overall;
0042 int _highest_chip;
0043 int _excess_data_bytes;
0044 int _chip_id[MAXRUCHN+1];
0045 int _highest_region[MAXRUCHN+1];
0046 int _unexpected_bytes[MAXRUCHN+1];
0047 int _bunchcounter[MAXRUCHN+1];
0048 bool _header_found[MAXRUCHN+1];
0049 bool _trailer_found[MAXRUCHN+1];
0050 int _readout_flags[MAXRUCHN+1];
0051
0052
0053 unsigned int chip_row[MAXRUCHN+1][512][32];
0054 unsigned int chip_rowmap[MAXRUCHN+1][512];
0055
0056 int decode_thebit(int the_row, int encoder_id, int address) const;
0057 void print_stuff(OSTREAM& out, unsigned int data, int width, int shift, bool blank = false) const;
0058 };
0059
0060
0061
0062 #endif