====== Описание формата данных 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".