Main Page
Class Categories
Classes
Namespaces
File List
File Members
exper-sw
cosmosw
AugerSW
Offline
source
main
Utilities
CorsikaCReader
corsika-tape.h
Go to the documentation of this file.
1
/*****************************************************************************/
2
/* */
3
/* Define the data structures for the CORSIKA output file */
4
/* */
5
/* Lukas Nellen, 18-September-1997 */
6
/* */
7
/*****************************************************************************/
8
9
#ifndef CORSIKA_TAPE_H
10
#define CORSIKA_TAPE_H
11
12
#include <string.h>
13
#include <stdio.h>
14
15
#define RWORD float
/* 4 byte real */
16
#define IWORD int
/* 4 byte integer */
17
#ifndef BLOCK_PAD_B
18
# define BLOCK_PAD_B 4
/* extra bytes at beginning of block */
19
#endif
20
#ifndef BLOCK_PAD_E
21
# define BLOCK_PAD_E 4
/* extra bytes at end of block */
22
#endif
23
24
#define MAX_OBSERVATION_LEVELS 10
25
#define SUB_BLOCKS_IN_BLOCK 21
26
#define PARTICLES_IN_SUB_BLOCK 39
27
28
#define RUN_HEADER_ID "RUNH"
29
#define is_run_header(r) (memcmp(r, RUN_HEADER_ID, 4) == 0)
30
typedef
struct
{
31
char
id
[4];
/* is "RUNH" */
32
RWORD
run_number
;
33
RWORD
date_start
;
34
RWORD
version
;
35
36
RWORD
observation_levels
;
37
RWORD
observation_height[
MAX_OBSERVATION_LEVELS
];
/* in cm */
38
39
RWORD
spectral_slope
;
40
RWORD
e_min
;
/* in GeV */
41
RWORD
e_max
;
/* in GeV */
42
43
RWORD
flag_egs4
;
44
RWORD
flag_nkg
;
45
46
RWORD
cutoff_hadrons
;
/* in GeV */
47
RWORD
cutoff_muons
;
/* in GeV */
48
RWORD
cutoff_electrons
;
/* in GeV */
49
RWORD
cutoff_photons
;
/* in GeV */
50
51
RWORD
const_c[50];
52
RWORD
const_cc[20];
53
RWORD
const_cka[40];
54
RWORD
const_ceta[5];
55
RWORD
const_cstrba[11];
56
RWORD
const_unused[4];
57
RWORD
const_can[50];
58
RWORD
const_cann[50];
59
RWORD
const_aatm[5];
60
RWORD
const_batm[5];
61
RWORD
const_catm[5];
62
RWORD
const_nflain
;
63
RWORD
const_nfldif
;
64
RWORD
const_nflpi
;
65
RWORD
const_nflche
;
66
67
#ifdef THINNING
68
RWORD
pad[39];
69
#endif
70
}
run_header
;
71
72
73
#define RUN_END_ID "RUNE"
74
#define is_run_end(r) (memcmp(r, RUN_END_ID, 4) == 0)
75
typedef
struct
{
76
char
id
[4];
/* is "RUNE" */
77
RWORD
run_number
;
78
RWORD
events_processed
;
79
#ifndef THINNING
80
RWORD
pad[270];
81
#else
82
RWORD
pad[309];
83
#endif
84
}
run_end
;
85
86
87
#define EVENT_HEADER_ID "EVTH"
88
#define is_event_header(r) (memcmp(r, EVENT_HEADER_ID, 4) == 0)
89
typedef
struct
{
90
char
id
[4];
/* is "EVTH" */
91
RWORD
event_number
;
92
93
RWORD
particle_id
;
94
RWORD
energy
;
95
RWORD
starting_altitude
;
/* in g/cm^2 */
96
RWORD
first_target
;
97
RWORD
z_first
;
/* in cm */
98
RWORD
px
;
/* in GeV */
99
RWORD
py
;
/* in GeV */
100
RWORD
pz
;
/* in GeV */
101
RWORD
theta
;
/* zenith angle, in rad */
102
RWORD
phi
;
/* azimuthal angle, in rad */
103
104
RWORD
random_sequences
;
105
struct
{
106
RWORD
seed
;
107
RWORD
initial_calls_mod
;
108
RWORD
initial_calls_div
;
109
} seeds[10];
110
111
RWORD
run_number
;
112
RWORD
date_start
;
113
RWORD
version
;
114
115
RWORD
observation_levels
;
116
RWORD
observation_height[
MAX_OBSERVATION_LEVELS
];
/* in cm */
117
118
RWORD
spectral_slope
;
119
RWORD
e_min
;
/* in GeV */
120
RWORD
e_max
;
/* in GeV */
121
122
RWORD
cutoff_hadrons
;
/* in GeV */
123
RWORD
cutoff_muons
;
/* in GeV */
124
RWORD
cutoff_electrons
;
/* in GeV */
125
RWORD
cutoff_photons
;
/* in GeV */
126
127
RWORD
nflain
;
128
RWORD
nfldif
;
129
RWORD
nflpi0
;
130
RWORD
nflpif
;
131
RWORD
nflche
;
132
RWORD
nfragm
;
133
134
RWORD
bx
;
/* magnetic field in mu T */
135
RWORD
bz
;
/* magnetic field in mu T */
136
RWORD
flag_egs4
;
137
RWORD
flag_nkg
;
138
139
RWORD
flag_gheisha
;
140
RWORD
flag_venus
;
141
RWORD
flag_cerenkov
;
142
RWORD
flag_neutrino
;
143
RWORD
flag_horizontal
;
144
RWORD
flag_computer
;
/* 1:IBM, 2:Transputer, 3: DEC/UNIX
145
4:Macintosh, 5:VAX/VMS 6:LINUX */
146
RWORD
theta_min
;
/* in degrees */
147
RWORD
theta_max
;
/* in degrees */
148
RWORD
phi_min
;
/* in degrees */
149
RWORD
phi_max
;
/* in degrees */
150
151
RWORD
cerenkov_bunch
;
152
RWORD
cerenkov_number_x
;
153
RWORD
cerenkov_number_y
;
154
RWORD
cerenkov_grid_x
;
/* in cm */
155
RWORD
cerenkov_grid_y
;
/* in cm */
156
RWORD
cerenkov_detector_x
;
/* in cm */
157
RWORD
cerenkov_detector_y
;
/* in cm */
158
RWORD
cerenkov_output_flag
;
159
160
RWORD
array_rotation
;
161
RWORD
flag_extra_muon_information
;
162
163
RWORD
multiple_scatternig_step
;
164
RWORD
cerenkov_bandwidth_min
;
/* in nm */
165
RWORD
cerenkov_bandwidth_max
;
/* in nm */
166
RWORD
uses_of_event
;
167
RWORD
core_x[20];
/* in cm */
168
RWORD
core_y[20];
/* in cm */
169
170
RWORD
flag_sybill
;
171
RWORD
flag_sybill_cross
;
172
RWORD
flag_qgsjet
;
173
RWORD
flag_qgsjet_cross
;
174
RWORD
flag_dpmjet
;
175
RWORD
flag_dpmjet_cross
;
176
RWORD
flag_venus_cross
;
177
RWORD
flag_muon_multiple
;
/* 0:Gauss, 1:Moliere */
178
RWORD
efrcthn
;
/* energy fracion of thinning level */
179
RWORD
nkg_radial_range
;
/* in cm */
180
181
#ifndef THINNING
182
RWORD
pad[125];
183
#else
184
RWORD
pad[164];
185
#endif
186
}
event_header
;
187
188
189
#define EVENT_END_ID "EVTE"
190
#define is_event_end(r) (memcmp(r, EVENT_END_ID, 4) == 0)
191
typedef
struct
{
192
char
id
[4];
/* is "EVTE" */
193
RWORD
event_number
;
194
195
RWORD
photons
;
196
RWORD
electrons
;
197
RWORD
hadrons
;
198
RWORD
muons
;
199
RWORD
particles
;
200
201
/* NKG output */
202
RWORD
lateral1_x[21];
/* in cm^{-2} */
203
RWORD
lateral1_y[21];
/* in cm^{-2} */
204
RWORD
lateral1_xy[21];
/* in cm^{-2} */
205
RWORD
lateral1_yx[21];
/* in cm^{-2} */
206
207
RWORD
lateral2_x[21];
/* in cm^{-2} */
208
RWORD
lateral2_y[21];
/* in cm^{-2} */
209
RWORD
lateral2_xy[21];
/* in cm^{-2} */
210
RWORD
lateral2_yx[21];
/* in cm^{-2} */
211
212
RWORD
electron_number[10];
/* in steps of 100 g/cm^2 */
213
RWORD
age[10];
/* in steps of 100 g/cm^2 */
214
RWORD
distances[10];
/* in cm */
215
RWORD
local_age1[10];
216
217
RWORD
level_height_mass[10];
/* in g/cm^2 */
218
RWORD
level_height_distance[10];
/* in cm */
219
RWORD
distance_bins_age[10];
/* in cm */
220
RWORD
local_age2[10];
221
222
/* longitudinal distribution */
223
RWORD
longitudinal_par[6];
224
RWORD
chi2
;
225
226
#ifndef THINNING
227
RWORD
pad[11];
228
#else
229
RWORD
pad[50];
230
#endif
231
}
event_end
;
232
233
#define is_control(r) (is_run_header(r) || is_event_header(r) || \
234
is_run_end(r) || is_event_end(r))
235
236
237
/* The data records have the (numercial) particle code as an id */
238
#define is_particle_r(p) (((p)>0) && ((p)<100000))
239
#define is_nucleus_r(p) (((p)>=100000) && ((p)<9900000))
240
#define is_cerenkov_r(p) ((p)>=9900000)
241
typedef
struct
{
242
RWORD
description
;
243
RWORD
px
;
/* in GeV */
244
RWORD
py
;
/* in GeV */
245
RWORD
pz
;
/* in GeV */
246
RWORD
x
;
/* in cm */
247
RWORD
y
;
/* in cm */
248
RWORD
torz
;
/* in nsec or cm */
249
#ifdef THINNING
250
RWORD
weight;
251
#endif
252
}
particle_data
;
253
254
typedef
struct
{
255
particle_data
particle
[
PARTICLES_IN_SUB_BLOCK
];
256
}
particle_sub_block
;
257
258
typedef
struct
{
259
RWORD
photons_in_bunch
;
260
RWORD
x
;
/* in cm */
261
RWORD
y
;
/* in cm */
262
RWORD
u
;
/* in cos to x axis */
263
RWORD
v
;
/* in cos to y axis */
264
RWORD
t
;
/* in ns */
265
RWORD
production_height
;
/* in cm */
266
#ifdef THINNING
267
RWORD
weight;
268
#endif
269
}
cerenkov_data
;
270
271
typedef
struct
{
272
cerenkov_data
particle
[
PARTICLES_IN_SUB_BLOCK
];
273
}
cerenkov_sub_block
;
274
275
typedef
union
{
276
run_header
rh
;
277
run_end
re
;
278
event_header
eh
;
279
event_end
ee
;
280
particle_sub_block
pb
;
281
cerenkov_sub_block
cb
;
282
}
sub_block
;
283
284
typedef
struct
{
285
#if BLOCK_PAD_B
286
char
pad_b[
BLOCK_PAD_B
];
/* initial padding of each block */
287
#endif
288
sub_block
sb[
SUB_BLOCKS_IN_BLOCK
];
289
#if BLOCK_PAD_E
290
char
pad_e[
BLOCK_PAD_E
];
/* final padding of each block */
291
#endif
292
}
block
;
293
294
295
/* routines to manipulate CORSIKA blocked files */
296
typedef
struct
{
297
FILE *
file
;
298
block
bl
;
299
int
sub_index
;
300
}
corsika_file
;
301
302
corsika_file
*
corsika_fopen
(
char
*name,
char
*mode);
303
sub_block
*
corsika_get
(
corsika_file
*
file
);
304
305
#endif
cerenkov_data::u
float u
Definition:
corsika-tape.h:262
event_header::flag_horizontal
float flag_horizontal
Definition:
corsika-tape.h:143
event_header::flag_extra_muon_information
float flag_extra_muon_information
Definition:
corsika-tape.h:161
event_header::flag_venus_cross
float flag_venus_cross
Definition:
corsika-tape.h:176
event_header::uses_of_event
float uses_of_event
Definition:
corsika-tape.h:166
event_end::particles
float particles
Definition:
corsika-tape.h:199
run_header::e_min
float e_min
Definition:
corsika-tape.h:40
run_header::cutoff_hadrons
float cutoff_hadrons
Definition:
corsika-tape.h:46
particle_data::pz
float pz
Definition:
corsika-tape.h:245
run_header::spectral_slope
float spectral_slope
Definition:
corsika-tape.h:39
event_header::theta_min
float theta_min
Definition:
corsika-tape.h:146
event_header::run_number
float run_number
Definition:
corsika-tape.h:111
run_header::const_nfldif
float const_nfldif
Definition:
corsika-tape.h:63
run_header::flag_nkg
float flag_nkg
Definition:
corsika-tape.h:44
event_end::photons
float photons
Definition:
corsika-tape.h:195
particle_data
Definition:
corsika-tape.h:241
cerenkov_data::y
float y
Definition:
corsika-tape.h:261
event_header::initial_calls_div
float initial_calls_div
Definition:
corsika-tape.h:108
event_header::flag_nkg
float flag_nkg
Definition:
corsika-tape.h:137
event_header::spectral_slope
float spectral_slope
Definition:
corsika-tape.h:118
event_header::flag_dpmjet_cross
float flag_dpmjet_cross
Definition:
corsika-tape.h:175
particle_data::description
float description
Definition:
corsika-tape.h:242
event_header::py
float py
Definition:
corsika-tape.h:99
event_end::hadrons
float hadrons
Definition:
corsika-tape.h:197
corsika_file::file
FILE * file
Definition:
corsika-tape.h:297
run_end
Definition:
corsika-tape.h:75
event_header::flag_gheisha
float flag_gheisha
Definition:
corsika-tape.h:139
run_header::run_number
float run_number
Definition:
corsika-tape.h:32
event_header::multiple_scatternig_step
float multiple_scatternig_step
Definition:
corsika-tape.h:163
event_header::first_target
float first_target
Definition:
corsika-tape.h:96
event_header::nfragm
float nfragm
Definition:
corsika-tape.h:132
event_header::nkg_radial_range
float nkg_radial_range
Definition:
corsika-tape.h:179
cerenkov_data
Definition:
corsika-tape.h:258
event_header::phi_min
float phi_min
Definition:
corsika-tape.h:148
particle_sub_block
Definition:
corsika-tape.h:254
sub_block::rh
run_header rh
Definition:
corsika-tape.h:276
event_header::pz
float pz
Definition:
corsika-tape.h:100
event_header::cerenkov_output_flag
float cerenkov_output_flag
Definition:
corsika-tape.h:158
event_header::phi
float phi
Definition:
corsika-tape.h:102
run_header::cutoff_photons
float cutoff_photons
Definition:
corsika-tape.h:49
event_header::event_number
float event_number
Definition:
corsika-tape.h:91
event_header::cerenkov_grid_x
float cerenkov_grid_x
Definition:
corsika-tape.h:154
event_header::version
float version
Definition:
corsika-tape.h:113
sub_block
Definition:
corsika-tape.h:275
event_header::efrcthn
float efrcthn
Definition:
corsika-tape.h:178
sub_block::ee
event_end ee
Definition:
corsika-tape.h:279
sub_block::re
run_end re
Definition:
corsika-tape.h:277
event_header::z_first
float z_first
Definition:
corsika-tape.h:97
event_header::cerenkov_detector_y
float cerenkov_detector_y
Definition:
corsika-tape.h:157
event_header::observation_levels
float observation_levels
Definition:
corsika-tape.h:115
event_header::flag_cerenkov
float flag_cerenkov
Definition:
corsika-tape.h:141
event_header::cerenkov_bunch
float cerenkov_bunch
Definition:
corsika-tape.h:151
event_header::random_sequences
float random_sequences
Definition:
corsika-tape.h:104
event_header::flag_qgsjet_cross
float flag_qgsjet_cross
Definition:
corsika-tape.h:173
event_header::bz
float bz
Definition:
corsika-tape.h:135
cerenkov_sub_block
Definition:
corsika-tape.h:271
event_header::initial_calls_mod
float initial_calls_mod
Definition:
corsika-tape.h:107
event_header::flag_muon_multiple
float flag_muon_multiple
Definition:
corsika-tape.h:177
run_header::date_start
float date_start
Definition:
corsika-tape.h:33
event_header::cutoff_muons
float cutoff_muons
Definition:
corsika-tape.h:123
cerenkov_data::production_height
float production_height
Definition:
corsika-tape.h:265
event_header::e_max
float e_max
Definition:
corsika-tape.h:120
event_end::muons
float muons
Definition:
corsika-tape.h:198
event_header::array_rotation
float array_rotation
Definition:
corsika-tape.h:160
cerenkov_data::t
float t
Definition:
corsika-tape.h:264
event_header::cerenkov_bandwidth_min
float cerenkov_bandwidth_min
Definition:
corsika-tape.h:164
event_header::flag_sybill_cross
float flag_sybill_cross
Definition:
corsika-tape.h:171
run_header::flag_egs4
float flag_egs4
Definition:
corsika-tape.h:43
event_header::nfldif
float nfldif
Definition:
corsika-tape.h:128
cerenkov_data::x
float x
Definition:
corsika-tape.h:260
event_header::e_min
float e_min
Definition:
corsika-tape.h:119
sub_block::pb
particle_sub_block pb
Definition:
corsika-tape.h:280
particle_data::py
float py
Definition:
corsika-tape.h:244
event_end::chi2
float chi2
Definition:
corsika-tape.h:224
RWORD
#define RWORD
Definition:
corsika-tape.h:15
MAX_OBSERVATION_LEVELS
#define MAX_OBSERVATION_LEVELS
Definition:
corsika-tape.h:24
run_header::observation_levels
float observation_levels
Definition:
corsika-tape.h:36
event_header::cutoff_photons
float cutoff_photons
Definition:
corsika-tape.h:125
event_header::date_start
float date_start
Definition:
corsika-tape.h:112
particle_data::px
float px
Definition:
corsika-tape.h:243
sub_block::eh
event_header eh
Definition:
corsika-tape.h:278
particle_data::y
float y
Definition:
corsika-tape.h:247
file
const string file
Definition:
testReadStream.cc:38
event_header::bx
float bx
Definition:
corsika-tape.h:134
run_end::run_number
float run_number
Definition:
corsika-tape.h:77
block
Definition:
corsika-tape.h:284
run_header::cutoff_muons
float cutoff_muons
Definition:
corsika-tape.h:47
run_header::cutoff_electrons
float cutoff_electrons
Definition:
corsika-tape.h:48
event_header::cerenkov_number_y
float cerenkov_number_y
Definition:
corsika-tape.h:153
event_header::nflain
float nflain
Definition:
corsika-tape.h:127
event_header::flag_sybill
float flag_sybill
Definition:
corsika-tape.h:170
event_header::flag_venus
float flag_venus
Definition:
corsika-tape.h:140
particle_data::x
float x
Definition:
corsika-tape.h:246
event_header::theta
float theta
Definition:
corsika-tape.h:101
run_header
Definition:
corsika-tape.h:30
corsika_fopen
corsika_file * corsika_fopen(char *name, char *mode)
Definition:
corsika-tape.c:7
event_header::nflpi0
float nflpi0
Definition:
corsika-tape.h:129
corsika_file::bl
block bl
Definition:
corsika-tape.h:298
event_header::particle_id
float particle_id
Definition:
corsika-tape.h:93
event_header::seed
float seed
Definition:
corsika-tape.h:106
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
event_end::electrons
float electrons
Definition:
corsika-tape.h:196
event_header::nflche
float nflche
Definition:
corsika-tape.h:131
run_header::e_max
float e_max
Definition:
corsika-tape.h:41
event_header::px
float px
Definition:
corsika-tape.h:98
event_header::cutoff_hadrons
float cutoff_hadrons
Definition:
corsika-tape.h:122
event_header::cerenkov_bandwidth_max
float cerenkov_bandwidth_max
Definition:
corsika-tape.h:165
particle
struct particle_info particle[80]
run_header::version
float version
Definition:
corsika-tape.h:34
event_header
Definition:
corsika-tape.h:89
BLOCK_PAD_E
#define BLOCK_PAD_E
Definition:
corsika-tape.h:21
event_header::flag_egs4
float flag_egs4
Definition:
corsika-tape.h:136
event_header::flag_neutrino
float flag_neutrino
Definition:
corsika-tape.h:142
run_header::const_nflain
float const_nflain
Definition:
corsika-tape.h:62
run_end::events_processed
float events_processed
Definition:
corsika-tape.h:78
run_header::const_nflpi
float const_nflpi
Definition:
corsika-tape.h:64
event_header::theta_max
float theta_max
Definition:
corsika-tape.h:147
event_header::energy
float energy
Definition:
corsika-tape.h:94
BLOCK_PAD_B
#define BLOCK_PAD_B
Definition:
corsika-tape.h:18
event_header::cerenkov_detector_x
float cerenkov_detector_x
Definition:
corsika-tape.h:156
event_header::cerenkov_grid_y
float cerenkov_grid_y
Definition:
corsika-tape.h:155
event_header::flag_computer
float flag_computer
Definition:
corsika-tape.h:144
event_header::nflpif
float nflpif
Definition:
corsika-tape.h:130
event_header::starting_altitude
float starting_altitude
Definition:
corsika-tape.h:95
cerenkov_data::photons_in_bunch
float photons_in_bunch
Definition:
corsika-tape.h:259
run_header::const_nflche
float const_nflche
Definition:
corsika-tape.h:65
corsika_get
sub_block * corsika_get(corsika_file *file)
Definition:
corsika-tape.c:29
event_header::cerenkov_number_x
float cerenkov_number_x
Definition:
corsika-tape.h:152
event_header::flag_qgsjet
float flag_qgsjet
Definition:
corsika-tape.h:172
corsika_file::sub_index
int sub_index
Definition:
corsika-tape.h:299
event_header::flag_dpmjet
float flag_dpmjet
Definition:
corsika-tape.h:174
event_header::phi_max
float phi_max
Definition:
corsika-tape.h:149
sub_block::cb
cerenkov_sub_block cb
Definition:
corsika-tape.h:281
cerenkov_data::v
float v
Definition:
corsika-tape.h:263
event_end::event_number
float event_number
Definition:
corsika-tape.h:193
event_end
Definition:
corsika-tape.h:191
corsika_file
Definition:
corsika-tape.h:296
particle_data::torz
float torz
Definition:
corsika-tape.h:248
event_header::cutoff_electrons
float cutoff_electrons
Definition:
corsika-tape.h:124
, generated on Tue Sep 26 2023.