Introdução a ROOT Miguel Reis Orcinha

Documentos relacionados
TFCOM Pedro Martins. 3/11/2008 Instituto Superior Técnico - MEFT

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Programação I A Linguagem C. Prof. Carlos Alberto

Ferramentas de Suporte

PROGRAMAÇÃO PARA INTERNET RICA INTRODUÇÃO AO ACTIONSCRIPT 3. Prof. Dr. Daniel Caetano

Animação 2D. Sistemas de Informação e Multimédia Módulo 5

Modelo de plano analitico

16. Compilação no Linux

@2007 João Manuel R. S. Tavares FEUP/DEMEGI/SDI. CFAC Concepção e Fabrico Assistidos por Computador

Mestrado em Engenharia Física Tecnológica

Introdução ao Python. Programa Computacional

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

Estatística e Modelos Probabilísticos - COE241

Programação 2012/2013 1º Semestre MEEC Laboratório 2 Semana de 22 de Outubro de 2012

Estatística e Probabilidade Aula 06 Distribuições de Probabilidades. Prof. Gabriel Bádue

Linguagens de Programação

Mestrado em Engenharia Física Tecnológica

Aula teórica 4. Tema 3. Linguagem de Programação Java. Manipulação de informação simples (cont.)

SCS Sistemas de Controle / Servomecanismos. Aula 01 Introdução ao software MATLAB

I N S T R U Ç Õ E S. Na página com o endereço mat3diogocao.atwebpages.com ir ao separador 7º ano.

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Desenvolvimento de Aplicações Desktop

PROGRAMAÇÃO PARA INTERNET RICA INTRODUÇÃO AO ACTIONSCRIPT 3. Prof. Dr. Daniel Caetano

Computação e Programação. Exame Época Normal

Fundamentos de Lógica e Algoritmos. Aula 3.1 Introdução a Programação. Prof. Dr. Bruno Moreno

Inclusão tecnológica aos discentes do Ensino Fundamental II através do Software R

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

rio de Guerra Eletrônica EENEM 2008 Estatística stica e Probabilidade Aleatórias nuas

Algoritmos Computacionais

PROGRAMAÇÃO I. Introdução

Working 03 : Conceitos Básicos I

Introdução à Programação de Computadores Fabricação Mecânica

Programação Estruturada Aula - Introdução a Linguagem de Programação

Nome: Número: Computação e Programação. Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

ÍNDICE PROGRAMÁTICO DA ACÇÃO DE FORMAÇÃO DE DESENHO ASSISTIDO POR COMPUTADOR, AutoCad 2018

Engenharia de Software

Os princípios do desenho orientado a objetos

Conceitos de programação orientada a objeto

Estatística e Modelos Probabilísticos - COE241

C++ e ROOT via ssh. d0server/access

Estatística e Modelos Probabilísticos - COE241

Capítulo. Introdução. Leia isto primeiro! Neste manual, estes símbolos indicam os seguintes avisos. : Notas importantes. : Notas

Introdução Capítulo 1: Um Olhar sobre as Funcionalidades e Interface do Microsoft Excel

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

Introdução à Computação Parte 2

Microcontroladores PROF. ME. HÉLIO ESPERIDIÃO

Informática Básica. Licenciatura em Ciência da Informação. Tito Carlos S. Vieira. Tito Carlos S. Vieira

Restauração de Imagens

Sexta Lista: Geração de Números Pseudo-Aleatórios e Método de Monte Carlo

SSC510 Arquitetura de Computadores 1ª AULA

Enquadramento e Conceitos Fundamentais

Revisão de distribuições de probabilidades contínuas (Capítulo 6 Levine)

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Pedro Barahona 2016 / 17

Júlio Cézar Moreira Menezes Orientador: Prof. Fermin Garcia Velasco

