-
Notifications
You must be signed in to change notification settings - Fork 22
J PET Framework v7
The framework can now be built on any of the following configurations:
- g++ version older than 5, ROOT 5 (e.g. Ubuntu 14)
- g++ version 5 and newer, ROOT 6 (e.g. Ubuntu 16, Ubuntu 18)
No manual compilation of library dependencies is required anymore. The number of library dependencies was also reduced.
- The rough pairing of TDC signals from leading and trailing edges was removed from the unpacking level and replaced with more sophisticated analysis at a higher level (see further sections).
- Unpacking speed was improved.
- Paths to ROOT files with calibrations of TOT stretcher offsets and TDC non-linearity (calibrations applied at the unpacking level) are now consistently passed to the program in the same JSON file as any other user parameters. Thus all paths to calibration files are now defined in a single JSON file and there is no more need to put any paths in the XML config file or on the program command line. The relevant options to include in the JSON file are
Unpacker_TOToffsetCalib_std::string
andUnpacker_TDCnonlinearityCalib_std::string
- see theuserParams.json
file bundled with the LargeBarrelAnalysis example. - Unpacking is now resistant to corrupted and truncated HLD files. Corrupted sections are ignored without interrupting the analysis of the whole file and in case of truncated files (created when the DAQ was stopped in the middle of a file), the files are unpacked until the last reasonable event without crashing the analysis program.
- The date and time of the first event written to a HLD file is now extracted from that file and stored in the unpacked ROOT file as a TString object.
Every data class was extended with a flag indicating whether is was classified as Good or Corrupted. Signal-Channel (SigCh) objects belonging to an incorrect sequence are now marked the following way:
- in a sequence of more than 1 leading-edge signal in a row, all but the last one are marked as Corrupted
- in a sequence of more than 1 trailing-edge signal in a row, all but the first one are marked as Corrupted
The Corrupted classification is inherited by higher-level data objects, i.e. a JPetRawSignal containing at least one corrupted JPetSigCh is also considered corrupted, a JPetHit with a corrupted JPetPhysSignal at at least one end is corrupted etc.
The user can decide at every stage of the analysis whether to use the objects marked as Corrupted or to reject them. This is controlled by the following user parameters for the standard analysis modules from the LargeBarrelAnalysis example:
- SignalFinder_UseCorruptedSigCh_bool
- SignalTransformer_UseCorruptedSignals_bool
- HitFinder_UseCorruptedSignals_bool
- EventFinder_UseCorruptedHits_bool
See the userParams.json
bundled with the LargeBarrelAnalysis example for sample usage of these parameters.
Rather than assuming that threshold A corresponds to the lowest absolute voltage value, the framework now reads the set threshold values from the JSON file with detector setup. Therefore, any arbitrary order of thresholds may be set in the experiment and analyzed correctly.
The updated JSON files containing voltages for each threshold are available at PetWiki: http://koza.if.uj.edu.pl/petwiki/index.php/Default_settings_and_parameters_used_in_the_analyses
This is the first Framework version which allows to use MC-simulated hits as input to the analysis. Files obtained with the J-PET Geant4 simulations can be used with the -t mcGeant
command line parameter. See the MCGeantAnalysis
example in the Examples repository for details.
Current status of MC including a list of already produced files which can be used with the Framework-based analyses can be found at the following PetWiki page: http://koza.if.uj.edu.pl/petwiki/index.php/GEANT4_-_current_status.
Problems and feature requests related to MC simulations should be reported at the respective subproject at the J-PET Redmine: http://sphinx.if.uj.edu.pl/redmine/projects/gate-geant-mc-simulations.
The MLEM image reconstruction was made a submodule of the Framework and can be run transparently as the last stage of a Framework-based analysis.
The J-PET Framework examples repository now contains examples of data preselection and analysis specific to three chosen classes of data which can be used for streaming of the data:
The framework can run a single task more than once, either executing a number of iterations specified by the user or repeating until a user-defined logical condition is satisfied. This allows e.g. for creating iterative calibration tasks.
A user guide for version 7 is available at PetWiki
The updated reference manual for version 7 is available here: http://sphinx.if.uj.edu.pl/framework/doc/