???­???­????????? CMD-3 collaboration meeting, 2010 Fedor Ignatov Чтобы запустить обработку записанных данных 24 Декабря 2010 CMD-3 Collaboration Чтобы запустить обработку записанных данных 1) Скопировать к себе конфигурационные файлы 2) Настроить переменные окружения 3) Запустить обработку 4) Запустить скрипт который построит нужные гистограммы 24 Декабря 2010 CMD-3 Collaboration Чтобы запустить обработку записанных данных 24 Декабря 2010 CMD-3 Collaboration Как это устроенно сейчас Централизованно запускается обработка сырых событий и набор гистограмм с дефолтной конфигурацией и стандартным скриптом через батчевую систему (condor) На выходе ROOT-овские файлы с обработанными коллекциями и гистограммами: /storeA/daqdata/online/processing/run08749.root /storeA/daqdata/online/processing/hists/run08749.root 24 Декабря 2010 CMD-3 Collaboration Как это устроенно сейчас Ради экономии дискового места, события фильтруются и пишутся только высоко-уровненные коллекции данных // at least 1 with rho<3 cm && nhits>=5 && theta>0.9 && theta<pi-0.9 // OR total energy in all calorimets > 500 MeV Number of collections = 14 List of keys: 'bgo_alone_crystals' 'bgo_clusters' 'csi_clusters' 'csi_crystals' 'dc_tracks' 'dc_verticies' 'lxe_clusters' 'lxe_s_tracks' 'lxe_towers_clusters' 'lxe_towers_hits' 'trg_decision' 'trg_time' 'zc_sectors' 'zcsector_clbr_hits' 24 Декабря 2010 Кластеры, треки, вершины ... CMD-3 Collaboration Как это устроенно сейчас Ради экономии дискового места, события фильтруются и пишутся только высоко-уровневые коллекции данных Все подряд писать мы не можем: За архивированный сырой файл: 513 МБ Обработанный файл : 315 МБ Отписанные все коллекции : 3345 МБ 24 Декабря 2010 13668896109 *Br 0 :cmd3::CmdMap<string,cmd3::CmdCollection*> : File Size = 3502052252 * 6917120104 *Br 37 :vector<cmd3::CmdVector<cmd3::CmdVector<cmd3::CmdLXeStripHit>>> : File Size = 1254091827 * 1144461734 *Br 27 :list<cmd3::CmdRawHit> : File Size = 209114788 * 1022725789 *Br 17 :list<cmd3::CmdDCEClbrWireHit*> : File Size = 634205507 * 912326768 *Br 33 :vector<cmd3::CmdVector<cmd3::CmdVector<cmd3::CmdLXeStripCluster>> :File Size = 192280190 * 787718566 *Br 19 :list<cmd3::CmdRawHit> : File Size = 141354087 * 456638734 *Br 51 :vector<cmd3::CmdZCOuterCluster> : File Size = 101418845 * 315029710 *Br 35 :vector<cmd3::CmdVector<cmd3::CmdVector<cmd3::CmdLXeStripCluster>>>File Size = 42854359 * 292366660 *Br 29 :vector<cmd3::CmdLXeTrack> : File Size = 125825564 * 226012478 *Br 59 :vector<cmd3::CmdZCStripHit> : File Size = 52790010 * 166613572 *Br 61 :list<cmd3::CmdRawHit> : File Size = 32830190 * 138261396 *Br 41 :vector<cmd3::CmdLXeTowerHit> : File Size = 40855813 * 119670197 *Br 7 :list<cmd3::CmdBGOCluster*> : File Size = 53614344 * 118699305 *Br 21 :list<cmd3::CmdDCTrack*> : File Size = 80435342 * 77404270 *Br 31 :vector<cmd3::CmdLXeTrack> : File Size = 31722591 * 76637320 *Br 25 :vector<cmd3::CmdLXeCluster> : File Size = 24459151 * 75356412 *Br 9 :list<cmd3::CmdRawHit> : File Size = 13771687 * 54752228 *Br 53 :vector<cmd3::CmdZCOuterSector> : File Size = 14797836 * 53495269 *Br 39 :vector<cmd3::CmdLXeTowerCluster> : File Size = 13555684 * 43014788 *Br 57 :list<cmd3::CmdRawHit> : File Size = 8956917 * 40740789 *Br 5 :list<cmd3::CmdBGOAloneCrystal*> : File Size = 9507793 * 34869724 *Br 11 :vector<cmd3::CmdCsICluster> : File Size = 9865150 * 30899452 *Br 55 :vector<cmd3::CmdZCSectorHit> : File Size = 8405397 * 26300768 *Br 1 :eventHeader_ : File Size = 2282162 * 18728934 *Br 13 :vector<cmd3::CmdCsICrystal> : File Size = 6570319 * 17637656 *Br 23 :list<cmd3::CmdDCVertex*> : File Size = 9520642 * 10679818 *Br 45 :list<cmd3::CmdRawHit> : File Size = 1828828 * 8961295 *Br 43 :vector<cmd3::CmdMuClbrHit> : File Size = 2155015 * 8888020 *Br 15 :list<cmd3::CmdRawHit> : File Size = 2044055 * 6451501 *Br 47 :value_ : File Size = 631207 * 3478778 *Br 1 :vector<cmd3::CmdAnTClbrHit> : File Size = 388755 * 3477946 *Br 3 :list<cmd3::CmdRawHit> : File Size = 387561 * 1983792 *Br 49 :value_ : File Size = 430822 * CMD-3 Collaboration Возможные дополнительные варианты Можно реализовать еще одну прослойку данных Еще один уровень данных AOD (analysis object data) Упрощенное описание треков, вершин, кластеров .... Сделать обобщенный аналог collev и других герасимов KMD-2 24 Декабря 2010 CMD-3 Collaboration Как это устроенно сейчас(замечание) Не надо путать процедуру обработки и анализа данных с ситуацией на КМД-2 После обработки информация писалась в банки ZEBRA (который еще надо суметь прочитать). И перегонялась в пользовательский ntuple для дальнейшей обработки. Сейчас данные сохраняются в tree — это уже ntuple. 24 Декабря 2010 CMD-3 Collaboration Как надо сделать ( сохранение CmdEvent ) Недочет нашей текущей Event model: CmdEvent сохраняется в unsplit виде (нельзя воспользоваться просто Ttree::Draw() ) — просто так на данные не посмотреть — чтобы нарисовать какую нибудь примитивную вещь надо потратить минимум минут 5-10 на написание скрипта. Было бы очень удобно если бы коллекции в CmdEvent сразу же сохранялись по разным бранчам Возможно сейчас хватит просто включит split режим (с предыдущей версией ROOT наш CmdEvent в таком режиме не мог сохранится). И/Или надо добавить нужный функционал в модули записи-чтения. И надо навести порядок в классах данных: Сейчас в данных часто пишется всякий мусор — данные которые уже не используются, либо которые обычно не нужны, либо пишется информация которую надо еще переработать чтобы получить необходимую информацию, например: DC track информация хранится о абстрактно первой точки на треке и чтобы получить параметры из пучка надо сделать лишние телодвижения: Для LXe раньше чтобы получить точку конверсии надо было вообще double xfp, yfp, zfp; DCtrack->GetFPT(xfp, yfp, zfp); запустить чуть ли не обработку. bool inv = xfp*xfp+yfp*yfp>15*15; // invert track if the first point is far away from IP double k,phi,Z0,ctg,rho,t0; double xpca,ypca; DCtrack->TrkParams(0,0,inv,k, phi, rho, ctg,xpca,ypca, Z0, t0); double g = sqrt(1 + ctg*ctg); double p_trk = fabs(vlight*Bfield/k*g); 24 Декабря 2010 У кластеров не везде задействован функционал базового кластера CMD-3 Collaboration Как надо сделать ( сохранение CmdEvent ) 24 Декабря 2010 CMD-3 Collaboration Способы обработки 1) Написать свой модуль во фреймворк Плюсы: доступны все коллекции из обработки Минусы: если захотите поменять что-нибудь в ваших выходных данных - то надо пере обрабатывать все (один заход ~ 1 часа) 2) Написать ROOT-скрипт на уже обработанные данные Плюсы: Можно быстро пере набрать ваши выходные данные(один заход ~ пару минут), удобно для разработки Минусы: Не доступны все коллекции, нужно хранить промежуточные данные (по крайне мере для вас промежуточные) С точки зрения написания кода 1) и 2) способы эквивалентны 3) Использовать на прямую обработанный файл — через TTree::Draw (пока не работает) Плюсы: очень быстро и просто можно посмотреть какие нибудь распределения Минусы: нельзя построить что-то сложное -> надо все равно писать свой скрипт 4) Взять студента или попросить коллегу Плюсы: Очень просто получить результат Минусы: Время получение результата неопределенно 24 Декабря 2010 CMD-3 Collaboration Как я делаю анализ ( на данный момент по тем или иным причинам мне так удобнее) Для калибровок: В модулях отписываются ntuple- с выжимками по хитам, которые потом обрабатываются ROOT - скриптами. Какие то простые вещи: Перегоняю отписанные коллекции в другой файл со split и использую TTree::Draw() Для более сложного анализа: 1) В качестве входных данных беру централизованную обработку.(изменения в данных нужны редко) 2) Скриптом перегоняю в очень сжатый ntuple. (EsSD Event Super short description)(переодически что то добавляю, что то меняю) 3) И уже по ним очень быстро делаю отборы и строю гистограммы (результат нужен очень быстро) 24 Декабря 2010 struct Event2{ vector<TLorentzVector> lxe; vector<TLorentzVector> csi; vector<TLorentzVector> dc; vector<TVector3> dcvtx; vector<double> dcchi2; vector<int> dcch; vector<int> dcnhits; vector<TVector3> dconlxe; vector<TVector3> vtx; vector<vector<int > > vtxid; int event; } edata2; CMD-3 Collaboration