Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
535
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
8
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ROOTIntrodu¸˜o caInforma¸˜es coDesafiosGrid O Framework ROOTB´sico a N˜o apenas para f´ a ısicosSerializa¸˜o caHTMLTTreeInterpretadorPorquˆe Marcelo Zimbres SilvaOp¸˜es co B mzimbres@gmail.comSum´rio a Encontro do grupo C++ Brasil
  • 2. Outline ROOT 1 Introdu¸˜o caIntrodu¸˜o ca Informa¸˜es importantes sobre o ROOT coInforma¸˜es coDesafios Os desafios do LHCGridB´sico a O GridSerializa¸˜o caHTMLTTree 2 T´picos b´sicos importantes. o aInterpretador Dicion´rios: Serializa¸˜o a caPorquˆeOp¸˜es co Como gerar documenta¸˜o HTML caSum´rio a Como armazenar e processar dados 3 Usando C++ interpretado Vantagens e desvantagens de C++ interpretado Cint e Cling
  • 3. Outline ROOT 1 Introdu¸˜o caIntrodu¸˜o ca Informa¸˜es importantes sobre o ROOT coInforma¸˜es coDesafios Os desafios do LHCGridB´sico a O GridSerializa¸˜o caHTMLTTree 2 T´picos b´sicos importantes. o aInterpretador Dicion´rios: Serializa¸˜o a caPorquˆeOp¸˜es co Como gerar documenta¸˜o HTML caSum´rio a Como armazenar e processar dados 3 Usando C++ interpretado Vantagens e desvantagens de C++ interpretado Cint e Cling
  • 4. Outline ROOT 1 Introdu¸˜o caIntrodu¸˜o ca Informa¸˜es importantes sobre o ROOT coInforma¸˜es coDesafios Os desafios do LHCGridB´sico a O GridSerializa¸˜o caHTMLTTree 2 T´picos b´sicos importantes. o aInterpretador Dicion´rios: Serializa¸˜o a caPorquˆeOp¸˜es co Como gerar documenta¸˜o HTML caSum´rio a Como armazenar e processar dados 3 Usando C++ interpretado Vantagens e desvantagens de C++ interpretado Cint e Cling
  • 5. Informa¸oes sobre o ROOT c˜ ROOT Sobre o Framework: 2500 classes divididas em 100 shared libs.Introdu¸˜o caInforma¸˜es co 7 desenvolvedores fixos mais Fermilab e colaboradores.DesafiosGrid Mais de 20.000 usu´rios. aB´sico aSerializa¸˜o ca Iniciado em 1995. Licen¸a GNU LGPL. cHTMLTTree Desenvolvido no Cern:InterpretadorPorquˆe Labor´torio de f´ a ısica de altas energias.Op¸˜es coSum´rio a Mesmo lugar onde inventaram o www . . . . . . e tamb´m onde se criariam buracos negros. e LHC e Cern criaram ≈ 50 milh˜es de linhas de c´digo. o o Membro do comite do padr˜o C++. Assim como o a Fermilab Usando C++ desde o come¸o dos anos 1990. c
  • 6. Informa¸oes sobre o ROOT c˜ ROOT Sobre o Framework: 2500 classes divididas em 100 shared libs.Introdu¸˜o caInforma¸˜es co 7 desenvolvedores fixos mais Fermilab e colaboradores.DesafiosGrid Mais de 20.000 usu´rios. aB´sico aSerializa¸˜o ca Iniciado em 1995. Licen¸a GNU LGPL. cHTMLTTree Desenvolvido no Cern:InterpretadorPorquˆe Labor´torio de f´ a ısica de altas energias.Op¸˜es coSum´rio a Mesmo lugar onde inventaram o www . . . . . . e tamb´m onde se criariam buracos negros. e LHC e Cern criaram ≈ 50 milh˜es de linhas de c´digo. o o Membro do comite do padr˜o C++. Assim como o a Fermilab Usando C++ desde o come¸o dos anos 1990. c
  • 7. Caracter´ ısticas mais importantes ROOT Salvar seus objetos em arquivo .root. Armazenamento eficiente de dados.Introdu¸˜o caInforma¸˜es co Otimizado para acesso remoto.DesafiosGrid An´lise estat´ a ıstica avan¸ada. cB´sico aSerializa¸˜o ca Facilidades para processamento paralelo.HTMLTTree Visualiza¸˜o de gr´ficos 2D e 3D. ca aInterpretadorPorquˆe Classes em que vamos focar:Op¸˜es coSum´rio a TFile TObject Tree cd IsA GetEntries ls IsOnHeap MakeSelector mkdir Write Process rmdir Draw Fill
  • 8. Caracter´ ısticas mais importantes ROOT Salvar seus objetos em arquivo .root. Armazenamento eficiente de dados.Introdu¸˜o caInforma¸˜es co Otimizado para acesso remoto.DesafiosGrid An´lise estat´ a ıstica avan¸ada. cB´sico aSerializa¸˜o ca Facilidades para processamento paralelo.HTMLTTree Visualiza¸˜o de gr´ficos 2D e 3D. ca aInterpretadorPorquˆe Classes em que vamos focar:Op¸˜es coSum´rio a TFile TObject Tree cd IsA GetEntries ls IsOnHeap MakeSelector mkdir Write Process rmdir Draw Fill
  • 9. Motiva¸oes para se criar o ROOT c˜ ROOT Como tudo come¸ou: c ”In the mid 90s, the fortram libraries had reached theirIntrodu¸˜o ca limits”Informa¸˜es coDesafiosGrid ”They could not scale with the challenges offered by LHC”B´sico a ”Computer science had made progresses in OO Design”Serializa¸˜o caHTMLTTree N´meros: uInterpretador Somente no CMS, armazenar 100 MB/s.PorquˆeOp¸˜es co Armazenar e analisar 15 Peta bytes de dados por ano.Sum´rio a Peta = 1000*Tera = 106 Giga. Suficiente para encher ≈ 3.4 milh˜es de DVDs. o O Cern ´ capaz de processar apenas 20% dos dados. e Somente com o grid isso seria poss´ ıvel!
  • 10. Motiva¸oes para se criar o ROOT c˜ ROOT Como tudo come¸ou: c ”In the mid 90s, the fortram libraries had reached theirIntrodu¸˜o ca limits”Informa¸˜es coDesafiosGrid ”They could not scale with the challenges offered by LHC”B´sico a ”Computer science had made progresses in OO Design”Serializa¸˜o caHTMLTTree N´meros: uInterpretador Somente no CMS, armazenar 100 MB/s.PorquˆeOp¸˜es co Armazenar e analisar 15 Peta bytes de dados por ano.Sum´rio a Peta = 1000*Tera = 106 Giga. Suficiente para encher ≈ 3.4 milh˜es de DVDs. o O Cern ´ capaz de processar apenas 20% dos dados. e Somente com o grid isso seria poss´ ıvel!
  • 11. Motiva¸oes para se criar o ROOT c˜ ROOT Como tudo come¸ou: c ”In the mid 90s, the fortram libraries had reached theirIntrodu¸˜o ca limits”Informa¸˜es coDesafiosGrid ”They could not scale with the challenges offered by LHC”B´sico a ”Computer science had made progresses in OO Design”Serializa¸˜o caHTMLTTree N´meros: uInterpretador Somente no CMS, armazenar 100 MB/s.PorquˆeOp¸˜es co Armazenar e analisar 15 Peta bytes de dados por ano.Sum´rio a Peta = 1000*Tera = 106 Giga. Suficiente para encher ≈ 3.4 milh˜es de DVDs. o O Cern ´ capaz de processar apenas 20% dos dados. e Somente com o grid isso seria poss´ ıvel!
  • 12. Analise distribu´ em v´rios centros no Mundo ıda a Rede conhecida como: Grid ROOT O Grid:Introdu¸˜o ca ca ıses. O(105 ) CPUs. 140 centros de computa¸˜o em 34 pa´Informa¸˜es coDesafiosGrid 11 centros Tier-1. 160 Tier-2 (um em SP).B´sico a Conex˜o de 10GB/s conectam os centros ao Cern. aSerializa¸˜o caHTMLTTree Sprace (2012) em S˜o Paulo: aInterpretadorPorquˆe 80 servidores totalizando 850 batch slots deOp¸˜es co processamento.Sum´rio a 720 TB de armazenamento. Conex˜o de 5 Gbps com o Fermilab provido pela ANSP. a Arquivos .root de alguns TB analisados no cluster. Arquivos analisados da ordem de GB.
  • 13. Analise distribu´ em v´rios centros no Mundo ıda a Rede conhecida como: Grid ROOT O Grid:Introdu¸˜o ca ca ıses. O(105 ) CPUs. 140 centros de computa¸˜o em 34 pa´Informa¸˜es coDesafiosGrid 11 centros Tier-1. 160 Tier-2 (um em SP).B´sico a Conex˜o de 10GB/s conectam os centros ao Cern. aSerializa¸˜o caHTMLTTree Sprace (2012) em S˜o Paulo: aInterpretadorPorquˆe 80 servidores totalizando 850 batch slots deOp¸˜es co processamento.Sum´rio a 720 TB de armazenamento. Conex˜o de 5 Gbps com o Fermilab provido pela ANSP. a Arquivos .root de alguns TB analisados no cluster. Arquivos analisados da ordem de GB.
  • 14. Analise distribu´ em v´rios centros no Mundo ıda a Rede conhecida como: Grid ROOTIntrodu¸˜o caInforma¸˜es coDesafiosGridB´sico aSerializa¸˜o caHTMLTTreeInterpretadorPorquˆeOp¸˜es coSum´rio a
  • 15. Outline ROOT 1 Introdu¸˜o caIntrodu¸˜o ca Informa¸˜es importantes sobre o ROOT coInforma¸˜es coDesafios Os desafios do LHCGridB´sico a O GridSerializa¸˜o caHTMLTTree 2 T´picos b´sicos importantes. o aInterpretador Dicion´rios: Serializa¸˜o a caPorquˆeOp¸˜es co Como gerar documenta¸˜o HTML caSum´rio a Como armazenar e processar dados 3 Usando C++ interpretado Vantagens e desvantagens de C++ interpretado Cint e Cling
  • 16. O que n´s gostar´ o ıamos de fazer em C++ ROOT Motiva¸˜o: ca Os experimentos usam C++ para analisar dados.Introdu¸˜o caInforma¸˜es co Dados s˜o objetos C++. aDesafiosGrid Queremos salvar objetos e depois lˆ-los novamente. eB´sico a std::cout n˜o ´ uma op¸˜o para 15 PB. a e caSerializa¸˜o caHTMLTTree Gostar´ ıamos de poder salvar os objetos diretamente:InterpretadorPorquˆOp¸˜es co e TNamed* obj1 = new TNamed(”nome”);Sum´rio a ... std::write(”arquivo.bin”,obj1); E ler os objetos da forma: ... TNamed* obj2 = std::read(”arquivo.bin”,”nome”);
  • 17. O que n´s gostar´ o ıamos de fazer em C++ ROOT Motiva¸˜o: ca Os experimentos usam C++ para analisar dados.Introdu¸˜o caInforma¸˜es co Dados s˜o objetos C++. aDesafiosGrid Queremos salvar objetos e depois lˆ-los novamente. eB´sico a std::cout n˜o ´ uma op¸˜o para 15 PB. a e caSerializa¸˜o caHTMLTTree Gostar´ ıamos de poder salvar os objetos diretamente:InterpretadorPorquˆOp¸˜es co e TNamed* obj1 = new TNamed(”nome”);Sum´rio a ... std::write(”arquivo.bin”,obj1); E ler os objetos da forma: ... TNamed* obj2 = std::read(”arquivo.bin”,”nome”);
  • 18. O que n´s gostar´ o ıamos de fazer em C++ ROOT Motiva¸˜o: ca Os experimentos usam C++ para analisar dados.Introdu¸˜o caInforma¸˜es co Dados s˜o objetos C++. aDesafiosGrid Queremos salvar objetos e depois lˆ-los novamente. eB´sico a std::cout n˜o ´ uma op¸˜o para 15 PB. a e caSerializa¸˜o caHTMLTTree Gostar´ ıamos de poder salvar os objetos diretamente:InterpretadorPorquˆOp¸˜es co e TNamed* obj1 = new TNamed(”nome”);Sum´rio a ... std::write(”arquivo.bin”,obj1); E ler os objetos da forma: ... TNamed* obj2 = std::read(”arquivo.bin”,”nome”);
  • 19. Serializando um objeto no ROOT ROOT Necess´rio: a Saber o tipo do objeto: RTTI. Esquema:Introdu¸˜o caInforma¸˜es co Quais os atributos do tipo: Reflex˜o aDesafiosGrid Quais os tamanhos dos atributos: Plataforma. HeaderB´sico aSerializa¸˜o ca Onde os atributos est˜o na mem´ria: a oHTMLTTree Introspec¸˜o caInterpretador ParserPorquˆe Muito al´m do que C++ oferece. eOp¸˜es coSum´rio a Precisamos de ”dicion´rios” para descrever o a c´digo. o Dicionario O ROOT usa ”Dicion´rios”: a C´digo C++ que descreve os tipos. o Gerado com informa¸˜o dos headers. ca I/O 20% TClass, 30% reflex˜o, 50% stubs. a
  • 20. Serializando um objeto no ROOT ROOT Necess´rio: a Saber o tipo do objeto: RTTI. Esquema:Introdu¸˜o caInforma¸˜es co Quais os atributos do tipo: Reflex˜o aDesafiosGrid Quais os tamanhos dos atributos: Plataforma. HeaderB´sico aSerializa¸˜o ca Onde os atributos est˜o na mem´ria: a oHTMLTTree Introspec¸˜o caInterpretador ParserPorquˆe Muito al´m do que C++ oferece. eOp¸˜es coSum´rio a Precisamos de ”dicion´rios” para descrever o a c´digo. o Dicionario O ROOT usa ”Dicion´rios”: a C´digo C++ que descreve os tipos. o Gerado com informa¸˜o dos headers. ca I/O 20% TClass, 30% reflex˜o, 50% stubs. a
  • 21. Como gerar dicion´rios. a ROOT Declarando a classe:Introdu¸˜o ca Macros ClassDef e ClassImp: TObjectInforma¸˜es coDesafios TObject: Protocolo para as classes.Grid WriteB´sico aSerializa¸˜o ca class pessoa: public TNamed {HTMLTTree private: TNamedInterpretador int fIdade;PorquˆOp¸˜es co e public: GetNameSum´rio a pessoa(): TNamed(”Marcelo”), fIdade(31) {} ˜pessoa() {} pessoa int GetIdade() const {return fIdade;} ClassDef(pessoa,1); GetIdade }; // Adicionar ClassImp(pessoa); a pessoa.cxx
  • 22. Como gerar dicion´rios. a ROOT Declarando a classe:Introdu¸˜o ca Macros ClassDef e ClassImp: TObjectInforma¸˜es coDesafios TObject: Protocolo para as classes.Grid WriteB´sico aSerializa¸˜o ca class pessoa: public TNamed {HTMLTTree private: TNamedInterpretador int fIdade;PorquˆOp¸˜es co e public: GetNameSum´rio a pessoa(): TNamed(”Marcelo”), fIdade(31) {} ˜pessoa() {} pessoa int GetIdade() const {return fIdade;} ClassDef(pessoa,1); GetIdade }; // Adicionar ClassImp(pessoa); a pessoa.cxx
  • 23. Exemplo do c´digo para salvar seus objetos o Arquivos .root ROOT Salvando:Introdu¸˜o caInforma¸˜es co TFile f(”familia.root”,”recreate”); TObjectDesafios pessoa pai(”Jo˜o”); aGrid WriteB´sico a pessoa mae(”Maria”);Serializa¸˜o ca pai.Write();HTMLTTree mae.Write(); TNamedInterpretadorPorquˆOp¸˜es co e GetNameSum´rio a Lendo: TFile f(”familia.root”); pessoa TObject* obj1 = f.Get(”Jo˜o”); a GetIdade TObject* obj2 = f.Get(”Maria”);
  • 24. Exemplo do c´digo para salvar seus objetos o Arquivos .root ROOT Salvando:Introdu¸˜o caInforma¸˜es co TFile f(”familia.root”,”recreate”); TObjectDesafios pessoa pai(”Jo˜o”); aGrid WriteB´sico a pessoa mae(”Maria”);Serializa¸˜o ca pai.Write();HTMLTTree mae.Write(); TNamedInterpretadorPorquˆOp¸˜es co e GetNameSum´rio a Lendo: TFile f(”familia.root”); pessoa TObject* obj1 = f.Get(”Jo˜o”); a GetIdade TObject* obj2 = f.Get(”Maria”);
  • 25. Um arquivo .root ´ parecido com um diret´rio e o Unix ROOT TObjectIntrodu¸˜o ca Para gerar um arquivo com diret´rios: oInforma¸˜es coDesafiosGrid TFile social(”pessoas.root”,”recreate”); TDirectory* familia = social.mkdir(”familia”); TNamedB´sico aSerializa¸˜o ca TDirectory* amigos = social.mkdir(”amigos”);HTML pessoa* irma = new pessoa(”Fernanda”,29);TTree pessoa* rafael = new pessoa(”Rafael”,31);Interpretador familia->Add(irma); TDirectoryPorquˆe amigos->Add(rafael);Op¸˜es coSum´rio a Importante: TDirectoryFile N˜o precisa deletar os ponteiros. a Objetos ser˜o escritos no arquivo. a TFile
  • 26. Novos m´todos para RTTI definidos e ROOT TDictionary pessoaIntrodu¸˜o caInforma¸˜es coDesafios idadeGridB´sico a GetIdadeSerializa¸˜o ca IsA TClass TDataTypeHTMLTTree ClassNameInterpretadorPorquˆe DclFileNameOp¸˜es co ImplFileNameSum´rio a ImplFileLine TBaseClass DclFileLine TDataMember TMethod
  • 27. Novos m´todos para RTTI definidos e ROOT TDictionary pessoaIntrodu¸˜o caInforma¸˜es coDesafios idadeGridB´sico a GetIdadeSerializa¸˜o ca IsA TClass TDataTypeHTMLTTree ClassNameInterpretadorPorquˆe DclFileNameOp¸˜es co ImplFileNameSum´rio a ImplFileLine TBaseClass DclFileLine TDataMember TMethod
  • 28. Exemplo com a classe pessoa ROOT Programa:Introdu¸˜o caInforma¸˜es coDesafios pessoa a;Grid cout << ”Decl: ”<< a.DeclFileName() << ”n”B´sico a << ”Linha: ”<< a.DeclFileLine() << ”n”Serializa¸˜o ca << ”Imple: ”<< a.ImpFileName() << ”n”HTMLTTree << ”Linha: ”<< a.ImpFileLine() << endl;InterpretadorPorquˆeOp¸˜es co Output:Sum´rio a Header: /home/marcelo/misc/./pessoa.h Linha: 31 Imple: /home/marcelo/misc/./pessoa.cxx Linha: 3
  • 29. Exemplo com a classe pessoa ROOT Programa:Introdu¸˜o caInforma¸˜es coDesafios pessoa a;Grid cout << ”Decl: ”<< a.DeclFileName() << ”n”B´sico a << ”Linha: ”<< a.DeclFileLine() << ”n”Serializa¸˜o ca << ”Imple: ”<< a.ImpFileName() << ”n”HTMLTTree << ”Linha: ”<< a.ImpFileLine() << endl;InterpretadorPorquˆeOp¸˜es co Output:Sum´rio a Header: /home/marcelo/misc/./pessoa.h Linha: 31 Imple: /home/marcelo/misc/./pessoa.cxx Linha: 3
  • 30. Encontrar a idade sem usar o getter. ROOT Econtrando a idade com RTTI:Introdu¸˜o ca pessoa p(”Marcelo”,31);Informa¸˜es coDesafios TClass* c = p.IsA();Grid TDataMember* dm = c->GetDataMember(”fIdade”);B´sico aSerializa¸˜o ca TMethodCall* getter = dm->GetterMethod(c);HTMLTTree Long t idade;Interpretador getter->Execute(&p,””,idade);PorquˆeOp¸˜es co cout << ”Idade: ”<< idade << endl;Sum´rio a Output: Idade: 31
  • 31. Gerando dicion´rios, compilando e ligando. a ROOT Para gerar os dicion´rios: aIntrodu¸˜o caInforma¸˜es coDesafios $ rootcint -f dicionario.cxx -c pessoa.h && lsGrid dicionario.cxx dicionario.h pessoa.cxx pessoa.hB´sico aSerializa¸˜o ca $ wc -l dicionario.h && wc -l dicionario.cxxHTMLTTree 53 dicionario.hInterpretador 639 dicionario.cxxPorquˆeOp¸˜es coSum´rio a Compilar e ligar(Comparem com Qt): 1 Comando: root-config –cflags –libs 2 Macro Autoconf: ROOT PATH e ROOT FEATURE 3 Interpretador: .L pessoa.cxx+
  • 32. Gerando documenta¸˜o para a classe pessoa ca ROOT THtml h; h.SetProductName(”Encontro CppBrasil”); h.MakeIndex();Introdu¸˜o ca h.MakeAll();Informa¸˜es coDesafiosGridB´sico aSerializa¸˜o caHTMLTTreeInterpretadorPorquˆeOp¸˜es coSum´rio a
  • 33. Exemplo de outro pacote com mais classes ROOTIntrodu¸˜o caInforma¸˜es coDesafiosGridB´sico aSerializa¸˜o caHTMLTTreeInterpretadorPorquˆeOp¸˜es coSum´rio a
  • 34. Header ROOTIntrodu¸˜o caInforma¸˜es coDesafiosGridB´sico aSerializa¸˜o caHTMLTTreeInterpretadorPorquˆeOp¸˜es coSum´rio a
  • 35. Header com m´todos da classe base e ROOTIntrodu¸˜o caInforma¸˜es coDesafiosGridB´sico aSerializa¸˜o caHTMLTTreeInterpretadorPorquˆeOp¸˜es coSum´rio a
  • 36. M´todos e atributos da classe pessoa e ROOT TObject TNamed pessoa fUniqueID kIsReferenced kZombie fName fIdade fBits kHasUUID kBitMask fTitle fgIsA fgDtorOnly kCannotPick kSingleKey fgIsA fgObjectStat kNoContextMenu kOverwrite @~pessoa kCanDelete kInvalidObject kWriteDelete @~TNamed pessoa kMustCleanup kIsOnHeap fgIsA TNamed GetIdade kObjInCanvas kNotDeletedIntrodu¸˜o ca @~TObject GetObjectInfo operator new@[@] TNamed TNamed Class Class_Name MakeZombie GetTitle operator delete TNamed IsAInforma¸˜es co DoError HandleTimer operator delete@[@] operator= ShowMembers TObject Hash operator delete Clear StreamerDesafios TObject InheritsFrom operator delete@[@] Clone StreamerNVirtual operator= InheritsFrom SetBit CompareGrid AppendPad Inspect SetBit Copy Browse IsFolder ResetBit FillBuffer ClassName IsEqual TestBit GetNameB´sico a Clear Clone IsSortable IsOnHeap TestBits InvertBit GetTitle Hash Compare IsZombie Info IsSortableSerializa¸˜o ca Copy Notify Warning SetName Delete ls Error SetNameTitleHTML DistancetoPrimitive Paint SysError SetTitle Draw Pop Fatal lsTTree DrawClass Print AbstractMethod Print DrawClone Read MayNotUse Sizeof Dump RecursiveRemove Obsolete ClassInterpretador Execute Execute SaveAs SavePrimitive GetDtorOnly SetDtorOnly Class_Name IsA ExecuteEvent SetDrawOption GetObjectStat ShowMembersPorquˆe FindObject SetUniqueID SetObjectStat FindObject UseCurrentStyle ClassOp¸˜es co GetDrawOption Write Class_Name GetUniqueID Write IsA GetName operator new ShowMembersSum´rio a GetIconName GetOption operator new@[@] operator new
  • 37. Salvando objetos de mesma classe TTree ROOT Classe TTree:Introdu¸˜o ca Lˆ os dados por partes conforme o programa precisa. eInforma¸˜es coDesafiosGrid Eficiente para ”Salvar uma vez” e ”Ler muitas”.B´sico a Projetado para armazenar enormes quantidades de dados.Serializa¸˜o caHTMLTTree Otimizada para acesso remoto.Interpretador Facilidades para encadear muitos arquivos. TChainPorquˆeOp¸˜es co Facilidade para processamento paralelo. TProofSum´rio a TNtuple tuple(”cot”,”Embraer”,”dia:preabe:...”); for (...) tuple.Fill(...); TFile f(”embraer.root”,”recreate”); tuple.Write();
  • 38. Exemplo de como analisar dados S´rie hist´rica 2000 - 2011, Embraer (Bovespa) e o ROOT TTree* t = (TTree*)f.Get(”Embraer”); t->Draw(”premax:dia”);Introdu¸˜o ca t->Draw(”premax”);Informa¸˜es co t->Draw(”premax-premin:dia”); TObjectDesafiosGridB´sico aSerializa¸˜o caHTMLTTree TNamedInterpretadorPorquˆeOp¸˜es coSum´rio a TTree TNtuple
  • 39. Exemplo de como analisar dados (Com v´ ınculos) S´rie hist´rica 2000 - 2011, Embraer (Bovespa) e o ROOT TTree* t = (TTree*)f.Get(”Embraer”); t->Draw(”premax:dia”,”premax > 1.025*preabe”);Introdu¸˜o ca t->Draw(”premax”,”premax > 1.025*preabe”);Informa¸˜es co t->Draw(”premax-premin:dia”,”preult > 1.03*preabe”); TObjectDesafiosGridB´sico aSerializa¸˜o caHTMLTTree TNamedInterpretadorPorquˆeOp¸˜es coSum´rio a TTree TNtuple
  • 40. Se¸˜o no Interpretador Cint. ca ROOTIntrodu¸˜o caInforma¸˜es coDesafiosGridB´sico aSerializa¸˜o caHTMLTTreeInterpretadorPorquˆeOp¸˜es coSum´rio a
  • 41. Analisando v´rias TTree’s: PROOF a Processamento paralelo ROOT Desafio: 1.5 PB de dados por ano.Introdu¸˜o caInforma¸˜es co Processando 15 MB/s, em um n´cleo levaria anos. uDesafiosGrid PROOF: Paralel ROOT FacilityB´sico aSerializa¸˜oHTML ca Grande quantidade de eventos em centenas de CPUs.TTreeInterpretador Divide o trabalho em N eventos por CPU.PorquˆeOp¸˜es co TChain *c = new TChain(”myTree”);Sum´rio a c->Add(”http://www.algum lugar/arquivo1.root”); c->Add(”http://www.algum lugar/arquivo2.root”); c->Add(”http://www.algum lugar/arquivo3.root”); TProof::Open(”lite”); // <=== Importante c->SetProof(); c->Process(”Selector.c+”);
  • 42. Outline ROOT 1 Introdu¸˜o caIntrodu¸˜o ca Informa¸˜es importantes sobre o ROOT coInforma¸˜es coDesafios Os desafios do LHCGridB´sico a O GridSerializa¸˜o caHTMLTTree 2 T´picos b´sicos importantes. o aInterpretador Dicion´rios: Serializa¸˜o a caPorquˆeOp¸˜es co Como gerar documenta¸˜o HTML caSum´rio a Como armazenar e processar dados 3 Usando C++ interpretado Vantagens e desvantagens de C++ interpretado Cint e Cling
  • 43. Compilado versus interpretado ROOTIntrodu¸˜o caInforma¸˜es co 1 Interpretado:DesafiosGrid R´pido para experimentar. aB´sico aSerializa¸˜o ca R´pido para ”Editar → Rodar → Testar → Editar” aHTML Escrever um script ´ mais f´cil. e aTTree N˜o precisa compilar e ligar. aInterpretadorPorquˆeOp¸˜es co 2 Compilado:Sum´rio a Execu¸˜o mais r´pida. ca a O interpretador tem limita¸˜es. co Validar o c´digo. o
  • 44. Compilado versus interpretado ROOTIntrodu¸˜o caInforma¸˜es co 1 Interpretado:DesafiosGrid R´pido para experimentar. aB´sico aSerializa¸˜o ca R´pido para ”Editar → Rodar → Testar → Editar” aHTML Escrever um script ´ mais f´cil. e aTTree N˜o precisa compilar e ligar. aInterpretadorPorquˆeOp¸˜es co 2 Compilado:Sum´rio a Execu¸˜o mais r´pida. ca a O interpretador tem limita¸˜es. co Validar o c´digo. o
  • 45. Cint e Cling ROOT Cint:Introdu¸˜o ca 400.000 linhas de c´digo oInforma¸˜esDesafios co ”It is used in production by several companies in theGrid banking, integrated devices, and even gamingB´sico aSerializa¸˜o ca environment”HTMLTTree Quase todo ANSI C e iso C++ 2003.InterpretadorPorquˆe Pode chamar classes compiladas.Op¸˜es coSum´rio a C´digo compilado pode chamar c´digo interpretado. o o Cling: Baseado no LLVM e Clang. Projetado com os anos de experiˆncia com o Cint. e ´ E na verdade um ”Incremental compiler”
  • 46. Calculadora de bolso ROOTIntrodu¸˜o ca Uso Simples:Informa¸˜es coDesafiosGrid root sqrt(2)B´sico a (const double)1.41421356237309515e+00Serializa¸˜o caHTML root double a = TMath::Pi()/4TTree root sin(a)InterpretadorPorquˆe (const double)7.07106781186547462e-01Op¸˜es co rootSum´rio a Misturando interpretado e compilado: root gROOT->ProcessLine(”pessoa a;a.GetIdade()”)
  • 47. Sum´rio a ROOTIntrodu¸˜o caInforma¸˜es co Serializa¸˜o de objetos. caDesafiosGrid Armazenamento e an´lise eficiente de dados. aB´sico aSerializa¸˜o ca An´lise estat´ a ıstica e visualiza¸˜o dos dados. caHTMLTTreeInterpretadorPorquˆOp¸˜es co e Muito mais do que o que foi apresentado aqui:Sum´rio a Graphical User Interface. Est´ sendo portado para iOS. a Implementa¸˜o do mecanismo Signal Slot ca