Generacion de Monte Carlo en el Servidor de Altas Energias

Esta pagina contiene los pasos necesarios para hacer un pequeña generación de eventos en CMSSW haciendo uso del Servidor de Altas Energias.

Requisitos:

Entorno

Lo primero que hay que hacer es fijar en su area de scratch, un directorio con la version de CMSSW requerida y configurar el entorno para correr CMSSW:

[hep] cd /scratch/aosorio
[hep] mkdir Analysis
[hep] cd Analysis
[hep] cmsrel CMSSW_3_8_1
[hep] cd CMSSW_3_8_1/src
[hep] cmsenv

Preparacion de los Archivos de Configuracion

Generar Eventos en CMSSW se hace en dos Pasos:

  • El primero paso que consiste en la produccion de los archivos Crudos (RAW)
  • El segundo paso, tomando los datos Crudos se corre la Reconstruccion (RECO)

Detalles y otras explicaciones se encuentran en: CmsswTutorial

Dado que vamos a hacer una produccion de datos basado en configuraciones pre-establecidas en CMSSW, debemos descargar del repositorio de CMS los siguientes paquetes Configuration/Generator y Configuration/GenProduction:

##Esto es solo si usted posee cuenta en Lxplus
[hep] cvs co Configuration/Generator

y

##Esto es solo si usted posee cuenta en Lxplus
[hep] cvs co Configuration/GenProduction

  • Nota 1: Si usted no tiene cuenta en lxplus, descarge los paquetes aqui * Configuration-HEAD.tgz: Configuration HEAD (Packages Generator y GenProduction). Descomprimir el paquete con el comando tar xzvf
  • Nota 2: Para descargar directamente el archivo desde el servidor, usted puede hacer
[hep] wget --no-check-certificate https://twiki.cern.ch/twiki/pub/Main/CMSUniandesGroupMCGen/Configuration-HEAD.tgz

De todas formas asesorese de un experto segun el trabajo de simulacion que usted quiere hacer.

Una vez descargados estos dos paquetes (que contienen todas las configuraciones basicas para la produccion de Monte Carlo en CMS) debemos compilarlos:

[hep] cd Configuration/Generator
[hep] scram b -j 8
[hep] cd ../
[hep] cd Configuration/GenProduction
[hep] scram b -j 8

(La opcion "-j 8" nos permite usar los 8 cores disponibles en la maquina)

Si por alguna razon, el proceso termina en un error, esto puede deberse a que estamos bajando la version HEAD del codigo (por lo general, no deberia afectar su trabajo). Entonces tenemos:

[hep] cd Configuration/Generator
[hep] scram b -j 8
Reading cached build data
>> Local Products Rules ..... started
>> Local Products Rules ..... done
>> Entering Package Configuration/Generator
>> Updating python symlinks.
>> Leaving Package Configuration/Generator
>> Package Configuration/Generator built

y

[hep] cd ../
[hep] cd Configuration/GenProduction
[hep] scram b -j 8
>> Local Products Rules ..... started
>> Local Products Rules ..... done
>> Entering Package Configuration/GenProduction
>> Updating python symlinks.
>> Leaving Package Configuration/GenProduction
>> Package Configuration/GenProduction built

Ambos paquetes estan listos. Ahora usaremos el comando de CMSSW llamado cmsDriver.py para generar los scripts de configuracion de la simulacion. Para aquellos que no tienen acceso a la Twiki de CMS, he aqui un documento que describe este comando:

Global tags

Condiciones, calibracion y geometria del detector se accede mediante los Global Tags. La siguiente Twiki contiene un listado de aquello Global Tags oficiales: Frontier Conditions.

Ejemplos basados en producción estandar de Monte Carlo en CMS

Ejemplo 1 - SUSY

  • SUSY LM2 con PYTHIA6. Ejecutar cmsDriver.py con los argumentos siguientes:

[hep] cmsDriver.py Configuration/GenProduction/python/PYTHIA6_SUSY_LM2_sftsht_7TeV_cff.py -s GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun --conditions START38_V12::All --datatier GEN-SIM-RAW --eventcontent RAWSIM --no_exec

GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun,ENDJOB
We have determined that this is simulation (if not, rerun cmsDriver.py with --data)
GEN
SIM
DIGI
L1
DIGI2RAW
HLT:GRun
ENDJOB
Config file PYTHIA6_SUSY_LM2_sftsht_7TeV_cff_py_GEN_SIM_DIGI_L1_DIGI2RAW_HLT.py created

El resultado es un archivo de configuracion llamado: "PYTHIA6_SUSY_LM2_sftsht_7TeV_cff_py_GEN_SIM_DIGI_L1_DIGI2RAW_HLT.py", el cual contiene todos los pasos necesarios para la simulacion completa de eventos SUSY en CMS.

Podemos ahora hacer una prueba y generar 1 evento de datos RAW, ejecutando "cmsRun" sobre este archivo. El resultado puede verse aqui:

Usted puede editar este archivo para generar mas eventos, para cambiar el nombre del archivo de salida o cambiar la semilla aleatora del Generador. Ahora generemos el archivo de configuracion para datos RECO usando nuevamene cmsDriver.py:

[hep] cmsDriver.py step2 -s RAW2DIGI,L1Reco,RECO --conditions START38_V12::All --datatier GEN-SIM-RECO --eventcontent RECOSIM,DQM  --no_exec

RAW2DIGI,L1Reco,RECO,ENDJOB
We have determined that this is simulation (if not, rerun cmsDriver.py with --data)
RAW2DIGI
L1Reco
RECO
ENDJOB
Config file step2_RAW2DIGI_L1Reco_RECO.py created

Edite este archivo de configuracion para que lea los datos producidos en el paso anterior:

# Input source
process.source = cms.Source("PoolSource",  fileNames = cms.untracked.vstring('file:PYTHIA6_SUSY_LM2_sftsht_7TeV_cff_py_GEN_SIM_DIGI_L1_DIGI2RAW_HLT.root') )

Ahora podemos ejecutar el paso de reconstruccion:

[hep] cmsRun step2_RAW2DIGI_L1Reco_RECO.py

Este produce un nuevo archivo .root (segun el ejemplo: step2_RAW2DIGI_L1Reco_RECO.root ) el cual posee los pasos de reconstruccion. Podemos visualizar el evento generado usando cmsShow:

[hep] cmsShow -i  step2_RAW2DIGI_L1Reco_RECO.root

El resultado es este evento:

  • SUSY-LM2:
    result-from-simulation-Ex1.png

  • Nota 1: tamaño del archivo RAW con 1 evento: 2.4 MB
  • Nota 2: tamaño del archivo RECO con 1 evento: 2.0 MB

Ejemplo 2 - HSCPs

  • HSCP (stau M=308 GeV) con PYTHIA6. Ejecutar cmsDriver.py con los argumentos siguientes:

[hep] cmsDriver.py Configuration/GenProduction/python/PYTHIA6_Exotica_HSCP_stau308_paironly_cfg.py -s GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun --conditions START38_V12::All --datatier GEN-SIM-RAW --eventcontent RAWSIM --no_exec --customise Configuration/GenProduction/Exotica_HSCP_SIM_cfi.py

GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun,ENDJOB
We have determined that this is simulation (if not, rerun cmsDriver.py with --data)
GEN
SIM
DIGI
L1
DIGI2RAW
HLT:GRun
ENDJOB
Config file PYTHIA6_Exotica_HSCP_stau308_paironly_cfg_py_GEN_SIM_DIGI_L1_DIGI2RAW_HLT.py created

El resultado es un archivo de configuracion llamado: "PYTHIA6_Exotica_HSCP_stau308_paironly_cfg_py_GEN_SIM_DIGI_L1_DIGI2RAW_HLT.py", el cual contiene todos los pasos necesarios para la simulacion completa de eventos SUSY en CMS.

  • Nota 1: la opcion "--customise Configuration/GenProduction/Exotica_HSCP_SIM_cfi.py" es importante para la simulacion correcta de HSCPs ( ver la guia oficial de CMS en esta Twiki: HCPS Sample cmsDriver ).

  • UPDATED DONE Nota 2: Segun las ultimas producciones oficiales de MC para el grupo de Exotica, las opciones sugeridas para el comando cmsDriver son las siguientes (el ejemplo citado corresponde a la produccion de stops de M800 GeV):

