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
Download

zero()