Um novo sistema de aquisição de dados para o Laboratório Pelletron/LINAC Alexandre A. P. Suaide Alexandre A. P. Suaide
Motivação Sistemas complexos de deteção O SPM não funciona... Muitos detetores, muitos parâmetros de deteção (centenas) Detetor de neutrons + detetores de partículas + coincidências Múltiplos crates de CAMAC O SPM não funciona... Alexandre A. P. Suaide
Requisitos Compatível com hardware existente (CAMAC) Arquivo de dados compatível com o sistema atual (L002, .FIL) Suporte a altas taxas de transferência 3-4k eventos/s com 512 parâmetros/evento Suporte a vários crates Grande flexibilidade de histogramação Grande flexibilidade de análise e seleção de eventos Fácil manutenção e potencial para crescimento Interface gráfica Totalmente acessível a partir de cliques de mouse Programação moderna c++ orientado a objetos Desenvolvido utilizando as bibliotecas do ROOT Alexandre A. P. Suaide
ROOT – Uma das ferramentas mais poderosas em termos de análise de dados Desenvolvido no CERN especialmente para a comunidade de Física Nuclear Poderosas ferramentas de análise de dados, histogramação, simulação de eventos, desenvolvimento de GUI e desenho Totalmente escrito em c++ Disponível gratuitamente para várias plataformas windows, linux, AIX, Sun, Alpha, etc Interpretador e compilador c++ gratuito Amplamente utilizado e testado nos maiores laboratórios e universidades do mundo CERN, LBL, BNL, FermiLab, LBL, GSI, MSU, USP, etc... http://root.cern.ch Alexandre A. P. Suaide
ROOT – Um pouco de propaganda Várias opções de histogramas e gráficos em 1 dimensão Alexandre A. P. Suaide
ROOT – Um pouco de propaganda Várias opções de histogramas em 2 dimensões Alexandre A. P. Suaide
SPMRoot – um novo sistema de aquisição Baseado em uma versão modificada do driver do CAMAC escrito pelo Ribas Compatível com o SPM Buffers de memória maiores Proteções contra overflow de memória Habilitação de até 4 crates Uso intensivo do ROOT para GUI, IO, histogramação, etc. Possibilidade de ter um trigger de software Velho e bom EVS/ADAC combo Histogramação feita através de uma rotina em c++ definida pelo usuário Alta flexibilidade Alexandre A. P. Suaide
Estrutura da aquisição de dados Pacote de análise de dados ROOT SPMRoot PelTools CamacIO ScanRoot IO Interface com Histogramação e trigger PelIO Driver CAMAC Alexandre A. P. Suaide
Como funciona S S Grava evento Idle 100 ms N N histograma S N Processa Tem Evento? Passou trigger? S S Grava evento Idle 100 ms N N histograma S 1000 eventos? N Processa requisição S Alexandre A. P. Suaide
Verifica se há evento no buffer Idle 100 ms Processa requisição Tem Evento? S Passou trigger? Grava evento histograma 1000 eventos? N Tem Evento? Driver do CAMAC (Ribas + algumas modificações) O driver do CAMAC responde ao LAM Gera um evento de acordo com o definido pelo usuário (EVS) Armazena em um buffer de memória Tamanho total de 256 kBytes Dividido em buffers menores, cujo tamanho é definido pelo usuário Os dados são transferidos para o programa somente quando há mini-buffers cheios As modificações envolveram o tamanho do buffer e algumas proteções para overflows que estavam ocorrendo para altas taxas de contagem de eventos muito grandes e múltiplos crates Alexandre A. P. Suaide
Trigger a nível de software Idle 100 ms Processa requisição Tem Evento? S Passou trigger? Grava evento histograma 1000 eventos? N Passou trigger? L2Trigger (Level 2) Executado a nível de software Decide se o evento vai ser gravado ou não Código programado pelo usuário em c++/ROOT Limitado somente pela criatividade do usuário Opções para diminuir o tamanho do arquivo de dados Gravar somente eventos em coincidência Gravar eventos de cuja partícula tenha uma certa massa, Z, etc Opcional... Alexandre A. P. Suaide
Grava evento Gravação de evento Formato .FIL compatível com SCAN Idle 100 ms Processa requisição Tem Evento? S Passou trigger? Grava evento histograma 1000 eventos? N Grava evento Gravação de evento Formato .FIL compatível com SCAN Sim ou não, depende do usuário Gravação em disco Fita em fase de implementação Novidades Divisão do arquivo se ele passar um certo tamanho 100, 200 ou 400 MBytes Pode ser desabilitado pelo usuário Alexandre A. P. Suaide
Histogramas Todo evento válido chama a rotina de histogramação Idle 100 ms Processa requisição Tem Evento? S Passou trigger? Grava evento histograma 1000 eventos? N histograma Todo evento válido chama a rotina de histogramação O usuário pode definir, na rotina de histogramação, como e quando um evento é histogramado Código em c++/ROOT Total liberdade, depende somente da criatividade do usuário Tempo morto monitorado pelo programa Não há, nesta versão, nenhum controle imposto pelo programa Alexandre A. P. Suaide
Iniciando o programa Digite Spmroot [opções] -d = habilita modo de degub Imprime o conteúdo de cada um dos eventos, além de outras informações (muito mais lento, afinal é um modo de debug) -c = habilita prompt de comando para o interpretador ROOT/Cint Propicia acesso a todos os recursos do ROOT e um interpretador c++ (>90% compatibilidade com ANSI c++) Alexandre A. P. Suaide
SPMRoot – A interface com o usuário Menu principal Barra de comandos Status Log Alexandre A. P. Suaide
SPMRoot – O Menu principal Alexandre A. P. Suaide
SPMRoot – Status Alexandre A. P. Suaide
Iniciando um run em 4 passos simples Carregar o EVO Carregar as definições de histogramas Ligar modo FILA Iniciar o run run_XXXXX_YYY.fil Alexandre A. P. Suaide
Algumas opções mais avançadas Configurando scalers (máximo 10 módulos de scalers) Tamanho do buffer do CAMAC e número de parâmetros Alexandre A. P. Suaide
As opções de DISPLAY Janelas gráficas (Canvas), Browsers, PelTools. Alexandre A. P. Suaide
Como fazer histogramas Pequena rotina em c++ Todo o poder do c++ e do ROOT disponíveis Não precisa compilar O SPMRoot compila sozinho Mesmo programa pode ser usado offline Espere pelo ScanRoot Header Incluir bibliotecas básicas Definir variáveis globais 4 funções (2 obrigatórias) bookHistograms() fillHistograms() Init() Finish() Clicar em File → Load Histogram Def. Alexandre A. P. Suaide
Visualizando histogramas O TBrowser Similar ao windows explorer Directories, files, etc. Display → new TBrowser Duplo clique no icone Histogramas (conteúdo dos diretórios) Diretórios SPM_Histograms etc Alexandre A. P. Suaide
Visualizando histogramas... Canvas e menus no clique do mouse Alexandre A. P. Suaide
Outras opções de visualização Múltiplas telas em uma única janela Clique com botão direito na janela e Divide Múltiplas janelas Menu Display → new TCanvas Alexandre A. P. Suaide
Analisando dados Usando o prompt de comando (RootCint) Alta flexibilidade Interpretador c++/ROOT Usando o PelTools Pequena interface gráfica que auxilia, dentre outras coisas Criação de bananas (TCutG) Projeção de histogramas Ajustes de picos, etc Acesse de Display → PelTools Menu Alexandre A. P. Suaide
Processando dados offline - ScanRoot Programa desenvolvido em c++/ROOT para processar arquivos .FIL (similar ao SCAN) digite scanroot Comandos básicos hac(“filename”) Carrega arquivo de definição de histogramas (mesmo formato do SPMRoot) openInput(“filename”) Abre o .FIL openOutput(“filename”,outNumber) Abre um novo arquivo FIL para gravação loadL2(“filename”) Carrega definição de trigger de software saveHist(“filename”) Grava arquivo de histogramas go(N) Processa N eventos (N=0 processa o arquivo inteiro) tools() Abre a janela de PelTools help() Alexandre A. P. Suaide
Velocidade de processamento Arquivo .FIL 3.5 M eventos Média de 2 parâmetros/evento Criação de 1 espectro bi-paramétrico simples Aqui vale a discussão qual instantâneo é mais rápido Alexandre A. P. Suaide
Tamanho do arquivo de histogramas 3.5 M eventos 1 espectro bi-paramétrico 512 x 512 canais (H32) O ROOT tem grandes vantagens porque os histogramas são gravados de forma mais eficiente enquanto o HIS é totalmente descompactado Alexandre A. P. Suaide
Limite de histogramação Arquivo de histogramas Espectro bi-paramétrico 512 x 512 canais (H32) Detetor de neutrons Aprox. 200 histogramas HIS 15 2D (512x512) hist. Request of 16777220 bytes is larger than maximum 16777216 Praticamente não há limite físico no ROOT, limitado basicamente pelo sistema operacional 2GB no ROOT v. 3.04.05 Alexandre A. P. Suaide
Limites de aquisição de dados Fração de eventos perdidos Detetor de nêutrons completo 72 histogramas multicanais 96 histogramas bi-paramétricos 70 parâmetros/evento em média Micro PIII 1 GHz, 256 MB Histogramando todos os eventos Mostrando 1 histograma na tela, atualizando a cada 5 minutos Alexandre A. P. Suaide
STATUS Versão 1 disponível Testado com o detetor de neutrons SPMRoot ScanRoot PelTools Driver controlador CAMAC c111A turbo Testado com o detetor de neutrons 1 semana de tomada de dados para a tese do Pedro 6,7Li + In, 12 telescópios DEgás-DESi-E + 5 monitores de Si Ainda não implementado/testado IO em fita Vale a pena????? 1 fita hexabyte de 5 GBytes = R$40-50 1 HD 120 GBytes = R$400 Múltiplos crates de CAMAC Manual na sala de controle e na web http://star4.if.usp.br/~suaide/pelletron/index.htm Alexandre A. P. Suaide
O Futuro... Testar múltiplos crates Versão 2 Além da versão 2 Implementado na teoria... Versão 2 Otimização de performance Otimização do driver do CAMAC Otimização de alguns métodos do SPMRoot Melhorar a estética de programação Incluir IO em fita??? Driver para o controlador CAMAC DSP 6002 Melhorar a interface??? Depende das sugestões dos usuários Mais ferramentas de análise no PelTools Além da versão 2 Incluir processamento paralelo para aumentar performance (?) Alexandre A. P. Suaide
Algumas informações úteis http://root.cern.ch Web site do ROOT http://dfn.if.usp.br/~suaide/root Alguns documentos, cursos, apresentações e tutoriais sobre o ROOT http://star4.if.usp.br/~suaide/pelletron/index.htm Manual dos programas mostrados nessa apresentação http://dfn.if.usp.br/~suaide/pelletron/talks/Aquisicao.ppt Esta apresentação Alexandre A. P. Suaide