cmsDriver.py Configuration/GenProduction/python/HSCPstop_M_800_7TeV_pythia6_cff.py \
--step GEN,SIM \
--beamspot Realistic7TeV2011Collision \
--conditions START42_V11::All\
--pileup NoPileUp \
--datamix NODATAMIXER \
--customise Configuration/GenProduction/Exotica_HSCP_SIM_cfi.customise \
--eventcontent RAWSIM \
--datatier GEN-SIM
--no_exec 

  • UPDATED DONE Nota 2: Si quisieramos adicionar Pile-Up tendriamos que dar la siguiente opcion:

--pileup E7TeV_FlatDist10_2011EarlyData_50ns_PoissonOOT

Podemos ahora hacer una prueba y generar 1 evento de datos RAW, ejecutando "cmsRun" sobre este archivo. El resultado puede verse aqui:

Usted puede editar este archivo para generar mas eventos, para cambiar el nombre del archivo de salida o cambiar la semilla aleatora del Generador. Ahora generemos el archivo de configuracion para datos RECO nuevamente usando cmsDriver.py:

[hep] cmsDriver.py step2 -s RAW2DIGI,L1Reco,RECO --conditions START38_V12::All --datatier GEN-SIM-RECO --eventcontent RECOSIM  --no_exec 

RAW2DIGI,L1Reco,RECO,ENDJOB
We have determined that this is simulation (if not, rerun cmsDriver.py with --data)
RAW2DIGI
L1Reco
RECO
ENDJOB
Config file step2_RAW2DIGI_L1Reco_RECO.py created

Edite este archivo de configuracion para que lea los datos producidos en el paso anterior (nota: el paso 1 genera un archivo con un nombre bastante extenso. Aqui le he cambiado ese nombre por uno mas corto) :

# Input source
process.source = cms.Source("PoolSource",  fileNames = cms.untracked.vstring('file:HSCP_stau308_paironly_RAW.root') )

Ahora podemos ejecutar el paso de reconstruccion:

[hep] cmsRun step2_RAW2DIGI_L1Reco_RECO.py

Este produce un nuevo archivo .root (segun el ejemplo: step2_RAW2DIGI_L1Reco_RECO.root ) el cual posee los pasos de reconstruccion. Podemos visualizar el evento generado usando cmsShow:

[hep] cmsShow -i  step2_RAW2DIGI_L1Reco_RECO.root

El resultado es este evento:

  • HSCP- stau 308 GeV (pair only):
    HSCP-stau-308GeV-Ex2.png

  • Nota 1: tamaño del archivo RAW con 1 evento: 0.6 MB
  • Nota 2: tamaño del archivo RECO con 1 evento: 1.4 MB

Ejemplo 3 - Z->mumu

  • SM Z->mu mu con PYTHIA6. Ejecutar cmsDriver.py con los argumentos siguientes:

[hep] /home/aosorio/scratch/Test/CMSSW_3_8_1/src/ZMUMU > cmsDriver.py Configuration/Generator/ZMM_7TeV_cfi.py -s GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun --conditions START38_V12::All --datatier GEN-SIM-RAW --eventcontent RAWSIM --no_exec

GEN,SIM,DIGI,L1,DIGI2RAW,HLT:GRun,ENDJOB
We have determined that this is simulation (if not, rerun cmsDriver.py with --data)
GEN
SIM
DIGI
L1
DIGI2RAW
HLT:GRun
ENDJOB
Config file ZMM_7TeV_cfi_py_GEN_SIM_DIGI_L1_DIGI2RAW_HLT.py created

El resultado es un archivo de configuracion llamado: "ZMM_7TeV_cfi_py_GEN_SIM_DIGI_L1_DIGI2RAW_HLT.py", el cual contiene todos los pasos necesarios para la simulacion completa de eventos con Zs que terminan en 2 muones en CMS.

Podemos ahora hacer una prueba y generar 1 evento de datos RAW, ejecutando cmsRun sobre este archivo. El resultado puede verse aqui:

El paso de reconstruccion es basicamente el mismo que en los ejemplos anteriores tan solo es cuestion de cambiar el nombre del archivo RAW de entrada:

[hep] cmsDriver.py step2 -s RAW2DIGI,L1Reco,RECO --conditions START38_V12::All --datatier GEN-SIM-RECO --eventcontent RECOSIM  --no_exec

