Message: Re: RE: BeamOn won't allow generating more than 3 billion events Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: RE: BeamOn won't allow generating more than 3 billion events 

Forum: Run Management
Re: Question BeamOn won't allow generating more than 3 billion events (John McFee)
Re: None RE: BeamOn won't allow generating more than 3 billion events (Makoto Asai)
Re: None Re: RE: BeamOn won't allow generating more than 3 billion events (Manuel Castro Avila)
Date: 04 Oct, 2011
From: Paul Nicholas Colin Gloster <Paul Nicholas Colin Gloster>

Manuel Castro Avila sent on October 3rd, 2011:
|------------------------------------------------------------------------|
|"Hi,                                                                    |
|                                                                        |
|I have the same problem. I want to simulate 3 billions of events and the|
|simulation is enabling to simulate only 2 billions. If I take into      |
|account the                                                             |
|suggestion below of shooting three primary particles per event, how do  |
|it work?                                                                |
|                                                                        |
|Thanks in advance,                                                      |
|                                                                        |
|Manuel                                                                  |
|                                                                        |
|On Fri, 30 Jul 2010 17:49:18 GMT, Asai, Makoto wrote:                   |
|> Hi,                                                                   |
|>                                                                       |
|> Does your individual event have to have single primary particle?      |
|> If you shoot three primary particles per event, you need only one     |
|> billion events to loop. Otherwise, please make multiple runs and      |
|> merge their results.                                                  |
|>                                                                       |
|> Hope this helps,                                                      |
|> Makoto                                                                |
|>                                                                       |
|> > -----Original Message-----                                          |
|> > From: John McFee [mailto: jemcfee@shaw.ca ]                         |
|> > Sent: Thursday, July 22, 2010 8:25 AM                               |
|> > To: runmanage-g4hn                                                  |
|> > Subject: BeamOn won't allow generating more than 3 billion events   |
|> >                                                                     |
|> >                                                                     |
|> > *** Discussion title: Run Management                                |
|> >                                                                     |
|> > I am running a program which generates a number of primary photons  |
|and                                                                     |
|> > detects resulting neutrons and gammas. In the main program, after   |
|> > initializing the run manager, there is a line that allows me to     |
|execute                                                                 |
|> > a macro                                                             |
|> >                                                                     |
|> > UI->ApplyCommand("/control/execute Production.mac");                |
|> >                                                                     |
|> > (where UI is a pointer of type G4UImanager).                        |
|> >                                                                     |
|> > In the Production.mac macro, the number of events to be processed is|
|> > set by a line:                                                      |
|> > /run/beamOn 2000000000                                              |
|> >                                                                     |
|> > This executes the BeamOn(G4int n_event) method, wherein lies my     |
|problem.                                                                |
|> > A G4Int goes up to 2^31 or 2,147,483,648. I want to have 3 billion  |
|or                                                                      |
|> > more events, so I need the argument to be a G4long. Is there a      |
|simple                                                                  |
|> > way to do this?"                                                    |
|------------------------------------------------------------------------|


I do not remember noticing this discussion months ago.

There is a simple solution. Unfortunately too much of Geant is in
C++. C++ is crap. I can not mention that too many times. C++ is very
bad. In the file
source/global/management/include/G4Types.hh
we have
typedef int G4int;
Remember that the semantics of C++ are not well defined. So the
maximum possible value of the type G4int might be (2**(32-1)) - 1 with
a 32-bit compiler on a 32-bit operating system. With a 64-bit compiler
on a 64-bit operating system, INT_MAX might be (2**(64-1)) - 1.
However, neither of those maxima is guaranteed. Note that the
maximum of 2**31 mentioned by John Feeson is probably supported by no
compiler.

If 64-bit mode is unacceptable to you, then you could try changing
G4Types.hh to have
typedef unsigned int G4int;
which might yield an INT_MAX of (2**32) - 1. I customize Geant and
using a less unsatisfying type system is one of the main
customizations which I enjoy. As I am not actually aware of any cases
in which a G4int value is lesser than zero, I have been tempted to
make G4int unsigned, but apprehension that some part of Geant which I
use might be using values lesser than zero (for error codes or
something) has helped to prevent me from making G4int unsigned so
far.

If you are not brave enough to try making G4int unsigned, and you want
to try long (note that you need neither G4long nor long, I can think
of a workaround which does not involve changing a type, but I do not
deem it to be better) then you could delete everything in
lib
and
tmp
and replace the line
typedef int G4int;
in
source/global/management/include/G4Types.hh
with the two lines
typedef long CPlusPlus_is_bad_partially_because_of_its_underdeveloped_type_system_so_this_typedef_is_an_attempt_to_exceed_3_billion;
typedef CPlusPlus_is_bad_partially_because_of_its_underdeveloped_type_system_so_this_typedef_is_an_attempt_to_exceed_3_billion G4int;
Then compile everything. Note that in a worthwhile programming
language such as Ada you could have
type type_supporting_3_billion_or_more is range -2**31 .. 3_000_000_000;
(
WWW.AdaIC.org/resources/add_content/standards/05rm/html/RM-3-5-4.html
).

Inline Depth:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 Feedback: Re: RE: BeamOn won't allow generating more than 3 billion events   (Gumplinger Peter - 04 Oct, 2011)
(_ Question: Re: RE: BeamOn won't allow generating more than 3 billion events   (Manuel Castro Avila - 05 Oct, 2011)
(_ Feedback: Re: RE: BeamOn won't allow generating more than 3 billion events   (Gumplinger Peter - 05 Oct, 2011)
 Add Message Add Message
to: "Re: RE: BeamOn won't allow generating more than 3 billion events"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]