Detector effects

There are a number of detector effects which can be simulated with a few user commands. It is important to note that these effects are applied to the reconstructed hits, as these hits are meant to simulated the digitization+reconstruction process that happens in the detector. If for any reason you want to see a detector effect on the hits, you should use the GmRecHitBuilder1to1 reconstructed hit builder.

Energy resolution

If you use one of the GAMOS sensitive detectors or you inherit your own one from GmVSD you can smear automatically the energy of the hits for each detector type with a gaussian given by the value of the parameter

/gamos/setParam SD:EnergyResol:SDTYPE VALUE

where SDTYPE is the type of the sensitive detector.

A more complicated energy resolution can be implemented, corresponding to a more realistic calorimeter resolution. Apart from the constant term described above, energy independent:

sigma/E = K

which may be due to calibration errors, non-uniformities and non-linearities in photomultipliers, proportional counters, ADC's, etc, two other terms can be defined.

The first one is a term where the relative gaussian error is inversely proportional to the square root of the energy, a term that can be attributed to the statistical fluctuations in the energy loss and multiple scattering during the shower development:

sigma/E = K * / sqrt(E)

where K can be set with the parameter

/gamos/setParam SD:EnergyResolFluct:SDTYPE VALUE

where SDTYPE is the type of the sensitive detector.

In the second term the relative gaussian error is inversely proportional to the energy, and it can be attributed to instrumental effects, being rather energy-independent (noise, pedestal):

sigma/E = K * / E

where K can be set with the parameter

/gamos/setParam SD:EnergyResolInstr:SDTYPE VALUE

where SDTYPE is the type of the sensitive detector.

If you have an energy function that is different, you may implement it by creating a new reconstructed hit builder class inheriting from GmVRecHitBuilder and overwrite the method:

  
	virtual void SmearRecHitsEnergy();
      

Time resolution

The time of the hits can also be smeared for each detector type with a gaussian given by the value of the parameter

/gamos/setParam SD:TimeResol:SDTYPE VALUE[1]

If you have a time resolution function that is different, you may implement it by creating a new reconstructed hit builder class inheriting from GmVRecHitBuilder and overwrite the method:

  
	virtual void SmearRecHitsTime();
      

Detector measuring time

A detector has a finite time resolution, so that it is not able to distinguish hits that come from different events when their time is close.

You can define the value of the measuring time for each detector type with the parameter

/gamos/setParam SD:MeasuringTime:SDTYPE VALUE

where SDTYPE is the type of the sensitive detector.

that takes a default value of 0 ns.

GAMOS offers several treatments of the masuring time, so that the user can choose the one that best fits the detector under study. To select the treatment type you have to use the parameter

/gamos/setParam SD:MeasuringType:SDTYPE VALUE

The following measurement types are currently available:

Detector dead time

A detector takes a finite time to transform an energy deposit into an electronic signal, and during that time it is dead and cannot account for any other energy deposition. The dead time is considered to start after the hit time plus the measuring time; in the case that you set the type of measuring to Interval, the dead time starts also at the end of the measuring time, but in this case it is the current triggering time plus hte measuring time.

GAMOS holds a list of the dead sensitive detectors, i.e. those that have produced a hit in a time prior than the current time minus the dead time. You can define the value of the dead time for each detector type with the parameter

/gamos/setParam SD:DeadTime:SDTYPE VALUE

that takes a default value of 0 ns.

The dead time affects by default all detectors in a block. This means that if a detector is dead it is assumed that all detectors that are placed in the same ancestor are also dead (the usual behaviour for example in a PET or SPECT detector, where all crystals in a block share the readout). You may change the number of ancestors that become dead by setting the paramter

/gamos/setParam SD:DeadTimeDUListByBlock:NAncestors:SDTYPE N_ANCESTORS

which as just mention takes a default value equal to the value of the parameter SD:DetUnitID:NAncestors:SDTYPE. Take into account that the number of ancestors include the detector itself, so that you can tell GAMOS to consider dead only the crystal itself by setting this parameter to 1.

A warning is due here: the hits that belong to the same block are identified by the detector unit ID, so if you are using a bigger number of ancestors you should take care that the hit detector unit ID takes into account a number of ancestors as least as big as the number used here (see section on Hits).

You also have the option to define your detector as paralizable (default) or non-paralizable by setting the parameter

/gamos/setParam SD:DeadTimeParalizable:SDTYPE TRUE/FALSE

In a non-paralizable detector, an event happening during the dead time since the previous event is simply lost, while in a paralizable detector, an event happening during the dead time since the previous one will not just be missed, but will restart the dead time.

Minimum hit energy

You may set a threshold to the minimum hit energy, so that hits with smaller energy will not be used (they may be used in the next event if more energy is added to them and they are inside the time window):

/gamos/setParam SD:Hit:MinimumEnergy:SDTYPE VALUE

To simulate Constant Fraction Discriminator (CFD) thresholds, you may also set a minimum energy and a behaviour to treat this threshold. First to set the parameter:

/gamos/setParam SD:RecHit:MinimumEnergy:SDTYPE VALUE

Then you have to select among the two possible behaviours:

/gamos/setParam SD:RecHit:MinimumEnergyBehaviour:SDTYPE BEHAV_TYPE

where BEHAV_TYPE can be:

Remember that there is no default behaviour, so if no behaviour is selected, the minimum energy threshold is not taken into account.

Notes

[1]

The time smeared is theTimeMin