RAW2DIGI,L1Reco,RECO,ENDJOB
We have determined that this is simulation (if not, rerun cmsDriver.py with --data)
RAW2DIGI
L1Reco
RECO
ENDJOB
Config file step2_RAW2DIGI_L1Reco_RECO.py created

Despues de correr el paso 2 de Reconstruccion, podemos visualizar uno de los eventos generados:

  • Z to mumu simulation result - Ex3:
    Zmumu-Ex3.png

Generacion - Notas especiales

  • Nota 1: Cuando uno hace una produccion de eventos partida en distintas corridas, uno debe cambiar dos cosas en cada uno de las corridas:
    • Especificar el numero del primer evento
    • Cambiar la semilla aleatoria inicial.
    • Esto se logra adicionando las siguientes instrucciones en el archivo de configuracion del Paso 1:


process.source.firstEvent = cms.untracked.uint32(1)
process.RandomNumberGeneratorService.generator.initialSeed = cms.untracked.uint32(154283903)

Fast Simulation: Ejemplo 1

La simulacion rapida de eventos (GEN -> RECO) puede ser util en estapas preliminares a un estudio serio. Describo a continuacion un ejemplo de simulacion rapida basado en la guia oficial de CMS que se encuentra en: https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideFastSimulation ).

  • En realidad todo se hace en un solo paso gracias al uso del comando cmsDriver:


[hep] cmsDriver.py  Configuration/GenProduction/python/PYTHIA6_SUSY_LM13_sftsht_7TeV_cff.py -s GEN,FASTSIM,HLT:GRun --pileup=NoPileUp --geometry DB --conditions=auto:startup --eventcontent=FEVTDEBUGHLT --datatier GEN-SIM-DIGI-RECO -n 10 --no_exec
GEN,FASTSIM,HLT:GRun
We have determined that this is simulation (if not, rerun cmsDriver.py with --data)
GEN
Loading generator fragment from Configuration.Generator.TTbar_Tauola_7TeV_cfi
FASTSIM
HLT:GRun
Config file PYTHIA6_SUSY_LM13_sftsht_7TeV_cff_py_GEN_FASTSIM_HLT.py created

  • Nota 1: en vez de escribir el Global Tag para las condiciones, la opcion "--conditions=auto:startup" automaticamente selecciona la apropiada.
  • Nota 2: en este ejemplo no se ha adicionado pile up. Sin embargo en la guia de Referencia, hay una breve descripcion de las opciones que existen para adicionar ese efecto a la simulacion.

Generacion de Monte Carlo en el Tier-3

Prerequisitos

  • Cuenta en el Tier-3
  • Certificado Grid
  • Vinculación a alguna de las organizaciones virtuales del Tier-3 (VO::CMS, VO::Uniandes)

Preliminares

  • Para el envio de trabajos a la Cola Local (PBS):

Vamos a utilzar Ganga para la administracion y el envío de trabajos a la Cola Local. Luego de hacer login en su cuenta, necesitamos adicionar en el archivo de configuración ".bashrc" las siguientes lineas:

[tier-3-machine] pico .bashrc

# User specific aliases and functions
alias gangaenv='eval `/opt/exp_soft/ganga/ganga_setup.py --version=latest --interactive --experiment=generic sh`'

# Localizacion de CMSSW
export VO_CMS_SW_DIR='/opt/exp_soft/CMS'

El primer comando crea un alias para configurar el entorno de Ganga llamado "gangaenv". El segundo comando crea una variable de entorno que especifica donde encontrar el software de CMS. Una vez escrito estas lineas en el ".bashrc" hay que ejecutar el siguiente comando con el fin de que se hagan efectivos los cambios:

[tier-3-machine] source .bashrc

Estas modificaciones solo se realizan una sola vez. La siguiente vez que se haga login a la maquina, estas funciones estaran presentes:

[tier-3-machine]  /fisica/aosorio > gangaenv
Setting Ganga environment:
  5.3.2
  5.3.5
  5.4.4
Enter your choice [q]quit, [5.4.4] :

Setting up Ganga 5.4.4 (sh,generic)

[tier-3-machine]  /fisica/aosorio > echo $VO_CMS_SW_DIR
/opt/exp_soft/CMS

  • Configuracion de Ganga:

