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 !
© Copyright 2025 Paperzz