Alexandre Suaide Aula 3 ScanROOT • ScanROOT = ROOT + SCAN – O ScanROOT corresponde a uma modificação no ROOT para incluir ferramentas de análise específicas do Pelletron • Comandos – scanroot • Para iniciar o programa – scanroot –h • Mostra um help com as opções de inicialização – scanroot –d • Inicia o scanroot em modo de debug – scanroot –n • Inicia o scanroot sem abrir os menus Interface gráfica e analogia com funções prédefinidas Todas os botões do menu do ScanROOT possuem análogos na linha de comando openInput(“nome.fil”) closeInput() openOutput(“nome.fil”) closeOutput() saveOnlyNewPar(bool) hac(“histogram.cxx”) saveHist(“histogram.root”) addHist(“histToAdd.root”) loadL2(“l2File.cxx”) unloadL2() zero() zero(“histName”) go() go(NEventos) setNPar(NParameters) init() finish() tools() debug(bool) stat() help() Como rodar um arquivo .FIL e criar histogramas • Através da interface gráfica – Load Histograms • Abra o arquivo .cxx (ou .so) contendo as funções de preenchimento dos histogramas – Open .FIL • Escolha o arquivo .FIL adequado – Zero • Digite * para zerar todos histogramas. • Não utilizar caso queira somara a estatística de vários runs – Go • Digite o número de eventos a serem processados (ou deixe em branco para processar todos os arquivos) – Save histograms • Escolha o nome do arquivo a ser salvo Acessando os histogramas com TBrowser • Abrir uma janela do browser – Menu -> PelTools Menu -> Browser • Os histogramas ficam armazenados no diretórios SCAN_Histograms Automatizando o processamento dos arquivos .FIL • Como os comandos do menu do ScanRoot também estão disponíveis através de funções, pode-se utilizar macros para automatizar o processamento de dados • Exemplo: arquivo macro.C void macro() { hac(“histogramas.cxx”); openInput(“run01.fil”); zero(); go(); saveHist(“run01.root”); openInput(“run02.fil”); zero(); go(); saveHist(“run02.root”); } • No prompt do scanRoot digite: .x macro.C Como processar os dados? • As análises de dados no Pelletron concentram-se em fazer histogramas e contas com os dados brutos para posterior analise. – Processamento dos arquivos .FIL – Histogramas.cxx (ou qualquer outro nome) • 4 funções (duas delas são obrigatórias) – bookHistograms(ScanRoot *scan) » Cria os histogramas e faz o link entre o scanRoot e a rotina de processamento – fill(int npar, float* par) (ou qualquer nome) » Processa os dados a cada evento – init() (opcional) » Inicializa o processamento de um novo run – finish() (opcional) » Encerra o processamento de um run Histogramas.cxx • 3 blocos – Definição das diretivas de pré-compilação • O gcc (compilador c++) não conhece o ROOT. Deve-se indicar quais as classes do ROOT devem ser adicionadas durante a compilação – Definição de variáveis globais • Variáveis que serão utilizadas em todas as funções – Funções do programa • bookHistograms, fill, init, etc... Diretivas de pré-compilação • O gcc (compilador) não conhece o ROOT. Conhece apenas o c++ padrão. – As diretivas #include “arquivo” incluem as definições das classes do ROOT – Como eu sei qual arquivo deve ser incluído • Na documentação do ROOT para cada classe que será utilizada pelo programa – Deve-se sempre incluir o ScanRoot.h para o compilador reconhecer o objeto ScanRoot. Variáveis globais • A forma mais simples de acessar variáveis entre diferentes funções é torná-las globais – Definição das variáveis fora do escopo das funções • Nesse exemplo, os ponteiros para os histogramas são definidos como globais Funções (bookHistograms) • bookHistograms(ScanRoot *scan) – O nome dessa função deve ser sempre esse – Executada somente quando o programa é carregado na memória – Cria os histogramas – Faz o link entre a sua função de análise e o ScanROOT Funções (fillHistograms) • fillHistograms(short npar, float* par) – O nome dessa função pode variar. • Deve-se ter o cuidado no momento de linkar com o ScanRoot na função bookHistograms – Executada a cada evento – Preenche os histogramas e faz contas com os parâmetros – Pode fazer o que você quiser, inclusive chamar outras funções Analisando os dados: PelTools • • Após os dados serem processados, os histogramas podem ser salvos ou analisados. – Os histogramas podem ser acessados com o Browser, no diretório Scan_Histograms PelTools – Ferramentas para análise de dados • Menu->PelTools Menu – A maioria das operações são realizadas sobre os histogramas na tela gráfica (TCanvas) padrão • Aquela com a borda colorida Fazendo ajustes de picos • Picos podem ser ajustados usando o próprio ROOT – TF1 e hist->Fit() • O pelTools tem uma função de ajuste de picos – Picos gaussianos • simétricos ou não – Fundo polinomial • Procedimento – Desenhe o espectro a ser ajustado na tela (TCanvas) ativa – Ajuste os limites inferior e superior para o ajuste na própria escala do gráfico – Pressione o botão Fit 1D peaks Fazendo ajustes de picos • • • • Ajustar as configurações no painel de ajustes – Tipo de pico – Tipo de fundo Ajustar, se necessário, os limites nos parâmetros do ajuste – Clicar em Details Marcar, com o mouse, as posições dos picos – E larguras, dependendo do tipo de seleção feita Marcar, com o mouse, os pontos a serem utilizados para préajuste do fundo – Se não for marcado, o programa assume o primeiro e último ponto válido para o fit – Se marcar background independente, o ajuste do fundo é feito independentemente dos picos Fazendo ajustes de picos • • • Clicar em Fit para ajustar – Clicar em Fit utiliza os seus parâmetros iniciais para o ajuste. – Clicar em Improve Fit, usa os parâmetros do último Fit como início para uma próxima rodada Clicar em Reset limpa tudo Clicar em Draw, desenha os chutes iniciais Bananas não são abacaxis muito grandes... • • Bananas são poligonais criadas para selecionar regiões de histogramas bi-dimensionais – Bananas no ROOT são objetos da classe TCutG Criando bananas e salvando-as em arquivos – No menu do PelTools clicar em • New cut file (ou Open cut file) • Create cut – Desenhar a banana (duplo clique fecha a banana) • Save current cut – Digitar o nome da banana a ser salva no arquivo Usando bananas e fazendo contas com parâmetros • Receita – Deve-se criar variáveis globais para acomodar os ponteiros para as bananas – Abre-se o arquivo de bananas no bookHistograms • Não fechar os arquivos – Usa a função TCutG->IsInside(x,y) para verificar se o par de parâmetros está ou não dentro da banana • Checar se os parâmetros existem antes aumenta consideravelmente a velocidade de processamento. Exemplo: fazer um espectro calibrado e com vínculo a uma banana Checar a existência dos parâmetros antes das contas aumenta muito a velocidade O vetor par[] contém os dados extraídos do .FIL. Outras grandezas podem ser variáveis normais Use a função IsInside(x,y) para verificar se o par está no interior da banana O arquivo de bananas não deve ser fechado caso contrário o objeto é removido da memória Resultando em... • O programa anterior, cria um espectro bi-dimensional calibrado em energia além de criar um espectro calibrado vinculado a uma banana O que foi visto até aqui • Usar o ROOT se resume em: – Saber um pouco de c++ – Conhecer as classes do ROOT • Muito pode ser feito com algumas classes básicas – Histogramas, gráficos e funções – Ser criativo para aproveitar as ferramentas • O ScanRoot consiste de – Uma série de classes e funções para incluir ferramentas típicas do dia a dia do Pelletron • Processamento dos dados no nosso formato • Como eu posso avançar? – Tentando... • Nesse ambiente, tentar resolver os problemas é a melhor forma de aprendizado... – e perguntando • Sintam-se à vontade para me encher a paciência e para finalizar