Un ultimo paso de configuración, tiene que ver con Ganga y en particular el plugin para CMS GangaCMS. La documentacion se encuentra en: CMSUniandesGroupGangaCMS

Para aquellos que no tienen acceso a lxplus en CERN, pueden bajar el plugin de aqui: GangaCMS.tgz o si lo prefiere:

[hep] wget --no-check-certificate https://twiki.cern.ch/twiki/pub/Main/CMSUniandesGroupMCGen/GangaCMS.tgz

Ganga utiliza un archivo de configuracion llamado .gangarc, al cual se le debe hacer una pequeña modificación para indicarle la localizacion del plugin que recien usted bajo e instaló. Por ejemplo:

[tier-3-machine] pico .gangarc
##Buscar esta linea e insertar el camino a GangaCMS:
RUNTIME_PATH = /fisica/aosorio/hepsoft/ganga/GangaCMS

[CMSSW]
workArea = /fisica/aosorio/cmssw

La opcion "workArea" define el camino en donde se encuentra instalado CMSSW (es decir en este directorio se encuentran las distintas releases en las que usted esta trabajando).

Otra modificación que debemos hacer, tiene que ver con la configuración del plugin de PBS. Busque en el archivo .gangarc la seccion que empieza por [PBS]. Alli debemos redefinir las siguientes variables postexecute, preexecute y submit_res_pattern de la siguiente forma (cambiando "aosorio" por su nombre de usuario):

#  String contains commands executing before submiting job to queue
postexecute = #this is added by AO
env = os.environ
jobnumid = env["PBS_JOBID"]
os.chdir("/fisica/aosorio/.tmp/")
os.system("rm -rf /fisica/aosorio/.tmp/%s/" %jobnumid)

#  String contains commands executing before submiting job to queue
preexecute = #this is added by AO
env = os.environ
jobnumid = env["PBS_JOBID"]
hostname = env["HOSTNAME"]
print hostname
os.system("mkdir /fisica/aosorio/.tmp/%s/" %jobnumid)
os.chdir("/fisica/aosorio/.tmp/%s/" %jobnumid)
os.environ["PATH"]+=":."

#  String pattern for replay from the submit command
submit_res_pattern = ^(?P<id>\d*)\.tado.uniandes.edu.co\s*

Las primeras dos variables controlan el area temporal en donde sus jobs se ejecutan. No olvide crear el directorio indicado en el paso anterior es decir:


mkdir /fisica/(usuario)/.tmp

Ahora si podemos dar inicio a una sesión con Ganga. Al iniciar debe aparecer en pantalla:

[tado] /fisica/aosorio > ganga
GangaCMS> getEnvironment : done

*** Welcome to Ganga ***
Version: Ganga-5-4-4
Documentation and support: http://cern.ch/ganga
Type help() or help('index') for online help.

This is free software (GPL), and you are welcome to redistribute it
under certain conditions; type license() for details.

GangaCMS> loadPlugins : done
Ganga.GPIDev.Lib.JobRegistry       : INFO     Found 0 jobs in "jobs", completed in 0 seconds
Ganga.GPIDev.Lib.JobRegistry       : INFO     Found 0 jobs in "templates", completed in 0 seconds

In [1]:

Prueba

Desde Ganga podemos enviar un trabajo del tipo "Hello World":

In [1]:myjob = Job()

In [2]:myjob
Out[2]: Job (
 status = 'new' ,
 name = '' ,
 inputdir = '/fisica/aosorio/gangadir/workspace/aosorio/LocalAMGA/10/input/' ,
 outputdir = '/fisica/aosorio/gangadir/workspace/aosorio/LocalAMGA/10/output/' ,
 outputsandbox = [] ,
 id = 10 ,
 info = JobInfo (
    uuid = '70769281-8602-1308709694-07' ,
    submit_counter = 0 ,
    monitor = None
    ) ,
 inputdata = None ,
 merger = None ,
 inputsandbox = [] ,
 application = Executable (
    exe = 'echo' ,
    env = {} ,
    args = ['Hello World']
    ) ,
 outputdata = None ,
 splitter = None ,
 subjobs = 'Job slice:  jobs(10).subjobs (0 jobs)
' ,
 backend = Local (
    actualCE = '' ,
    workdir = '' ,
    nice = 0 ,
    id = -1 ,
    exitcode = None
    )
 )

In [3]:

El nuevo job o trabajo, se llama myjob. Al escribir solo el nombre y presionar la tecla "Enter", Ganga nos muestra este nuevo job. Como usted puede ver, tiene como estatus "new". Cambiemos el backend (que indica en donde va a correr este job):

In [3]:myjob.backend
Out[3]: Local (
 actualCE = '' ,
 workdir = '' ,
 nice = 0 ,
 id = -1 ,
 exitcode = None
 )

In [4]:# cambiar el backend Local por

In [5]:myjob.backend = 'PBS'

In [6]:myjob.backend
Out[6]: PBS (
 queue = '' ,
 extraopts = '' ,
 actualqueue = '' ,
 id = '' ,
 exitcode = None
 )

El administrador de Cola Local es PBS/Torque. Escribamos ahora la cola a donde van nuestros trabajos ( la cual puede ser cms o uniandes segun la asignacion dad a usted por los administradores):


In [7]:myjob.backend.queue = 'cms'

In [8]:myjob.backend
Out[8]: PBS (
 queue = 'cms' ,
 extraopts = '' ,
 actualqueue = '' ,
 id = '' ,
 exitcode = None
 )

Eso es todo lo que necesitamos configurar. Estamos listos para enviar este trabajo:


In [9]:myjob.submit()

Ganga.GPIDev.Lib.Job               : INFO     submitting job 10
Ganga.GPIDev.Lib.Job               : INFO     job 10 status changed to "submitting"
Ganga.GPIDev.Adapters            : INFO     submitting job 10 to PBS backend
Ganga.GPIDev.Lib.Job               : INFO     job 10 status changed to "submitted"
Ganga.GPIDev.Lib.Job               : INFO     job 10 status changed to "submitted"
Out[9]: 1

In [10]: 

El trabajo pasará rapidamente de estado submitted a running y finalizará exitosamente. En caso de cualquier problema, por favor envie un correo a hepserver.uniandes@gmailNOSPAMPLEASE.com .

Topic attachments
I Attachment History Action Size Date Who Comment
Compressed Zip archivetgz Configuration-HEAD.tgz r1 manage 2542.7 K 2011-06-17 - 18:22 AndresOsorio Configuration HEAD (Packages Generator y GenProduction)
Compressed Zip archivetgz GangaCMS.tgz r1 manage 112.9 K 2011-06-20 - 01:04 AndresOsorio GangaCMS plugin
PNGpng HSCP-stau-308GeV-Ex2.png r1 manage 36.7 K 2011-06-17 - 19:52 AndresOsorio HSCP- stau 308 GeV (pair only)
PDFpdf SWGuideCmsDriver.pdf r1 manage 257.3 K 2011-06-17 - 18:36 AndresOsorio cmsDriver - Documentation
PNGpng Zmumu-Ex3.png r1 manage 43.0 K 2011-06-20 - 18:40 AndresOsorio Z to mumu simulation result - Ex3
Texttxt Zmumu-Sim-RAW.txt r1 manage 5.1 K 2011-06-20 - 18:32 AndresOsorio Z to mumu simulation - RAW
Unknown file formatext gangarc r1 manage 35.1 K 2011-06-20 - 01:07 AndresOsorio Archivo de configuración de Ganga
Texttxt hscp-stauM308GeV-Sim-RAW.txt r1 manage 9.8 K 2011-06-17 - 19:53 AndresOsorio RAW data simulation - cmsRun Output
Texttxt raw-susy-LM2-output.txt r1 manage 22.9 K 2011-06-17 - 18:22 AndresOsorio RAW data simulation - cmsRun Output
PNGpng result-from-simulation-Ex1.png r1 manage 50.4 K 2011-06-17 - 18:20 AndresOsorio SUSY-LM2
Cascading Style Sheet filecss tutorial.css r1 manage 0.2 K 2011-08-17 - 21:36 AndresOsorio style
Edit | Attach | Watch | Print version | History: r22 < r21 < r20 < r19 < r18 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r22 - 2012-02-11 - AndresOsorio
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    Main All webs login

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