aboutsummaryrefslogtreecommitdiff
path: root/src/zdab_utils.c
diff options
context:
space:
mode:
authortlatorre <tlatorre@uchicago.edu>2019-01-15 01:08:54 -0600
committertlatorre <tlatorre@uchicago.edu>2019-01-15 01:08:54 -0600
commit9c910abe7a0359018677a874822d8742d0e616b9 (patch)
tree52dda30fd3c5b0eb78050dee4dec10bdf8557ed7 /src/zdab_utils.c
parent272d793cda5456fb8a69d3e2a407bf24d3600cd4 (diff)
downloadsddm-9c910abe7a0359018677a874822d8742d0e616b9.tar.gz
sddm-9c910abe7a0359018677a874822d8742d0e616b9.tar.bz2
sddm-9c910abe7a0359018677a874822d8742d0e616b9.zip
update zebra library to be able to use links
This commit updates the zebra library files zebra.{c,h} so that it's now possible to traverse the data structure using links! This was originally motivated by wanting to figure out which MC particles were generated from the MCGN bank (from which it's only possible to access the tracks and vertices using structural links). I've also added a new test to test-zebra which checks the consistency of all of the next/up/orig, structural, and reference links in a zebra file.
Diffstat (limited to 'src/zdab_utils.c')
-rw-r--r--src/zdab_utils.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/zdab_utils.c b/src/zdab_utils.c
index 1cde62a..1f2ed03 100644
--- a/src/zdab_utils.c
+++ b/src/zdab_utils.c
@@ -49,6 +49,30 @@ void swap_int16(int16_t *val_pt, int count)
return;
}
+void unpack_mcgn(uint32_t *data, MCGNBank *b)
+{
+ unpack((uint8_t *) data, "l",&b->id);
+ unpack((uint8_t *) (data+1), "l",&b->num);
+ unpack((uint8_t *) (data+2), "l",&b->radcor_proc);
+ unpack((uint8_t *) (data+3), "l",&b->radcor_made_gamma);
+ unpack((uint8_t *) (data+4), "l",&b->spare5);
+ unpack((uint8_t *) (data+5), "l",&b->spare6);
+ unpack((uint8_t *) (data+7), "l",&b->spare7);
+ unpack((uint8_t *) (data+8), "l",&b->spare8);
+ unpack((uint8_t *) (data+9), "l",&b->spare9);
+ unpack((uint8_t *) (data+10), "l",&b->spare10);
+ unpack((uint8_t *) (data+12), "f",&b->radcor_xtot);
+ unpack((uint8_t *) (data+13), "f",&b->radcor_xdif);
+ unpack((uint8_t *) (data+14), "f",&b->gentim_xpar);
+ unpack((uint8_t *) (data+15), "f",&b->spare14);
+ unpack((uint8_t *) (data+16), "f",&b->spare15);
+ unpack((uint8_t *) (data+17), "f",&b->spare16);
+ unpack((uint8_t *) (data+18), "f",&b->spare17);
+ unpack((uint8_t *) (data+19), "f",&b->spare18);
+ unpack((uint8_t *) (data+20), "f",&b->spare19);
+ unpack((uint8_t *) (data+21), "f",&b->spare20);
+}
+
void unpack_mcvx(uint32_t *data, MCVXBank *b)
{
unpack((uint8_t *) data, "l",&b->cls);