Geant4
10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4INCLRootFinder.hh
Go to the documentation of this file.
1
//
2
// ********************************************************************
3
// * License and Disclaimer *
4
// * *
5
// * The Geant4 software is copyright of the Copyright Holders of *
6
// * the Geant4 Collaboration. It is provided under the terms and *
7
// * conditions of the Geant4 Software License, included in the file *
8
// * LICENSE and available at http://cern.ch/geant4/license . These *
9
// * include a list of copyright holders. *
10
// * *
11
// * Neither the authors of this software system, nor their employing *
12
// * institutes,nor the agencies providing financial support for this *
13
// * work make any representation or warranty, express or implied, *
14
// * regarding this software system or assume any liability for its *
15
// * use. Please see the license in the file LICENSE and URL above *
16
// * for the full disclaimer and the limitation of liability. *
17
// * *
18
// * This code implementation is the result of the scientific and *
19
// * technical work of the GEANT4 collaboration. *
20
// * By using, copying, modifying or distributing the software (or *
21
// * any work based on the software) you agree to acknowledge its *
22
// * use in resulting scientific publications, and indicate your *
23
// * acceptance of all terms of the Geant4 Software license. *
24
// ********************************************************************
25
//
26
// INCL++ intra-nuclear cascade model
27
// Alain Boudard, CEA-Saclay, France
28
// Joseph Cugnon, University of Liege, Belgium
29
// Jean-Christophe David, CEA-Saclay, France
30
// Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
31
// Sylvie Leray, CEA-Saclay, France
32
// Davide Mancusi, CEA-Saclay, France
33
//
34
#define INCLXX_IN_GEANT4_MODE 1
35
36
#include "
globals.hh
"
37
38
/** \file G4INCLRootFinder.hh
39
* \brief Static root-finder algorithm.
40
*
41
* Provides a (nearly) stateless root-finder algorithm.
42
*
43
* \date 2nd March 2011
44
* \author Davide Mancusi
45
*/
46
47
#ifndef G4INCLROOTFINDER_HH_
48
#define G4INCLROOTFINDER_HH_
49
50
#include <utility>
51
#include "
G4INCLIFunction1D.hh
"
52
53
namespace
G4INCL
{
54
55
class
RootFunctor
:
public
IFunction1D
{
56
public
:
57
virtual
void
cleanUp
(
const
G4bool
success)
const
= 0;
58
virtual
~RootFunctor
() {};
59
protected
:
60
RootFunctor
(
const
G4double
x0,
const
G4double
x1) :
61
IFunction1D
(x0, x1)
62
{};
63
};
64
65
namespace
RootFinder {
66
67
class
Solution
{
68
public
:
69
Solution
() :
70
success
(false),
71
x
(0.),
72
y
(0.)
73
{}
74
Solution
(
const
G4double
x0,
const
G4double
y0) :
75
success
(true),
76
x
(x0),
77
y
(y0)
78
{}
79
~Solution
() {}
80
81
G4bool
success
;
82
G4double
x
;
83
G4double
y
;
84
};
85
86
/** \brief Numerically solve a one-dimensional equation.
87
*
88
* Numerically solves the equation f(x)==0. This implementation uses the
89
* false-position method.
90
*
91
* If a root is found, it can be retrieved using the getSolution() method,
92
*
93
* \param f pointer to a RootFunctor
94
* \param x0 initial value of the function argument
95
* \return a Solution object describing the root, if it was found
96
*/
97
Solution
solve
(
RootFunctor
const
*
const
f,
const
G4double
x0);
98
99
}
100
}
101
#endif
/* G4INCLROOTFINDER_HH_ */
G4INCLIFunction1D.hh
Functor for 1-dimensional mathematical functions.
G4double
double G4double
Definition:
G4Types.hh:83
G4bool
bool G4bool
Definition:
G4Types.hh:86
G4INCL::IFunction1D
Definition:
G4INCLIFunction1D.hh:58
G4INCL::RootFinder::Solution
Definition:
G4INCLRootFinder.hh:67
G4INCL::RootFinder::Solution::~Solution
~Solution()
Definition:
G4INCLRootFinder.hh:79
G4INCL::RootFinder::Solution::Solution
Solution()
Definition:
G4INCLRootFinder.hh:69
G4INCL::RootFinder::Solution::x
G4double x
Definition:
G4INCLRootFinder.hh:82
G4INCL::RootFinder::Solution::y
G4double y
Definition:
G4INCLRootFinder.hh:83
G4INCL::RootFinder::Solution::Solution
Solution(const G4double x0, const G4double y0)
Definition:
G4INCLRootFinder.hh:74
G4INCL::RootFinder::Solution::success
G4bool success
Definition:
G4INCLRootFinder.hh:81
G4INCL::RootFunctor
Definition:
G4INCLRootFinder.hh:55
G4INCL::RootFunctor::cleanUp
virtual void cleanUp(const G4bool success) const =0
G4INCL::RootFunctor::~RootFunctor
virtual ~RootFunctor()
Definition:
G4INCLRootFinder.hh:58
G4INCL::RootFunctor::RootFunctor
RootFunctor(const G4double x0, const G4double x1)
Definition:
G4INCLRootFinder.hh:60
globals.hh
G4INCL::RootFinder::solve
Solution solve(RootFunctor const *const f, const G4double x0)
Numerically solve a one-dimensional equation.
Definition:
G4INCLRootFinder.cc:118
G4INCL
Definition:
G4INCLAvatarDumpAction.hh:51
geant4-v10.7.0
source
processes
hadronic
models
inclxx
utils
include
G4INCLRootFinder.hh
Generated by
1.9.6