Сеанс 42.Инструкция по работе с базой данных лент и файлов.

Рубрика: general -> Руководства
Четверг, 9 августа 2012 г.
Просмотров: 9614
Подписаться на комментарии по RSS

База данных состоит из таблицы информации о сеансах runinfo и таблиц сеансов run19,…,run42.

Таблица runinfo состоит из полей:

  1. run — имя файла, например 42024028,сеанс 42 лента 24 файл 28;

  2. date — время начала файла, например 2011-11-13 19:11:27;

  3. enddate — время конца файла, например 2011-11-13 19:11:37;

  4. type — тип файла, возможные типы файлов:

                           Calib_Ecal — калибровочный файл;

                           SLT — файл SLT;

                           TEST — файл проверки или изучения(например формы ливня);

                           Phys — физика;

 

  1. energy— энергия пучка(по току в М15, см. также табл. Run-42), возможные флаги:

                           10.0 — номинальное 10 ГэВ;

                           27.0номинальное 27 ГэВ;

                           -1.0— значения с большим отклонением от номинальных.

 

  1. target— мишень,возможные флаги:

                           Beбериллиевая мишень;

                           Empty — мишень отсутствует ;

                           UNK — неизвестная мишень.

 

  1. magnet — магнит M13 (см. также табл. Run-42),возможные флаги:

                            0.0 — магнит выключен;

                            4000.0 — магнит включен, номинальное значение тока 4000 ;

                             -1.0 — значения с большим отклонением от номинальных.

  1. spills — количество spills в файле, если 0 значение не заполнено;

  2. events — количество events в файле, если 0 значение не заполнено;

  3. size — размер файла в мегабайтах;

  4. detflag — флаг состояния детектора, если -1 значит что-то не работало;

  5. daqflag— флаг состояния DAQ, если -1 поломка DAQ;

  6. comments— комментарии, поддерживают кириллицу, если проблемы с отображением поставить unicode (UTF-8) в настройках браузера.

  7. period — номер сеанса, например RUN42;

 

Таблица run42 состоит из полей:

1) run — имя файла, например 42024028,сеанс 42 лента 24 файл 28;

2) beam — пучок; -1 - пучка не было значительную часть времени (файл пуст или частично пуст), либо аномально высокая интенсивность пучка.

3) energymean — пучок, среднее значение энергии пучка в ГэВ (в М15) за файл;

4) magnetmean — магнит, среднее значение тока в М13 за файл;

5) Trigmain — триггер main, -1 означает неполадки с основным триггером (в т.ч. с Guard-1 – внутренней «охранкой»);

6) Trigaux-1 - неполадки с вспомогательными триггерами;

7) EMСЭМК, -1 - неполадки;

8) Tracking-1 - неполадки с трековыми детекторами/системами;

9) Ch28 — МЧС, -1 - неполадки;

10) BCher —пучковые черенковские счётчики, -1 - неполадки;

11) Guard2 — (наружная) «сэндвич» - охранка, -1 - неполадки;

12) DAQ – ССД, -1 – неполадки.

Web странница таблиц  находиться по адресу: http://pcbech.ihep.su/bec/runinfo.php.

                                    Просмотр полной информации RUN42

Просмотр полной информации RUN42

Выберите количество строк, отображающихся на странице, сортировку( по возрастанию/по убыванию) и нажмите кнопку "submit" отправить.

                                   Простой поиск таблица runinfo         

 Простой поиск

 

Можно выбрать:

 1)тип файла Calib_Ecal, phys, SLT и т.д., или All( все типы);

 2)номер сеанса RUN19,RUN42 и т.д., или All( все типы);

 3)количество строк, отображающихся на странице;

 4)сортировку(по возрастанию/ по убыванию);

  5)интервалы run и date.

                      Просмотр таблицы run42

  Просмотр таблицы run42

Выберите количество строк, отображающихся на странице, сортировку( по возрастанию/по убыванию) и нажмите кнопку "submit" отправить. Отображает таблицу run42 с 20ой ленты.                                  

                                         Поиск по SQL запросам

Поиск по SQL запросам

 Примеры SQL запросов:

1)

select run,date,type,energy,events,comments from runinfo where period="RUN42" and type = "phys"

Запрос выбирает из таблицы runinfo поля run,date,type,energy,events,comments для period RUN42 и тип phys

2)

select run,date,enddate from runinfo

where period="RUN42" and type = "Calib_Ecal" and energy=10 and magnet=0;Запрос выбирает из таблицы runinfo поля run,date,enddate,где

period="RUN42"   - 42рой сеанс;

type = "Calib_Ecal" - калибровочный файл;

energy = 10 - энергия пучка 10 ГэВ;

magnet = 0.

Примечание: в SQL запросах числовые переменные вводяться без кавычек например energy=10,а текстовые переменные и время в кавычках например period="RUN42";

        Вывод таблиц runinfo и run42 в файл

Вывод таблиц runinfo и run42 в файл

