]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Trigger type to event header is done. Sergey.
authorhadaq <hadaq>
Fri, 18 Jun 2010 11:19:19 +0000 (11:19 +0000)
committerhadaq <hadaq>
Fri, 18 Jun 2010 11:19:19 +0000 (11:19 +0000)
hadaq/subevt.c

index dcb66552f5b074ac328d01176aa3c8c9fd6cf349..4665625c0de5b804835740528ee8e6b171d4fd8f 100644 (file)
@@ -1,4 +1,4 @@
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.14 2010-06-16 14:45:05 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/subevt.c,v 6.15 2010-06-18 11:19:19 hadaq Exp $";
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -45,27 +45,32 @@ uint32_t SubEvt_dataValue(const void *my, unsigned idx)
        return val;
 }
 
-uint32_t SubEvt_errBit(const void *my)
+unsigned SubEvt_nrOfDataWords(const void *my)
 {
        unsigned i;
-       uint32_t val;
 
        if (SubEvt_decoding(my) == SubEvtDecoding_32bitData) {
                i = SubEvt_dataSize(my) / sizeof(uint32_t) - 1;
-
-               val = SubEvt_dataValue(my, i);
        } else if (SubEvt_decoding(my) == SubEvtDecoding_16bitData) {
                i = SubEvt_dataSize(my) / sizeof(uint16_t) - 1;
-
-               val = SubEvt_dataValue(my, i);
        } else if (SubEvt_decoding(my) == SubEvtDecoding_8bitData) {
                i = SubEvt_dataSize(my) / sizeof(uint8_t) - 1;
-
-               val = SubEvt_dataValue(my, i);
        } else {
                fprintf(stderr, " Unknown decoding: %i\n", SubEvt_decoding(my));
        }
 
+       return i;
+}
+
+uint32_t SubEvt_errBit(const void *my)
+{
+       unsigned i;
+       uint32_t val;
+
+       i = SubEvt_nrOfDataWords(my);
+
+       val = SubEvt_dataValue(my, i);
+
        return val;
 }
 
@@ -73,26 +78,19 @@ uint32_t SubEvt_debugWord(const void *my)
 {
        unsigned i;
        uint32_t val;
-       unsigned wordNumber = -1;
+       unsigned wordNr = -1;
 
+       /* Define debug word for the RICH */
        if (SubEvt_id(my) == 0x00008300UL || SubEvt_id(my) == 0x00008310UL || SubEvt_id(my) == 0x00008320UL) {
-               wordNumber = 2;
+               wordNr = 2;
        }
 
-       if (SubEvt_decoding(my) == SubEvtDecoding_32bitData) {
-               i = SubEvt_dataSize(my) / sizeof(uint32_t) - 1;
-       } else if (SubEvt_decoding(my) == SubEvtDecoding_16bitData) {
-               i = SubEvt_dataSize(my) / sizeof(uint16_t) - 1;
-       } else if (SubEvt_decoding(my) == SubEvtDecoding_8bitData) {
-               i = SubEvt_dataSize(my) / sizeof(uint8_t) - 1;
-       } else {
-               fprintf(stderr, " Unknown decoding: %i\n", SubEvt_decoding(my));
-       }
+       i = SubEvt_nrOfDataWords(my);
 
-       if (wordNumber == -1) {
+       if (wordNr == -1) {
                val = 0;
-       } else if (i > wordNumber) {
-               val = SubEvt_dataValue(my, wordNumber - 1);
+       } else if (i > wordNr) {
+               val = SubEvt_dataValue(my, wordNr - 1);
        } else {
                val = 0;
        }
@@ -100,6 +98,23 @@ uint32_t SubEvt_debugWord(const void *my)
        return val;
 }
 
+uint32_t SubEvt_trigType(const void *my, uint32_t wordNr, uint32_t bitmask, uint32_t bitshift)
+{
+       unsigned i;
+       uint32_t trigType;
+       uint32_t val;
+
+       i = SubEvt_nrOfDataWords(my);
+
+       if (i > wordNr) {
+               val = SubEvt_dataValue(my, wordNr - 1);
+       } else {
+               return 0;
+       }
+
+       return (val & bitmask) >> bitshift;
+}
+
 char *SubEvt_2charP(const void *my)
 {
        static char buf[132];