ÍNDICE GERAL PARTE I PROGRAMAÇÃO PROCEDIMENTAL INTRODUÇÃO 3 2 VISÕES (I 39 OBJETIVOS... 39

Mestrado em Engenharia Física Tecnológica

Instituto Superior de Engenharia de Lisboa

Introdução. PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

2.4 Principais estilos de interacção

Função Fundamental do SO

O Proteo permite que programas PLC e CNC acessem dados armazenados em tabelas, para apenas leitura.

Nome: Número: Computação e Programação Mestrado Integrado em Engenharia Civil Licenciatura Bolonha em Engenharia Geológica e de Minas

Aula 01 Algoritmos e lógica de programação e introdução ao C++

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Processing Aula 2. Prof. Wallace Lages

Domain Logic Patterns. Pedro Lemos N.º Arquitecturas de Software LEIC

VisEdu-MAT: Visualizador de material educacional, módulo de matemática

Distribuição Normal. Prof. Herondino

Computação e Programação Exame 2ª Época

INTRODUÇÃO À COMPUTAÇÃO - EPET006 Aula 3

AULA 02 Distribuição de Probabilidade Normal

Estatística (MAD231) Turma: IGA. Período: 2018/2

Main 01. Geração de 100 eventos (listagem das partículas do primeiro evento).

ESCOLA BÁSICA INTEGRADA DE ANGRA DO HEROÍSMO Plano da Unidade

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Gerando um programa executável a partir de um módulo Python

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Daniel Wildt

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

CEDERJ - CENTRO DE EDUCAÇÃO SUPERIOR A DISTÂNCIA DO ESTADO DO RIO DE JANEIRO

Exercícios de programação

Escola Básica e Secundária de Salvaterra de Magos RELATÓRIO CRÍTICO. Prova de Aptidão Profissional. João Miguel Correia Pereira Nº 5 12º G

Estatística e Modelos Probabilísticos - COE241

VARIÁVEIS ALEATÓRIAS E DISTRIBUIÇÕES DE PROBABILIDADE

Fundamentos de Lógica e Algoritmos Aula 2.5 Conceitos Básicos de Algoritmos. Prof. Dr. Bruno Moreno

Métodos Estatísticos

Instituto Superior Técnico

Aula 01 Algoritmos e lógica de programação e introdução ao C++

MESTRADO EM MACROECONOMIA e FINANÇAS Disciplina de Computação. Aula 01. Prof. Dr. Marco Antonio Leonel Caetano

Probabilidade e Estatística

Programação Básica. Estrutura de um algoritmo

Distribuição Gaussiana

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2

COMPILAÇÃO. Ricardo José Cabeça de Souza

AULA 02 Distribuição de probabilidade normal

Organização de um computador. O que é um computador Organização de um computador Arquitectura de von Neumann

Conceitos avançados de programação. Módulo 8 Programação e Sistemas de Informação Gestão e Programação de Sistemas Informáticos

Organização e Arquitetura de Computadores I

Transcrição:

Introdução a ROOT Miguel Reis Orcinha LIP / IST IST - Lisboa 14 Julho 2016

O que é o ROOT ROOT é uma plataforma de processamento de dados nascida no CERN. ROOT é um pacote de bibliotecas de C++ que permite: Resolver problemas de matemática geral Fazer análise estatística Armazenar e organizar dados de forma muito eficiente Desenhar figuras de diferentes naturezas Desenvolver aplicações gráficas Desenhar geometrias complexas Simular fenómenos físicos Adicionalmente ROOT contém um interpretador de código que permite resolver pequenos problemas do dia-a-dia de forma muito eficaz. 2

O que é OOP Object Oriented Programming (OOP) é um paradigma de programação baseado no conceito de objectos. Estes objectos armazenam e organizam informação, estabelecendo relações entre si. O foco destes programas está nas hierarquias dos objectos e nas interacções que estes têm entre si. Conceitos como herança e polimorfismo são alicerces destas linguagens de programação. 3

Organização do ROOT 4

Utilização do ROOT como biblioteca O ROOT pode ser usado como uma biblioteca de C++. A ferramenta root-config facilita a vida. 5

Utilização do ROOT como interpretador Código C++ pode ser corrido directamente no interpretador do ROOT, permitindo o seu uso no dia-a-dia como uma muito poderosa calculadora. 6

Utilização do ROOT como interpretador Para além de interpretar e executar linhas de código on-the-fly, ROOT permite ainda correr ficheiros com funções que ele interpreta e executa a pedido do utilizador. 7

Utilização do ROOT como interpretador Carregamento das funções para memória Execução das funções Funções que chamam funções 8

Estrutura de uma macro de ROOT Dentro ainda da ideia de pragmatismo, é possível ainda desenvolver pequenas funções (macros) que correm imeditamente com o comando: root <macro_name> Este método é em tudo semelhante ao anterior mas o ficheiro que demos ao ROOT é imediatamente carregado para a memória e a função cujo nome é idêntico ao do ficheiro é imediatamente corrida. 9

Estrutura de uma macro de ROOT 10

O histograma TH1D Um dos alicerces da análise estatística é o histograma. Um histograma é um tipo de gráfico que organiza os dados pela frequência com que estes ocorrem. No ROOT, o histograma unidimensional está desenvolvido na classe TH1. O TH1D corresponde a um histograma em que a altura de cada bin tem uma precisão double. Em termos de funções, são todos iguais! 11

Criação e preenchimento de um TH1D 12

Criação e preenchimento de um TH1D Bin modificado! 13

Ambiente gráfico e o TCanvas Torna-se mais fácil falar de gráficos quando há um ambiente gráfico onde desenhar os histogramas que acabámos de criar. Para tal foi implementado uma classe de janela gráfica TCanvas. 14

Desenho de um histograma Trabalhar com o Tcanvas passa sempre pelos seguintes passos: Criação do canvas Plot das figuras no canvas Salvar a imagem presente no histograma (opcional) 10 9 8 MyHisto myhisto Entries 102 Mean 4.763 Std Dev 2.099 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 15

Manipulação de histogramas O histogram pode ser criado com muitas opções. 7 MyHisto2 myhisto2 Entries 101 Mean 9 Std Dev 5.477 6 5 4 3 2 1 0 2 4 6 8 10 12 14 16 18 220 200 180 160 140 120 100 80 60 40 20 hgaus hresult Entries 1200 Mean 0.6703 Std Dev 1.794 0 5 4 3 2 1 0 1 2 3 4 5 16

Utilidade da manipulação de histogramas 3 10 ] 1.7 [m -2 sr -1 sec -1 GV 14 12 10 8 6 (a) AMS-02 Flux R ~ 2.7 4 2 0 1 10 3 10 Rigidity [GV] 2 10 Protons 3 10 http://dx.doi.org/10.1103/physrevlett.114.171103 17

Cosmética do desenho MyHisto Y 10 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 X 18

Cosmética do desenho Line Color kgreen +4 +3-1 +2-2 -5 kyellow +1-3 -6 0-1 -2-3 -4-5 -6-7 -8-9 kspring 0 +1 +2 +3 +4-1 +10 0 kteal -8 0 +10 +9 +8 +7 +6 +5 +4 +3 +2 +1 +7 +8 +9-4 -3-2 -1-5 -4-3 -2-7 -6-5 kcyan +4 +5 +6 ROOT Color Wheel -9-8 -10 +1 +2 +3-9 -8-7 -6-10 -9-8 -7-6 -5-4 -3-2 -1 0 +1 +2 +3 +4-4 -7-9 -10 +1 korange 0-1 -2-3 -4-5 -6-7 -8-9 kgray +2 +3 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +10 +9 +8 +7 +6 +5 +4 +3 +2 +1 kwhite kblack -9-8 -7-6 -5-4 -3-2 -1 0 kazure +4-1 -5-8 -10-6 -7-8 -9 +3 +2 +1 +3-2 -6-9 +2-3 -2-3 -4-5 +6 +5 +4-10 -7 +1-8 -9-4 +9 +8 +7 kred 0-5 -6-7 0-1 kpink +10-1 -2-3 -9-8 -7-6 -5-4 -3-2 -1 0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10-10 -9-8 -7-6 -5-4 -3-2 -1 0 +1 +2 +3 +4 kblue -4 +4 +3 +2 +1 0 kviolet kmagenta Line Width Line Style 19

A função unidimensional TF1 A TF1 é a classe que define uma função unidimensional que só é função de uma variável X. sin(x) sin(x) 1 0.5 0 0.5 1 0 1 2 3 4 5 6 7 8 9 10 X 20

Manipulação da TF1 A TF1 pode ser definida com parâmetros. [0]*sin([1]*x) sin(x) 1 0.5 0 0.5 1 0 1 2 3 4 5 6 7 8 9 10 X 21

Acesso a dados à C++ Aqui se vê o exemplo de como desenhar scatter plots. Data 9 8 7 6 5 4 3 2 1 2 4 6 8 10 X 22

Acesso a dados usando TGraph Novamente, numa filosofia de simplicidade, se se quiser fazer rapidamente um desenho de um conjunto de dados, pode usar um dos vários constructores do TGraph para o fazer. Data 9 8 7 6 5 4 3 2 1 2 4 6 8 10 X 23

Análise de dados MyHisto Number of hits 8 7 6 5 4 3 2 1 µ = 4.686275 σ = 2.388618 0 0 1 2 3 4 5 6 7 8 9 10 X 24

Ajuste de funções a histogramas Números gerados segundo: Number of hits 20 18 16 14 f(x) =Ae 1 2( x µ ) 2 µ =0 =1 MyHisto 12 10 8 6 4 2 0 5 4 3 2 1 0 1 2 3 4 5 X 25

Ajuste de funções a histogramas Como podemos ver pelo output do programa, conseguimos ajustar razoavelmente o nosso modelo aos dados. f(x) =Ae 1 2( x µ ) 2 µ =0 =1 26

Geração de Aleatórios MyHisto Number of hits 125 µ = 5.021295 σ = 2.909372 120 σ_exp = 2.886751 115 110 105 100 95 90 85 0 1 2 3 4 5 6 7 8 9 10 X Uma média e desvio padrão próximos do esperado para a distribuição uniforme. 27

A área do círculo P circ P quad = r2 (2r) 2 = 4 Y 1 MyHisto 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 π ~ 3.128000 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 X 28

Guardar o resultado num TFile O ROOT tem o seu próprio formato de ficheiros (.root) nos quais é possível guardar qualquer tipo de objecto C++ (pertencente ao ROOT ou não). 29

Ler um TFile Da mesma maneira que lemos, podemos escrever. 30

O objecto TTree O ROOT tem um objecto que funciona como uma tabela de dados. 31

Ler dados de uma TTree A leitura funciona de uma forma muito semelhante. Y 1 MyHisto 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 X 32

TBrowser 33

Agradecimentos Obrigado! 34