FT0: update Digitizer signal shape and trigger logic; FV0: update trigger logic in digitizer#15209
Conversation
|
REQUEST FOR PRODUCTION RELEASES: This will add The following labels are available |
|
Error while checking build/O2/fullCI_slc9 for 4725b5e at 2026-03-30 19:59: Full log here. |
andreasmolander
left a comment
There was a problem hiding this comment.
I am a bit late to the PR, but please consider these
| if (bc.hits.empty()) { | ||
| return; | ||
| } | ||
| // Initialize mapping channelID -> PM hash and PM side (A/C) using FT0 LUT |
There was a problem hiding this comment.
We have this logic copy-pasted in a lot of FIT code, please consider moving it to a standalone class that can be reused in other places. If not that, then please at least consider moving it to a initialization section of the Digitizer. Now it will run for each BC stored. The hashmaps can for example be members of the digitizer class, as the LUT, they don't change often. Although I would prefer having this somewhere else all together.
| is_C = n_hit_C > 0; | ||
| is_Central = summ_ampl_A + summ_ampl_C >= params.mtrg_central_trh; | ||
| is_SemiCentral = summ_ampl_A + summ_ampl_C >= params.mtrg_semicentral_trh; | ||
| is_Central = sum_PM_ampl_A_debug + sum_PM_ampl_C_debug >= 2 * params.mtrg_central_trh; |
There was a problem hiding this comment.
Fine for now, but we should also consider supporting the different trigger modes (A+C, A&C, A, C)
| float mNoiseVar = 0.1; // noise level | ||
| float mNoisePeriod = 1 / 0.9; // GHz low frequency noise period; | ||
| short mTime_trg_gate = 153; // #channels as in TCM as in Pilot beams ('OR gate' setting in TCM tab in ControlServer) | ||
| short mTime_trg_vertex_gate = 100; // #channels as in TCM as in Pilot beams ('OR gate' setting in TCM tab in ControlServer) |
There was a problem hiding this comment.
We should support separate upper and lower vertex thresholds, also pls modify the comment to point to the correct setting in CS
| uint32_t amplA = is_A ? summ_ampl_A * 0.125 : -5000; // sum amplitude A side / 8 (hardware) | ||
| uint32_t amplC = is_C ? summ_ampl_C * 0.125 : -5000; // sum amplitude C side / 8 (hardware) |
There was a problem hiding this comment.
Fine for now, can maybe consider "true" HW division if we make that method globally available somewhere
This PR introduces an updated signal shape model and revised trigger handling in the FT0 digitization.
The signal response used in the FT0 digitizer has been updated to a parametrization based on a sum of two log-normal components. This allows a better description of the detector pulse shape in Monte Carlo simulations and improves the agreement between simulated trigger response and data.
In addition, trigger logic has been adjusted to better reproduce the behaviour of the FT0 trigger chain.
Main changes
Signal model:
introduce a new signal shape function based on two log-normal components
provide analytical integral of the signal shape for amplitude evaluation
keep the previous implementation commented for reference
Trigger tuning:
update trigger thresholds in FT0DigParam (mtrg_central_trh, mtrg_semicentral_trh)
introduce a dedicated vertex trigger gate parameter (mTime_trg_vertex_gate)
Digitizer improvements:
introduce mapping from channel ID to PM hash using FT0 metadata
accumulate charge per PM using the mapping
improve calculation of central and semicentral triggers based on summed PM charge
add monitoring of summed PM amplitudes (debug logging)
The definition of FT0 triggers in the digitizer is updated to better match the trigger logic used in data processing. In particular, the central, semicentral, and vertex trigger conditions are now computed using PM-summed amplitudes and timing definitions consistent with those used in the FT0 trigger chain.
In addition, the FV0 trigger logic has been corrected to follow a consistent definition with the data.
These changes improve the consistency between MC digitization and the trigger quantities reconstructed from data.
No changes to the data format are introduced.