Введите в поле SQL запрос из таблиц runinfo и/или run42,в конце запроса введите INTO OUTFILE и в кавычках путь к текстовому файлу и сам файл на pcbech.По умолчанию,если не прописать путь,файлы сохраняются на pcbech:/var/lib/mysq/bec/ .

                                 Форма вывода

Форма вывода

 

Форма вывода состоит из столбцов с названиями полей(run,date и т. д.),если нажать по имени столбца произойдёт сортировка.

Если нажать на кнопку строки 1,2... то откроется форма редактирования записи.

                       Форма редактирования записи

Форма редактирования записи

 После изменения соответствующих полей нажать «update».

 Внимание: кнопка «delete» удаляет запись из таблицы.

Полную информацию  по  сеансу 42 из обеих таблиц можно посмотреть перейдя по ссылке:

http://pcbech.ihep.su/bec/run42.php

К базе данных можно подключаться через С++ библиотеку с помощью кода:

1)Выделяем переменные:

 MYSQL mysql; // дескриптор mysql

MYSQL_RES *res; // результирующая таблица

 MYSQL_ROW row; // строки

 mysql_init(&mysql); // инициализация

 2)Коннект к базе данных:

  mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"becdb");//выбор группы из .my.cnf

 mysql_real_connect(&mysql,NULL,NULL,NULL,"bec",0,NULL,0);//коннект к БД "bec"

  mysql_select_db(&mysql,"bec");//функция выбирает БД,в данном случае "bec"

  3)Запрос к БД:

 mysql_query(&mysql,"SELECT * FROM runinfo WHERE `period` =\"RUN42\";");

//функция посылает запрос в " ", в данном случае запрос select выводит все

 (знак *) поля из таблицы runinfo, где `period` =" RUN42".

 4)Получения результирующей таблицы:

 res = mysql_store_result(&mysql); // функция возвращает результирующую таблицу;

 mysql_num_rows(res); // функция возвращает количество строк;

 row = mysql_fetch_row(res);// функция возвращает следующую (при первом применении

 возвращает первую строку) строку(массив),где row[0] первый столбец из результирующей таблицы, row[1] второй столбец из результирующей таблицы и т. д.

 5)Закрытие результирующей таблицы и БД:

 mysql_free_result(res);//после освобождения памяти, можно отправлять новый запрос;

 mysql_close(&mysql);

Примечание:

Подключение к БД настроено на pcbec2 для пользователя roger.Что бы настроить подключение под другим пользователем или на другом компьютере нужно скопировать файл .my.cnf(именно так с точкой) c pcbec2.ihep.su:/home/roger/.my.cnf в корневую папку своего пользователя.

Пример кода программы:

 // connect mysql

 MYSQL mysql;

 MYSQL_RES *res;

 MYSQL_ROW row;

 mysql_init(&mysql);

 if(&mysql == NULL)

      {

 fprintf(stderr, "Error: can't create MySQL-descriptor\n");

exit(1);

       }

    mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"becdb");

    if(!mysql_real_connect(&mysql,NULL,NULL,NULL,"bec",0,NULL,0))

{

       printf("Cannot connect to MySQL database: %s\n",mysql_error(&mysql));

       return 1;

 }

        else

          {

                     fprintf(stdout, "Success!\n");

           }

       if ( mysql_select_db(&mysql,"bec") )

       {

  printf("Cannot select database: %s\n",mysql_error(&mysql));

       return 1;

     }

       else

             {

                    fprintf(stdout, "Success!\n");

              }      

 //mysql query

 if(mysql_query(&mysql, "SELECT * FROM runinfo WHERE `crate`=\"RUN42\";") != 0)

 printf("Error: can't execute SQL-query\n");

 res = mysql_store_result(&mysql);

 if(res == NULL) printf("Error: can't get the result description\n");

 //result

 if(mysql_num_rows(res) > 0)

     {

 while((row = mysql_fetch_row(res)) != NULL)

        {

 printf("%s ",row[0]);

 printf("%s\n",row[1]);

        }

    }

mysql_free_result(res);

mysql_close(&mysql);

В Makefile добавить:

 -I `mysql_config --include` `mysql_config --libs`

                           

Комментариев: 3

  1. 2018-07-26 в 12:46:43 | Mediaelof

    Каждому творческому профессионалу есть что показать широкой аудитории. Это практические занятия по уходу за детьми, урок пения или французского, личностный тренинг, правовая консультация. Онлайн трансляция интересного урока заинтересует подписчиков сайта и позволит получить солидный заработок.

    За что пользователи охотно отдадут деньги? За доступ к полезной видеотрансляции, право задавать вопросы ведущему. Пользуются постоянным спросом качественные ролики с демонстрацией полезных навыков, обучающие занятия. Формирование и трансляцию сюжета заказывают специалистам – тогда успех обеспечен!

    концертная видеосъемка

  2. 2018-12-08 в 01:40:17 | ruprogame365

    ruprogame365.info

  3. 2019-01-11 в 16:20:29 | Keithominc

    http://johanstellerphotography.com

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)