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" */
35 
37  RWORD observation_height[MAX_OBSERVATION_LEVELS]; /* in cm */
38 
40  RWORD e_min; /* in GeV */
41  RWORD e_max; /* in GeV */
42 
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];
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" */
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" */
92 
95  RWORD starting_altitude; /* in g/cm^2 */
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 
105  struct {
109  } seeds[10];
110 
114 
116  RWORD observation_height[MAX_OBSERVATION_LEVELS]; /* in cm */
117 
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 
133 
134  RWORD bx; /* magnetic field in mu T */
135  RWORD bz; /* magnetic field in mu T */
138 
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 
154  RWORD cerenkov_grid_x; /* in cm */
155  RWORD cerenkov_grid_y; /* in cm */
159 
162 
167  RWORD core_x[20]; /* in cm */
168  RWORD core_y[20]; /* in cm */
169 
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" */
194 
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];
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 {
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 {
257 
258 typedef struct {
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 */
266 #ifdef THINNING
267  RWORD weight;
268 #endif
269 } cerenkov_data;
270 
271 typedef struct {
274 
275 typedef union {
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
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;
300 } corsika_file;
301 
302 corsika_file *corsika_fopen(char *name, char *mode);
304 
305 #endif
float flag_horizontal
Definition: corsika-tape.h:143
float flag_extra_muon_information
Definition: corsika-tape.h:161
float flag_venus_cross
Definition: corsika-tape.h:176
float uses_of_event
Definition: corsika-tape.h:166
float particles
Definition: corsika-tape.h:199
float e_min
Definition: corsika-tape.h:40
float cutoff_hadrons
Definition: corsika-tape.h:46
float spectral_slope
Definition: corsika-tape.h:39
float run_number
Definition: corsika-tape.h:111
float const_nfldif
Definition: corsika-tape.h:63
float flag_nkg
Definition: corsika-tape.h:44
float photons
Definition: corsika-tape.h:195
float initial_calls_div
Definition: corsika-tape.h:108
float spectral_slope
Definition: corsika-tape.h:118
float flag_dpmjet_cross
Definition: corsika-tape.h:175
float hadrons
Definition: corsika-tape.h:197
float flag_gheisha
Definition: corsika-tape.h:139
float run_number
Definition: corsika-tape.h:32
float multiple_scatternig_step
Definition: corsika-tape.h:163
float first_target
Definition: corsika-tape.h:96
float nkg_radial_range
Definition: corsika-tape.h:179
run_header rh
Definition: corsika-tape.h:276
float cerenkov_output_flag
Definition: corsika-tape.h:158
float cutoff_photons
Definition: corsika-tape.h:49
float event_number
Definition: corsika-tape.h:91
float cerenkov_grid_x
Definition: corsika-tape.h:154
event_end ee
Definition: corsika-tape.h:279
run_end re
Definition: corsika-tape.h:277
float cerenkov_detector_y
Definition: corsika-tape.h:157
float observation_levels
Definition: corsika-tape.h:115
float flag_cerenkov
Definition: corsika-tape.h:141
float cerenkov_bunch
Definition: corsika-tape.h:151
float random_sequences
Definition: corsika-tape.h:104
float flag_qgsjet_cross
Definition: corsika-tape.h:173
float initial_calls_mod
Definition: corsika-tape.h:107
float flag_muon_multiple
Definition: corsika-tape.h:177
float date_start
Definition: corsika-tape.h:33
float cutoff_muons
Definition: corsika-tape.h:123
float production_height
Definition: corsika-tape.h:265
float muons
Definition: corsika-tape.h:198
float array_rotation
Definition: corsika-tape.h:160
float cerenkov_bandwidth_min
Definition: corsika-tape.h:164
float flag_sybill_cross
Definition: corsika-tape.h:171
float flag_egs4
Definition: corsika-tape.h:43
particle_sub_block pb
Definition: corsika-tape.h:280
float chi2
Definition: corsika-tape.h:224
#define RWORD
Definition: corsika-tape.h:15
#define MAX_OBSERVATION_LEVELS
Definition: corsika-tape.h:24
float observation_levels
Definition: corsika-tape.h:36
float cutoff_photons
Definition: corsika-tape.h:125
float date_start
Definition: corsika-tape.h:112
event_header eh
Definition: corsika-tape.h:278
const string file
float run_number
Definition: corsika-tape.h:77
float cutoff_muons
Definition: corsika-tape.h:47
float cutoff_electrons
Definition: corsika-tape.h:48
float cerenkov_number_y
Definition: corsika-tape.h:153
float flag_sybill
Definition: corsika-tape.h:170
float flag_venus
Definition: corsika-tape.h:140
corsika_file * corsika_fopen(char *name, char *mode)
Definition: corsika-tape.c:7
float particle_id
Definition: corsika-tape.h:93
#define SUB_BLOCKS_IN_BLOCK
Definition: corsika-tape.h:25
#define PARTICLES_IN_SUB_BLOCK
Definition: corsika-tape.h:26
float electrons
Definition: corsika-tape.h:196
float e_max
Definition: corsika-tape.h:41
float cutoff_hadrons
Definition: corsika-tape.h:122
float cerenkov_bandwidth_max
Definition: corsika-tape.h:165
struct particle_info particle[80]
float version
Definition: corsika-tape.h:34
#define BLOCK_PAD_E
Definition: corsika-tape.h:21
float flag_neutrino
Definition: corsika-tape.h:142
float const_nflain
Definition: corsika-tape.h:62
float events_processed
Definition: corsika-tape.h:78
float const_nflpi
Definition: corsika-tape.h:64
#define BLOCK_PAD_B
Definition: corsika-tape.h:18
float cerenkov_detector_x
Definition: corsika-tape.h:156
float cerenkov_grid_y
Definition: corsika-tape.h:155
float flag_computer
Definition: corsika-tape.h:144
float starting_altitude
Definition: corsika-tape.h:95
float photons_in_bunch
Definition: corsika-tape.h:259
float const_nflche
Definition: corsika-tape.h:65
sub_block * corsika_get(corsika_file *file)
Definition: corsika-tape.c:29
float cerenkov_number_x
Definition: corsika-tape.h:152
float flag_qgsjet
Definition: corsika-tape.h:172
float flag_dpmjet
Definition: corsika-tape.h:174
cerenkov_sub_block cb
Definition: corsika-tape.h:281
float event_number
Definition: corsika-tape.h:193
float cutoff_electrons
Definition: corsika-tape.h:124

, generated on Tue Sep 26 2023.