StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
daq_ssd.h
1 #ifndef _DAQ_SSD_H_
2 #define _DAQ_SSD_H_
3 
4 #include <stdio.h>
5 #include <DAQ_READER/daq_det.h>
6 
7 /*
8  SSD has 10 ladders, 16 modules, 2 sides, 768 strips each 8bits wide
9 
10  However! The DAQ maps the data as:
11  40 pseudo-rows
12  64 pseudo-pads
13  192 pseudo-timebins (strips)
14 
15  The pseudo-rows are constructed as
16  ReceiverBoard[0..3] * 10 + Mezzanine[0..1] * 5 + ASIC[0..5]
17 
18 
19 */
20 
21 struct ssd_t {
22  int channels ;
23  int mode ; // 0 normal, 1 pedestals/RMSs
24  int max_channels ;
25 
26  // how many valid strips in this hybrid
27  u_char counts[40][64] ;
28 
29  // Up to 192 valid strips (count is in counts)
30  // strip is overloaded with RMS data if mode==1
31  u_char strip[40][64][192];
32 
33  // Up to 192 valid adcs (same count as above...)
34  // overloaded with PED data if mode==1
35  u_char adc[40][64][192];
36 
37  // To facilitate decoding in raw events
38  // this points to raw data of ONE mezzanine
39  // this raw data is 6*64*512 bytes long
40  // There are only 2 mezzanines/RB
41  u_char *raw[4][2] ;
42 
43 } ;
44 
45 
46 
47 extern int ssd_reader(char *mem, struct ssd_t *ssd, u_int driver) ;
48 
49 
50 class daq_ssd : public daq_det {
51 private:
52  class daq_dta *handle_legacy() ;
53 
54  class daq_dta *legacy ; // "legacy" bank
55 
56  static const char *help_string ;
57 protected:
58 
59 
60 public:
61  daq_ssd(daqReader *rts_caller=0) ;
62  ~daq_ssd() ;
63 
64 
65  daq_dta *get(const char *bank="*",int c1=-1, int c2=-1, int c3=-1, void *p1=0, void *p2=0) ;
66 
67  void help() const {
68  printf("%s\n%s\n",GetCVS(),help_string) ;
69  }
70 
71  const char *GetCVS() const { // Offline
72  static const char cvs[]="Tag $Name: $Id: built " __DATE__ " " __TIME__ ; return cvs;
73  }
74 
75 } ;
76 
77 
78 #endif // _DAQ_SSD_H_
Definition: daq_ssd.h:21