Difference: EPUniandes2011TC3 (1 vs. 11)

Revision 112013-08-22 - AndresOsorio

Line: 1 to 1
 
META TOPICPARENT name="EPUniandes2011"
Changed:
<
<

Taller 3

>
>

Taller 3

 

Revision 92012-05-24 - AndresOsorio

Line: 1 to 1
 
META TOPICPARENT name="EPUniandes2011"

Taller 3

Convenciones utilizadas en esta guía

  • Comandos escritos en la Linea de Comando de Linux (CLI) van en rojo y en marcados
  • Texto en azul es para ser reemplazado por algún un valor indicado
  • Argumentos opcionales o pasos opcionales van en rosado.
  • Lineas de codigo de algun archivo mas en este fondo beige
  • Usaré como editor gedit. Si ustedes son familiares con algun otro, pueden usarlo.

Material

El material para este taller, se puede descargar del siguiente link:

O si prefiere, lo puede descargar directamente desde la terminal usando el comando wget:

wget --no-check-certificate http://hep.uniandes.edu.co/~aosorio/Particulas/ejercicios-Parte3.tgz
tar xzvf ejercicios-Parte3.tgz
cd ejercicios-Parte3

Ejercicio 1 – Creación de un simple Histograma

El primer ejercicio consistirá en la creación de un Histograma con informacion de la cinematica de algunas particulas. Editemos el script que se trabajo al final del Taller 2 y que simula eventos supersimetricos:

gedit pythia8_susy.C

  • Quitar el comentario en la linea siguiente del codigo y escribir el numero de bins 50 y el rango del histograma XMIN=0 y XMAX=100:

//TH1F * h1 = new TH1F("hpt", "Muons Pt", 50, 0, 100);

  • Esta linea define un Histograma 1D ( clase TH1F ).

  • Bajar hasta donde está el ciclo de generación y buscar la linea con el comentario "// Particle Loop" y agregrar el siguiente codigo:

