aboutsummaryrefslogtreecommitdiff
path: root/Record_Info.h
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2018-08-14 10:08:27 -0500
committertlatorre <tlatorre@uchicago.edu>2018-08-14 10:08:27 -0500
commit24c8bcfe7f76b20124e2862ea050f815c0f768e7 (patch)
treee5bdbd638a2c7f38f1c094cc9e95cbdfe05b9481 /Record_Info.h
parent0b7f199c0d93074484ea580504485a32dc29f5e2 (diff)
downloadsddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.tar.gz
sddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.tar.bz2
sddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.zip
move everything to src directory
Diffstat (limited to 'Record_Info.h')
-rw-r--r--Record_Info.h1041
1 files changed, 0 insertions, 1041 deletions
diff --git a/Record_Info.h b/Record_Info.h
deleted file mode 100644
index 91e060f..0000000
--- a/Record_Info.h
+++ /dev/null
@@ -1,1041 +0,0 @@
-//
-// File: Record_Info.h
-//
-// Description: SNO datastream record definitions
-//
-// Revisions: 02/21/03 - PH Combined varioius versions of this file so now the exact
-// same file is used by the builder, SHaRC, xsnoed and QSNO.
-// 03/03/03 - PH Changed PmtEventRecord definition so it is now
-// swapped like a set of 32-bit integers.
-// 07/13/04 - PH Added new NCD run mask bits
-//
-// Notes: For historical reasons, the structures used by SHaRC can be different
-// from the ones written to the data stream, so be careful which one you
-// are using!
-//
-#ifndef __RECORD_INFO_H__
-#define __RECORD_INFO_H__
-
-#include <stdint.h>
-
-/* version numbers...
- * as of Feb 1997 (from UW)
- */
-#define DAQ_CODE_VERSION 0
-#define RUN_RECORD_VERSION 0
-#define PMT_RECORD_VERSION 0
-#define TRIG_RECORD_VERSION 0
-#define PTK_RECORD_VERSIONS 0x50544B30 // 'PTK0'
-#define DAQ_RECORD_VERSIONS 0x44415130 // 'DAQ0'
-
-#define WORD_SIZE(x) (sizeof(x)/sizeof(uint32_t))
-
-// -------------------------------------------------------------------------------------
-// generic information for every header
-// - preceeds ALL dispatcher records, and all records sent by SHaRC
-// - not written to ZDAB files
-//
-typedef struct GenericRecordHeader {
- uint32_t RecordID;
- uint32_t RecordLength; // length of record to follow,
- // NOT INCLUDING generic record header!
- uint32_t RecordVersion;
-} aGenericRecordHeader;
-
-#define HEADERSIZE sizeof( aGenericRecordHeader ) // 12 uint8_ts generic header.
-
-// -------------------------------------------------------------------------------------
-// SHaRC header for all manipulator records
-//
-
-// local time structure
-typedef struct {
- uint8_t year; // last 2 digits of year
- uint8_t month; // month of year (1->12)
- uint8_t day; // day of month (1->31)
- uint8_t daylightSavings; // 0 = standard time, 1 = daylight savings time
- char timeZone; // hours from GMT (-11->11) (signed uint8_t!)
- uint8_t hour; // hour of day (0->23)
- uint8_t minute; // minute of hour (0->59)
- uint8_t second; // second of minute (0->59)
- uint32_t microsecond; // millionths of a second (0->999999)
-} SDateTime;
-
-// header for all manipulator banks
-typedef struct {
- uint32_t instanceNumber;
- uint32_t gtid_ref; // reference GTID for this event
- SDateTime time;
-} SManipHeader;
-
-// -------------------------------------------------------------------------------------
-// MAST record
-//
-#define MAST_RECORD 0x4d415354 // 'MAST'
-
-// MAST bank structure
-typedef struct MastRecord {
- float currentVersion; // current SNOMAN version
- float originalVersion; // original SNOMAN version
-} SBankMAST;
-
-// -------------------------------------------------------------------------------------
-// RHDR record
-//
-#define RHDR_RECORD 0x52484452 // 'RHDR' (as written to ZDAB file)
-#define RUN_RECORD 0x52554E20 // 'RUN ' (as dispatched and sent by SHaRC)
-
-// RHDR bank structure
-typedef struct RunRecord {
- uint32_t Date;
- uint32_t Time;
- uint32_t DAQCodeVersion;
- uint32_t RunNumber;
- uint32_t CalibrationTrialNumber;
- uint32_t SourceMask; // which sources in?
- uint32_t RunMask; // run conditions
-#ifdef __MWERKS__
- uint32_t GTCrateMask; // this run's GT crate mask
-#else
- uint32_t GTCrateMsk; // accomodate misspelling of this for backward compatibility
-#endif
- uint32_t FirstGTID; // first GTID of this run
- uint32_t ValidGTID; // first valid GTID (after hardware changes have been made)
- uint32_t Spares[8]; // spares as per nick's suggestion (Thanks Nick!)
-} SBankRHDR, aRunRecord;
-
-// SourceMask...
-#define NO_SRC 0x00000UL
-#define ROTATING_SRC 0x00001UL
-#define LASER_SRC 0x00002UL
-#define SONO_SRC 0x00004UL
-#define N16_SRC 0x00008UL
-#define N17_SRC 0x00010UL
-#define NAI_SRC 0x00020UL
-#define LI8_SRC 0x00040UL
-#define PT_SRC 0x00080UL
-#define CF_HI_SRC 0x00100UL
-#define CF_LO_SRC 0x00200UL
-#define U_SRC 0x00400UL
-#define TH_SRC 0x00800UL
-#define P_LI7_SRC 0x01000UL
-#define WATER_SAMPLER 0x02000UL
-#define PROP_COUNTER_SRC 0x04000UL
-#define SINGLE_NCD_SRC 0x08000UL
-#define SELF_CALIB_SRC 0x10000UL
-#define Y88_SRC 0x20000UL
-
-// RunMask...
-#define NEUTRINO_RUN 0x0001UL
-#define SOURCE_RUN 0x0002UL
-#define CALIB_RUN 0x0004UL
-#define NCD_RUN 0x0008UL
-#define SALT_RUN 0x0010UL
-#define POISON_RUN 0x0020UL
-#define PARTIAL_FILL_RUN 0x0040UL
-#define AIR_FILL_RUN 0x0080UL
-#define D2O_RUN 0x0100UL
-#define H2O_RUN 0x0200UL
-#define DCR_ACTIVITY_RUN 0x0400UL
-#define TRANSITION_RUN 0x0800UL
-#define SOURCE_MOVING_RUN 0x1000UL
-#define COMP_COILS_RUN 0x2000UL
-#define ECA_RUN 0x4000UL
-#define DIAGNOSTIC_RUN 0x8000UL
-#define SUPERNOVA_RUN 0x10000UL
-#define MAINTENANCE_RUN 0x20000UL
-#define PCA_RUN 0x40000UL
-#define EXPERIMENTAL_RUN 0x80000UL
-#define D2O_CIRC_RUN 0x100000UL
-#define BUBBLERS_RUN 0x200000UL
-#define PMT_OFF_RUN 0x01000000UL
-#define NCD_OFF_RUN 0x02000000UL
-#define NCD_ECA_RUN 0x04000000UL
-
-// -------------------------------------------------------------------------------------
-// TRIG record
-//
-#define TRIG_RECORD 0x54524947 // 'TRIG'
-
-// TRIG bank structure
-typedef struct TriggerInfo {
- uint32_t TriggerMask; // which triggers were set?
- uint32_t n100lo; // trigger Threshold settings
- uint32_t n100med; // these are longs cuz Josh is a weenie.
- uint32_t n100hi;
- uint32_t n20;
- uint32_t n20lb;
- uint32_t esumlo;
- uint32_t esumhi;
- uint32_t owln;
- uint32_t owlelo;
- uint32_t owlehi;
- uint32_t n100lo_zero; // trigger Threshold zeroes
- uint32_t n100med_zero;
- uint32_t n100hi_zero;
- uint32_t n20_zero;
- uint32_t n20lb_zero;
- uint32_t esumlo_zero;
- uint32_t esumhi_zero;
- uint32_t owln_zero;
- uint32_t owlelo_zero;
- uint32_t owlehi_zero;
- uint32_t PulserRate; // MTC local pulser
- uint32_t ControlRegister; // MTC control register status
- uint32_t reg_LockoutWidth; // min. time btwn global triggers
- uint32_t reg_Prescale; // how many nhit_100_lo triggers to take
- uint32_t GTID; // to keep track of where I am in the world
-} SBankTRIG, aTriggerInfo, *aTriggerInfoPtr;
-
-// TriggerMask...
-#define TRIG_NHIT_100_LO 0x00000001
-#define TRIG_NHIT_100_MED 0x00000002
-#define TRIG_NHIT_100_HI 0x00000004
-#define TRIG_NHIT_20 0x00000008
-#define TRIG_NHIT_20_LB 0x00000010
-#define TRIG_ESUM_LO 0x00000020
-#define TRIG_ESUM_HI 0x00000040
-#define TRIG_OWLN 0x00000080
-#define TRIG_OWLE_LO 0x00000100
-#define TRIG_OWLE_HI 0x00000200
-#define TRIG_PULSE_GT 0x00000400
-#define TRIG_PRESCALE 0x00000800
-#define TRIG_PEDESTAL 0x00001000
-#define TRIG_PONG 0x00002000
-#define TRIG_SYNC 0x00004000
-#define TRIG_EXT_ASYNC 0x00008000
-#define TRIG_HYDROPHONE 0x00010000
-#define TRIG_EXT3 0x00020000
-#define TRIG_EXT4 0x00040000
-#define TRIG_EXT5 0x00080000
-#define TRIG_EXT6 0x00100000
-#define TRIG_NCD_SHAPER 0x00200000
-#define TRIG_EXT8 0x00400000
-#define TRIG_SPECIAL_RAW 0x00800000
-#define TRIG_NCD_MUX 0x01000000
-#define TRIG_SOFT_GT 0x02000000
-
-// -------------------------------------------------------------------------------------
-// EPED record
-//
-#define EPED_RECORD 0x45504544 // 'EPED'
-
-// EPED bank structure (as seen by SNOMAN)
-typedef struct EpedRecord {
- uint32_t ped_width;
- uint32_t ped_delay_coarse;
- uint32_t ped_delay_fine;
- uint32_t qinj_dacsetting;
- uint32_t halfCrateID;
- uint32_t CalibrationType;
- uint32_t GTID;
- uint32_t Flag;
-} SBankEPED;
-
-// EPED record as sent by SHaRC
-// (be very careful here! for backward compatibility this is also
-// defined as EPEDRecord as used by SHaRC. Not to be confused with EpedRecord.)
-typedef struct EPEDRecord {
- uint32_t Time; // ptk used instead of aDate_Time
- uint16_t CalibrationType;
- uint8_t halfCrateID; // which 1/2 crate is enabled for pedestals
- uint8_t reg_PedestalWidth; // width of pedestal pulse for Qinj
- uint8_t reg_Ped_GTDel_Coarse;
- uint8_t reg_Ped_GTDel_Fine; // pedestal delay for T slopes
- int16_t Qinj_dacsetting; // DAC setting for Qinj
- uint32_t MTCD_csr;
- uint32_t GTID; // GT Id validity range
- uint32_t Flag; // start/stop flag
- uint32_t RunNumber; // current run number
- uint32_t Spares[5];
-} SHaRC_BankEPED;
-
-// CalibrationType...
-#define EPED_Q_SLOPE_RUN 1
-#define EPED_T_SLOPE_RUN 2
-#define EPED_PED_RUN 3
-#define EPED_SLOWPED_RUN 4
-
-// Bit mask in halfCrateID...
-#define EPED_FIRST_HALF (uint8_t) 0
-#define EPED_SECOND_HALF (uint8_t) 0x80U
-
-// Flag...
-#define EPED_START_CAL 1ul // start of cali run
-#define EPED_CHANGE_CAL 2ul // change of same
-#define EPED_STOP_CAL 3ul // stop of same, crate
-#define EPED_END_CAL 4ul // end of run, all crates
-
-// -------------------------------------------------------------------------------------
-// VTHR record
-//
-#define VTHR_RECORD 0x56544852 // 'VTHR'
-
-// VTHR bank structure
-typedef struct VThresholdRecord {
- uint32_t GTID; // GTID
- uint32_t ncrates; // number of crates = 19 for SNODAQ
- uint32_t null2; // these are longs cuz Josh is a weenie.
- uint32_t null3;
- uint32_t null4;
- uint32_t null5;
- uint32_t null6;
- uint32_t null7;
- uint32_t null8;
- uint32_t null9;
- unsigned char theData[19*16*32];
-} SBankVTHR;
-
-// -------------------------------------------------------------------------------------
-// CAST record
-//
-#define CAST_RECORD 0x43415354 // 'CAST'
-#define CLST_RECORD 0x434C5354 // 'CLST' - obsolete
-
-#define kMaxManipulatorRopes 6
-
-// manipulator rope structure
-typedef struct ManipRopeStatus {
- uint32_t ropeID; // EManipulatorRopeID
- float length;
- float targetLength;
- float velocity;
- float tension;
- float encoderError;
- float spares[2];
-} aManipRopeStatus;
-
-// CAST bank structure
-typedef struct ManipStatus {
- uint32_t sourceID;
- uint32_t status;
- uint32_t numRopes;
- float position[3]; // x, y, z position
- float destination[3];
- float positionError;
- float sourceOffset[3];// PH 2018-06-20 (was obsoletePosErr)
- float orientation; // source orientation (0=unknown, 1=north...)
- float spare;
- uint32_t tail;
- aManipRopeStatus ropeStatus[kMaxManipulatorRopes];
- float spare2[23];
-} SBankCAST;
-
-// SHaRC CAST bank structure
-typedef struct {
- uint32_t sourceID;
- uint32_t status;
- uint32_t numRopes;
- float position[3]; // x, y, z position
- float destination[3];
- float positionError;
- float obsoletePosErr[3];
- float orientation; // source orientation (0=unknown, 1=north...)
- float spare;
- uint32_t tail;
- aManipRopeStatus ropeStatus[4];
-} SHaRC_BankCAST;
-
-// status...
-enum EManipulatorStatus {
- kStoppedNone = 1,
- kStoppedLowTension,
- kStoppedHighTension,
- kStoppedEndpoint,
- kStoppedStuck,
- kStoppedNetForce,
- kStoppedAxisError,
- kMovingDirect,
- kMovingIdle,
- kMovingAbort
-};
-
-// ropeID...
-enum EManipulatorRopeID {
- NorthRope = 1,
- SouthRope,
- EastRope,
- WestRope,
- CentralRope1,
- CentralRope2,
- CentralRope3,
- GuideTubeRope1,
- GuideTubeRope2,
- GuideTubeRope3,
- GuideTubeRope4,
- GuideTubeRope5,
- GuideTubeRope6,
- GasUmbilical,
- LaserUmbilical,
- RotatingUmbilical
-};
-
-// -------------------------------------------------------------------------------------
-// CAAC record
-//
-#define CAAC_RECORD 0x43414143 // 'CAAC'
-#define CLAC_RECORD 0x434C4143 // 'CLAC' - obsolete
-
-// CAAC bank structure
-typedef struct AVStatus {
- float position[3]; // x, y, z
- float rotation[3]; // roll, pitch, yaw
- float ropeLength[7]; // seven sense rope lengths
- float spare[3];
-} SBankCAAC;
-
-// -------------------------------------------------------------------------------------
-// SOSA record
-//
-#define SOSA_RECORD 0x534F5341 // 'SOSA'
-
-// SOSA bank structure
-typedef struct AcceleratorStatus {
- uint32_t sourceID;
- uint32_t acceleratorOn;
- float targetVoltage;
- float targetCurrent;
- float anodeVoltage;
- float anodeCurrent;
- float getterVoltage;
- float getterCurrent;
- float direction[3];
- float spare;
-} SBankSOSA;
-
-// -------------------------------------------------------------------------------------
-// SOSG record
-//
-#define SOSG_RECORD 0x534F5347 // 'SOSG'
-
-// SOSG bank structure
-typedef struct GasStatus {
- uint32_t sourceID;
- uint32_t dtGeneratorOn;
- float targetVerticalPosition;
- float pressure1;
- float pressure2;
- float pressure3;
- float pressure4;
- float pressure5;
- float pressure6;
- float vacuum1;
- float vacuum2;
- float carbonDioxideFlowRate;
- float heliumFlowRate;
- float oxygenFlowRate;
- float fastNeutronFlux;
- float neutronRadiationMonitor;
- float pmtVoltage;
- float wireVoltage;
- float direction[3];
- float spare[2];
-} SBankSOSG;
-
-// -------------------------------------------------------------------------------------
-// SOSL record
-//
-#define SOSL_RECORD 0x534F534C // 'SOSL'
-
-// SOSL bank structure
-typedef struct LaserStatus {
- uint32_t sourceID;
- uint32_t status;
- uint32_t dyeCellNumber;
- uint32_t filterWheel1Position;
- uint32_t filterWheel2Position;
- uint32_t pmtVoltage;
- float pressure1;
- float pressure2;
- float nitrogenFlowRate;
- float direction[3];
- float spare;
-} SBankSOSL;
-
-// -------------------------------------------------------------------------------------
-// SOSR record
-//
-#define SOSR_RECORD 0x534F5352 // 'SOSR'
-
-// SOSR bank structure
-typedef struct RotatingStatus {
- uint32_t sourceID;
- float direction[3];
-} SBankSOSR;
-
-
-// -------------------------------------------------------------------------------------
-// TASK record
-//
-#define TASK_RECORD 0x5441534B // 'TASK'
-
-// task record -- Task running record
-typedef struct TASKRecord {
- uint32_t Time; // ptk used instead of aDate_Time
- uint32_t TasksRunning; //true if any task is running, false if none running.
- uint32_t GTID;
- uint32_t RunNumber;
- uint32_t Spares[5];
-} SBankTASK;
-
-// -------------------------------------------------------------------------------------
-// ZDAB record (event record)
-//
-#define ZDAB_RECORD 0x5a444142 // 'ZDAB' (as written to ZDAB file)
-#define PMT_RECORD 0x504d5420 // 'PMT ' (as dispatched and sent by SHaRC)
-
-/*
- * pmt record -- variable-length record containing npmt*3 LW of FEC data.
- * note: Generic Header length indicates only length of the pmt header, and
- * DOES NOT include the hits!
- *
- * Also includes the following info, from ref_packer_zdab_pmt.f
- *
- * -> BEWARE: HERE, MSB is 32 ! ! ! ! <-
- * Also, word number below is SNOMAN WORD NUMBER ONLY!
- *
- * o Event Header Record (one per event trigger):
- * Number
- * Name WORD LSB Pos. of Bits Description
- * RECORD_TYPE 1 26 7 Record type (e.g. PMT, NCD, etc).
- * MC_FLAG 1 25 1 0=Real event, 1= MC event.
- * VER_NUM 1 17 8 ZDAB_PMT format number number.
- * DATA_TYPE 1 1 16 Run Type (see id_run_types.doc).
- * RUN_NUMBER 2 1 32 Run number.
- * EV_NUMBER 3 1 32 Event number in this Run.
- * DAQ_STATUS 4 17 16 DAQ status flags.
- * NHITS 4 1 16 Number of fired PMT's.
- * PCK_TYPE 5 29 4 MC packing type:
- * 0= PMT info only
- * 1= 0 plus source bank info
- * 2= 1 plus jitter/cerenkov history
- * CAL_TYPE 5 25 4 MC Calibration type:
- * 0= simple calibration constants
- * 1= full calibration constants
- *
- * ---- extended PmtEventRecord format (PH 02/25/99) ----
- *
- * SUB_FIELD 5 24 1 0= No sub fields
- * 1= Sub field to follow
- * FIELD_LEN 5 1 23 Offset in 4-uint8_t words to first sub field
- * (May be zero if no sub fields)
- *
- */
-
-// put flags here, shifted to correct position. See above.
-#define PMT_EVR_RECTYPE ( 0xA << 9 ) // see SNOMAN Docs for these
-#define PMT_EVR_NOT_MC ( 0x0UL << 8 )
-#define PMT_EVR_ZDAB_VER ( 23UL << 0 )
-#define PMT_EVR_DATA_TYPE 0xB
-#define PMT_EVR_DAQ_STAT 0xA
-#define PMT_EVR_PCK_TYPE ( 0x00UL << 28 )
-#define PMT_MC_PCK_TYPE ( 0x01UL << 28 )
-#define PMT_JITTER_PCK_TYPE ( 0x02UL << 28 )
-#define PMT_EVR_CAL_TYPE ( 0x01UL << 24 )
-
-#define PCK_TYPE_MASK ( 0x0fUL << 28 )
-#define CAL_TYPE_MASK ( 0x0fUL << 24 )
-
-#ifdef SWAP_BYTES
-
-// FEC data as read out in 96-bit structure
-typedef struct FECReadoutData {
- // word 1 (starts from LSB):
- unsigned GTID1 :16; // lower 16 bits
- unsigned ChannelID :5;
- unsigned CrateID :5;
- unsigned BoardID :4;
- unsigned CGT_ES16 :1;
- unsigned CGT_ES24 :1;
-
- // word 2:
- unsigned Qlx :11;
- unsigned SignQlx :1;
- unsigned CellID :4;
- unsigned Qhs :11;
- unsigned SignQhs :1;
- unsigned MissedCount :1;
- unsigned NC_CC :1;
- unsigned LGI_Select :1;
- unsigned Cmos_ES16 :1;
-
- // word 3 :
- unsigned Qhl :11;
- unsigned SignQhl :1;
- unsigned GTID2 :4; // bits 17-20
- unsigned TAC :11;
- unsigned SignTAC :1;
- unsigned GTID3 :4; // bits 21-24
-
-} aFECReadoutData, *aFECReadoutDataPtr;
-
-// Master Trigger Card data
-typedef struct MTCReadoutData {
- // word 0
- uint32_t Bc10_1 :32;
- // word 1
- uint32_t Bc10_2 :21;
- uint32_t Bc50_1 :11;
- // word 2
- uint32_t Bc50_2 :32;
- // word 3
- uint32_t BcGT :24; // LSB
- unsigned Nhit_100_Lo :1;
- unsigned Nhit_100_Med :1;
- unsigned Nhit_100_Hi :1;
- unsigned Nhit_20 :1;
- unsigned Nhit_20_LB :1;
- unsigned ESum_Lo :1;
- unsigned ESum_Hi :1;
- unsigned Owln :1; // MSB
-
- // word 4
- unsigned Owle_Lo :1;
- unsigned Owle_Hi :1;
- unsigned Pulse_GT :1;
- unsigned Prescale :1;
- unsigned Pedestal :1;
- unsigned Pong :1;
- unsigned Sync :1;
- unsigned Ext_Async :1;
- unsigned Hydrophone :1;
- unsigned Ext_3 :1;
- unsigned Ext_4 :1;
- unsigned Ext_5 :1;
- unsigned Ext_6 :1;
- unsigned NCD_Shaper :1;
- unsigned Ext_8 :1;
- unsigned Special_Raw :1;
- unsigned NCD_Mux :1;
- unsigned Soft_GT :1;
- unsigned Miss_Trig :1;
- unsigned Peak :10;
- unsigned Diff_1 :3;
-
- // word 5
- unsigned Diff_2 :7;
- unsigned Int :10;
- unsigned TestGT :1;
- unsigned Test50 :1;
- unsigned Test10 :1;
- unsigned TestMem1 :1;
- unsigned TestMem2 :1;
- unsigned SynClr16 :1;
- unsigned SynClr16_wo_TC16 :1;
- unsigned SynClr24 :1;
- unsigned SynClr24_wo_TC24 :1;
- unsigned FIFOsNotAllEmpty :1;
- unsigned FIFOsNotAllFull :1;
- unsigned FIFOsAllFull :1;
- unsigned Unused1 :1;
- unsigned Unused2 :1;
- unsigned Unused3 :1;
-
-} aMTCReadoutData, *aMTCReadoutDataPtr;
-
-#else // SWAP_BYTES
-
-// FEC data as read out in 96-bit structure
-typedef struct FECReadoutData {
- // word 1 (starts from MSB):
- unsigned CGT_ES24 :1;
- unsigned CGT_ES16 :1;
- unsigned BoardID :4;
- unsigned CrateID :5;
- unsigned ChannelID :5;
- unsigned GTID1 :16; // lower 16 bits
- // word 2:
- unsigned Cmos_ES16 :1;
- unsigned LGI_Select :1;
- unsigned NC_CC :1;
- unsigned MissedCount :1;
- unsigned SignQhs :1;
- unsigned Qhs :11;
- unsigned CellID :4;
- unsigned SignQlx :1;
- unsigned Qlx :11;
- // word 3 :
- unsigned GTID3 :4; // bits 21-24
- unsigned SignTAC :1;
- unsigned TAC :11;
- unsigned GTID2 :4; // bits 17-20
- unsigned SignQhl :1;
- unsigned Qhl :11;
-} aFECReadoutData, *aFECReadoutDataPtr;
-
-// Master Trigger Card data
-typedef struct MTCReadoutData {
- // word 0
- uint32_t Bc10_1 :32;
- // word 1
- uint32_t Bc50_1 :11;
- uint32_t Bc10_2 :21;
- // word 2
- uint32_t Bc50_2 :32;
- // word 3
- unsigned Owln :1; // MSB
- unsigned ESum_Hi :1;
- unsigned ESum_Lo :1;
- unsigned Nhit_20_LB :1;
- unsigned Nhit_20 :1;
- unsigned Nhit_100_Hi :1;
- unsigned Nhit_100_Med :1;
- unsigned Nhit_100_Lo :1;
- uint32_t BcGT :24; // LSB
- // word 4
- unsigned Diff_1 :3;
- unsigned Peak :10;
- unsigned Miss_Trig :1;
- unsigned Soft_GT :1;
- unsigned NCD_Mux :1;
- unsigned Special_Raw :1;
- unsigned Ext_8 :1;
- unsigned NCD_Shaper :1;
- unsigned Ext_6 :1;
- unsigned Ext_5 :1;
- unsigned Ext_4 :1;
- unsigned Ext_3 :1;
- unsigned Hydrophone :1;
- unsigned Ext_Async :1;
- unsigned Sync :1;
- unsigned Pong :1;
- unsigned Pedestal :1;
- unsigned Prescale :1;
- unsigned Pulse_GT :1;
- unsigned Owle_Hi :1;
- unsigned Owle_Lo :1;
- // word 5
- unsigned Unused3 :1;
- unsigned Unused2 :1;
- unsigned Unused1 :1;
- unsigned FIFOsAllFull :1;
- unsigned FIFOsNotAllFull :1;
- unsigned FIFOsNotAllEmpty :1;
- unsigned SynClr24_wo_TC24 :1;
- unsigned SynClr24 :1;
- unsigned SynClr16_wo_TC16 :1;
- unsigned SynClr16 :1;
- unsigned TestMem2 :1;
- unsigned TestMem1 :1;
- unsigned Test10 :1;
- unsigned Test50 :1;
- unsigned TestGT :1;
- unsigned Int :10;
- unsigned Diff_2 :7;
-} aMTCReadoutData, *aMTCReadoutDataPtr;
-
-#endif // SWAP_BYTES
-
-// ZDAB bank structure
-typedef struct PmtEventRecord {
-#ifdef SWAP_BYTES
- uint16_t DataType;
- uint16_t PmtEventRecordInfo;
-#else
- uint16_t PmtEventRecordInfo;
- uint16_t DataType;
-#endif
- uint32_t RunNumber;
- uint32_t EvNumber;
-#ifdef SWAP_BYTES
- uint16_t NPmtHit;
- uint16_t DaqStatus; // Now used to store sub-run number - PH
-#else
- uint16_t DaqStatus; // Now used to store sub-run number - PH
- uint16_t NPmtHit;
-#endif
- uint32_t CalPckType; // lower 24 bits are now used for extended PmtEventRecord flags
- aMTCReadoutData TriggerCardData; // 6 LW of MTC data
- // FECReadoutData follows directly.
-} SBankZDAB, aPmtEventRecord;
-
-// MCHeader - monte carlo event data if CAL_TYPE = 1 or 2 (one per event)
-typedef struct MCHeader {
- uint16_t mcVersion; // SNOMAN MC version number
- uint16_t nVertices; // number of source vertices
- uint32_t mcEvNumber; // MC event number
- uint32_t julianDate; // Julian Date (01/01/75 = 1)
- uint32_t sec; // universal time seconds
- uint32_t nsec; // universal time nanoseconds
- uint16_t Seed1; // first random number seed
- uint16_t Seed2; // second random number seed
- uint32_t randNum; // random number used
-} aMCHeader;
-
-// MCData - monte carlo data (one per source vertex + hanging tracks)
-typedef struct MCData {
- uint32_t intType; // interaction type
- uint16_t xPos; // vertex X position (32768 = 1000.0 cm)
- uint16_t yPos; // vertex Y position
- uint16_t zPos; // vertex X position
- uint8_t nTracks; // number of tracks for this vertex
- uint8_t vClass; // vertex class, (Pre)Source=(1)0
- uint32_t time0; // first word of double prec time
- uint32_t time1; // second word of double prec time
- uint16_t pType; // particle type
- uint16_t pEnergy0; // first word of 32-bit energy (note: NOT on 32-bit boundary!)
- uint16_t pEnergy1; // second word of 32-bit energy
- uint16_t xDir; // track direction x-cosine (32768 = 1.0)
- uint16_t yDir; // track direction x-cosine
- uint16_t zDir; // track direction x-cosine
-} aMCData;
-
-// MCJitter - jitter/cherenkov history if CAL_TYPE = 2 (one per PMT)
-typedef struct MCJitter {
- uint32_t jitterData;
-} aMCJitter;
-
-/* ................... extended PmtEventRecord format (PH 02/25/99) ................... */
-
-#define SUB_NOT_LAST ( 0x00800000UL ) // bit set indicates another sub-field follows
-#define SUB_LENGTH_MASK ( 0x007fffffUL ) // mask for offset to next sub-field
-#define SUB_TYPE_BITNUM 24 // bit position of sub-field type
-
-/* sub-field ID numbers */
-#define SUB_TYPE_CALIBRATED 8UL // calibrated sub-field type
-#define SUB_TYPE_MONTE_CARLO 9UL // monte carlo sub-field
-#define SUB_TYPE_FIT 10UL // fitted event sub-field
-#define SUB_TYPE_HIT_DATA 11UL // extra floating-point hit data
-#define SUB_TYPE_EVENT_DATA 12UL // extra floating-point event data
-#define SUB_TYPE_PACKED_TSLH 13UL // packed time since last hit
-#define SUB_TYPE_CAL_FLAGS 14UL // calibrated data flags (one 32 bit word)
-#define SUB_TYPE_HCA_QUEENS 15UL // Queen's HCA calibration
-#define SUB_TYPE_NCD 16UL // NCD data record
-#define SUB_TYPE_CAEN 32UL // SNO+ CAEN data
-#define SUB_TYPE_TUBII 33UL // SNO+ TUBII trigger word
-
-/* sub-field header */
-typedef struct SubFieldHeader {
- uint32_t flags; // bits 0-22 = size of this sub-field in 4-uint8_t words (including header)
- // bit 23 = 0-no more sub-fields, 1=another sub-field follows
- // bits 24-31 = ID number for this sub-field
-} aSubFieldHeader;
-
-/* sub-field ID number 8 - calibrated PMT data */
-/* -9999 in any of these fields means that no calibration was available. */
-/* Order and number of these correspond exactly to hits in original PmtEventRecord. */
-typedef struct CalibratedPMT {
- float tac;
- float qhs;
- float qhl;
- float qlx;
-} aCalibratedPMT;
-
-/* sub-field ID number 9 - monte carlo header */
-typedef struct MCHeader MonteCarloHeader;
-
-/* vertex structure for monte-carlo data */
-typedef struct MonteCarloVertex {
- float x,y,z; // vertex location in cm
- float u,v,w; // track direction cosines
- double time; // event time
- float energy; // energy of particle for outgoing track
- uint32_t int_code; // vertex interaction code
- uint16_t flags; // special vertex flags (upper 8 bits reserved for display)
- uint16_t particle; // outgoing track particle ID
- int32_t parent; // index of parent vertex in list (-ve if no parent)
-} aMonteCarloVertex;
-
-/* sub-field ID number 10 - fitted event data */
-typedef struct FittedEvent {
- float x,y,z; // fitted event position in cm
- float u,v,w; // fitted event direction cosines
- float time; // fitted event time
- float quality; // quality of fit
- uint16_t npmts; // number of PMT's fit
- uint16_t spare; // extra fit-dependent data
- char name[32]; // fitter identification string (NULL terminated)
-} aFittedEvent;
-
-/* sub-field ID number 11 - extra floating point hit data */
-#define DATA_NAME_LEN 24
-
-typedef struct ExtraHitData {
- char name[DATA_NAME_LEN]; // null-terminated data name (see Note 1)
- // -- followed by NPmtHit float values in the same order as PMT hits
-} aExtraHitData;
-
-// Note 1) The extra hit/event data name may have an optional format specifier.
-// The format specifier is standard C printf style for a floating point number
-// (ie. "%.2f"), and must immediately follow the null terminator of the name.
-
-/* sub-field ID number 12 - extra floating point event data */
-typedef struct ExtraEventData {
- char name[DATA_NAME_LEN]; // null-terminated data name (see Note 1)
- float value; // data value
-} aExtraEventData;
-
-/* sub-field ID number 13 - packed TSLH */
-
-/* sub-field ID number 14 - calibration flags (one 32-bit word) */
-#define CAL_FLAG_QSLOPE 0x0001 // flag for charge slopes applied
-
-/* sub-field ID number 15 - Queen's HCA calibration */
-
-/* sub-field ID number 16 - NCD data record (see NcdDataTypes.h) */
-
-/* sub-field ID nubmer 32 - CAEN trigger sum data */
-#define UNPK_CAEN_MAGIC(a) ( (*(a) >> 28) & 0x0000000f )
-#define UNPK_CAEN_WORD_COUNT(a) ( *(a) & 0x0fffffff )
-#define UNPK_CAEN_CHANNEL_MASK(a) ( *((a)+1) & 0x000000ff )
-#define UNPK_CAEN_PATTERN(a) ( (*((a)+1) >> 8) & 0x0000ffff )
-#define UNPK_CAEN_PACK_FLAG(a) ( (*((a)+1) >> 24) & 0x00000001 )
-#define UNPK_CAEN_BOARD_ID(a) ( *((a)+1) >> 25 )
-#define UNPK_CAEN_SYNC16(a) ( (*((a)+1) >> 15) & 0x00000001 )
-#define UNPK_CAEN_SYNC24(a) ( (*((a)+1) >> 16) & 0x00000001 )
-#define UNPK_CAEN_EVENT_COUNT(a) ( *((a)+2) & 0x00ffffff )
-#define UNPK_CAEN_TRIGGER_TIME(a) ( *((a)+3) )
-
-/* sub-field ID number 33 - TUBii record */
-typedef struct TubiiRecord {
- uint32_t TrigWord;
- uint32_t GTID;
-} aTubiiRecord;
-
-/* .............................. End extended format .............................. */
-
-/*
- * unpacking "routines" by definition! Looks awful, but is fast...
- * "a" in the following is a pointer to 3 longwords as read out from
- * the FEC32. from SNODAQ distribution
- */
-#define UNPK_MISSED_COUNT(a) ( (*((a)+1) >> 28) & 0x1 )
-#define UNPK_NC_CC(a) ( (*((a)+1) >> 29) & 0x1 )
-#define UNPK_LGI_SELECT(a) ( (*((a)+1) >> 30) & 0x1 )
-#define UNPK_CMOS_ES_16(a) ( (*((a)+1) >> 31) & 0x1 )
-#define UNPK_CGT_ES_16(a) ( (*(a) >> 30) & 0x1 )
-#define UNPK_CGT_ES_24(a) ( (*(a) >> 31) & 0x1 )
-#define UNPK_QLX(a) ( ( *((a)+1) & 0x00000fff) ^ 0x00000800 )
-#define UNPK_QHS(a) ( ( (*((a)+1) >> 16) & 0x00000fff) ^ 0x00000800 )
-#define UNPK_QHL(a) ( ( *((a)+2) & 0x00000fff) ^ 0x00000800 )
-#define UNPK_TAC(a) ( ( (*((a)+2) >> 16) & 0x00000fff) ^ 0x00000800 )
-
-#define UNPK_CELL_ID(a) ( (*((a)+1) >> 12) & 0x0000000F )
-#define UNPK_CHANNEL_ID(a) ( (*(a) >> 16) & 0x0000001F )
-#define UNPK_BOARD_ID(a) ( (*(a) >> 26) & 0x0000000F )
-#define UNPK_CRATE_ID(a) ( (*(a) >> 21) & 0x0000001F )
-#define UNPK_FEC_GT24_ID(a) ( ( * (a) & 0x0000FFFF ) | \
- ( (*((a)+2) << 4) & 0x000F0000 ) | \
- ( (*((a)+2) >> 8) & 0x00F00000 ) )
-#define UNPK_FEC_GT16_ID(a) ( *(a) & 0x0000FFFF )
-#define UNPK_FEC_GT8_ID(a) ( ( (*((a)+2) >> 24) & 0x000000F0 ) | \
- ( (*((a)+2) >> 12) & 0x0000000F )
-
-#define UNPK_FEC_GT_ID(a) ( ( * (a) & 0x0000FFFF ) | \
- ( (*((a)+2) << 4) & 0x000F0000 ) | \
- ( (*((a)+2) >> 8) & 0x00F00000 ) )
-
-// unpacking trigger words by definitions...
-// unpacking "routines" by definition! Looks awful, but is fast...
-// "a" in the following is a pointer to 6 longwords as read out from the MTC.
-#define UNPK_MTC_BC50_1(a) ( (*((a)+1) >> 21) & 0x7FF )
-#define UNPK_MTC_BC50_2(a) ( *((a)+2) )
-#define UNPK_MTC_BC10_1(a) ( *( a ) )
-#define UNPK_MTC_BC10_2(a) ( *((a)+1) & 0x1FFFFF )
-#define UNPK_MTC_GT_ID(a) ( *((a)+3) & 0x00FFFFFF )
-#define UNPK_MTC_DIFF(a) (((*((a)+4) >> 29) & 0x007) | ((*((a)+5) << 3) & 0x3F8))
-#define UNPK_MTC_INT(a) ( (*((a)+5) >> 7) & 0x3FF )
-#define UNPK_MTC_PEAK(a) ( (*((a)+4) >> 19) & 0x3FF )
-#define UNPK_NHIT_100_LO(a) ( *((a)+3) & 0x01000000 )
-#define UNPK_NHIT_100_MED(a) ( *((a)+3) & 0x02000000 )
-#define UNPK_NHIT_100_HI(a) ( *((a)+3) & 0x04000000 )
-#define UNPK_NHIT_20(a) ( *((a)+3) & 0x08000000 )
-#define UNPK_NHIT_20_LB(a) ( *((a)+3) & 0x10000000 )
-#define UNPK_ESUM_LO(a) ( *((a)+3) & 0x20000000 )
-#define UNPK_ESUM_HI(a) ( *((a)+3) & 0x40000000 )
-#define UNPK_OWLN(a) ( *((a)+3) & 0x80000000 )
-#define UNPK_OWLE_LO(a) ( *((a)+4) & 0x00000001 )
-#define UNPK_OWLE_HI(a) ( *((a)+4) & 0x00000002 )
-#define UNPK_PULSE_GT(a) ( *((a)+4) & 0x00000004 )
-#define UNPK_PRESCALE(a) ( *((a)+4) & 0x00000008 )
-#define UNPK_PONG(a) ( *((a)+4) & 0x00000010 )
-#define UNPK_SYNC(a) ( *((a)+4) & 0x00000020 )
-#define UNPK_EXT_ASYNC(a) ( *((a)+4) & 0x00000040 )
-#define UNPK_EXT_2(a) ( *((a)+4) & 0x00000080 )
-#define UNPK_EXT_3(a) ( *((a)+4) & 0x00000100 )
-#define UNPK_EXT_4(a) ( *((a)+4) & 0x00000200 )
-#define UNPK_EXT_5(a) ( *((a)+4) & 0x00000400 )
-#define UNPK_EXT_6(a) ( *((a)+4) & 0x00000800 )
-#define UNPK_EXT_7(a) ( *((a)+4) & 0x00001000 )
-#define UNPK_EXT_8(a) ( *((a)+4) & 0x00002000 )
-#define UNPK_SPECIAL_RAW(a) ( *((a)+4) & 0x00004000 )
-#define UNPK_NCD(a) ( *((a)+4) & 0x00008000 )
-#define UNPK_SOFT_GT(a) ( *((a)+4) & 0x00010000 )
-#define UNPK_MISS_TRIG(a) ( *((a)+4) & 0x00020000 )
-
-// unpack Trigger Error Mask...
-#define UNPK_TESTGT(a) ( *((a)+5) & 0x00020000 )
-#define UNPK_TEST50(a) ( *((a)+5) & 0x00040000 )
-#define UNPK_TEST10(a) ( *((a)+5) & 0x00080000 )
-#define UNPK_TESTMEM1(a) ( *((a)+5) & 0x00100000 )
-#define UNPK_TESTMEM2(a) ( *((a)+5) & 0x00200000 )
-#define UNPK_SYNCLR16(a) ( *((a)+5) & 0x00400000 )
-#define UNPK_SYNCLR16_WO_TC16(a) ( *((a)+5) & 0x00800000 )
-#define UNPK_SYNCLR24(a) ( *((a)+5) & 0x01000000 )
-#define UNPK_SYNCLR24_WO_TC24(a) ( *((a)+5) & 0x02000000 )
-#define UNPK_SOME_FIFOS_EMPTY(a) ( *((a)+5) & 0x04000000 )
-#define UNPK_SOME_FIFOS_FULL(a) ( *((a)+5) & 0x08000000 )
-#define UNPK_ALL_FIFOS_FULL(a) ( *((a)+5) & 0x10000000 )
-
-// unpack the Trigger Word (lowest 27 bits are significant)
-#define UNPK_MTC_TRIGGER(a) ( ( ( *((a)+3) >> 5 ) & 0x7F80000 ) | ( *((a)+4) & 0x7FFFF ) )
-// unpack the Trigger Error bits (lowest 14 bits signficant)
-#define UNPK_MTC_ERROR(a) ( ( *((a)+5) >> 17 ) & 0x3FFF )
-
-
-// -------------------------------------------------------------------------------------
-
-// other records, not defined in this file
-#define CRON_RECORD 0x43524F4E // 'CRON'
-#define VRLY_RECORD 0x56524C59 // 'VRLY'
-#define MSEI_RECORD 0x4D534549 // 'MSEI'
-
-#ifdef __MWERKS__
-// vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
-// extra code for SHaRC version only
-
-typedef struct MTCReadoutWords {
- uint32_t Word[6];
-} aMTCReadoutWords, *aMTCReadoutWordsPtr;
-
-typedef struct FECReadoutWords {
- uint32_t Word[3];
-} aFECReadoutWords, *aFECReadoutWordsPtr;
-
-// (be very careful here! for backward compatibility this is also
-// defined as EpedRecord as used by everyone else. Not to be confused with EPEDRecord.)
-typedef struct EPEDRecord SHaRC_BankEPED;
-
-// SHaRC uses short forms of trigger bit definitions
-#define NHIT_100_LO TRIG_NHIT_100_LO
-#define NHIT_100_MED TRIG_NHIT_100_MED
-#define NHIT_100_HI TRIG_NHIT_100_HI
-#define NHIT_20 TRIG_NHIT_20
-#define NHIT_20_LB TRIG_NHIT_20_LB
-#define ESUM_LO TRIG_ESUM_LO
-#define ESUM_HI TRIG_ESUM_HI
-#define OWLN TRIG_OWLN
-#define OWLE_LO TRIG_OWLE_LO
-#define OWLE_HI TRIG_OWLE_HI
-#define PULSE_GT TRIG_PULSE_GT
-#define PRESCALE TRIG_PRESCALE
-#define PEDESTAL TRIG_PEDESTAL
-#define PONG TRIG_PONG
-#define SYNC TRIG_SYNC
-#define EXT_ASYNC TRIG_EXT_ASYNC
-#define HYDROPHONE TRIG_HYDROPHONE
-#define EXT3 TRIG_EXT3
-#define EXT4 TRIG_EXT4
-#define EXT5 TRIG_EXT5
-#define EXT6 TRIG_EXT6
-#define EXT7 TRIG_EXT7
-#define EXT8 TRIG_EXT8
-#define SPECIAL_RAW TRIG_SPECIAL_RAW
-#define NCD TRIG_NCD_MUX
-#define SOFT_GT TRIG_SOFT_GT
-
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-#endif // __MWERKS__
-
-
-#endif // __RECORD_INFO_H__