source: trunk/documents/UserDoc/UsersGuides/ForToolkitDeveloper/latex/OOAnalysisDesign/PhysicsProcesses/Hadronic/hadronic.tex

Last change on this file was 1208, checked in by garnier, 15 years ago

CVS update

File size: 24.3 KB
Line 
1\section{Hadronic Processes}
2The purpose of this note is to publish the implementation frameworks used in and
3provided by {\sc Geant4} for hadronic shower simulation
4as in the 1.1 release of the program. The
5implementation frameworks follow the Russian dolls approach to
6implementation framework design.
7A top-level, very abstracting implementation framework provides the basic
8interface to the other {\sc Geant4} categories, and fulfils the most general
9use-case for hadronic shower simulation. It is refined for more specific
10use-cases by implementing a hierarchy of implementation frameworks, each level
11implementing the common logic of a particular use-case package in a concrete implementation of
12the interface specification of one framework level above, this way refining the
13granularity of abstraction and delegation. This defines the Russian dolls architectural
14pattern.
15Abstract classes are used as the delegation
16mechanism\footnote{The same can be achieved with template specialisations
17with slightly improved CPU performance but at the cost of significantly more complex
18designs and, with present compilers, significantly reduced portability.}.
19All framework functional requirements were obtained through
20use-case analysis. In the following we present for each framework level the
21compressed use-cases, requirements, designs including the flexibility provided, and
22illustrate the framework functionality with examples. All design patterns cited are to
23be read as defined in \cite{Patterns}.
24\section{Level 1 Framework - processes}
25\begin{figure}[b!] % fig 1
26\centerline{\includegraphics[width=14cm]{Level1.eps}}
27\caption{Level 1 implementation framework of the hadronic category
28of {\sc Geant4}.}
29\label{Level1}
30\end{figure}
31There are two principal use-cases of the level 1 framework. A user will want to
32choose the processes used for his particular simulation run, and a physicist
33will want to write code for processes of his own and use these together with the
34rest of the system in a seamless manner.
35\subsection {Requirements}
36\begin{enumerate}
37\item \label{L1R1} Provide a standard interface to be used by process implementations.
38\item \label{L1R2} Provide registration mechanisms for processes.
39\end{enumerate}
40\subsection {Design and interfaces}
41Both requirements are implemented in a sub-set of the tracking-physics interface
42in {\sc Geant4}. The class diagram is shown in figure \ref{Level1}.
43All processes have a common base-class {\tt G4VProcess}, from
44which a set of specialised classes are derived. Three of them are used as base
45classes for hadronic processes for particles at rest ({\tt G4VRestProcess}), for
46interactions in flight ({\tt G4VDiscreteProcess}), and for processes like
47radioactive decay where the same implementation can represent both these extreme cases
48({\tt G4VRestDiscreteProcess}).
49
50Each of these classes declares two types of methods; one for calculating the
51time to interaction or the physical interaction length, allowing tracking to request
52the information necessary to decide on the process responsible for final state
53production, and one to compute
54the final state. These are pure virtual methods, and have to be implemented in
55each individual derived class, as enforced by the compiler.
56\subsection {Framework functionality}
57The functionality provided is through the use of process base-class pointers
58in the tracking-physics interface, and the {\tt G4ProcessManager}. All
59functionality is implemented in abstract, and registration of derived process classes
60with the {\tt G4ProcessManager} of an individual particle allows for
61arbitrary combination of both {\sc Geant4} provided processes, and user-implemented
62processes. This registration mechanism is a modification on a Chain of Responsibility.
63It is outside the scope of the current paper, and its
64description is available from \cite{G4Manual}.
65\section{Level 2 Framework - Cross-sections and Models}
66\begin{figure}[b!] % fig 1
67\centerline{\includegraphics[width=14cm]{Level2_1.eps}}
68\caption{Level 2 implementation framework of the hadronic category
69of {\sc Geant4}; cross-section aspect.}
70\label{Level2_1}
71\end{figure}
72\begin{figure}[b!] % fig 1
73\centerline{\includegraphics[width=14cm]{Level2_2.eps}}
74\caption{Level 2 implementation framework of the hadronic category
75of {\sc Geant4}; final state production aspect.}
76\label{Level2_2}
77\end{figure}
78\begin{figure}[b!] % fig 1
79\centerline{\includegraphics[width=14cm]{Level2_3.eps}}
80\caption{Level 2 implementation framework of the hadronic category
81of {\sc Geant4}; isotope production aspect}
82\label{Level2_3}
83\end{figure}
84At the next level of abstraction, only processes that occur for particles
85in flight are
86considered. For these, it is easily observed that the sources of cross-sections
87and final state production are rarely the same. Also, different sources will
88come with different restrictions. The principal use-cases of the framework are addressing
89these commonalities. A user might want to combine different cross-sections and
90final state or isotope production models as provided by {\sc Geant4}, and a physicist might
91want to implement his own model for particular situation, and add cross-section
92data sets that are relevant for his particular analysis to the system in a
93seamless manner.
94\subsection {Requirements}
95\begin{enumerate}
96\item  Flexible choice of inclusive scattering cross-sections.
97\item  Ability to use different data-sets for different parts of
98the simulation, depending on the conditions at the point of interaction.
99\item  Ability to add user-defined data-sets in a seamless manner.
100\item  Flexible, unconstrained choice of final state production models.
101\item  Ability to use different final state production codes
102for different parts of the simulation, depending on the conditions at the
103point of interaction.
104\item  Ability to add user-defined final state production models in
105a seamless manner.
106\item Flexible choice of isotope production models, to run in
107parasitic mode to any kind of transport models.
108\item  Ability to use different isotope production codes
109for different parts of the simulation, depending on the conditions at the
110point of interaction.
111\item  Ability to add user-defined isotope production models in a
112seamless manner.
113\end{enumerate}
114\subsection {Design and interfaces}
115The above requirements are implemented in three framework components, one for
116cross-sections, final state production, and isotope production each.
117The class diagrams are shown in figure \ref{Level2_1} for the cross-section aspects,
118figure \ref{Level2_2} for the final state production aspects, and figure \ref{Level2_3}
119for the isotope production aspects.
120The three parts are integrated in the {\tt G4HadronicProcess} class, that serves as
121base-class for all hadronic processes of particles in flight.
122\subsubsection{Cross-sections}
123Each hadronic process is derived from {\tt G4HadronicProcess}, which
124holds a list of ``cross section data sets''.
125The term ``data set'' is
126representing an object that encapsulates methods and data for calculating
127total cross sections for a given process in a certain range of validity.
128The implementations may take any form.  It can be a simple equation as well as
129sophisticated parameterisations, or evaluated data.
130All cross section data set classes are derived from the abstract class
131{\tt G4VCrossSectionDataSet}, which declares methods that allow
132the process inquire, about the applicability of an individual data-set through
133{\tt IsApplicable(const G4DynamicParticle*, const G4Element*)},
134and to de\-le\-gate the calculation of the actual cross-section value through
135\\
136{\tt GetCrossSection(const G4DynamicParticle*, const G4Element*)}.
137\subsubsection{Final state production}
138For final state production, we provide the {\tt G4HadronicInteraction} base class.
139It declares a minimal interface of only one pure virtual method for final state
140production,
141\\
142{\tt G4VParticleChange* ApplyYourself(const G4Track \&, G4Nucleus \&)}.
143\\
144{\tt G4HadronicProcess} provides a registry for final state
145production models inheriting from {\tt G4HadronicInteraction}. Again, final state production
146model is meant in very general terms. This can be an implementation of a
147quark gluon string model\cite{QGSM}, a sampling code for ENDF/B data formats\cite{ENDFForm}, or a parametrisation
148describing only neutron elastic scattering off Silicon up to 300~MeV.
149\subsubsection{Isotope production}
150For isotope production, a base class ({\tt G4VIsotopeProduction}) is provided. It declares a
151method ({\tt G4IsoResult * GetIsotope(const G4Track \&, const G4Nucleus \&)})
152that calculates and returns the isotope production information. Any concrete isotope
153production model will inherit from this class, and implement the method. Again, the modelling
154possibilities are not limited, and the implementation of concrete production models is not
155restricted in any way. By convention, the {\tt GetIsotope} method returns NULL, if the model
156is not applicable for the current projectile target combination.
157\subsection {Framework functionality}
158\subsubsection{Cross-sections}
159{\tt G4HadronicProcess} provides registering possibilities for data-sets.
160A default is provided covering all possible conditions to some approximation.
161The process stores and retrieves the data-sets through a data-store that acts like a
162FILO stack (a Chain of Responsibility with a
163First In Last Out decision strategy). This allows the user to map out
164the entire parameter space by overlaying
165cross-section data-sets to optimise the overall result. An example are the cross-sections for
166low energy neutron transport. If these are registered last by the user, they will be used
167whenever
168low energy neutrons are encountered. In all other conditions the system falls back on the
169default, or data sets with earlier registration dates.
170The fact that the registration is done through abstract base classes with no side-effects
171allows the user to implement and use his own cross-sections. An example are special
172reaction cross-sections of $K^0$-nuclear interactions that might be used for
173$\epsilon/\epsilon '$ analysis at LHC to control the systematic error.
174\subsubsection{Final state production}
175The {\tt G4HadronicProcess} provides a registration service for classes deriving from {\tt
176G4HadronicInteraction}, and delegates final state production to the applicable model.
177{\tt G4HadronicInteraction} provides the functionality needed to define and enforce
178the applicability of a particular model. Models inheriting from {\tt G4HadronicInteraction} 
179can be restricted in applicability in projectile type and energy, and can be
180activated/deactivated for individual materials and elements. This allows a user to use
181final state production models in arbitrary combinations, and to write his own models for
182final state production. The design is a variant of a Chain of Responsability.
183An example would be the likely CMS scenario - the
184combination of low energy neutron transport with a quantum molecular
185dynamics\cite{QMD} or chiral
186invariant phase space decay\cite{CHIPS} model
187in the case of tracker materials and fast parametrised models for calorimeter materials,
188with user defined modelling of interactions of spallation nucleons with the most abundant
189tracker and calorimeter materials.
190\subsubsection{Isotope production}
191The {\tt G4HadronicProcess} by default calculates the isotope production information from the
192final state given by the transport model. In addition, it provides a registering mechanism
193for isotope production models that run in parasitic mode to the transport models and
194inherit from {\tt G4VIsotopeProduction}.
195The registering mechanism behaves like a FILO stack, again based on Chain of
196Responsibility.
197The models will be asked for isotope production information
198in inverse order of registration. The
199first model that returns a non-NULL value will be applied.
200In addition, the {\tt G4HadronicProcess} provides the basic infrastructure for accessing and
201steering of isotope-production information. It allows to enable and disable the calculation
202of isotope production information
203globally, or for individual processes, and to retrieve the isotope production information
204through the
205\\
206{\tt G4IsoParticleChange * GetIsotopeProductionInfo()} 
207method at
208the end of each step. The {\tt
209G4HadronicProcess} is a finite state machine that will ensure the {\tt
210GetIsotopeProductionInfo} returns a non-zero value only at the first call after
211isotope production occurred.
212An example of the use of this functionality is the study of activation of a Germanium
213detector in a high precision, low background experiment.
214\section{Level 3 Framework - Theoretical Models}
215\begin{figure}[b!] % fig 1
216\centerline{\includegraphics[width=14cm]{Level3_1.eps}}
217\caption{Level 3 implementation framework of the hadronic category
218of {\sc Geant4}; theoretical model aspect.}
219\label{Level3_1}
220\end{figure}
221{\sc Geant4} provides at present one implementation framework for theory
222driven models. The main use-case is that of a user wishing to use theoretical models in
223general, and to use various intra-nuclear
224transport or pre-compound models together with models simulating the initial interactions at
225very high energies.
226\subsection {Requirements}
227\begin{enumerate}
228\item Allow to use or adapt any string-parton or parton transport\cite{VNI} model.
229\item Allow to adapt event generators, ex. PYTHIA\cite{PYTHIA7} for final state production in shower simulation.
230\item Allow for combination of the above with any intra-nuclear transport (INT).
231\item Allow stand-alone use of intra-nuclear transport.
232\item Allow for combination of the above with any pre-compound model.
233\item Allow stand-alone use of any pre-compound model.
234\item Allow for use of any evaporation code.
235\item Allow for seamless integration of user defined components for any of the above.
236\end{enumerate}
237\subsection {Design and interfaces}
238To provide the above flexibility, the following abstract base classes have been
239implemented:
240\begin{itemize}
241\item {\tt G4VHighEnergyGenerator}
242\item {\tt G4VIntranuclearTransportModel}
243\item {\tt G4VPreCompoundModel}
244\item {\tt G4VExcitationHandler}
245\end{itemize}
246In addition, the class {\tt G4TheoFSGenerator} is provided to orchestrate interactions
247between these classes.
248The class diagram is shown in figure \ref{Level3_1}.
249
250{\tt G4VHighEnergyGenerator} serves as base class for parton transport or parton
251string models, and for Adapters to event generators. This class declares two methods,
252{\tt Scatter}, and {\tt GetWoundedNucleus}.
253
254The base class for INT inherits from
255{\tt G4HadronicInteraction}, making any concrete implementation usable as
256stand-alone model. In doing so, it
257re-declares the {\tt ApplyYourself} interface of {\tt
258G4HadronicInteraction}, and adds a second interface, {\tt Propagate}, for further propagation
259after high energy interactions. {\tt Propagate}  takes as arguments
260a three-dimensions model of a wounded nucleus, and a set of secondaries with energies
261and positions.
262
263The base class for pre-equilibrium decay models, {\tt G4VPreCompoundModel},
264 inherits from {\tt G4HadronicInteraction}, again
265making any concrete implementation usable as stand-alone model. It adds a pure virtual 
266{\tt DeExcite} method
267for further evolution of the system when intra-nuclear transport assumptions
268break down. {\tt DeExcite} takes a {\tt G4Fragment}, the {\sc Geant4} representation of an
269excited nucleus, as argument.
270
271The base class for evaporation phases, {\tt G4VExcitationHandler}, declares an
272abstract method, {\tt BreakItUP()}, for compound decay.
273\subsection {Framework functionality}
274{\tt G4TheoFSGenerator} inherits from {\tt G4HadronicInteraction}, and hence can be
275registered as model for final state production with a hadronic process. It allows to
276register a concrete implementation of {\tt G4VIntranuclearTransportModel} and
277{\tt G4VHighEnergyGenerator}, and delegates initial interactions, and intra-nuclear transport
278of the corresponding secondaries to the respective classes. The design is a complex
279variant of a Strategy. The most spectacular application
280of this pattern is the use of parton-string models for string excitation, quark molecular
281dynamics for correlated string decay, and quantum molecular dynamics for transport, a
282combination which
283promises to result in a coherent description of quark gluon plasma in high energy nucleus
284nucleus interactions.
285
286{\tt G4VIntranuclearTransportModel} provides registering mechanisms for concrete
287implementations of {\tt G4VPreCompoundModel}, and provides concrete intra-nuclear transports
288with the possibility to delegate pre-compound decay to these models.
289
290{\tt G4VPreCompoundModel} provides a registering mechanism for compound decay through the
291{\tt G4VExcitationHandler} interface, and provides concrete implementations with the
292possibility to delegate the decay of a compound nucleus.
293
294The concrete scenario of {\tt G4TheoFSGenerator} using a dual parton model and a classical
295cascade, which in turn uses an exciton pre-compound model that delegates to an evaporation
296phase, would be the following: {\tt G4TheoFSGenerator} receives the conditions of the
297interaction; a primary particle and a nucleus. It asks the dual parton model to perform
298the initial scatterings, and return the final state, along with the by then damaged nucleus.
299The nucleus records all information on the damage sustained.
300{\tt G4TheoFSGenerator} forwards all information to the classical cascade, that propagates the particles in the
301already damaged nucleus, keeping track of interactions, further damage to the nucleus,
302etc.. Once the cascade assumptions
303break down, the cascade will collect the information of the current state of the hadronic
304system, like excitation energy and number of excited particles,
305and interpret it as a pre-compound system. It delegates the decay of this to the
306exciton model. The exciton model will take the information provided, and calculate
307transitions and emissions, until the number of excitons in the system equals the mean number of
308excitons expected in equilibrium for the current excitation energy. Then it hands over to the
309evaporation phase. The evaporation phase decays the residual nucleus, and the Chain of
310Command rolls back to {\tt G4TheoFSGenerator}, accumulating the information produced in
311the various levels of delegation.
312\section{Level 4 Frameworks - String Parton Models and Intra-Nuclear Cascade}
313\begin{figure}[b!] % fig 1
314\centerline{\includegraphics[width=14cm]{Level4_1.eps}}
315\caption{Level 4 implementation framework of the hadronic category
316of {\sc Geant4}; parton string aspect.}
317\label{Level4_1}
318\end{figure}
319\begin{figure}[b!] % fig 1
320\centerline{\includegraphics[width=14cm]{Level4_2.eps}}
321\caption{Level 4 implementation framework of the hadronic category
322of {\sc Geant4}; intra-nuclear transport aspect.}
323\label{Level4_2}
324\end{figure}
325The use-cases of this level are related to commonalities and
326detailed choices in string-parton models and cascade models. They are use-cases of an expert
327user wishing to alter details of a model, or a theoretical physicist, wishing to study
328details of a particular model.
329\subsection {Requirements}
330\begin{enumerate}
331\item Allow to select string decay algorithm
332\item Allow to select string excitation.
333\item Allow to select concrete implementation of three-dimensional model of the nucleus
334\item Allow to select concrete implementation of final state and cross-sections in
335intra-nuclear scattering.
336\end{enumerate}
337\subsection {Design and interfaces}
338To fulfil the requirements on string models, two abstract classes are provided,
339the {\tt G4VPartonStringModel} and the {\tt G4VStringFragmentation}.
340The base class for parton string models, {\tt G4VPartonStringModel},
341declares the {\tt GetStrings()}
342pure virtual method. {\tt G4VStringFragmentation}, the pure abstract
343base class for string fragmentation, declares the interface for string fragmentation.
344
345To fulfil the requirements on intra-nuclear transport, two abstract classes are provided,
346{\tt G4V3DNucleus}, and {\tt G4VScatterer}.
347At this point in time, the usage of these intra-nuclear transport related classes
348by concrete codes is not enforced by designs, as the details of the
349cascade loop are still model dependent, and more experience has to be gathered to achieve
350standardisation. It is within the responsibility of the implementers of concrete
351intra-nuclear transport
352codes to use the abstract interfaces as defined in these classes.
353
354The class diagram is shown in figure \ref{Level4_1} for the string parton model aspects, and
355in figure \ref{Level4_2} for the intra-nuclear transport.
356
357\subsection{Framework functionality}
358Again variants of Strategy, Bridge and Chain of Responsibility are used.
359{\tt G4VPartonStringModel} implements the initialisation of a three-dimensional model of a
360nucleus, and
361the logic of scattering. It delegates secondary production to string
362fragmentation through a {\tt G4VStringFragmentation} pointer. It provides a registering
363service for the concrete string fragmentation, and delegates the string excitation to derived
364classes. Selection of string excitation is through selection of derived class. Selection of
365string fragmentation is through registration.
366
367\section{Level 5 Framework - String De-excitation}
368
369\begin{figure}[b!] % fig 1
370\centerline{\includegraphics[width=14cm]{Level5_1.eps}}
371\caption{Level 5 implementation framework of the hadronic category
372of {\sc Geant4}; string fragmentation aspect.}
373\label{Level5_1}
374\end{figure}
375The use-case of this level is that of a user or theoretical physicist wishing to understand
376the systematic effects involved in combining various fragmentation functions with
377individual types of string fragmentation. Note that this framework level is meeting the
378current state of the art, making extensions and changes of interfaces in subsequent
379releases likely.
380\subsection {Requirements}
381\begin{enumerate}
382\item Allow the selection of fragmentation function.
383\end{enumerate}
384\subsection {Design and interfaces}
385A base class for fragmentation functions, {\tt G4VFragmentationFunction}, is provided.
386It declaring the {\tt GetLightConeZ()} interface.
387\subsection {Framework functionality}
388The design is a basic Strategy. The class diagram is shown in figure \ref{Level5_1}.
389At this point in time, the usage of the {\tt G4VFragmentationFunction} is not enforced
390by design, but made available from the {\tt G4VStringFragmentation} to an implementer of a
391concrete string decay. {\tt G4VStringFragmentation} provides a registering mechanism for the
392concrete fragmentation function. It delegates the calculation of $z_f$ of the hadron to
393split of the string to the concrete implementation. Standardisation in this area is expected.
394\section{Summary}
395A set of implementation frameworks has been provided for hadronic shower simulation. Finding
396framework functional requirements through use-case analysis has proven to be a highly
397effective tool. Framework components were found through bundling use-cases. Framework
398interfaces were defined by the need for delegation and flexibility; framework functionality
399was found from detailed requirements analysis.
400
401The Russian dolls approach, as defined in this paper, to framework design has proven very effective. Having layered
402implementation frameworks, and keeping abstractions in the upper levels of the framework
403hierarchy simple and general has
404proven to result in a structured and well suited solution to a complex problem.
405Addressing more specific use-cases in lower
406level frameworks that implement the interfaces of the more general framework has kept the
407system surprisingly extendible. It allows for distributed, and largely decoupled contributions
408of many scientists.
409\begin{thebibliography}{999}
410\bibitem{Geant4} The GEANT~4 Collaboration, \\
411CERN/DRDC/94--29, DRDC/P58 1994.
412\bibitem{Patterns} E. Gamm et al., Design Patterns, Addison-Wesley Professional Computing
413Series, 1995.
414\bibitem{G4Manual} 
415{\scriptsize http://cern.ch/geant4/G4UsersDocuments/Overview/html/index.html}
416\bibitem{QGSM} Kaidalov A. B., Ter-Martirosyan K. A., Phys. Lett. {\bf B117}
417247 (1982);
418\bibitem{ENDFForm} 
419Data Formats and Procedures for the Evaluated Nuclear Data
420 File, National Nuclear Data Center, Brookhave National Laboratory, Upton, NY, USA.
421\bibitem{QMD} For example: VUU and (R)QMD model of high-energy heavy ion collisions.
422H. Stocker et al., Nucl. Phys. A538, 53c-64c (1992)
423\bibitem{CHIPS} P.V. Degtyarenko, M.V. Kossov, H.P. Wellisch, Eur. Phys J. A 8, 217-222
424(2000)
425\bibitem{VNI} VNI 3.1, Klaus Geiger (Brookhaven), BNL-63762,
426Comput. Phys. Commun. 104, 70-160 (1997)
427\bibitem{PYTHIA7} M. Bertini, L. L\"onnblad, T. Sj\"orstrand, Pythia version 7-0.0 -- a
428proof-of-concept version, LU-TP 00-23, hep-ph/0006152, May 2000
429
430\end{thebibliography}
431
Note: See TracBrowser for help on using the repository browser.