Developing #63

RTelescope диджитизация

Added by Vitaliy Schetinin over 7 years ago. Updated over 7 years ago.

Status:ОткрытаStart date:07/06/2017
Priority:НизкийDue date:
Assignee:Mikhail Kozlov% Done:

0%

Category:RTelescope
Target version:-

Description

Необходимо разработать класс ERRTelescopeDigitizer диджитизации для детектора RTelescope.

Моделирование отклика или диджитизация учитывает гранулярность электроники, неэффективности, шумы, тёмные счёты и продуцирует такую структуру данных сигнала, как если бы он был получен от реального детектора.

В первом приближении все перечисленные выше эффекты учитываются приближенно параметризованными распределениями ошибок.

Класс должен быть наследован от FairTask. Можно посмотреть структуру в ERRTelescopeHitFinder. Фактически таск перегоняет данные из одного представления (к примеру ERRTelescopePoint) в другое представление (назовем этот класс ERRTelescopeDigi). В каждом событии у нас есть коллекция поинтов на входе и должна быть коллекция Digi на выходе. Digi это в перспективе структура данных, которая будет приходить с реального детектора. В реальном детекторе мы не можем определить в какое именно место сенсора попала частица мы можем сказать его номер, также не можем определить простым способом сколько частиц одновременно родилось/попало в сенсор и сколько каждая из них оставила в нем энергии, мы можем сказать только суммарную энергию (которая потом будет в отсчетах электорники, а пока в энергетических единицах), также мы не можем говорить в рамках сенсора какая именно частица в какой момент в событии в него попала, мы зафиксируем время от первой, как время появления сигнала. digi соответсвует сектору детектора, с которого мы электоникой юуем снимать сигнал.

Класс данных ERRTelescopeDigi нужно наследовать от FairMultiLinkedData(позволяет отслеживать на базе каких других объектов образован) и  расположить в папке data. Он должен содержать (номер сенсора, номер сектора( по ним мы потом будем востонавливать координату пролета как центр сенсора), суммарную энергию поинтов в секторе, время (как время самого первого поинта в сенсоре)). С помощью метода digi->AddLink(FairLink("RTelesopePoint",iPoint)); должен быть слинковам со всеми поинтами, которые учавстовали в его создании.

Энергию Digi разыграть как Гауссово распределение со значением суммы энергий поинтов и сигмой 10 кэВ (по умолчанию у поинтов все в ГэВ, время с сигмой  200 пс (у поинтов сейчас в нс)

К ERRTelescopeDigitizer добавить интерфейс SetEThreshold(energy(КэВ)) устанавливающий порог энегрии записи Digi. Если энергия в digi получилась ниже его - не пишем. Это нужно, чтобы отрезать шумовые энерговыделения в телевскопе.

History

#1 Updated by Vitaliy Schetinin over 7 years ago

  • Assignee changed from Anonymous to Mikhail Kozlov

#2 Updated by Vitaliy Schetinin over 7 years ago

Немного схитрил)) На самом деле в жизни у нас есть проволочки которые считывают со всего сектора и проволочки которые считывают со всего кольца. Так что поинт на самом деле формирует в данном случае 2 digi. В один надо заносить sectorNb, в другой sensorNb(номер кольца). как распределить выделение энергии по ним узнаю немного позже. пока пиши одну и туже в оба (тут скорее это не имеет значения, если нам важно только координату востановить). Также тебе нужно в digi завести параметр: side. side = 0 это кольцо (к примеру), а side = 1 это сектор.

#3 Updated by Mikhail Kozlov over 7 years ago

Не совсем понял.

Выходит, у нас остается один класс digi, в нем по параметру side определяем сектор это или кольцо и просто удваиваем данные с разницей в одном параметре?

#4 Updated by Vitaliy Schetinin over 7 years ago

Верно. Потому что в жизни именно так и будет. Дело в том, что если у тебя в детектор попадут две частицы и загорятся два кольца и два сектора, то у тебя будут 4 преположения о том, где пролетела частица. Два из них верных и два не верных

Also available in: Atom PDF