Table of Contents
Описание формата данных TAIGA-HiSCORE
Монте-Карло
(Письмо А. Гринюка про формат stb, выдержка из более позднего с добавлением st2b, ответы на вопросы А. Крюкова)
The format of files ending in "_feb" and "_stb"
Dear collegues, The format of files ending in “_feb” and “_stb” is the following: Header for all telescope/hiscore station events:
- int32 N_run - number of CORSIKA event
- int32 N_scattering - number of random shower core scattering (0-9)
- int32 N_telescope - number of either telescope (always 0 in first MC stage) or hiscore station (0-44)
- int32 N_photoelectrons - total number of photoelectrons in that telescope or station
- double E - primary energy[eV]
- double theta - primary zenith angle [radian]
- double phi - primary azimuth angle [radian] (for some reason 180deg-phi is the angle as seen in reconstruction - consider it as taking the angle from different axis in different direction)
- double X_core [mm] (zero, because CORSIKA move the telescope/stations instead of the shower)
- double Y_core [mm]
- double Z_core [mm]
- double H_1st_interaction [mm]
- double particle_type (1 - gamma, 14 - proton, 5626 - iron)
- double Xmax [g/cm^2] - depth of shower maximum
- double Hmax [mm] - height of shower maximum
- double X_telescope [mm] - coordinate of telescope/station
- double Y_telescope [mm]
- double Z_telescope [mm]
- double X_offset [mm] - telescope/station coordinate offset from random shower core scattering (should be used to move shower core by -X_offset instead)
- double Y_offset
- double theta_telescope [radian] - zenith angle to which this telescope/station was rotated
- double phi_telescope [radian] - azymuth angle to which this telescope/station was rotated
- double delta_alpha [radian] - angle between vectors to primary particle source and telescope/station pointing
- double delta_alpha0 [radian] - maximum angle used to generate delta_alpha (with equidistributed directions over sector of the sphere)
- double T_average [s] - average time of all photoelectrons in this station/telescope
For “_feb” files this header is followed by N_photoelectrons times of photoelectron data:
- int32 history - encoded number of mirror from which this photon was reflected. history=i_r*256+i_c+128 where i_r - number of mirror row,
- i_c - number of mirror column; x_m=d_m*(2*i_c-rem(i_r,2)),
- y_m=i_r*d_m*2*sin(60deg) - coordinates of mirror center, d_m=310 mm.
- rem(a,b) - remainder of division of a by b.
- double time [s]
- double wl [nm] - photon wavelength (could be useful to recalculate for different quantum efficiency distribution or to see which wavelengths are more important)
- double Nr
- double Nc - number of row and column of photomultiplier,
- x_pmt=d_pmt*(2*Nc-rem(Nr,2)), y_pmt=Nr*d_pmt*2*sin(60deg) - coordinates of photomultiplier, d_pmt=15 mm.
For “_stb” files the only difference is that there is an additional variable in the end of the header int32 Npixels - number of photomultipliers with non-zero amount of photoelectrons (usually 4 for hiscore stations)
And the header of “_stb” files is followed by Npixels records of:
- int32 pixN - encoded number of pixel, pixN=Nr*256+Nc+128; relevant definitions are above.
- int32 A - amplitude in this pixel in photoelectrons
- double t [s] - average time
- double dt [s] - standard deviation of times
Full hybrid event has to be combined from telescope and hiscore station files looking for events with the same N_run and N_scattering but all N_telescope.
Signal in “_stb” files was preliminary filtered. For hiscore stations - by taking only photons within +- 10 ns from the average and only stations with at least 50 photoelectrons total. For telescope +-50 ns and at least 2 pixels with at least 10 photoelectrons in each. For this reason N_photoelectrons may be slightly less than the sum over all pixels. Correct way to calculate trigger efficiency of the telescope would be by getting individual photoelectrons through fast shaper → trigger from it → same photoelectrons through slow shaper → digitized amplitude from the slow shaper at certain time past the trigger as observable data. Evgeny Postnikov does all that with “_feb” files but it is not included in “_stb” files. Far from trigger threshold region that should be not important.
Rotation of the camera around the main optical axis relative to the telescope is not included for now.
Best regards
Andrey Grinyuk
Описание по-русски с добавлением нового формата _st2b
Заголовок события одинаков для телескопа и для каждой станции HiSCORE.
Полное событие собирается из всех станций с одинаковыми N_run, N_scattering. Всего в заголовке 4 int32, 20 double и ещё 1 int32 (180 байт).
- int32 N_run - number of CORSIKA event
- int32 N_scattering - number of random shower core scattering (0-9)
- int32 N_telescope - number of either telescope (always 0 in first MC stage) or hiscore station (0-44)
- int32 N_photoelectrons - total number of photoelectrons in that telescope or station
- double E - primary energy [eV]
- double theta - primary zenith angle [radian]
- double phi - primary azimuth angle [radian]
- double X_core [mm] (zero, because CORSIKA move the telescope/stations instead of the shower)
- double Y_core [mm]
- double Z_core [mm]
- double H_1st_interaction [mm]
- double particle_type (1 - gamma, 14 - proton, 5626 - iron)
- double Xmax [g/cm^2] - depth of shower maximum
- double Hmax [mm] - height of shower maximum
- double X_telescope [mm] - coordinate of telescope/station
- double Y_telescope [mm]
- double Z_telescope [mm]
- double X_offset [mm] - telescope/station coordinate offset from random shower core scattering (should be used to move shower core by -X_offset instead)
- double Y_offset
- double theta_telescope [radian] - zenith angle to which this telescope/station was rotated
- double phi_telescope [radian] - azymuth angle to which this telescope/station was rotated; counted in opposite direction from primary particle phi
- double delta_alpha [radian] - angle between vectors to primary particle source and telescope/station pointing
- double alpha_pmt [radian] - угол поворота камеры вокруг оптической оси
- double T_average [s] - average time of all photoelectrons in this station/telescope
- int32 Npixels - количество пикселей с ненулевым сигналом в событии. Для станций это обычно 4. В реальных данных есть станции, где работают только 3.
После заголовка в более новом формате “_st2b” идёт ровно Npixels записей следующего содержания (28 байт каждая):
- int32 A - amplitude in this pixel in photoelectrons
- int32 Nr
- int32 Nc - number of row and column of photomultiplier
- double t [s] - average time of photoelectrons
- double dt [s] - standard deviation of times in this pixel
В более старом формате “_stb” вместо этого идёт (24 байта каждая):
- int32 pixN - number that equals Nr*256+Nc+128
- int32 A - amplitude in this pixel in photoelectrons
- double t [s] - average time of photoelectrons
- double dt [s] - standard deviation of times in this pixel
Вопросы А. П. Крюкова c ответами
Заголовок события одинаков для телескопа и для каждой станции HiSCORE.
1. Как их различать? По числу “пикселей”?
1. После обработки телескоп и станции в разных файлах. HiSCORE в файлах с “_hs” ближе к концу.
Полное событие собирается из всех станций с одинаковыми N_run, N_scattering. […]
int32 N_run - number of CORSIKA event
int32 N_scattering - number of random shower core scattering (0-9)
2. Т.е. один и тот же ШАЛ бросается на установку несколько раз с разными параметрами (углы и расстояние)?
2. Корсика моделирует ливень 1 раз, а положения всех телескопов и станций сдвигаются несколько раз случайным образом по земле в пределах круга заданного радиуса равномерно по площади (круг перпендикулярно направлению оси каждого ливня).
int32 N_photoelectrons - total number of photoelectrons in that telescope or station
4. Для станции - это сумма по всем ФЭУ? Для телескопа тоже сумма по всей камере?
4. Да, сумма по всем.
double X_core [mm] (zero, because CORSIKA move the telescope/stations instead of the shower)
double Y_core [mm]
double Z_core [mm]
5. А где расстояние до оси (см. также п.6)?
5. Расстояние до оси вычисляется по разности (X_telescope, Y…) и (X_offset, Y…) . Кто-то пользуется расстоянием по земле, а кто-то 3-мерным расстоянием от точки до прямой.
double X_telescope [mm] - coordinate of telescope/station
double Y_telescope [mm]
double Z_telescope [mm]
6. Это координаты телескопа/станции относительно оси ШАЛа?
6. Это координаты оси ШАЛ (возможно с обратным знаком). Координаты каждого телескопа/станции в этой же системе координат X_telescope, Y… . [По-видимому, А.Г. решил, что вопрос относится к тому, что ниже, а не выше - S.P.]
double X_offset [mm] - telescope/station coordinate offset from random shower core scattering (should be used to move shower core by -X_offset instead)
double Y_offset
7. А это что за звери?
7. theta_telescope, phi_telescope - куда в программе оптической обработки была направлена оптическая ось телескопа/станции для данного ШАЛ.
double theta_telescope [radian] - zenith angle to which this telescope/station was rotated
double phi_telescope [radian] - azymuth angle to which this telescope/station was rotated; counted in opposite direction from primary particle phi
[…]
int32 Nr
int32 Nc - number of row and column of photomultiplier
10. Для станций - это “матрица” 2х2? А как нумеруются ФЭУ в телескопах? Они все немного разные, как я понимаю.
10. Прошу прощения, тут я кажется забыл написать про пересчёт в координаты пикселей. Если не было поворота камеры вокруг оси (alph_pmt=0 ранее), то x_pix=s_pmt/2*(2*Nc-(Nr&1)); y_pix=Nr*s_pmt*sqrt(0.75); где s_pmt=30.0 [мм] - расстояние между центрами соседних пикселей. (Nr&1 - неотрицательный остаток от деления на 2).
double t [s] - average time of photoelectrons
[11.] Что такое “time of photoelectrons”?
11. Время прихода на фотокатод. Простое среднее.
double dt [s] - standard deviation of times in this pixel
В более старом формате “_stb” вместо этого идёт (24 байта каждая):
[12.] Как отличить файл старого формата от нового?
12. В старом формате имя файла заканчивается на “_stb”, а в новом на “_st2b”.