Analysis Open Space
Introdução
Este é um espaço para que sejam discutidas questões relacionadas a análises desenvolvidas no grupo do SPRACE. Objetivos e condutas gerais são:
- Colocar para o grupo problemas de caráter técnico (CMSSW, ROOT, condorg, crab, etc...) ou físico (questões teóricas)
- Todos estão convidados a responder/opinar sobre os problemas colocados
- Perguntas e respostas devem ser mantidas na página para referência futura
- Coloque seu nome entre parêntesis ao fazer uma pergunta ou dar uma resposta
Open Space
Espaço para questões. Crie uma nova questão com
---+++
para que ela apareça no sumário no topo da página (como no Exemplo 1 abaixo).
Exemplo 1: Como uso LaTeX no ROOT?
(Fulano) Preciso fazer o título de um gráfico com símbolo LaTeX, como faço?
(Cicrano) É só usar # antes do comando (ao invés de usar /)
(Beutrano) Por exemplo
->SetTitle("#theta (graus)")
(Fulano) Ok, resolvido
Histogramas de 4 ou mais dimensões no ROOT
(Caio) Sei que é possível fazer histogramas de até 10 dimensões no ROOT. Como declará-los e manipular seu conteúdo?
ROOT: Dois Pads num Canvas sem o espaço em branco
(Angelo) Já vi no ROOT casos em que dois Pads (um em cima do outro) aparecem num único Canvas, mas sem a linha branca que aparece entre dois Pads quando se usa, por exemplo:
canvas->Divide(1,2)
canvas->cd(1)
canvas->cd(2)
Por exemplo: o Pad superior mostraria dois histogramas (data/MC), enquanto que o inferior mostraria algo como "(Data - MC)/sigma". Acredito que não se trata de usar canvas->Divide(1,2). Porém, deve haver alguma forma de dizer onde começa e onde termina cada Pad. Alguma idéia?
(Caio) Estava fazendo uns testes e encontrei essa opção:
//faz o seu Canvas
TCanvas *canvas = new TCanvas();
//depois cria dois Pads
TPad *pad1 = new TPad();
TPad *pad2 = new TPad();
//e desenha seus pads dentro do canvas
canvas->cd();
pad1->Draw();
pad2->Draw();
//os pads vao cobrir todo o canvas, precisa ir com o mouse e redimensionar eles
//note que o pad2 vai ficar por cima do pad1
//aí vc desenha seu gráfico principal no pad1
pad1->cd();
grafico->Draw("ap");
//e o de residuos no pad 2
pad2->cd();
residuos->Draw();
//ai tem que ajustar com o mouse pro pad2 ficar por cima do eixo-X do pad 1
Esse gráfico é um exemplo de como as coisas podem ficar, e
esse é o arquivo root correspondente. É uma solução meio grosseira, mas funcional. Alguma idéia melhor?
(Angelo) Após testar o seu método, achei uma novo caminho que permite fazer tudo automático sem a necessidade de usar o mouse. Basta colocar as dimensões correspondentes do pad usando Pad(), além de funcões como SetTopMargin() e SetBottomMargin():
TCanvas *canvas = new TCanvas();
canvas->cd();
// Aqui você declara as dimensões do pad superior, por exemplo.
// A ordem correta é TPad("", "", xMin, yMin, xMax, yMax)
TPad *pad1 = new TPad("pad1","",0.,0.3,1.,1.);
pad1->Draw();
pad1->cd();
// Desapareça com que o espaço em branco na parte de baixo do pad superior.
pad1->SetBottomMargin(0.);
// Se preferir, apague o label e o título do eixo "x" do gráfico superior.
grafico1->GetXaxis()->SetLabelSize(0.);
grafico1->GetXaxis()->SetTitleSize(0.);
grafico1->Draw();
canvas->cd();
// Aqui o pad inferior é declarado.
// Veja que o eixo vertical ("y") do pad2 termina onde o pad1 começa.
TPad *pad2 = new TPad("pad2","",0.,0.,1.,0.3);
pad2->Draw();
pad2->cd();
// Desapareça com que o espaço em branco no top do pad inferior
pad2->SetTopMargin(0.0);
// Diga ao ROOT onde que o gráfico do pad inferior vai ser iniciado.
// Isto é importante para permitir que o label do eixo "x" apareça e não seja cortado.
pad2->SetBottomMargin(0.2);
// É provável que não seja possível ver o label do gráfico do pad2, pois pode
// estar automaticamente com tamanho "0".
// Caso isso acontença, forneça o tamanho do label e do título. Por exemplo:
grafico2->GetXaxis()->SetLabelSize(0.07);
grafico2->GetXaxis()->SetTitleSize(0.07);
grafico2->Draw();
(CMSSW) Como encontrar Monte Carlo correspondente ao conjunto de dados
(Caio) Preciso encontrar o MC correspondente a um determinado conjunto de dados. O MC deve simular o alinhamento/funcionamento do detector durante aquela tomada de dados. Como fazer isso? Nesse caso os dados são:
/MinimumBias/Run2010A-Apr21ReReco-v1/RECO
com
CMSSW_4_2_1_patch1
e global tag
FT_R_42_V10A
.
Esse link tem informações sobre os dados de 2010 e
esse outro sobre os MC, mas como relacionar esses dados com esses MCs? Qual MC corresponde a qual dado? Tem a ver com a estação do ano?
Como construir histogramas com bins não homogêneos?
(Angelo) Esse é um exemplo de como plotar histogramas com bins variáveis (Franciole's example):
void variable_bin(){
//histo with variable size bins
//# of bins = 3
int nbins = 3;
//# of edges. Includes the lowest and highest
const int nedges = nbins+1;
//Defines edges
float xbins[nedges] = {0.0,1.0,3.0,6.0};
//creates histo
TH1F *hvar = new TH1F("hvar","hvar title",nbins,xbins);
//Writes width of all bins
//Note bin zero is reserved for other purposes (see ROOT documentation)
//size will be equals to 1
std::cout << "first bin size: " << hvar->GetBinWidth(1) << std::endl;
std::cout << "second bin size: " << hvar->GetBinWidth(2) << std::endl;
std::cout << "third bin size: " << hvar->GetBinWidth(3) << std::endl;
}
Encontrando datasets
(Caio) No CMS, dados são encontrados no site
DAS, que é uma versão melhorada do
DBS. O DAS é muito mais rápido que o DBS, entretanto me parece que as informações sobre os dados no DBS são mais completas que do DAS. Assim, a melhor opção é fazer sua busca pelo DAS e, quando encontrar o conjunto e dados certo, ir para o DBS para pegar todas as informações.
Exemplos de comandos DAS para busca de dados
-
dataset = /Min*Bias*TuneZ2*7TeV*pythia6*Summer11*AODSIM
(Asterisco vale como caractere "coringa", e.g. são semelhantes: "heavy_ion" "h*y_ion" "heav*y_ion" "heavy_ion*"
-
dataset = /MinimumBias/Run2010A*AOD
-
block = /MinimumBias/Run2010A-Apr21ReReco-v1/AOD#f9fe2e80-703d-11e0-9135-003048f1c5d0
-
release dataset = *7TeV*pythia*GEN-SIM-RECO
Mostra todas as releases do CMSSW que tem esse dataset
-
dataset release = CMSSW_4_2_1_patch1
Mostra todos os datasets que têm essa release do CMSSW
-
dataset site = T2_BR_SPRACE
Mostra todos os datasets no site do SPRACE
Utilizando condorg
(Franciole) Temos utilizado o cluster com o condorg para fazer parte de nossas analises. Os jobs variam desde producao de ntuplas, pequenas producoes de MC, codigos privados do ROOT e por ai vai. No entanto, temos cada um uma solucao particular para seu problema. Sera que poderiamos partilhar essas solucoes? Sera que isso ajudaria num futuro proximo?
--
CaioLagana - 18 Jul 2011