aboutsummaryrefslogtreecommitdiff
path: root/src/test-charge.c
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 /src/test-charge.c
parent0b7f199c0d93074484ea580504485a32dc29f5e2 (diff)
downloadsddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.tar.gz
sddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.tar.bz2
sddm-24c8bcfe7f76b20124e2862ea050f815c0f768e7.zip
move everything to src directory
Diffstat (limited to 'src/test-charge.c')
-rw-r--r--src/test-charge.c86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/test-charge.c b/src/test-charge.c
new file mode 100644
index 0000000..0b73d24
--- /dev/null
+++ b/src/test-charge.c
@@ -0,0 +1,86 @@
+#include <stdio.h>
+#include "sno_charge.h"
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h> /* for errno */
+#include <string.h> /* for strerror() */
+
+void usage(void)
+{
+ fprintf(stderr,"Usage: ./test-charge\n");
+ fprintf(stderr," -n number of PE\n");
+ fprintf(stderr," -b number of bins\n");
+ fprintf(stderr," --xmin Lowest value of charge\n");
+ fprintf(stderr," --xmax Highest value of charge\n");
+ fprintf(stderr," -h Display this help message\n");
+ exit(1);
+}
+
+int main(int argc, char **argv)
+{
+ size_t i, j, nq, n;
+ double *x;
+ double qlo, qhi;
+
+ n = 10;
+ nq = 1000;
+ qlo = -1.0;
+ qhi = 1.0;
+
+ for (i = 1; i < argc; i++) {
+ if (!strncmp(argv[i], "--", 2)) {
+ if (!strcmp(argv[i]+2,"xmin")) {
+ qlo = strtod(argv[++i],NULL);
+ continue;
+ } else if (!strcmp(argv[i]+2,"xmax")) {
+ qhi = strtod(argv[++i],NULL);
+ continue;
+ }
+ } else if (argv[i][0] == '-') {
+ switch (argv[i][1]) {
+ case 'n':
+ n = atoi(argv[++i]);
+ break;
+ case 'b':
+ nq = atoi(argv[++i]);
+ break;
+ case 'h':
+ usage();
+ default:
+ fprintf(stderr, "unrecognized option '%s'\n", argv[i]);
+ exit(1);
+ }
+ }
+ }
+
+ init_charge();
+
+ x = malloc(nq*sizeof(double));
+
+ for (i = 0; i < nq; i++) {
+ x[i] = qlo + (qhi-qlo)*i/(nq-1);
+ }
+
+ FILE *pipe = popen("graph -T X --bitmap-size 2000x2000 -X 'Charge (PE)' -Y Probability", "w");
+
+ if (!pipe) {
+ fprintf(stderr, "error running graph command: %s\n", strerror(errno));
+ exit(1);
+ }
+
+ for (i = 1; i <= n; i++) {
+ for (j = 0; j < nq; j++) {
+ fprintf(pipe, "%.10f %.10f\n", x[j], pq(x[j],i));
+ }
+ fprintf(pipe, "\n\n");
+ }
+
+ if (pclose(pipe)) {
+ fprintf(stderr, "error closing graph command: %s\n", strerror(errno));
+ exit(1);
+ }
+
+ free(x);
+
+ return 0;
+}