... | ... | @@ -43,6 +43,8 @@ Para fins de familiarização com os conteúdos necessários para o entendimento |
|
|
| 01/10/2019 | [Apresentação de slides](uploads/364628da6db9809ca598546e28f0c438/ALICE.odp) que resume o progresso do projeto até o momento, para apresentação na Reunião Geral do CTA |
|
|
|
| 02/10/2019 | [2º Encontro do Grupo](http://cta.if.ufrgs.br/boards/120/topics/1895) |
|
|
|
| 11/10/2019 | Adicionado no [repositório](https://git.cta.if.ufrgs.br/ALICE-open-data/AliESD_Example/tree/Breno) o [programa em C](https://git.cta.if.ufrgs.br/ALICE-open-data/AliESD_Example/blob/Breno/sol-analitica/sol-analitica-tpc.c) para gerar a evolução das posições das partículas no tempo, agora considerando efeitos relativísticos. |
|
|
|
| 21/10/2019 | Criado [repositório no GitLab](https://git.cta.if.ufrgs.br/ALICE-open-data/alice-blender-animation) para desenvolver animação de eventos no [Blender](https://www.blender.org/) |
|
|
|
| 1/11/2019 | Implementação da leitura de arquivos com os dados abertos do CERN na animação do Blender |
|
|
|
|
|
|
|
|
|
## Tarefas
|
... | ... | @@ -170,6 +172,25 @@ Para maiores detalhes no algoritmo de desenvolvimento do programa da evolução |
|
|
|
|
|
É passível de observação que todos os códigos foram programados a fim de selecionar um evento com um número "razoável" de trilhas - entre 15 e 30 - a partir dos ESDs, de maneira a impedir uma poluição visual da representação gráfica do mesmo, no caso de um número excessivamente grande de trilhas, ou a análise de um evento com um número demasiado baixo de trilhas.
|
|
|
|
|
|
### Animação no Blender
|
|
|
|
|
|
O [Blender](https://www.blender.org/) é um programa gratuito e aberto para criar animações. Foi utilizado aqui com o propósito de gerar a visualização em 3D de eventos de colisão de partículas no detector ALICE. Com essa finalidade, foi criado um projeto no GitLab do grupo de colaboração [ALICE-open-data](https://git.cta.if.ufrgs.br/ALICE-open-data), de nome [ALICE Blender animation](https://git.cta.if.ufrgs.br/ALICE-open-data/alice-blender-animation). A animação foi desenvolvida unicamente por meio de scripts na linguagem Python, utilizando orientação a objeto, de maneira que são dispensadas aqui informações sobre a interface do Blender. Todo o código foi pensado a partir de um [exemplo de script para Blender que simula um sistema solar](http://www.if.ufrgs.br/fis01069/Blender3D.html#script-blender-para-cria%C3%A7%C3%A3o-de-um-sistema-solar), disponível no site do Instituto de Física da UFRGS.
|
|
|
No [repositório](https://git.cta.if.ufrgs.br/ALICE-open-data/alice-blender-animation), além do arquivo *README.md*, existem quatro arquivos principais que estruturam toda a animação, brevemente detalhados abaixo.
|
|
|
|
|
|
* **particle.py**: é o arquivo que define a classe das partículas, ou seja, que contém as características a ser adicionadas posteriormente a cada objeto animado do Blender e como eles devem se propagar pelo espaço a partir das condições intrínsecas da partícula que representam. É notável que este código define duas classes: a classe base `Particle`, que guarda o vértice, carga e massa da partícula; e a classe derivada `ParticlePropagator`, que configura o campo magnético, lê os valores de *momentum* nas três direções e define outras propriedades, para em seguida definir a propagação das partículas.
|
|
|
|
|
|
* **drivers.py**: este arquivo define a classe `animationDriver`, responsável por configurar aspectos gerais da animação, como qual câmera será utilizada, duração, número de quadros, porcentagem de resolução, etc. Suas classes derivadas, definidas em seguida, configuram a maneira como são determinados os dados que serão passados para as partículas, os objetos do tipo `Particle`. A classe `genDriver` gera partículas com valores de *momentum* que seguem uma distribuição gaussiana, nas três direções, e seus objetos devem ser inicializados com o desvio padrão dessa distribuição como argumento. A classe `dataDriver` é a mais importante no que tange aos objetivos deste projeto: ela lê todos valores de massa, carga, *momentum* e vértices das partículas a partir do arquivo texto gerado diretamente pela execução dos [códigos para análise dos dados abertos ALICE](https://git.cta.if.ufrgs.br/ALICE-open-data/AliESD_Example), e seus objetos devem ser inicializados com o nome deste arquivo texto como argumento.
|
|
|
|
|
|
* **scene-functions.py**: é onde são definidas as funções que de fato executam a animação, não sendo definidas quaisquer classes. A função `init()` configura o ambiente, limpando o cenário e adicionando as câmeras e um cilindro que representa o TPC do detector, por sua vez definido na função `addALICE_TPC()`. Já `addCameras()` disponibiliza os tipos de câmera a ser escolhidos, que mostram a visualização de diferentes perspectivas. `createSceneParticles()` recebe como argumento uma lista com as partículas da classe `Particle` e cria os objetos do Blender para as partículas, acrescenta cores a cada uma, define seus tipos, configura as sombras e retorna uma lista com estes objetos, que tratam-se na verdade de pequenas esferas. Por último, `animate()` recebe como argumentos uma lista de objetos do Blender - como aquela criada por `createSceneParticles()` -, uma lista de objetos do tipo `Particle` e um objeto do tipo `animationDriver`, com o propósito de fazer os objetos animados seguirem a propagação conforme definido na classe `ParticlePropagator`.
|
|
|
|
|
|
* **animate_particles.py**: finalmente, é o arquivo em que são especificados os parâmetros desejados para a animação e o caminho do diretório onde será salva, além de chamar as funções definidas nos arquivos anteriormente descritos para construir a cena, animá-la e renderizar tudo.
|
|
|
|
|
|
Para gerar a animação, basta digitar o comando `blender -noaudio --background -P animate_particles.py` para executar o código em `animate_particles.py`. Ela será salva como um arquivo *.mp4* no caminho especificado no código, que pode ser alterado. É válido lembrar que, para tal, o Blender deve estar instalado.
|
|
|
|
|
|
Observa-se, ainda, que o código desenvolvido pode ser usado para diversos fins, isto é, não apenas para eventos do ALICE - ou, sequer, de colisão de partículas -, graças à maneira como está organizado. A programação orientada a objeto proporciona uma facilidade de modificar aspector específicos de um código sem, todavia, a necessidade de preocupar-se com a maneira como isso irá afetar todo o restante do mesmo. Um usuário poderia, por exemplo, facilmente criar uma nova classe de driver para ler arquivos com dados de partículas diferentes dos mencionados, ou ainda definir uma nova maneira de propagar os objetos, que não na presença de um campo magnético, tudo isso fazendo alterações pontuais nos códigos.
|
|
|
|
|
|
É importante ressaltar que os arquivos do projeto são abertos e estão disponíveis para utilização, modificação e divulgação por toda a comunidade.
|
|
|
|
|
|
### Histogramas
|
|
|
|
|
|
EM BREVE SEÇÃO SOBRE OS HISTOGRAMAS (com link para instruções de histogramas)
|
... | ... | |