A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Alexandre Suaide aula 4 c++ e Root. Programa Aula 1 –Introdução ao c++ e ROOT –c++ básico Aula 2 –Ponteiros/referências –Usando ponteiros  cálculo de.

Apresentações semelhantes


Apresentação em tema: "Alexandre Suaide aula 4 c++ e Root. Programa Aula 1 –Introdução ao c++ e ROOT –c++ básico Aula 2 –Ponteiros/referências –Usando ponteiros  cálculo de."— Transcrição da apresentação:

1 Alexandre Suaide aula 4 c++ e Root

2 Programa Aula 1 –Introdução ao c++ e ROOT –c++ básico Aula 2 –Ponteiros/referências –Usando ponteiros  cálculo de cinemática Aula 3 –Classes e objetos –ROOT como ferramenta de programação/análise Aula 4 –Classes e objetos no ROOT Aula 5 –Análise de dados no Pelletron (ScanROOT)

3 Gravando objetos em arquivos.root Ok, criei meus gráficos, histogramas, funções ou qualquer outro objeto do ROOT. Como eu posso armazená-los? O Root possui um sistema de arquivos complexos, onde TODOS os seus objetos podem ser salvos em um arquivo com estrutura de diretórios. TFile –Classe do ROOT para abrir, ler, gravar e manipular arquivos.root

4 TFile: Gravando objetos em um arquivo Uso –TFile f(“nome_do_arquivo”,”opções”); –TFile* f = new TFile(“nome_do_arquivo”,”opções”); Opções –NEW ou CREATE – Abre o arquivo para escrita. Se o arquivo já existir, nada acontece –RECREATE – Abre a arquivo para escrita. Se o arquivo já existir, escreve por cima. –READ (ou sem opção) – Abre o arquivo para leitura. Gravando e lendo objetos –Para gravar, use a função Write() dos objetos a serem gravados –Para ler, use a função Get(“nome”) do objeto TFile

5 Gravando objetos no arquivo (Write) Criamos vários objetos em vários exemplos. Como podemos gravá-los em um arquivo? TFile file("teste.root","RECREATE"); file.cd(); // muda o diretorio padrão para o arquivo criado g->Write(); dedx->Write(); f->Write(); h->Write(); h2->Write(); projTotal->Write(); projBins->Write(); file.ls(); // lista o conteudo do arquivo file.Close(); // fecha o arquivo

6 Lendo objetos do arquivo (Get) Como eu recupero o histograma “h2” do arquivo? –O importante são os nomes dos objetos, que se obtém a partir do método ls() da classe TFile. TFile file("teste.root"); // abrir para leitura file.cd(); TH2F* myhist = (TH2F*)file.Get(“h2”); myhist->Draw(“colz”); Importante!!! –Não feche o arquivo enquanto estiver trabalhando com o histograma, pois o mesmo será removido da memória

7 ROOT e a interface gráfica O uso do ROOT em linha de comando é bastante útil –Permite automatizar as tarefas –Possibilidades praticamente ilimitadas –Análises complexas Porém, muitos atributos podem ser alterados graficamente –Torna a manipulação mais fácil e intuitiva no mundo “for windows” atual O ROOT possui uma interface gráfica com recursos complexos (e em expansão).

8 TBrowser Interface gráfica para navegar os arquivos e objetos na memória do computador new TBrowser();

9 TCanvas Janela gráfica para uso geral (use botão da direita para menus) new TCanvas();

10 TCanvas (editor e toolbar)

11 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

12 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()

13 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

14 Acessando os histogramas com TBrowser Abrir uma janela do browser –Menu -> PelTools Menu -> Browser Os histogramas ficam armazenados no diretórios SCAN_Histograms

15 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

16 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

17 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...

18 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.

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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.

28 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

29 Resultando em... O programa anterior, cria um espectro bi-dimensional calibrado em energia além de criar um espectro calibrado vinculado a uma banana

30 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

31 e para finalizar


Carregar ppt "Alexandre Suaide aula 4 c++ e Root. Programa Aula 1 –Introdução ao c++ e ROOT –c++ básico Aula 2 –Ponteiros/referências –Usando ponteiros  cálculo de."

Apresentações semelhantes


Anúncios Google