Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-03 08:20:48

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   //ichip, what -> event or chip info
0023   //ichip, region, row -> hit mask (indicates pixels with hits in given 32-pix block)
0024   //ichip, row -> row map (indicates 32-pix blocks with hits in given row)
0025   int    iValue(const int ich, const char *what);
0026   //int    iValue(const int RU, const int chip, const char *);
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; // add this to override the generic gdump
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   // this is one "row" of 32 pixels
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; //helper function to decode the column number
0057   void print_stuff(OSTREAM& out, unsigned int data, int width, int shift, bool blank = false) const;
0058 };
0059 
0060 
0061 
0062 #endif /* __ONCSSUB_IDMVTXV0_H__ */