aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2018-09-17 08:26:52 -0500
committertlatorre <tlatorre@uchicago.edu>2018-09-17 08:26:52 -0500
commit6f546d1f4e9d5b14689d00fcf98e85c7e78df6f8 (patch)
tree79fcf4a67ca3c507c2da62c38ac91f1e539e16b3 /src
parente449ca23d8f503efcbca7e24f9539c8c4cb31357 (diff)
downloadsddm-6f546d1f4e9d5b14689d00fcf98e85c7e78df6f8.tar.gz
sddm-6f546d1f4e9d5b14689d00fcf98e85c7e78df6f8.tar.bz2
sddm-6f546d1f4e9d5b14689d00fcf98e85c7e78df6f8.zip
add MC Track bank to zdab_utils
Diffstat (limited to 'src')
-rw-r--r--src/zdab_utils.c16
-rw-r--r--src/zdab_utils.h28
2 files changed, 44 insertions, 0 deletions
diff --git a/src/zdab_utils.c b/src/zdab_utils.c
index d946eef..a689f92 100644
--- a/src/zdab_utils.c
+++ b/src/zdab_utils.c
@@ -49,6 +49,22 @@ void swap_int16(int16_t *val_pt, int count)
return;
}
+void unpack_mctk(uint32_t *data, MCTKBank *b)
+{
+ unpack((uint8_t *) data, "l",&b->idp);
+ unpack((uint8_t *) (data+1), "f",&b->drx);
+ unpack((uint8_t *) (data+2), "f",&b->dry);
+ unpack((uint8_t *) (data+3), "f",&b->drz);
+ unpack((uint8_t *) (data+4), "f",&b->ene);
+ unpack((uint8_t *) (data+5), "l",&b->rgn);
+ unpack((uint8_t *) (data+6), "l",&b->idm);
+ unpack((uint8_t *) (data+7), "f",&b->plx);
+ unpack((uint8_t *) (data+8), "f",&b->ply);
+ unpack((uint8_t *) (data+9), "f",&b->plz);
+ unpack((uint8_t *) (data+10), "f",&b->stp);
+ unpack((uint8_t *) (data+11), "f",&b->near);
+}
+
void unpack_ev(uint32_t *data, EVBank *b)
{
unpack((uint8_t *) data, "l",&b->run);
diff --git a/src/zdab_utils.h b/src/zdab_utils.h
index c5fc2c0..d5b6a7a 100644
--- a/src/zdab_utils.h
+++ b/src/zdab_utils.h
@@ -29,6 +29,33 @@
#define KPF_NO_CAL 0x08000000
#define KPF_BAD_CAL 0x10000000
+typedef struct MCTKBank {
+ /* Particle id code. */
+ uint32_t idp;
+ /* Direction cosine X. */
+ float drx;
+ /* Direction cosine Y. */
+ float dry;
+ /* Direction cosine Z. */
+ float drz;
+ /* Total energy (except for neutrons where it is kinetic). */
+ float ene;
+ /* Region code. */
+ uint32_t rgn;
+ /* Physical media code. */
+ uint32_t idm;
+ /* Polarization X. */
+ float plx;
+ /* Polarization Y. */
+ float ply;
+ /* Polarization Z. */
+ float plz;
+ /* Track step size. */
+ float stp;
+ /* Minimum distance to nearest boundary or 0. */
+ float near;
+} MCTKBank;
+
typedef struct EVBank {
/* Run number. */
uint32_t run;
@@ -189,6 +216,7 @@ typedef struct PMTBank {
uint32_t qrc;
} PMTBank;
+void unpack_mctk(uint32_t *data, MCTKBank *b);
void unpack_ev(uint32_t *data, EVBank *b);
void unpack_pmt(uint32_t *data, PMTBank *b);