Are you excited into PMTs AF? Then Photo Multiplyer Tube Analysis Framework (PMTAF) migh be the right tool for you!
This project has aim to cover as many analyses as possible, relevant for PMT characterization and calibration. It utilizes a config file that defines what a how it should be done. As the project is not too complex it should encourage YOU to contribute with your own code!
Project also contains bunch of python scripts related to a custom hardware and plenty of undocumented analysis.
The project is primarily developed to serve for PMT testing, characterization and calibration at Joint Laboratory Optics in Olomouc, Czechia. Secondarily, it is developed for PMT validation and calibration for HyperK project where JLO contributes.
Palacky University Olomouc & JLO
Antonín Lindner - antoninlindner@gmail.com
- Make sure you have following dependencies installed:
- Clone the repository:
git clone https://github.com/karbenatek/PMTAF.git
- Navigate to the project directory:
cd PMTAF
- Build framework executable:
make install
(When running first time, you might be asked byconan
to detect profile. Runconan profile detect
and repeatmake install
. If running on Ubuntu 22.x based linux distribution please pay attention on following issue)
A binary executable is compiled as bin/pmta
which can be added to system path by running . setup.sh
.
By running pmta
, the usage is printed:
Usage: pmta [-c cfg_file] [-r]
Executes PhotoMultiplier analysis.
Options:
-c cfg_file Specify the configuration file to use
-r Recreate all output root files
The missing part now is corectly writen configuration file cfg_file
and input files, defined inside.
When option -r
is used, every output_file
is recreated only once and any of input_file
's won't be recreated at all to not break analysis dependencies.
The config files are using TOML format. Each operation of PMTAF requires following elements:
-
Module name
This defines what operation a.k.a module will be called. See the list of existing modules or how to implement your own module. -
Measurement name
This value can be custom, but is intended to briefly describe nature of the data/measurement. Measurement name matches a name of root TDirectory. -
Module parameters
These are specific for called module. Describes module execution parameters and i/o files/directories.
Operation defined in config file has following format:
[module1.data1]
parameter0 = 123
parameter1 = 456
input_file = "fileX.root"
output_file = "fileY.root"
[module2.data1]
input_file = "fileY.root"
output_file = "fileY.root"
Notes:
- Order of operations in codfig file does not matter. Their actual order is defined by module priorities harcoded in framework.
input_file/output_file
are commonly used parameters for PMTAF native.root
files. Refering of both to same file is OK.
PMTAF uses cern-root native file format with commonly used appendix .root
. Storeable object insides a root files can be TTree which contains events - columnar data entries with custom structure - TBranches.
PMTAF utilizes two kinds of TTrees:
Is used to store most raw data about pulses, i.e. actual waveforms.
Branches:
date
- date of acquisition, Format:yyyy-mm-dd
. Type:char[10]
.time
- usually system time (unprecise). Format:hh:mm:ss
. Type:char[8]
.time_10fs
- precise, relative time of acquisition. Type:uint64_t
(max value corresponds to ~ 2 days).i_seg
- index of segment, usually just indexing. Type:Int_t
.x
- signal amplitude values. Type:std::vector<Float_t>
.t
- signal time values, coresponding tox
. Type:std::vector<Double_t>
.
Is used to store processed data from pmtaf_pulses
, i.e. pulse max amplitude, pulse integrated charge.
Branches:
date
*time
*time_10fs
- might differ from the one inpmtaf_pulses
- e.g. can be extracted fromt
as a trigger time for transit time spread measurement.time_over_trigger_10fs
- pulse length. Type:Double_t
.i_seg
* - here it can serve for multipulse analysis, e.g. afterpulse analysis when multiple pulses can be found in same vaweform.amplitude
- pulse max amplitude. Type:Float_t
.energy
- summ of pulse signal within some time window. Type:Float_t
.
* Branch is similar or identical to the same named one in pmtaf_pulses
Notes:
Some branche names has suffix (e.g. time_ns
=> ns
) which defines physical units. If physical quantity has not such suffix, than is is format dependat (e.g. date
and time
), integer (e.g. i_seg
) or uses default SI units (e.g. amplitude
, energy
- Volts)
In the following passage a functionality and required parametrs for all PMTAF modules is present.
Please note, that majority of them uses parameter input_file
and/or output_file
that refers to .root
files, native to PMTAF.
Converts signal data from output format of osciloscope LeCroy WaveMaster to .root
file.
rawdata_directory
: input files directory pathoutput_file
invert_polarity
(false/true): inverts signal polaritythreshold
: threshold applied on (inverted if above holds true) signal max value, to filter out waveforms bellow defined threshold and dnot writing the to output file
Converts events data from output format of INFN electronic to .root
file.
csvdata_file
: path to input fileoutput_file