Make prediction: HowTo

From AstroNuWiki
Jump to: navigation, search

1) Копируем данные на opera4.jinr.ru


со своей машины: ssh -X guest@opera.lngs.infn.it

с opera: ssh -X operaws1

Копируем файлы с данными за выбранный период operaws1 -> opera4.jinr.ru

/daqdata/filter/v4/root/Extraction_*****_recofid.root

(либо последний из файлов TestBertolin/Extraction_*****_*****_reco+OpCaracv1r8.root )

BrickFinder/data/BrickDataBase/BMM_Detector_yyyy-mm-dd.dmp

Файлы BMM_Detector_yyyy-mm-dd.dmp скопировать в директорию opera4:/data/bms-opera/


//------------------------------------------------------------------------------------

2) make prediction

!!! Убедитесь, что в вашей директории OpBrickFinder/.../run/results/publication/ нет ничего кроме пустых папок inspecting, manual и predictions.

Далее запускаем макрос make_prediction.awk

Пример:

./make_prediction.awk 10284 10298 | /bin/sh

2 параметра - номера первого и последнего файлов


Макрос выглядит так:


#!/bin/sh
echo $1 $2 | awk \
'{
# 1 - first extraction
# 2 - last extraction
 for (i = $1; i <= $2; i++) {
print "./eventViewer -i 10284-10298/Extraction_"i"_recofid.root --config config/BF_publication.cfg --batch --brickExtraction";
 }
}'


После этого в OpBrickFinder/.../run/results/publication/ появятся файлы с информацией о событиях из выбранных Extraction_"i"_recofid.root.


//------------------------------------------------------------------------------------

3) Сортировка событий

Нужно просмотреть события используя такую же конфигурацию, как при работе с Extraction_"i"_recofid.root. Пример:

./eventViewer --data PATH_TO_EXTRACTIONS_RECOFID --config config/BF_publication.cfg

Сортируем события используя кнопки For inspection и Make prediction

Если автоматически кирпич правильн предсказан - ничего не нажимаем

Если меняли какие-то параметры для предсказания - Make prediction

Если событие непонятное, или считаете, что кирпичи предсказаны неправильно - For inspection

Если изменяли параметры реконструкции трека или что-то другое, прежде чем перейти к следующему событию, возвращаем все параметры по умолчанию.


//------------------------------------------------------------------------------------

4) make_eventlists

Затем запускаем макрос /sw/OpRelease/4.0/OpBrickFinder/v1r9/scripts/make_eventlists.sh

в каждой из папок OpBrickFinder/.../run/results/publication/, inspecting, manual и predictions появятся списки соответствующих событий.


//------------------------------------------------------------------------------------


5) Комментируем события For inspecting

!!!Убедитесь, что в results/publication/inspecting/inspecting_list.txt только номера событий.

Создаем копию OpBrickFinder/.../run/results/publication/inspecting/inspecting_list.txt, в каторую будем дописывать комментарии к отобранным событиям

./eventViewer --elist results/publication/inspecting/inspecting_list.txt --config config/BF_publication.cfg

Просматриваем события, добавляем комментарии.


//------------------------------------------------------------------------------------

6) Инструкция по публикации предсказаний кирпичиков (Артем):

 все манипуляции проделываются в директории Brick_Publication на машине opera.

В этой директории создаёте свою поддиректорию, например predictions_date и копируете в неё все файлы, созданные программой brickFinder в директории results/publication/{prediction, manual}.

 Существует два основных скрипта: runwrite.sh - для записи предсказания в базу

данных и runext.sh - для посылки комнды BMS для извлечения кирпичиков, и ещё один скрипт run_pub.sh, который запускает сначала первый, потом второй.

 В файле runwrite.sh исправляете путь, в котором находятся пресказания

кирпичиков: outdir= ${rootdir}"/predictions_date/" и запускаете скрипт

 >runwrite.sh event_number

программа запишет ваши предсказания в базу данных, после чего нужно запустить скрипт

 >runext.sh event_number

вам будет задан вопрос, из какого номера предсказания извлекать кирпичики, в большинстве случаев это номер "0" (если есть только одно предсказание), если несколько предсказаний для данного события, то нужно выбрать нужное вам (более точно это можно отследить по страничке analysis follower). Когда выбрали номер предсказания, то нужно подтвердить выбор, нажав "1". Затем быдет выдан список кирпичиков из данного предсказания, выбираем нужный кирпичик по вероятности: первый, второй или какой вам кажется наиболее вероятным. Внимание, эти номера приведены в самой последней колонке (Bid) и могут идти не по порядку! В большинстве случаев выбираем первый (1) кирпич, затем программа спросит про ещё один кирпич, если больше не хотите выбирать, то нажимаете "0". Затем нужно подтвердить выбор, нажав "1" или "0", если что-то сделано не так.

 Чтобы запустить последовательно два скрипта - публикации и извлечения, то запустите скрипт 
 >run_pub.sh event_number
 Если мюонный трек проходит около границы кирпича, то в файле manual_list.txt или predictions_list.txt напротив события будет написано 1 - edge.

Если мюонный трек проходит рядом с границей в top view, тогда нужно определить номер соседнего кирпича и на запрос программы про ещё 1 кирпич выбираем его.

//---------------------------------------- Один из вариантов публикации - отправить запросы на извлечение кирпичей для событий, к которым относится комментарий edge - (1,...), удалить их из списка. Делее набираем в командной строке:

cat predictions_list.txt | awk \ '{print "./runwrite.sh " $1}' > predictions_write.txt

chmod 755 predictions_write.txt

cat predictions_list.txt | awk \ '{print "./runext.sh " $1}' > predictions_ext.txt

chmod 755 predictions_ext.txt

таким образом получаем 2 скрипта, которые позволят заносить в БД и отправлять запросы на извлечение кирпичей не вводя номера событий.


//--------------------------------------------------------------------------------------

ПУБЛИКАЦИЯ КИРПИЧИКОВ ПО ЗАПРОСУ

Сначала идёте на сайт Analysis follower, ищете нужное событие и в нём запрашиваемый кирпич (может быть несколько предсказаний). Если нужный кирпич существует, то на opera запускаете программу

./runext.sh eventnumber

Выбираете соответствующее предсказание и нужный кирпич. На вероятность смотреть не нужно, только на координаты требуемого кирпича.

Если нужного кирпича нет в предсказании, то в функции EventProcess::PrintPublication() исправляете

if (++k > 3) break;

на

if (++k > 8) break;

(предсказания выдаются для первых восьми кирпичей), больше цифру ставить не нужно, так как программа вылетает. И запускаете eventViewer для данного события, делаете make prediction и в созданном файле ищете нужный кирпич, если он там есть, то переписываете на opera, публикуете стандартным путём (только при этом нужно выбрать правильное предсказание в начале, так как их будет больше одного, обычно это с большим номером).

Если в новом файле такого кирпича не оказалось, то выделяете кирпич мышкой и делаете make prediction и дальше как в предыдущем пункте. Если и это не получилось, то будем разбираться.


Небольшой комментарий

Запрос на кирпичики приходит в таком виде: ID_PREV_EVENTBRICK EVENT ID_SM ID_SIDE ID_WALL ID_ROW ID_CELL

3014036 9173028953 1 -1 28 9 21

Это означает, что в событии 9173028953 нужно извлечь кирпич с координатами 1 -1 28 9 21 (ID_SM ID_SIDE ID_WALL ID_ROW ID_CELL), на номер кирпича внимания обращать не нужно, так как это номер самого первого извлечённого.