The Pluto ++ Event Generator Ingo Fröhlich for the HADES collaboration
Outline Motivation Pluto: event generator for hadronic interactions HADES High Acceptence DiElectron Spectrometer Examples: η production in pp collisions, heavy ion reactions Sampling models: (heavy) resonances, virtual photons Objects & user interface Macro examples Summary & outlook
What is Pluto? In simple terms: PLUTO is a ROOT-based framework for implementing customized event generators: object-oriented (C++), modular, flexible, extensible fast simulations (kinematics, decays) filters (e.g. acceptances, efficiencies) no transport through media, no geometry, no field! PLUTO designed by Marios Kagarlis (GSI 2000/2001) Documentation at www-hades.gsi.de/computing/pluto/html/plutoindex.html
Why we need Pluto? Example: η case Production of η dominated by the N*(1535) pp pn* ppη ppγγ* ppγe+e- Each step involves sophisticated physics N* pη : At threshold: strong dependence of width(mass) Relativistic Breit-Wigner ppη Decay plane alignment (= 3Euler angles) possible pp final state interaction η γγ*: Form factor (=mass of virtual photon) γ* e+ e - : Decay angles (=virtual photon spin) η Dalitz decay background for HADES
Thermal model Elementary collisions & heavy ion reactions in one tool Pluto Thermal model: Particles produced with Boltzmann distribution Options: 2 temperatures, radial flow Anisotropic sampling dn d 1 A 2 cos 2 cm A 4 cos 2 cm Broad mesons & resonance d 2 N dedm Bolzmann E BreitWigner M, E M Mass sampling ρ η E dn de pee T A 1, A 2, T 1, T 2 are free parameters π
Mass sampling of hadrons Spectral shape of collision products (e.g. N*1535): Breit Wigner dn dm M 2 tot M M 2 M 2 0 2 M 2 2 tot M Decay into stable hadrons N* pπ M 0,m 1,m 2 M = 0 M 0 M q q 0 2l 1 q 2 p 2 q 2 2, tot= i Unstable products: fold & integrate over m m m 2 i = mmin dn dm p cm m, m 1, m 2 m2 m,m 1 Here, q, q 0 are fixed by m 1,m 2 consequences: have to take all BRs into account recursive width calculation
Mass sampling of hadrons PLUTO simulation Total Spectral Shape N* pπ N* pη M [GeV] Spectral shape of collision products (e.g. N*1535) Depends on decay product Allows to setup generic hadronic cocktails
Mass sampling of virtual photons Decay η γγ*, γ* e+ e - Driven by HADES physics program η γγ*, γ* e + e - M ee [GeV] [1] Landsberg, Phys.Rep 128 (1985) 301 Smeared & acceptance filtered HADES data: PRL 98, 052302 (2007) PLUTO cocktail
PLUTO Generator: Structure of Code PData Particle & decay database Recursive Width calculation User interface vs. internal calculations PParticle based on TLorentzVector Result PDecayManager Cocktail front-end PDistributionManager Model objects PReaction Reaction chain e.g. pp pn* ppη ppγγ* ppγe+e- PDecay User class, genbod() call of mass & angular sampling PDistribution Distribution objects
PLUTO Generator PChannel PParticle (Daughter) PParticle (Mother) decay() PParticle (Daughter) Main decay done via 2 Classes
PParticle & PChannel PParticle(s) Based on TLorentzVector Instantiated in advance, and subsequently updated during the execution of an event loop PChannel single step in a reaction process, parent (elementary or quasi-particle), decay products (daughters) via a specified decay mode Example: N* pη Mass sampling (hardcoded in PData), angular distributions
Distribution Interface PChannel PDistributionManager (PDiM) ::decay() Knows all PDistributions which would be possible PDistribution PDistribution PDistribution PDistribution: Keeps decay chain template e.g. grandparent=η, parent=γ*, daughters=e+e- PDistributionManager: all known PDistributions PDistribution: complete control (e.g. multi particle correlations) PChannel::decay() -> Executes PDistribution interface methods
PChannel to PDistribution Interface PChannel::decay() PDistribution E.g. initial rotate loop over PDistribution list ::genbod() sample angles and masses or populate phase space loop over PDistribution list ::prepare() ::samplemass() ::sampleangle() ::isvalid() ::checkabort() ::finalize() The complete decay control might be shifted to a PDistribution (or only parts) Here one can cut into phase space distributions Redo the complete PReaction chain E.g. rotate back to lab frame done vs to do
PLUTO Generator PChannel PParticle (Daughter) PParticle (Mother) Thermal Model Genbod() PParticle (Daugther+Mother) PParticle (Daughter) Genbod() PReaction PChannel PParticle (Daugther)
PLUTO Generator PDecayManager constructs PReactions according to known branching ratios or user wishes PChannel PParticle PParticle PParticle PParticle PReaction PChannel PParticle
Example Set up a reaction: simple root-macro example > PReaction r(4.0,"p","p", "p NS11+ [p eta [g dilepton [e+ e-]]]", "eta_dalitz",0,0,0,1); > r.loop(1000000); Models: η polar angle pp partial waves (but intermediate resonance!) e+e- decay angle p η p θ ee θ θ pp η z z γ* momentum p p e- e+
Example New models can easily integrated w/o recompile Pluto > gsystem->compilemacro("fsi.c"); > FSI* fsi_test = new FSI("fsi_test","Just a test..."); > fsi_test->add("p", "DAUGHTER", "proton1"); > fsi_test->add("p", "DAUGHTER", "proton2"); > fsi_test->add("eta","daughter"); > fsi_test->add("?","parent"); > makedistributionmanager()->add(fsi_test); p + p --> p + p + eta Interaction model: fixed-momentum beam Only DistributionManager angular distributions mass-dependent-width Breit-Wigner resonances [permanent] Eta polar angles in pp reactions [permanent] pp alignment in pp reactions [permanent] Just a test... Inherited from PDistribution Runtime template Tagging for FSI.C
Summary & Outlook Pluto: from a toy-model to serious model event generator user interface: root-macro for setting up the reaction, control (even include new models!) Realistic mass sampling (hadrons, virt. photons) Heavy ion reactions & consequent decays ToDo PData should have interface (set up BRs, pids) Mass sampling (from PData) to PDistributions Generic file interface (input and output, some work already done)...
Backup Slides
Motivation HADES@GSI Heavy ion reactions up to 2GeV per Nucleon Nucleon-Nucleon interactions up to 3.5 AGeV Low to intermediate energies: Hadron production dominated by resonances Main Program: Measurement of virtual photons via γ* e + e - : Original intention for Pluto: Feasability studies (e.g. beam time proposals) for heavy ion reactions fast event generation Later: Model comparison, acceptance corrections Nuclear matter ρ meson γ e + e -
Models and their Implementation Models might be implemented many times Different template (decay chain) Different private options of PXXXDistribution TF1 * pseudoscalar_decay = new TF1("helicity",f_eta_decay,-1,1,1); PAngularDistribution * eta_dilepton_helicity = new PAngularDistribution("eta_dilepton_helicity","Helicity angle of the dilepton decay of eta"); eta_dilepton_helicity->add("dilepton","parent"); eta_dilepton_helicity->add("e+", "DAUGHTER"); eta_dilepton_helicity->add("e-", "DAUGHTER", "primary"); eta_dilepton_helicity->add("eta", "GRANDPARENT", "base_reference"); eta_dilepton_helicity->setanglefunction(pseudoscalar_decay); pdm->add(eta_dilepton_helicity); Particle marker for the PXXXDistribution
Control Clear interface to disable single channels and groups of physics (via id. -> no hard coded flag) No need to touch framework code Output of PDistributionManager (pre-defined implementations) -------------------- PDistributionManager -------------------- eta_physics Physics about eta production, and decay [X] pp_eta_prod_angle Eta polar angles in pp reactions for direct production [X] pp_ns_eta_prod_angle Eta polar angles in pp reactions via N* [X] pp_eta_pp_align pp alignment in pp reactions for direct eta production [X] pp_ns_eta_pp_align pp alignment in pp reactions for eta production via N* [X] eta_hadronic_decay Eta matrix element for decay into charged pions dilepton_physics Physics about the decay of dileptons [X] eta_dilepton_helicity Helicity angle of the dilepton decay of eta [X] etaprime_dilepton_helicity Helicity angle of the dilepton decay of etaprime [X] pi0_dilepton_helicity Helicity angle of the dilepton decay of pi0...
The Freedom of the User The user can apply many changes inside the macro Changing parameters for build-in implementations PDistributionManager *pdist = makedistributionmanager(); PDalitzDistribution *eta_pion_decay = (PDalitzDistribution *) pdist->getdistribution("eta_hadronic_decay"); eta_pion_decay->setslopes(1.072,0.11); //KLOE result Using build-in models Or creating new models
η Dalitz Decay e + Distributions in several frames e.g. lepton angle in dilepton rest frame with respect to dilepton momentum vector in meson rest frame... Pseodoscalar: θx, φ X and φ ee isotropic, helicity angle 1+cos²θ ee...but smeared due to momentum distribution γ* X X production plane of source X e θ e ee dilepton decay plane φ e ee θ γ virtual photon plane N* contribution φx γ
η Production Background subtraction done for different slices, e.g. polar angles Model-dependent acceptance correction done with PLUTO η CBarrel matrix element N* contribution by DISTO [2] pp alignment missing Distributions of η [1] production consistent with DISTO data [1] F. Balestra at al. (DISTO collaboration), Phys.Rev.C69:064003,2004 [2] I. Fröhlich et al, nucl-ex/0610048
η Electromagnetic Form Factor η form factor known [1] Provides exact model to check invariant mass spectrum Acceptance correction: Done with PLUTO η angle, ee helicity angle, pp alignment missing [1] Landsberg, Phys.Rep 128 (1985) 301 preliminary
C+C @ 2AGeV Simulation Pluto ++ Thermal model PFireball Model A: trivial sources like π 0, η, ω Model B: with short-lived resonances PRL 98, 052302 (2007) model B fails to describe the data!
C+C @ 2AGeV Simulation Pluto ++ : Check in-medium contribution Normalized to "trivial" PLUTO cocktail A Interpretation might depend on the PFireball model + decay properties