Adding a new process CERN User’s Workshop 13 November 2002 V.Ivanchenko, CERN, Budker Institute for Nuclear Physics Based on presentation of M.Verderi.

Slides:



Advertisements
Similar presentations
IEEE Nuclear Science Symposium and Medical Imaging Conference Short Course The Geant4 Simulation Toolkit Sunanda Banerjee (Saha Inst. Nucl. Phys., Kolkata,
Advertisements

1 l Inheritance Basics l Programming with Inheritance l Dynamic Binding and Polymorphism Inheritance.
Development of an Interface for Using EGS4 Physics Processes in Geant4 K.Murakami (KEK) 27/Mar./
Makoto Asai (SLAC) Geant4 Users SLAC Feb. 18 th, 2002 Getting Started.
Hadronic and Electromagnetic Physics: special applications V.Ivanchenko BINP, Novosibirsk, Russia & CERN, Geneve, Switzerland.
Class Diagram. Decay process G4Decay Class is a process which manages –Decay at Rest AtRestDoIt mean life time =  –Decay in Flight PostStepDoIt mean.
Makoto Asai (SLAC) Geant4 Users CERN Nov. 15 th, 2002 Customizing Run Management.
© Copyright QinetiQ 2006 G4 C-S Biasing Based on the G4WrapperProcess Fan Lei Geant4 Biasing Mini Workshop, SLAC 21 March 2007.
1 Chapter 7 l Inheritance Basics l Programming with Inheritance l Dynamic Binding and Polymorphism Inheritance.
Makoto Asai (SLAC) Geant4 Users CERN Nov. 11 th, 2002 Getting Started.
Makoto Asai (SLAC) Geant4 Users SLAC Feb. 18 th, 2002 Getting Started.
Chapter 11 Operating Systems
Development of an Interface for Using EGS4 Physics Processes in Geant4 K.Murakami (KEK) 27/Mar./
Makoto Asai (SLAC) Geant4 Users CERN Nov. 13th, 2002 Stack management, Digitization and Pile-up.
1 Geant4 Physics Based Event Biasing Jane Tinslay, SLAC March 2007, Geant4 v8.2p01.
Dr. Ahmad R. Hadaegh A.R. Hadaegh California State University San Marcos (CSUSM) Page 1 Virtual Functions Polymorphism Abstract base classes.
Geant4: Electromagnetic Processes 2 V.Ivanchenko, BINP & CERN
Particles and Processes The full set of lecture notes of this Geant4 Course is available at
IEEE Nuclear Science Symposium and Medical Imaging Conference Short Course The Geant4 Simulation Toolkit Sunanda Banerjee (Saha Inst. Nucl. Phys., Kolkata,
Inheritance. Recall the plant that we defined earlier… class Plant { public: Plant( double theHeight ) : hasLeaves( true ), height (theHeight) { } Plant(
Progress on generic biasing Marc Verderi LLR – Ecole polytechnique Geant4 Collaboration Meeting Seville September 2013.
Marc Verderi - IN2P3 SLAC User's Workshop.1 Introduction G EANT4 has been designed to allow users to implement new processes the kernel will treat as any.
Geant4 Electromagnetic Physics Introduction V.Ivanchenko, M.Maire, M.Verderi  Process interface  Physics categories  Electromagnetic physics  PhysicsList.
Physics I: Physics Lists Geant4 Tutorial at Jefferson Lab 10 July 2012 Dennis Wright (SLAC) Geant4 9.6 beta.
Geant4 Event Biasing Marc Verderi, LLR (Heavily copied from Jane Tinslay, SLAC) June 2007.
Progress on generic biasing Marc Verderi LLR – Ecole polytechnique Geant4 Collaboration Meeting Seville September 2013.
Geant4 internal Classes and Objects Gunter Folger / CERN Geant4 course, Annecy 2008 User Action & Information Classes.
1 Physics I: Physics Lists Paris Geant4 Tutorial 4 June 2007 Marc Verderi Laboratoire Leprince-Ringuet (Heavily copied from D. Wright) Geant4 V8.3.
Computing Performance Recommendations #13, #14. Recommendation #13 (1/3) We recommend providing a simple mechanism for users to turn off “irrelevant”
IEEE Nuclear Science Symposium and Medical Imaging Conference Short Course The Geant4 Simulation Toolkit Sunanda Banerjee (Saha Inst. Nucl. Phys., Kolkata,
17-19 Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan Oct, 2007Geant4 Japan 2007 Geant4 Collaboration.
Geant4 internal Classes and Objects Geant4 Users’ Tutorial February 2010 Gunter Folger / CERN User Action & Information Classes.
Physics processes in general SLAC User’s Workshop February 18 – Marc Verderi Ecole Polytechnique - LLR.
Introduction What is detector simulation? A detector simulation program must provide the possibility of describing accurately an experimental setup (both.
Cristian Bungau ThorEA Meeting - Oxford - April 2010.
Basics of Primary Particle Generation and Tracking Makoto Asai (SLAC) Geant4 Tutorial CERN May 25-27, 2005 May 2005, Geant4 v7.0p01.
Run and Event G4Run and G4RunManager In Geant4, the Run is the largest unit of simulation and it consist of a series of events Within a Run, the detector.
Detector Description – Part III Ivana Hrivnacova, IPN Orsay Tatiana Nikitina, CERN Aknowledgement: Slides by: J.Apostolakis, G.Cosmo, A. Lechner.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
Interfaces F What is an Interface? F Creating an Interface F Implementing an Interface F What is Marker Interface?
V.Ivanchenko Salamanca1 Geant4: Hadronic Processes 1  Cross sections  Secondary generators  Nuclear interactions at rest  CHIPS model.
V.Ivanchenko Salamanca1 Geant4: Electromagnetic Processes 1  Introduction  Interfaces  PhysicsList  Optical process.
Makoto Asai (SLAC) Getting Started MGP: added class diagram of basic user application.
Physics I: Physics Lists Puebla Geant4 Tutorial 15 June 2010 Dennis Wright Geant4 V9.3.p01.
Geant4 internal Classes and Objects Gunter Folger / CERN MC-PAD, DESY/Hamburg January 2010 User Action & Information Classes.
Recap Introduction to Inheritance Inheritance in C++ IS-A Relationship Polymorphism in Inheritance Classes in Inheritance Visibility Rules Constructor.
Maria Grazia Pia, INFN Genova and CERN1 Geant4 highlights of relevance for medical physics applications Maria Grazia Pia INFN Genova and CERN.
Physics II : processes Paris Geant4 Tutorial 5 June 2007 Marc Verderi Ecole Polytechnique - LLR.
New approach of Geant4 Low Energy EM models (from version 9.3) Luciano Pandola INFN, Laboratori del Gran Sasso MaGe Joint Workshop, Munich, January 2010.
Maria Grazia Pia Retrieving information from kernel Acknowledgements: A. Lechner, J. Apostolakis, M. Asai, G. Cosmo, A. Howard.
Geant4 KISTI Tutorial Marc Verderi LLR – Ecole polytechnique October 2012 Physics II: Overview, Processes, Production Threshold.
Interaction with the Geant4 kernel
Particles and Processes
Interaction with the Geant4 kernel
Review: Two Programming Paradigms
Particles and Processes
Physics I: Physics Lists
Particles and Processes
A shortcut to the tracking
Model Approach for Standard EM Physics
Geant4: Electromagnetic Processes 2
Hadronic Physics in Geant4
Particles and Processes
Marc Verderi GEANT4 collaboration meeting 01/10/2002
Geant4: Electromagnetic Physics 4 V.Ivanchenko, BINP & CERN
Customizing Run Management
Introduction to physics and processes
Decay Process Makoto Asai (SLAC)
Monte Carlo /12/25.
Particles and Processes
Presentation transcript:

Adding a new process CERN User’s Workshop 13 November 2002 V.Ivanchenko, CERN, Budker Institute for Nuclear Physics Based on presentation of M.Verderi at SLAC

V.Ivanchenko CERN Introduction Geant4 provides a variety of physics processes – electromagnetic, hadronic, optical…. Geant4 is a free toolkit - users can implement any new process Processes are designed in a generic/general way Process interface is very stable Simple processes are easy to realize ! Sometimes details of process interface are not so obvious and should be discussed

V.Ivanchenko CERN Outline Overview of the process interface Mandatory and optional methods Details of method signatures Processes types Examples of electromagnetic processes Hadron processes

V.Ivanchenko CERN G4 processes Physics is described via abstract interface called process associated with particles Distinction between process and model – one process may includes many models Generation of final state is independent from the access and use of cross sections and from tracking Transparent access to cross sections and secondary generators

V.Ivanchenko CERN G4VProcess interface overview All processes inherit from the base class G4VProcess Standard interface: a process provides Interaction Lenths, StepLimits, and DoIt methods Processes active AlongStep, PostStep, AtRest There are 7 types of processes with predefined interfaces: ContinuousProcess ContinuouesDiscreteProcess DiscreteProcess RestContinuouesDiscretePro cess RestContinuouesProcess RestDiscreteProcess RestProcess

V.Ivanchenko CERN The mandatory methods G4VProcess defines 6 pure virtual methods: AtRestGetPhysicalInteractionLength, AtRestDoIt; AlongStepGetPhysicalInteractionLength, AlongStepDoIt; PostStepGetPhysicalInteractionLength, PostStepDoIt. You need to override to implement a new process Either directly, or by using some intermediate class, like G4VDiscreteProcess The signatures of those methods are described later G4VProcess defined in source/processes/management;

V.Ivanchenko CERN The optional methods G4VProcess defines also several virtual (but non pure-virtual) methods. For example: void BuildPhysicsTable(const G4ParticleDefinition&); Invoked by the run manager, after cuts are (re)set; G4bool IsApplicable(const G4ParticleDefinition&); Process is assign only for true particles void StartTracking(): void EndTracking(); Invoked before and after the tracking of the track has finished; But several other virtual methods exist. Please review G4VProcess.hh for details;

V.Ivanchenko CERN « Life cycle » of a process 1. Construction; 1. BuildPhysicsTable(); 1. StartTracking(); 1. If particle at rest: 1. AtRestGetPhysicalInteractionLength(); 2. AtRestDoIt(); 2. Else: 1. PostStepGetPhysicalInteractionLength(); 2. AlongStepGetPhysicalInteractionLength(); 3. AlongStepDoIt(); 4. PostStepDoIt(); 2. EndTracking(); 2. Destruction; Stepping loop Tracking loop Implementation mandatory Implementation optional

V.Ivanchenko CERN Number of interaction length G4VProcess and derived classes implement a scheme based on the « number of interaction length » to define the time/space point of the interaction and to choose the process of interaction assumed for the processes dealing with the exponential law At the beginning of the tracking the process is given a sampled value « number of interaction lenght » N int At the beginning of each step The (concrete) process evaluates the current « mean free path » l free, given the current material; The « true path length » the process allows to the particle before the interaction occurs is then: N int  l free ; This value is returned by GetPhysicalInteractionLength;

V.Ivanchenko CERN Number of interaction length Then the step occurs with the actual step length L step value; At the beginning of the new step: If the process has limited the previous step (ie its interaction occured), it gets a new N int value; Otherwise, the process converts back L step into a number of « consumed » interaction length, which is substracted to its N int amount; Please review for example G4VDiscreteProcess; Note that all related methods are virtual, allowing to redefine them, if needed.

V.Ivanchenko CERN Some advices Do not overwrite GPIL virtual functions if it is possible! Try to use one of 7 predefined interfaces In that case the accurate control on interaction length is provided for you

V.Ivanchenko CERN Example: G4VDiscreteProcess inline G4double G4VDiscreteProcess::PostStepGetPhysicalInteractionLength( const G4Track& track, G4double previousStepSize, G4ForceCondition* condition) { if ( (previousStepSize <=0.0) || (theNumberOfInteractionLengthLeft<=0.0)) { // beginning of tracking (or just after DoIt of this process) ResetNumberOfInteractionLengthLeft(); } else { //subtract NumberOfInteractionLengthLeft SubtractNumberOfInteractionLengthLeft(previousStepSize); if(theNumberOfInteractionLengthLeft<perMillion) theNumberOfInteractionLengthLeft=0.; } //… //get mean free path currentInteractionLength = GetMeanFreePath(track, previousStepSize, condition); G4double value = theNumberOfInteractionLengthLeft*currentInteractionLength; return value; }

V.Ivanchenko CERN Interfaces to be used protected: // For all processes virtual G4double GetMeanFreePath( const G4Track& track, G4double previousStepSize, G4ForceCondition* condition ) = 0 // For continuous processes virtual G4double GetContinuousStepLimit( const G4Track& track, G4double previousStepSize, G4double currentMinimumStep, G4ForceCondition* condition ) = 0;

V.Ivanchenko CERN When process is active? All Continuous processes are invocated at each step of the particle If Discrete or Rest process limits the step then it is invocated To help to activate Rest or Discrete process at each step one should use G4ForceCondition

V.Ivanchenko CERN G4ForceConditions GetPhysicalInteractionLength methods involve G4ForceCondition & G4GPILSelection; These are two enumerations: They define signals, that processes send to the stepping, to require the treatment they wish from the stepping; Involve  « delicate » aspects; Defined in source/track;

V.Ivanchenko CERN G4ForceConditions G4ForceCondition (AtRest and PostStep) defines requests for treatment of the DoIt methods. It can take the values: NotForced: Usual case : the DoIt method is invoked if the related GetPhysicalInteractionLength has limited the step; Forced: The related DoIt is applied anyway; Conditionally: The PostStepDoIt is applied if the AlongStep has limited the step; ExclusivelyForced: Only the PostStepDoIt of the process is applied: all other AlongStep and PostStep are ignored;

V.Ivanchenko CERN G4GPILSelection More delicate… G4GPILSelection (AlongStep) defines requests for the treatment of the GetPhysicalInteractionLength methods. It can takes the values: CandidateForSelection: usual case : the process will be « declared » to have limited the step if it returns the smallest length; NotCandidateForSelection: the process will not be « declared » to have limited the step, even if it returns the smallest lenght; In practice, only the multiple-scattering makes use of the « NotCandidateForSelection » signal;

V.Ivanchenko CERN Examples of processes G4hIonisation – notForced ContinuousDiscrete G4Decay – notForced RestDiscrete G4Cherenkov – Continuous G4Scintillation – Forced RestDiscrete G4MuonMinusCaptureAtRest – Rest G4ProtonInelasticProcess – notForced Discrete

V.Ivanchenko CERN DoIt signature virtual G4VParticleChange* AtRestDoIt( const G4Track& track, const G4Step& step ) = 0; virtual G4VParticleChange* AlongStepDoIt( const G4Track& track, const G4Step& step ) = 0; virtual G4VParticleChange* PostStepDoIt( const G4Track& track, const G4Step& step ) = 0;

V.Ivanchenko CERN DoIt signature All DoIt methods have the same signature: They receive const G4Track and G4Step It is not allowed to change directly the track, nor the step They return a G4VParticleChange: This G4VParticleChange returns the changes of the track to the stepping Not the « delta » It is assumed to create of secondary G4Track Need to be familiar with, to implement a process ;

V.Ivanchenko CERN G4VParticleChange G4VParticleChange is defined in source/track It defines the virtual methods: virtual G4Step* UpdateStepForAtRest(G4Step*); virtual G4Step* UpdateStepForAlongStep(G4Step*); virtual G4Step* UpdateStepForPostStep(G4Step*); Which are used to communicate the changes to be applied on the primary; They return the G4Step after having updated it; Each concrete G4VParticleChange should modify only the necessary members of the G4Step; Can be relevant if your G4VParticleChange is often used;

V.Ivanchenko CERN G4VParticleChange To create secondaries by the process, the following methods have to be used: void SetNumberOfSecondaries(G4int); To declare the maximum number of secondaries which will be created by the process; void AddSecondary(G4Track* aSecondary); Which has to be called for each secondary created; G4VParticleChange has a method Initialize(const G4Track&) which is used to initialize the members which will be changed by the process

V.Ivanchenko CERN G4TrackStatus G4TrackStatus defines the possible status a track can undertake; It is needed when writing a process: fAlive, // Continue the tracking fStopButAlive, // Invoke active rest physics processes and // and kill the current track afterward fStopAndKill, // Kill the current track fKillTrackAndSecondaries, // Kill the current track and also // associated secondaries. fSuspend, // Suspend the current track fPostponeToNextEvent // Postpones the tracking of thecurrent // track to the next event.

V.Ivanchenko CERN Example with G4GammaConversion (1) Example with G4GammaConversion, which uses a particle change defined in the base class G4VDiscreteProcess; G4VParticleChange* G4GammaConversion::PostStepDoIt( const G4Track& aTrack, const G4Step& aStep) { aParticleChange.Initialize(aTrack); //Does the physics… aParticleChange.SetNumberOfSecondaries(2) ; //… G4double localEnergyDeposit = 0.; if (ElectKineEnergy > fminimalEnergy) { //… // create G4DynamicParticle object for the particle1 G4DynamicParticle* aParticle1= new G4DynamicParticle( G4Electron::Electron(), ElectDirection, ElectKineEnergy); aParticleChange.AddSecondary(aParticle1); } else { localEnergyDeposit += ElectKineEnergy;}

V.Ivanchenko CERN Example with G4GammaConversion (2) // the e+ is always created (even with Ekine=0) for further annihilation. //… if (PositKineEnergy < fminimalEnergy) { localEnergyDeposit += PositKineEnergy; PositKineEnergy = 0.;} //… // create G4DynamicParticle object for the particle2 G4DynamicParticle* aParticle2= new G4DynamicParticle( G4Positron::Positron(), PositDirection, PositKineEnergy); aParticleChange.AddSecondary(aParticle2); aParticleChange.SetLocalEnergyDeposit(localEnergyDeposit); // // Kill the incident photon // aParticleChange.SetEnergyChange( 0. ); aParticleChange.SetStatusChange( fStopAndKill ); return G4VDiscreteProcess::PostStepDoIt( aTrack, aStep ); }

V.Ivanchenko CERN Some remarks It is not necessary to know Geant4 kernel in order to implement a new process One have to follow the described interfaces Having several implementation for given process is normal for Geant4

V.Ivanchenko CERN Some limits and constrains Signature should be adequate to physics Energy loss processes are coupled in Geant4 via dE/dx, Range, and InverseRange tables Hadronic physics utilizes model approach, so cross sections and secondary generators are separate One can implement also a model for hadronic interaction or specific hadronic cross section

V.Ivanchenko CERN Conclusion remarks User can substitute any of existing processes It is assumed that Geant4 user is at the same time a developer Geant4 team will appreciate an efforts of any user to implement his/her own process, if the is correct from physics point of view New process can be easily utilized in Geant4 thanks to OO technology