138138// / * **printProgress**: if enabled, a message showing the progress of the simulation will be printed
139139// / periodically. This option is enabled by default.
140140// /
141+ // / * **resetGlobalTime**: when enabled it reset the global time stamp in case of long radioactive decay.
142+ // / This option is enabled by default.
143+ // /
144+ // / * **resetTimePrecision**: this parameter defines the time precision required to reset the global time
145+ // / in case resetGlobalTime is enabled.
146+ // /
141147// / The following example illustrates the definition of the common simulation
142148// / parameters.
143149// /
146152// / <parameter name="gdmlFile" value="/path/to/mySetupTemplate.gdml"/>
147153// / <parameter name="maxTargetStepSize" value="200" units="um" />
148154// / <parameter name="subEventTimeDelay" value="100" units="us" />
155+ // / <parameter name="resetGlobalTime" value="true" />
156+ // / <parameter name="resetTimePrecision" value="1ns" />
149157// / \endcode
150158// /
151159// / ## 2. The primary particle generator section
@@ -847,9 +855,11 @@ void TRestGeant4Metadata::InitFromConfigFile() {
847855 }
848856 }
849857
850- Double_t defaultTime = 1 . / REST_Units::s ;
858+ Double_t defaultTime = 1 . / REST_Units::us ;
851859 fSubEventTimeDelay = GetDblParameterWithUnits (" subEventTimeDelay" , defaultTime);
852860
861+ fResetTimePrecision = GetDblParameterWithUnits (" resetTimePrecision" , defaultTime);
862+
853863 auto nEventsString = GetParameter (" nEvents" );
854864 if (nEventsString == PARAMETER_NOT_FOUND_STR) {
855865 nEventsString = GetParameter (" Nevents" ); // old name
@@ -872,6 +882,9 @@ void TRestGeant4Metadata::InitFromConfigFile() {
872882 fRegisterEmptyTracks = ToUpper (GetParameter (" registerEmptyTracks" , " false" )) == " TRUE" ||
873883 ToUpper (GetParameter (" registerEmptyTracks" , " off" )) == " ON" ;
874884
885+ fResetGlobalTime = ToUpper (GetParameter (" resetGlobalTime" , " true" )) == " TRUE" ||
886+ ToUpper (GetParameter (" resetGlobalTime" , " on" )) == " ON" ;
887+
875888 ReadGenerator ();
876889 // Detector (old storage) section is processed after initializing geometry info in Detector Construction
877890 // This allows to use regular expression to match logical or physical volumes etc.
@@ -1508,6 +1521,14 @@ void TRestGeant4Metadata::PrintMetadata() {
15081521 RESTMetadata << " GDML geometry: " << GetGdmlReference () << RESTendl;
15091522 RESTMetadata << " GDML materials reference: " << GetMaterialsReference () << RESTendl;
15101523 RESTMetadata << " Sub-event time delay: " << GetSubEventTimeDelay () << " us" << RESTendl;
1524+
1525+ if (isGlobalTimeReset ()) {
1526+ RESTMetadata << " Reset global time: enabled" << RESTendl;
1527+ RESTMetadata << " Reset Time precision " << GetResetTimePrecision () << " us" << RESTendl;
1528+ } else {
1529+ RESTMetadata << " Reset global time: disabled" << RESTendl;
1530+ }
1531+
15111532 Double_t mx = GetMagneticField ().X ();
15121533 Double_t my = GetMagneticField ().Y ();
15131534 Double_t mz = GetMagneticField ().Z ();
@@ -1703,6 +1724,8 @@ TRestGeant4Metadata& TRestGeant4Metadata::operator=(const TRestGeant4Metadata& m
17031724 fBiasingVolumes = metadata.fBiasingVolumes ;
17041725 fMaxTargetStepSize = metadata.fMaxTargetStepSize ;
17051726 fSubEventTimeDelay = metadata.fSubEventTimeDelay ;
1727+ fResetTimePrecision = metadata.fResetTimePrecision ;
1728+ fResetGlobalTime = metadata.fResetGlobalTime ;
17061729 fFullChain = metadata.fFullChain ;
17071730 fSensitiveVolumes = metadata.fSensitiveVolumes ;
17081731 fNEvents = metadata.fNEvents ;
0 commit comments