source: trunk/MagicSoft/Simulation/Detector/Camera/creadparam.h@ 10146

Last change on this file since 10146 was 6560, checked in by moralejo, 20 years ago
Set as default option that of writing all event headers to output file, not only those of the triggered events. To disable it, set the input card flag "no_write_all_event_headers". Changed such that output images for events below the minimum number of photoelectrons nphe2NSB required to simulate the noise (NSB & electronic) will be empty. This will avoid the problem of these events being processed, without any noise, later in the chain. Although those images are not in the output, one can still check in the headers (MMcTrig) how many such events with less than nphe2NSB photoelectrons would have triggered.
File size: 11.6 KB
Line 
1//=//////////////////////////////////////////////////////////////////////
2//=
3//= creadparam
4//=
5//= @file creadparam.h
6//= @desc Header file
7//= @author J C Gonzalez
8//= @email gonzalez@mppmu.mpg.de
9//= @date Thu May 7 16:24:22 1998
10//=
11//=----------------------------------------------------------------------
12//=
13//= Created: Thu May 7 16:24:22 1998
14//= Author: Jose Carlos Gonzalez
15//= Purpose: Program for reflector simulation
16//= Notes: See files README for details
17//=
18//=----------------------------------------------------------------------
19//=
20//= $RCSfile: creadparam.h,v $
21//= $Revision: 1.33 $
22//= $Author: moralejo $
23//= $Date: 2005-02-17 09:15:28 $
24//=
25//=//////////////////////////////////////////////////////////////////////
26
27#ifndef _creadparam_
28#define _creadparam_
29
30#ifndef _this_
31#define _this_ creadparam
32#endif
33
34//!@}
35
36//!@subsection Include files.
37
38//!@{
39
40#include <iostream>
41#include <fstream>
42#include <string>
43
44#include <stdlib.h>
45#include <stdio.h>
46#include <math.h>
47#include <float.h>
48
49#include "jcmacros.h"
50#include "jcdebug.h"
51
52#include "camera-v.h"
53
54#include "MTriggerDefine.h"
55#include "MFadcDefine.h"
56#include "Mdefine.h"
57
58//!@}
59
60//!@subsection Macro-definitions, and constants.
61
62//!@{
63
64// now we define the list PM_ITEM_LIST of possible items in
65// the parameters file. note that they are functions of
66// T(x). we will change T(x) to be the real item or the
67// string of this item when needed
68
69#define PM_ITEM_LIST /* LIST OF ITEMS IN THE PARAMETERS FILE */ \
70T(input_file), /* input file */ \
71T(starfield_file), /* starfield file */ \
72T(starfield_center),/* center of thestarfield FOV */ \
73T(data_file), /* data file */ \
74T(root_file), /* ROOT file */ \
75T(ct_num), /* number of CT, which is number of reflector files */ \
76T(ct_geom), /* class with the geometry of the CT camera */ \
77T(qe_file), /* file with the characteristics of the CT */ \
78T(elec_noise_off), /* de-activates ElecNoise for FADC and Trigger channels */\
79T(fadc_pedestal), /* Pedestal value for FADC */\
80T(fadc_noise), /* ElecNoise for FADC */\
81T(trig_noise), /* ElecNoise for trigger */\
82T(sfr_on), /* starfield rotation */ \
83T(nsb_on), /* activates NSB simulation */ \
84T(nsb_off), /* de-activates NSB simulation */ \
85T(nsb_mean), /* mean value of NSB contribution per pixel */ \
86T(nsb_directory), /* database for the NSB */ \
87T(nsb_dir_outer), /* database for the NSB */ \
88T(pixel_thres), /* value of q0 for trigger for a given pixel */ \
89T(secure_disc), /* Ac value to rise discrimnator threshold */ \
90T(seeds), /* seeds for random number generation */ \
91T(data_from_stdin), /* to read data from STDIN */ \
92T(skip), /* skip pathological showers */ \
93T(no_write_all_event_headers),/* do NOT write to output file all event
94 event headers (only those with trigger!)*/ \
95T(nowrite_McEvt), /* nowrite to file .root McEvt infos */ \
96T(write_McTrig), /* write to file .root McTrig infos */ \
97T(write_McFadc), /* write to file .root McFadc infos */ \
98T(nowrite_RawEvt), /* write to file .root RawData infos */ \
99T(select_energy), /* energy range to read: only for .phe files */ \
100T(trigger_scan), /* show signal in the diskriminator */ \
101T(fadc_scan), /* show fadc signal */ \
102T(trigger_loop), /* make loop over trigger conditions */ \
103T(trigger_prop), /* values of trigger properties */ \
104T(fadc_prop), /* values of fadc properties */ \
105T(fadc_outer), /* values of fadc properties for outer pixels */ \
106T(fadc_GHz), /* FADC sampling frequency (GHz) */ \
107T(trigger_single), /* trigger conditions */ \
108T(Trigger_Loop_Output_Only_Specialists), /* special steercard */ \
109T(high_to_low), /* High to Low gain ratio */ \
110T(sigma_xy_cm_spot), /* Additional gaussian spread of mirror spot on camera */ \
111T(sigma_x_cm_spot), /* Additional gaussian spread of mirror in x axis spot on camera */ \
112T(sigma_y_cm_spot), /* Additional gaussian spread of mirror in y axis spot on camera */ \
113T(misspoint_deg), /* Additional misspointing of Telescope direction*/ \
114T(trigger_delay), /* Delay in ns between beginning of FADC
115 time window and the trigger instant.*/ \
116T(telescope_location_cm), /* Telescope coordinates in Corsika system */ \
117T(mirror_fraction), /* Fraction of dish mirror really operative */ \
118T(calibration_run), /* option to produce a calibration file */ \
119T(gain_fluctuations_off), /* Switches off PMT gain fluctuations for signal */ \
120T(noise_gain_fluctuations_off), /* Switches off PMT gain fluctuations for NSB noise */ \
121T(pmt_jitter_ns), /* Sets the time jitter of each phe in the PMT */ \
122T(end_file) /* end of the parameters file */
123
124#define T(x) x // define T() as the name as it is
125
126enum ITEM_TYPE {
127 PM_ITEM_LIST
128};
129
130#undef T
131
132#define T(x) #x // define T() as the string of x
133
134const char *const ITEM_NAMES[] = {
135 PM_ITEM_LIST
136};
137
138#undef T
139
140#define LINE_MAX_LENGTH 400
141#define ITEM_MAX_LENGTH 40
142#define PATH_MAX_LENGTH 256
143
144//!@}
145
146//!@subsection Prototypes of functions.
147
148//!@{
149
150//++
151// prototypes
152//--
153
154void readparam(char * filename);
155char *get_input_filename(int i);
156char *get_starfield_filename(void);
157void get_starfield_center(int *rh,int *rm,int *rs,int *dd,int *dm,int *ds);
158int get_starfield_rotate(void);
159char *get_data_filename(void);
160char *get_root_filename(void);
161char *get_loop_filename(void);
162int get_ct_number(void);
163int get_ct_geometry(int ict);
164char *get_qe_filename(int ict=0);
165char *get_nsb_directory(void);
166char *get_nsb_directory_outer(void);
167int add_elec_noise(float *fadcinner, float* fadcouter,
168 float *digi, float *trig);
169int get_nsb(float *n, int *m);
170long int get_seeds(int n);
171void get_skip_showers( int *s );
172int get_nskip_showers( void );
173int get_data_from_stdin(void);
174int get_write_all_event_headers(void);
175int get_write_McEvt(void);
176int get_write_McTrig(void);
177int get_write_McFadc(void);
178int get_write_RawEvt(void);
179int get_select_energy(float *le, float *ue);
180int get_FADC_Scan(void);
181int get_Trigger_Scan(void);
182void get_Trigger_properties(float *gl, float *ot, float *ra, float *rf);
183void get_FADC_properties(int *shape, float *ra, float *rf,int *shapeo, float *rao, float *rfo,
184 float *fadc_spns, int *fadc_slices);
185float get_FADC_pedestal(void);
186int get_Trigger_Loop(float *lt, float *ut, float *st, int *lm, int *um, int *lg, int *ug);
187void get_Trigger_Single(float **t, int *m, int *g);
188void get_threshold(float *t);
189void get_secure_threhold(float *ac, float *disc);
190int get_indi_thres_pixel(void);
191float get_High_to_Low(void);
192float get_sigma_xy_cm_spot(float *x, float *y);
193int get_misspointing(float *x, float *y);
194float get_trig_delay(void);
195float get_telescope_location_cm(int j, int icoor);
196float get_mirror_fraction(int j);
197float get_pmt_jitter_ns();
198
199int is_calibration_run();
200void get_calibration_properties(float *lambda, float *sigma_lambda, float *phot_per_pix,
201 float *sigma_time, int *nevents, int *selected_pixel);
202int apply_gain_fluctuations();
203int apply_noise_gain_fluctuations();
204//!@}
205
206//!@{
207
208#endif // ! _creadparam_
209
210//!@}
211
212//=------------------------------------------------------------
213//!@subsection Log of this file.
214
215//!@{
216
217/*
218 * $Log: not supported by cvs2svn $
219 * Revision 1.32 2005/02/10 19:28:10 moralejo
220 *
221 * Substituted input card option "write_all_events" by
222 * "write_all_event_headers". If set, this will make camera to write out
223 * the event headers of all the processed events, no matter whether they
224 * have triggered or not.
225 *
226 * Revision 1.31 2004/12/15 01:56:39 MAGIC
227 *
228 * Added input card option pmt_jitter_ns to simulate the time jitter of
229 * PMTs. The input parameter is the sigma of a gaussian, which by
230 * default is sigma=0.25 ns. This jitter is applied to each phe-
231 * independently. We have not applied this to the NSB noise, since the
232 * arrival time of NSB photons is random and nothing would change.
233 *
234 * Revision 1.30 2004/11/17 11:36:07 moralejo
235 * *** empty log message ***
236 *
237 * Revision 1.29 2004/10/26 13:58:59 moralejo
238 *
239 * Added option gain_fluctuations_off
240 *
241 * Revision 1.28 2004/10/13 17:05:05 moralejo
242 * *** empty log message ***
243 *
244 * Revision 1.27 2004/10/12 13:32:02 moralejo
245 * *** empty log message ***
246 *
247 * Revision 1.26 2004/09/17 14:48:21 moralejo
248 *
249 * Changes to adapt headers to c++ style.
250 *
251 * Revision 1.25 2004/09/16 15:27:08 moralejo
252 * Updated in CVS after some time (see changes below)
253 *
254 *
255 * Revision 1.23 2004/01/30 09:55:33 blanch
256 * New "trigger_delay" and "sigma_xy_cm_spot" commands.
257 *
258 * Revision 1.22 2003/10/26 19:51:30 blanch
259 * Header file for creadparam.cxx version 1.25
260 *
261 * Revision 1.21 2003/10/17 19:40:47 blanch
262 * *** empty log message ***
263 *
264 * Revision 1.20 2003/09/23 17:38:59 blanch
265 * *** empty log message ***
266 *
267 * Revision 1.19 2003/09/23 16:52:43 blanch
268 * Header file for creadparam.cxx 1.22
269 *
270 * Revision 1.18 2003/09/15 10:23:31 blanch
271 * Hedaer file for creadparam.cxx 1.21
272 *
273 * Revision 1.17 2003/07/17 18:05:13 blanch
274 * Header file for creadparam.cxx 1.20
275 *
276 * Revision 1.16 2003/01/14 13:37:32 blanch
277 * Option to set a dc value to rise the discriminator threshold has been added.
278 *
279 * Revision 1.15 2002/07/16 16:20:59 blanch
280 * Modifications done for the camera.cxx version, where a first implementation
281 * of the Star Field Rotation has been introduced.
282 *
283 * Revision 1.14 2002/03/15 15:17:57 blanch
284 * Header file for creadparam.cxx v 1.16
285 *
286 * Revision 1.13 2002/03/04 17:20:50 blanch
287 * Header file for creadparam.cxx 1.15
288 *
289 * Revision 1.12 2002/02/28 15:08:01 blanch
290 * Header file for creadparam.cxx 1.14.
291 *
292 * Revision 1.11 2002/01/18 17:45:37 blanch
293 * Header file for creadparam.cxx 1.13.
294 *
295 * Revision 1.10 2001/11/13 17:06:01 blanch
296 * Header file for creadparam.cxx version 1.12
297 *
298 * Revision 1.9 2001/07/19 09:29:02 blanch
299 * Header file for creadparam.cxx vrsion 1.10
300 *
301 * Revision 1.8 2001/03/05 10:44:44 blanch
302 * Header file of creadparam.cxx version 1.9
303 *
304 * Revision 1.7 2001/02/23 10:56:10 magicsol
305 * Header file for creadparam.cxx version 1.8
306 *
307 * Revision 1.6 2001/01/15 12:38:00 magicsol
308 * *** empty log message ***
309 *
310 * Revision 1.5 2000/07/04 14:13:34 MagicSol
311 * *** empty log message ***
312 *
313 * Revision 1.4 2000/05/11 14:23:28 blanch
314 * Thi version owns to the version 1.4 of creadparam.cxx.
315 *
316 * Revision 1.3 2000/03/24 18:15:46 blanch
317 * *** empty log message ***
318 *
319 * Revision 1.2 2000/02/18 17:50:07 petry
320 * This version belongs to camera.cxx 1.5.
321 * It version has been put in the repository in order to be
322 * able to share the further development with others.
323 *
324 * If you need something working, wait or take an earlier one.
325 * See file README
326 *
327 * Revision 1.1.1.1 1999/11/05 11:59:34 harald
328 * This the starting point for CVS controlled further developments of the
329 * camera program. The program was originally written by Jose Carlos.
330 * But here you can find a "rootified" version to the program. This means
331 * that there is no hbook stuff in it now. Also the output of the
332 * program changed to the MagicRawDataFormat.
333 *
334 * The "rootification" was done by Dirk Petry and Harald Kornmayer.
335 *
336 * Revision 1.2 1999/10/22 15:01:29 petry
337 * version sent to H.K. and N.M. on Fri Oct 22 1999
338 *
339 * Revision 1.1.1.1 1999/10/21 16:35:11 petry
340 * first synthesised version
341 *
342 * Revision 1.7 1999/03/15 14:59:09 gonzalez
343 * camera-1_1
344 *
345 * Revision 1.6 1999/03/02 09:56:13 gonzalez
346 * *** empty log message ***
347 *
348 * Revision 1.5 1999/01/14 17:32:43 gonzalez
349 * Added to camera the STDIN input option (data_from_input)
350 *
351 */
352
353//!@}
354//=EOF
Note: See TracBrowser for help on using the repository browser.