Escolar Documentos
Profissional Documentos
Cultura Documentos
Caio Laganá
1
Sumário
1 Introdução 3
2 Instalando o ROOT 3
3 Funções 4
3.1 O tipo TF1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 Fórmulas pré-definidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2.1 Funções elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2.2 Trigonométricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2.3 Hiperbólicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2.4 Exponencial e logaritmica . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3 Rotinas associadas à classe TF1 . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.4 Funções com parâmetros ajustáveis . . . . . . . . . . . . . . . . . . . . . . . 7
3.5 Opções de desenho TF1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.6 Funções de 2 variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.7 Opções de desenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.8 Funções de 3 variáveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Gráficos 8
4.1 Criando um gráfico a partir de um arquivo de dados . . . . . . . . . . . . . 8
4.2 Ajustando uma curva sobre uma gráfico . . . . . . . . . . . . . . . . . . . . 9
4.3 Opções de desenho TGraph . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Histogramas 11
5.1 O tipo TH1F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
6 Macros 14
7 Tópicos especiais 15
7.1 Números aleatórios no ROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.2 LATEX no ROOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7.3 Dicas sobre histogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2
1 Introdução
2 Instalando o ROOT
Por hora, informações sobre a instalação estão disponı́veis no site oficial do ROOT
root.cern.ch
https://sites.google.com/site/caiolagana/linux
3
3 Funções
No ROOT, uma função é uma variável do tipo TF1 (Type Function 1-variable). A
sequência de comandos a seguir cria e desenha uma função seno no intervalo [0,5].
O comando da linha [1] declara uma variável do tipo TF1 chamada funcao (assim
como o comando int i; declara uma variável do tipo int chamada i). A seguir, na
linha [2], essa variável recebe seus atributos: tı́tulo, fórmula e intervalo (analogamente ao
comando i = 5; onde a variável i recebe seu atributo: o valor 5). Finalmente, na linha
[3], é desenhado o gráfico dessa variável. O resultado dessa sequência de comandos pode
ser visto na figura 1.
O ROOT tem uma série de fórmulas pré-definidas que podem ser utilizadas para mon-
tar sua função. As principais delas serão listadas a seguir.
4
3.2.1 Funções elementares
3.2.2 Trigonométricas
3.2.3 Hiperbólicas
Variáveis do tipo TF1 têm uma série de rotinas associadas a ela. Por exemplo, o
comando
funcao->Draw()
5
excecuta a rotina Draw() associada à variável funcao. Essa rotina desenha o gráfico da
função. De forma análoga, por exemplo, o comando
funcao->Integral(0, 1)
funcao->Draw()
funcao->DrawDerivative()
funcao->DrawIntegral()
funcao->SetTitle()
funcao->SetLineColor()
funcao->SetLineStyle()
funcao->SetLineWidth()
funcao->GetMaximum()
funcao->GetMaximumX()
// desenha funcao1
funcao1->Draw()
// cria funcao f
TF1 *f = new TF1("funcao", "log(3*x)", 5, 8)
// desenha a funcao f
f->Draw()
// cria funcao f
TF1 *f = new TF1("funcao", "x*sin(x)", -3, 5)
6
Para saber como utilizar determinada função, deixe o parênteses aberto e aperte a
tecla TAB, que aparecerá quais são os parâmetros de entrada.
7
Figura 2: O estilo de linha de uma função pode ser alterado através do comando
funcao->SetLineStyle(3).
Figura 3: A cor de linha de uma função pode ser alterada através do comando
funcao->SetLineColor(5).
4 Gráficos
// desenha o grafico
grafico->Draw("ap")
8
Figura 4: A espessura da linha de uma função pode ser alterada através do comando
funcao->SetLineWidth(2).
A primeira linha declara e cria o gráfico, dando como entrada o arquivo dados.txt.
É importante que o ROOT seja aberto no mesmo diretório onde se encontra o arquivo
dados.txt, ou que seja dada a localização completa do arquivo, por exemplo "/home/user/dados.txt.
Neste arquivo, os dados devem se encontrar em duas colunas, a primeira com os valores x
e a segunda com os valores y.
A segunda linha muda o estilo dos pontos do gráfico para o estilo número 7, que é
mais visı́vel que o estilo “default” do ROOT.
Finalmente a terceira linha desenha o gráfico. A opção "ap na função Draw() sig-
nifica para desenhar os eixos (axes) e os pontos do gráfico (poins). Caso nenhuma opção
seja dada no comando ->Draw(), o gráfico não será desenhado.
O exemplo de um gráfico criado a partir de um conjunto de dados pode ser visto na
figura 5.
9
Figura 5: Exemplo de gráfico criado com o ROOT.
parâmetros ([0] e [1]) da melhor maneira1 ao gráfico gr1. O ajuste de uma reta sobre o
gráfico da Figura 5 pode ser visto na Figura 6.
A função a ser ajustada deve conter pelo menos um parâmetro variável [0] para
que o ajuste possa ser feito.
1
Ele escolhe os parâmetros de forma a minimizar o χ2 .
10
Figura 6: Ajuste de uma reta sobre um gráfico.
5 Histogramas
No ROOT, histogramas são criados em dois passos. Primeiro é preciso criar uma
variável do tipo TH1F (Type Histogram 1-Dimensional Float), onde é especificada a bi-
nagem do histograma: x-mı́nimo, x-máximo e número de bins. A sequência de comandos
a seguir executa essa tarefa.
11
Figura 8: Histograma criado no ROOT.
// define variaveis
float n bins = 10;
float x min = 0;
float x max = 10;
// cria histograma
TH1F *hist = new TH1F("nome", "titulo", n bins, x min, x max)
No exemplo acima, foi criado um histograma que vai de 0 a 10 em 10 passos. A
seguir é preciso preencher esse histograma com dados. Isso é feito através do comando
Fill(), como exemplificado a seguir.
// preenche histograma com dados
hist->Fill(1)
hist->Fill(8.3)
hist->Fill(0.2)
hist->Fill(2)
hist->Fill(5)
hist->Fill(2.4)
// desenha o histograma
hist->Draw()
O histograma resultante de todos esses comandos pode ser visto na figura 8.
A criação de histogramas “manualmente”, dando ->Fill() para cada dado, não
é a maneira mais prática de se fazer isso. Infelizmente, não existe um comando que
crie o histograma a partir de um conjunto de dados, como no caso dos gráficos TGraph
e TGraphErrors. Para automatizar a criação de histogramas é preciso utilizar macros,
12
assunto que será discutido a seguir.
13
6 Macros
Uma macro é um conjunto de comandos definidos pelo autor que são executados
automaticamente pelo ROOT. Por exemplo, o conjunto de comandos a seguir, compreendidos
entre { e }, definem uma macro.
{
TF1 *f = new TF1("parabola", "3*x^2", -2, 3);
f->SetLineWidth(2);
f->SetLineColor(kRed);
}
A pergunta é: como executar todos esses comandos de uma só vez no ROOT? Em
outras palavras, como rodar essa macro no ROOT? A resposta é excitantemente simples:
crie um arquivo .C (por exemplo macro exemplo.C) com os comandos da sua macro entre
{ e }, abra o ROOT no mesmo diretório onde o arquivo foi criado e digite o comando
.x macro exemplo.C
A sua macro será executada (o .x vem de execute)
// abre arquivo
ifstream arquivo("dados.txt");
// le dados do arquivo
for (i = 0; !arquivo.eof(); i++)
y.push back(float aux << arquivo);
y.push back(float aux << arquivo);
14
7 Tópicos especiais
Para usar comandos LATEX no ROOT basta utilizar o caractere # antes do comando,
como no exemplo a seguir, cujo resultado se encontra na figura 9.
TF1 *funcao = new TF1("titulo", "1/x", 1, 10);
funcao->GetXaxis()->SetTitle("#theta (graus)");
funcao->GetYaxis()->SetTitle("d#sigma/d#Omega");
funcao->SetTitle("#mu + e #rightarrow #mu + e");
funcao->Draw();
Normalizando um histograma a 1:
hist->Scale(1/hist->Integral())
Centralizando o label do bin
hist->GetXaxis()CenterLabels();hist->Draw();
15