|Message: Re: RE: BeamOn won't allow generating more than 3 billion events||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
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: firstname.lastname@example.org ] | |> > 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:||Outline Depth:||Add message:|