Main Page
Class Categories
Classes
Namespaces
File List
File Members
exper-sw
cosmosw
AugerSW
Offline
source
main
Utilities
CorsikaCReader
list-particles.c
Go to the documentation of this file.
1
#include <stdlib.h>
2
#include <stdio.h>
3
4
#include <math.h>
5
6
#include "
corsika-tape.h
"
7
#include "
corsika-particle.h
"
8
9
10
#define SKIP 4
/* bytes to skip at beginning of file */
11
12
char
trash
[
SKIP
];
13
14
15
int
16
main
(
int
argc,
char
** argv)
17
{
18
FILE* tape;
19
struct
{
20
char
skip1[
SKIP
];
21
block
bl;
22
char
skip2[
SKIP
];
23
} tb;
24
int
i, j;
25
RWORD
desc, A, Z;
26
27
if
((tape = fopen(argv[1],
"r"
)) == NULL) {
28
fprintf(stderr,
"Cannot open file %s. Aborting...\n"
, argv[1]);
29
exit
(1);
30
}
31
32
while
(fread(&tb,
sizeof
(tb), 1, tape) == 1) {
33
for
(i = 0; i <
SUB_BLOCKS_IN_BLOCK
; ++i) {
34
if
(
is_control
(tb.bl[i].rh.id)) {
35
printf(
"%4.4s\n"
, tb.bl[i].rh.id);
36
}
else
{
37
for
(j = 0; j <
PARTICLES_IN_SUB_BLOCK
; ++j) {
38
desc = tb.bl[i].pd.particle[j].description;
39
printf(
"%8g: "
, desc);
40
if
(
is_particle_r
(desc)) {
41
printf(
"%-10s"
,
particle
[(
int
)desc/1000].name);
42
}
else
if
(
is_nucleus_r
(desc)) {
43
A = (int)desc / 100000;
44
Z = (int)desc / 1000 - 100*A;
45
printf(
"N, Z=%g, A=%g"
, Z, A);
46
}
else
{
47
printf(
"OTHER: %g\n"
, desc);
48
}
49
if
(desc != 0) {
50
printf(
", Distance %7.2g (m)"
,
sqrt
(tb.bl[i].pd.particle[j].x*tb.bl[i].pd.particle[j].x + tb.bl[i].pd.particle[j].y * tb.bl[i].pd.particle[j].y) / 100.0);
51
#ifdef THINNING
52
printf(
", Weight: %g"
, tb.bl[i].pd.particle[j].weight);
53
#endif
54
printf(
"\n"
);
55
}
56
}
57
}
58
}
59
}
60
61
return
0;
62
}
SKIP
#define SKIP
Definition:
list-particles.c:10
corsika-tape.h
is_nucleus_r
#define is_nucleus_r(p)
Definition:
corsika-tape.h:239
trash
char trash[4]
Definition:
list-particles.c:12
exit
int exit
Definition:
dump1090.h:237
is_particle_r
#define is_particle_r(p)
Definition:
corsika-tape.h:238
main
int main(int argc, char *argv[])
Definition:
DBSync.cc:58
sqrt
double sqrt(const size_t x)
Definition:
Tools/InclinedShowers/TankResponse/Tabular/TankResponse.cc:28
RWORD
#define RWORD
Definition:
corsika-tape.h:15
corsika-particle.h
is_control
#define is_control(r)
Definition:
corsika-tape.h:233
block
Definition:
corsika-tape.h:284
SUB_BLOCKS_IN_BLOCK
#define SUB_BLOCKS_IN_BLOCK
Definition:
corsika-tape.h:25
PARTICLES_IN_SUB_BLOCK
#define PARTICLES_IN_SUB_BLOCK
Definition:
corsika-tape.h:26
particle
struct particle_info particle[80]
, generated on Tue Sep 26 2023.