while( iev < nev ) {
    
    pythia8->GenerateEvent();
    if (iev < 1) pythia8->EventListing();
    pythia8->ImportParticles(particles,"All");
    
    Int_t np = particles->GetEntriesFast();

    // Particle loop
    
    for (Int_t ip = 0; ip < np; ip++) {
      
      //Leemos informacion de cada particula

      TParticle* part = (TParticle*) particles->At(ip); //Esta es la particula i
      Int_t ist = part->GetStatusCode(); //obtenemos su estatus
      Int_t pdg = part->GetPdgCode(); // y su codigo PDG
      
       //1. Introducir una codicion para separar los muones

      //Queremos graficar el momento Transverso de los muones Pt == Sqrt(px*px + py*py)
      //2. Obtener aqui las componentes Px y Py del momento de las particulas

      //3. Llenar el histograma h1 con el momento transversar

      
    } // No olvidar! cerrar el loop que hemos introducido 

Estudiemos que esta pasando aqui:

  • El primer ciclo, es un ciclo sobre la generacion de eventos . Por ello es que la condicion es hacer este ciclo hasta que alcance el maximo numero de eventos que hemos especificado desde el principio del script. La generacion esta instruida por el comando pythia8->GenerateEvent();

  • El segundo ciclo, aquel que hemos introducido, hace por cada evento un ciclo sobre el numero maximo de particulas que Pythia ha generado. El maximo numero de particulas se obtiene con el metodo Int_t np = particles->GetEntriesFast();

  • Los muones tienen por código de identificación 13 y -13 (para el anti-mu). Volvemos a este comentario mas adelante

  • Cada partícula está representada por un objeto de tipo TParticle y queremos graficar el momento transversal de cirtas particulas
    • Mirando en la documentación TParticle, como podríamos obtenerlo?

  • Por el momento, el codigo introducido no hace aun lo que queremos. Recordemos, queremos hacer 3 cosas:

  1. Entre la particulas, identificar aquellas que son muones -es decir con codigo 13 y -13
  2. Un vez identificadas, tenemos calcular el momento transversal
  3. Llenar el histograma que creamos para hacer

  • Por lo tanto, debemos copiar el siguiente codigo - guiarse por los comentarios:


      //1. Introducir una codicion para separar los muones
      if ( pdg == 13 || pdg == -13 ) {

      //Queremos graficar el momento Transverso de los muones Pt == Sqrt(px*px + py*py)
      //2. Obtener aqui las componentes Px y Py del momento de las particulas

      float px = part->Px();
      float py = part->Px();
      float Pt = sqrt(px*px + py*py);

      //3. Llenar el histograma h1 con el momento transversar
      h1->Fill( Pt );
 
      } ///no olvidar! cerrar el condicional 

* Bien! Esto nos sirve para llenar el histograma. Ahora, si queremos visualizar el histograma debemos introducir al final de todo los ciclos lo siguiente:

    // Ahora podemos dibujar el histograma y que lo muestre en pantalla
    h1->Draw();

  • Guarde las modificaciones y cierre. Ejecutar ahora el script desde la terminal:

root -l pythia8_susy.C

La opción -l ("menos L minuscula") evita que salga la imagen de saludo de ROOT, lo que nos ahorra algunos milisegundos.

<!--/twistyPlugin twikiMakeVisibleInline-->

<!--/twistyPlugin-->

Ejercicio 2 – Pythia8Analsis – Una clase para hacer el análisis sobre datos simulados

Ahora lo que queremos es introducir una técnica para el análisis de datos simulados.

“pythia8_susy.C” genera los eventos y los guarda en un archivo de formato de ROOT (manejado por la clase TFile)

Dentro de este archivo existe lo que se conoce como un TTree – un árbol – en el que cada rama corresponde a las variables que poseen las partícula y las hojas son los valores que toman por evento

PythiaAnalysis es una clase automáticamente generada por ROOT, que nos permite abrir el TTree para analizarlo. JetPythiaAnalysis es una clase derivada de la primera.

Editemos el archivo PythiaAnalisis.C :

gedit PythiaAnalysis.C

Intentemos hacer de nuevo un histograma que nos cuente el numero de muones por evento. Nos concentraremos en implementar el método Loop( ) que se encarga de hacer la iteración sobre los eventos almacenados

Para ello debemos adicionar un segundo ciclo, que nos itere sobre la particula_i

En este ciclo, preguntamos por el PDG_ID de la particula y comparamos

Adicionar entonces una condición y un contador para muones

Finalizado este loop podemos entonces graficar

Nota: la lectura del TTree nos hace perder los objetos partículas como tales (TParticle). Su información se encuentra ahora en forma de arreglos (ver PythiaAnalysis.h)

Uno tiene dos opciones: 1) leer y manipular los arreglos 2) leer los arreglos y crear de ellos objetos TParticle

Ejercicio 3 – JetPythiaAnalysis – Una clase para hacer el análisis sobre datos simulados incluyendo Jets

Ahora lo que queremos es introducir una técnica para el análisis de datos simulados usando algoritmos de Jets que nos da FastJet (incluido en el LiveCD que ustedes tienen) http://www.lpthe.jussieu.fr/~salam/fastjet/

Abrir los archivos JetPythiaAnalysis.h y JetPythiaAnalysis.C.

Explicación (---)

Vamos a editar JetPythiaAnalysis.C, en particular su método Loop().

La idea es la de construir Jets a partir de partículas estables que Pythia8 ha generado. Estables son muones, electrones, piones, kaones (Pythia no los hace decaer)

Intentaremos ahora hacer un histograma de multiplicidad de Jets para distintos parámetros (un contador del número de jets que encuentra el algoritmo de clusterización). Si el tiempo lo permite, un segundo histograma que se puede hacer es el de momento transversal de los jets.

Eso sería todo! Buena suerte.

-- AndresOsorio - 15-May-2012

 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback