#!/usr/bin/env python # Copyright (c) 2019, Anthony Latorre # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # # You should have received a copy of the GNU General Public License along with # this program. If not, see . """ Script to convert the PMT database in RAT to a CSV file (with spaces instead of commas). """ from __future__ import print_function, division import yaml if __name__ == '__main__': import argparse import numpy as np parser = argparse.ArgumentParser("convert a RATDB file -> CSV file") parser.add_argument("filename", help="RATDB filename") parser.add_argument("-o", "--output", help="output filename", required=True) args = parser.parse_args() s = '' with open(args.filename) as f: for line in f: if line.startswith('//'): continue s += line data = yaml.load(s) csv = np.zeros((len(data['x']),7),dtype=np.float64) csv[:,0] = data['x'] csv[:,1] = data['y'] csv[:,2] = data['z'] csv[:,3] = data['u'] csv[:,4] = data['v'] csv[:,5] = data['w'] csv[:,6] = data['pmt_type'] # reverse PMT normals csv[:,3] = -csv[:,3] csv[:,4] = -csv[:,4] csv[:,5] = -csv[:,5] header = "Format: x, y, z, u, v, w, pmt_type" np.savetxt(args.output, csv, fmt=['%10.2f']*6 + ['%i'], header=header)