The instructions of the signal section fall in 5 categories: - setting various parameters - computing a signal - processing the signal - service instructions - debugging instructions ------------------------------------------------------------------------ Setting parameters: ------------------------------------------------------------------------ AREA Sets the size of the plotting area AVALANCHE Sets the avalanche model FOURIER Number of Fourier terms (periodic cells) GRID Grid density for PLOT-FIELD INTEGRATION-PARAMETERS Drift line integration parameters OPTIONS Various printing and plotting options RESOLUTION Sets the time window of the signals SELECT Establishes the list of sense wires TRACK Sets the track for which a signal is generated ------------------------------------------------------------------------ Computing a signal: ------------------------------------------------------------------------ SIGNAL Simulates a signal ------------------------------------------------------------------------ Processing a signal: ------------------------------------------------------------------------ ADD-NOISE Adds noise to the signals CONVOLUTE-SIGNALS Convolutes signals with a transfer function PLOT-SIGNALS Plots the signals WRITE-SIGNALS Stores a signal in a dataset Call threshold_crossing Returns the threshold crossing times ------------------------------------------------------------------------ Service instructions: ------------------------------------------------------------------------ PREPARE-TRACK Prepare a track for interpolation GET-TRACK Retrieve a a prepared track from a dataset WRITE-TRACK Save a prepared track in a dataset ------------------------------------------------------------------------ Debugging instructions: ------------------------------------------------------------------------ CHECK Verify proper functioning PLOT-FIELD Plots the signal induction field Note: There are procedures that perform signal related tasks: GET_SIGNAL, GET_RAW_SIGNAL, STORE_SIGNAL, THRESHOLD_CROSSING, WEIGHTING_FIELD, WEIGHTING_FIELD_3.
This statement is meant to add noise to the signals, but it can be used to add other things to the signal too. The noise function is evaluated separately for each wire, but the same noise is added to the direct and cross-induced parts of the signals. Format: ADD-NOISE NOISE-FUNCTION function Example: ADD-NOISE NOISE-FUNCTION -0.01*RND_POISSON(30) In this example, each of the sampling points of the signal has a Poisson distributed number with mean 30, multiplied by -0.01, added to it.
Additional Information on:
Changes the area in which electrons and ions are allowed to drift. This is also the part of the chamber that is plotted. Formats: See &FIELD -> AREA
Chooses the type of avalanche to be used in the simulation. No default type of avalanche is set - you must therefore issue an AVALANCHE command prior to any signal calculation. Format: AVALANCHE {EXPONENTIAL mean | ... FIXED factor | ... FIXED-TOWNSEND | ... GAUSSIAN mean relative_sigma | ... POLYA-FIXED [mean [theta]] | ... POLYA-TOWNSEND [theta] | ... TOWNSEND} Examples: aval exp 1e4 aval townsend
Additional Information on:
A debugging instruction, checking signal related routines. Format: CHECK [AVALANCHE] ... [DIFFUSION] ... [CLUSTER] ... [RANGE min max] ... [FROM x y] ... [N n] ... [BINS nbin] Example: CH AVALANCHE FROM 5 6 BINS 50
This statement enables the user to enter an electronics transfer function with which all computed signals are convoluted. One may convolute the signals by as many transfer functions as desired. The transfer function is only evaluated once for all signals. The transfer function should therefore not depend on random number generators. Format: CONVOLUTE-SIGNALS ... TRANSFER-FUNCTION { function | transfer VS time } ... [ADD-ON-FUNCTION add] ... RANGE tmin tmax Example: convolute-signals ... transfer-function 250*(6*t/0.025)**6*exp(-6*t/0.025) ... range 0 2000 (This example, taken from an Atlas muon tube study, simulates the response of a pre-amplifier.)
Additional Information on:
In periodic cells, the accuracy of the signal calculation depends amongst others on the number of periods taken into account. A high number of periods only leads to improved precision though if there are equipotential planes in the cell. The number of terms must be an integral power of 2 [default: 1 term]. Format: FOURIER terms Example: FOURIER 16 (Note that this setting may require a fantastic amount of disk I/O !)
Retrieves a prepared track from a dataset written by WRITE-TRACK, see PREPARE-TRACK for details about prepared tracks. Format: GET-TRACK dsname [member] Example: GET-TR lib (This call will retrieve the first prepared track in the dataset LIB.DAT, which may contain members of different type as well.)
Additional Information on:
Sets the density of sampling points on the grid. This number is usually of the order of 25 for vector plots like those made in response to the PLOT-FIELD instruction. The second arguments may be omitted in which case the first value will be used for both the x (or r) and the y (or phi) spacing. Format: GRID number_of_steps_in_x [number_of_steps_in_y] Example: GRID 25 15
See the same command in the &DRIFT section.
The local options of the drift section are available here as well. In addition there are the following: Format: OPTIONS [CLUSTER-PRINT|NOCLUSTER-PRINT] ... [CLUSTER-PLOT|NOCLUSTER-PLOT] ... Example: OPT NOCLUSTER-PRINT
Additional Information on:
Plots quantities related to signal computations. The main quantities of interest in this context are the so-called weighting field (see functions -> weighting_field) and the current induced in an electrode by a charge released at some point (see functions -> charges). The weighting field and the induced charge are plotted seperately for each electrode that is read out. You can however limit the set of plots to a subset of electrodes. There are related instructions in the field and drift sections. Format: PLOT-FIELD [CONTOUR [f1] [RANGE {cmin cmax | AUTOMATIC}] ... [N n] ... [LABELS | NOLABELS]] ... [GRAPH [f2] [ON f_curve] ... [N n]] ... [SCALE min max] ... [NOPRINT | PRINT] ... [HISTOGRAM [f3] [RANGE {hmin hmax | AUTOMATIC}] ... [BINS nbin]] ... [SURFACE [f4] [ANGLES phi theta]] ... [VECTOR [f5 f6]] ... [SENSE-WIRE {ALL | sense }] ... [WIRE wire ] If you don't manage to fit all this on a single line, remember that lines that end on an ellipsis are continued on the next. Examples: plot-field hist status_e vector surf cont plot-field contour time_ion range 1000 3000 (The first example makes most of the plots using default functions and ranges - useful as a first call. The result will be an histogram that shows where electrons end up, a vector plot of the weighting field and a contour plot of the currents induced by single electrons released from the various locations. The second example makes a contour plot of the ion drift time.)
Additional Information on:
Plots the signals. The graphs contain either one or two curves, depending on whether cross induced currents have been computed or not. Format: PLOT-SIGNALS [TIME-WINDOW {AUTOMATIC | tmin tmax}] ... [RANGE {AUTOMATIC | smin smax}] ... [WIRES {ALL | ACTIVE | numbers, codes}] ... [CROSS-INDUCED-SIGNALS | NOCROSS-INDUCED-SIGNALS] ... [DIRECT-SIGNALS | NODIRECT-SIGNALS] Example: pl-sig time 2.7 3.1 wire 1 Plots the signal on wire 1 in the time window [2.7,3.1] microsec.
Additional Information on:
Calculates and stores the relevant drift line information for regularly spaced points on the track. This data can optionally be used in the actual signal simulation so as to save CPU time. The difference in speed can be dramatic if the simulation is repeated many times. The loss in accuracy is usually negligible. The track thus prepared, can be saved in a dataset from where it can be retrieved in subsequent runs. Format: PREPARE-TRACK ... [ATTACHMENT-COEFFICIENT | NOATTACHMENT-COEFFICIENT] ... [DIFFUSION-COEFFICIENT | NODIFFUSION-COEFFICIENT] ... [TOWNSEND-COEFFICIENT | NOTOWNSEND-COEFFICIENT] ... [LINES n] Example: PREP-TR (Accept all defaults, usually adequate.)
Additional Information on:
+---------------------+ | STATEMENT WITHDRAWN | +---------------------+ The REPEAT statement used to tell the SIGNAL command that you wish to repeat the calculation several times. Old format: New format: REPEAT 100 For i From 1 To 100 Do SIGNAL SIGNAL Enddo
Enters the size and granularity of time window in which you want to study the signals. By default, signals start at t=0 and are sampled every 0.01 microsec. The number of samples is by default MXLIST, usually 200 or 1000 depending on the compilation flags that were selected. Format: RESOLUTION t_start t_step [n_step] Example: RES 0.5 0.01 200 (This is a proper setting if your signals never start before 0.5 microsec and decay almost fully before 0.5+200*0.01=2.5 microsec.)
Selects the wires for which signals will be calculated. The signals for wires in a single group are summed. The argument consists of wire-codes and or wire-numbers. Put a pair of brackets around the codes and numbers of the wires that should go in one group. Format: SELECT wire_selection Example: SEL (1 S) 2 F (Put wire 1 together with all S wires in one group, make wire 2 a group of its own and do the same for each of the F wires.)
This instruction computes the signals on the electrodes in the chamber that result from the passage of a charged particle. These signals can then be further processed externally with electronics simulation programs. Inside Garfield, one can do basic signal manipulations such as convolution with transfer functions, adding noise, compute threshold crossings etc. See the CONVOLUTE, ADD-NOISE and WRITE-SIGNAL statements and the GET_SIGNAL and THRESHOLD_CROSSING procedure calls. Garfield distinguishes two kinds of signals: the "direct" and the "cross induced" signals. Direct signals arise from an avalanche on a read-out electrode. These signals are always computed. Cross induced (or indirect) signals are all other currents induced by moving charges anywhere in the chamber. These signals are only computed on request. For the moment, all signals in chambers where the field is interpolated in a field map are classified as cross induced. Before issuing a SIGNAL instruction, one has to take care of the following: 1. Set both the geometrical parameters and the clustering model of the track (see TRACK) 2. Set the avalanche model (see AVALANCHE) 3. Set the time window and time resolution (see RESOLUTION) Format: SIGNAL [ANGULAR-INTEGRATION-POINTS n_angle] ... [ANGULAR-SPREAD f_angle | NOANGULAR-SPREAD] ... [ATTACHMENT | NOATTACHMENT] ... [AVALANCHE | NOAVALANCHE] ... [AVERAGE-SIGNAL n_average | SAMPLE-SIGNAL] ... [DIFFUSION | NODIFFUSION] ... [ELECTRON-PULSE | NOELECTRON|PULSE] ... [INTERPOLATION-ORDER n_order] ... [ION-ANGLES n_ion] ... [ION-TAIL | DETAILED-ION-TAIL | NOION-TAIL] ... [ION-THRESHOLD thr] ... [RUNGE-KUTTA-DRIFT-LINES | MONTE-CARLO-DRIFT-LINES] ... [NEW | ADD] ... [NOCROSS-INDUCED | CROSS-INDUCED] ... [NOINTERPOLATE-TRACK | INTERPOLATE|TRACK] Example: SIGNAL CROSS-INDUCED
Additional Information on:
This instruction is withdrawn for debugging, use the ARRIVAL instruction from the drift section instead.
See the same command in the &DRIFT section. Please note that the default clustering model, a fixed number of single-electron deposits on each track, is not meaningful in the signal section. Examples: TRACK 0 1 2 0 2 4 EXP TRACK 0 1 2 0 2 4 HEED The track in both examples runs from (0,1,2) to (0,2,4). In the first example, the cluster spacing will be exponential and the cluster size will be derived from the data entered in the gas section. In the second example, Heed takes care of generating the clusters.
Writes the current set of signals to a dataset. Writing is done when the command is executed, not while the SIGNAL command runs as in versions of Garfield prior to 5.20. Format: WRITE-SIGNAL [DATASET dsname [member]] [REMARK remark] ... [FORMAT {SPICE|SCEPTRE}] ... [WRITE-IF condition] ... [UNITS units] If you don't manage to fit all this on a single line, remember that lines that end on an ellipsis are continued on the next. Example: WR-SIG 'disk$scratch:[pubzh.work.garfield]signal.dat'
Additional Information on:
Writes the prepared track, see PREPARE-TRACK, right away to a dataset. It can later on be retrieved by GET-TRACK. This statememt should be issued after the PREPARE-TRACK command. Format: WRITE-TRACK DATASET dsname [member] [REMARK remark] Example: WR-TR "../tracks/track.lib" 8mm
Additional Information on: