Presentación de PowerPoint

Monte Carlo Generators
(testing)
Marc Montull, PH/SFT, CERN
Supervisors: Witold Pokorski, Torbjorn Sjostrand, Alberto Ribon
Table of contents

Introduction:



Monte Carlo generators
Pythia
My work:




Finding tunings for Pythia8
Comparing Pythia8, Pythia6.4, Herwig, Herwig++
Generalization of SM Higgs’ processes in Pythia8
Testing the changes made to Pythia8
Monte Carlo generators


Computer programs that use non deterministic algorithms
in some steps of their processes
Why do we need them?


Analytical tools not enough
Models where where we don’t know exactly what’s going on (use
of parameters).

Exemple: QCD
Monte Carlo generators

Monte Carlo generators in particle physics



Event generators
Detector simulators
Can be used to:




Predict event rates  can estimate feasibility
Study detector requirements  can optimize detector trigger design
Simulate possible backgrounds  can devise analysis strategies
Design new detectors
Pythia


General purpose Monte Carlo generator for high-energy
physics.
Simulates colisions between elementary particles such as:




e- e+
p pbar
pp
Pythia6.4 is the current version of Pythia
Written in Fortran
Pythia8 is a Pythia version still in development
Written in C++


LEP
Tevatron
LHC

Tuning Pythia8


Uses models that have free parameters
Goal: tune them (the most important ones)

e- e+ collision at 91 GeV

Compare Pythia8 particle content
with LEP data
Basic idea




Run pythia N times and find each particle multiplicity
Times particle appears
Particle multiplicity =
N
Compare particles multiplicities with the multiplicities obtained at LEP
Modify the Pythia settings untill the multiplicities for most of the particles
match
Tuning Pythia8



Uses models that have free parameters
Goal: tune them (the most important ones)

e- e+ collision at 91 GeV

Compare Pythia8 particle content
with LEP data
How did I do it:


Read from input file
Pythia8 event
C++ program
Reads information from file
Particles to count
Lab Multiplicity
Lab error




Initialize Pythia8 &
Analysis objects
Runs Pythia8 any number of
times
In each event counts the
times a particle appears

Count particles
N times
Tuning Pythia8



Uses models that have free parameters
Goal: tune them (the most important ones)

e- e+ collision at 91 GeV

Compare Pythia8 particle content
with LEP data
How did I do it:

Calculate for each particle
or group of particles
Average multiplicity
Statistical error
Deviation

Initialize Pythia8 &
Analysis objects
Read from input file
Pythia8 event
Count particles



Prints out
Particles average multiplicities
Statistical information
Pythia8 settings changed from
default values
N times
Calculate statistics



Print output file
Input file
PDG 1
PDG 2
PDG 3
Lab_data
1 particle
2 particle


You can count one or more particles at the same time
Zero means that you don´t count any particle
Lab_error
Output file

It shows the multiplicity of each particle together with it´s antiparticle
Output file

It shows the multiplicity of each particle

Once the program works:

Step 1
Fit the important particles
(the ones you see in the detector and appear the most)

Pions, kaons and protons

How?

StringFlav:probStoUD


Supression of baryon production relative to meson
Regulates the amount of
baryons
StringZ:aLund

Supression of s quark production relative to u or d
Regulates strangeness
StringFlav:probQQtoQ


Using the three parameters that have a deeper
efect on the multiplicity of this particles
Regulates the total
multiplicity
The “a” parameter of the Lund symmetric
fragmentation function
After fitting this particles you are in the neighbourhood !!

Then
Used other parameters to fit the other particles
12 parameters

Method used:
Study the multiplicity table
(deviations of particles)
Figure out the parameters
to modify
Modify the
parameters
N times


Finally I found one tuning that agreed very well with the LEP
data
Future plans on this:
To find other possible tunings

Testing Pythia8, Pythia6.4, Herwig, Herwig++


Goal: to generalize the program I made to other Monte Carlo
generators.

Pythia8, Pythia6.4, Herwig and Herwig++.
How?

Interfacing them to HepMC
Basic idea


Reuse:

Structure of the program used before

Analysis classes
Create a base class with the event method
Generates a Monte Carlo event and

Event method
interfaces it to HepMC
Testing Pythia8, Pythia6.4, Herwig, Herwig++
How did I do it:

Gen

GenFactory
Has the event method
Has a static method that returns an object of one of the
derived classes depending on the input
GenFactory
Pythia8Gen
Gen
HerwigGen
Pythia6.4Gen
Herwig++Gen


C++ program
Initializes objects
Gen
Analysis
Reads information from file
Particles to count
Lab multiplicity
Lab error
Event loop
In each event counts de
times a particle appears

Initialize Gen & Analysis objects
Read from input file


Choose the MC generator to use




Create HepMC object
Generate event & interface it
to HepMC


Calculate for each particle or
group of particles
Multiplicity
Statistical error
Deviation
Prints out
Particles multiplicities
Statistical information
Count particles
Delete HepMC object


N times


Calculate statistics


Print output file
Testing Pythia8, Pythia6.4, Herwig, Herwig++

Future plans:

Go from here
GenFactory
Pythia8Gen
Gen
HerwigGen
Pythia6.4Gen
Herwig++Gen
Testing Pythia8, Pythia6.4, Herwig, Herwig++

To here
GenFactory
Pythia8Gen

Gen
HerwigGen
Pythia6.4Gen
Herwig++Gen
And write some script to run one after the other and prints the different outputs
Easy to compare

Generalization of SM processes in Pythia8

Goal: to generalize some Higgs’ processes in Pythia8
(neutral Higgses)

In the Standard Model
gg

1 Higgs.
H
Beyond the standard Model (MSSM)
gg
h
gg
H
5 Higgses
gg
A
Basic idea


The way to calculate cross sections and other values is almost the same for all
the processes
Add small changes so the same processes work for all the other Higgses
Generalize
Add multiplicative factors to some calculations (due to the couplings)
Thats what I did basically !! 



Testing changes made to Pythia8

Goal: Test the changes made

How?
Comparting Pythia6 and Pythia8
(cross sections of processes modified)


Pythia6
Pythia8
Well tested program, and debbuged
In developement (& with my changes)
Basic idea



Set Pythia8 so it can be compared with Pythia6
Run the same processes in Pythia6 and Pythia8

With the same settings
Check that everything is ok
Testing changes made to Pythia8

How did I do it:

C++ program that runs Pythia8





Input
Output
Process number
Cross section, particles information
Input
Output
Cross section, particles information
Nice formated table
Script runs that runs and gives input to the three previous programs


Cross section, particles information
C++ program that prints out a nice formated table


Process name
Fortran program that runs Pythia6


Input
Output
Allows to run one process after another and write them in the same table
Script that modifies some lines in both Pythia codes

It enables the input for the first two programs
Conclusions


Work done:
Pythia8 Multiplicity analyser:


Generalization to other MC generators



Easy way to compare cross sections of any process between Pythia6 and
Pythia 8
Nice output
Others:



It had to be done and tested
Testing the changes made


Easy way to compare different Monte Carlo generators
Generalization of the neutral Higgs processes to BSM


Easy way to check Pythia8 particles multiplicities
While doing all this I met some bugs, sometimes mine, sometimes not
We have solved them all (and that’s good) 
I hope my work here has been useful !
Thanks for your attention !