Skip to content

Commit ebaebfa

Browse files
author
juanan
committed
Adding new metadata variables to manage the global time reset
1 parent 0bfe218 commit ebaebfa

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

inc/TRestGeant4Metadata.h

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,14 @@ class TRestGeant4Metadata : public TRestMetadata {
117117
/// (fFullChain=true), or just a single decay (fFullChain=false).
118118
Bool_t fFullChain = true;
119119

120+
/// \brief Reset global time in case of a long radioactive decay, the global time of
121+
/// the decay is stored in the variable offset defined on TRestGeant4Track
122+
Bool_t fResetGlobalTime = true;
123+
124+
/// \brief Time precision, in us, to determine if the global time has to be reset
125+
/// or not.
126+
Double_t fResetTimePrecision = 0.001;
127+
120128
/// \brief If defined, it will stop the full chain decay simulation when one of these isotope appears.
121129
std::set<std::string> fFullChainStopIsotopes;
122130

@@ -216,6 +224,11 @@ class TRestGeant4Metadata : public TRestMetadata {
216224
/// \brief Returns true in case full decay chain simulation is enabled.
217225
inline Bool_t isFullChainActivated() const { return fFullChain; }
218226

227+
/// \brief Returns true in case global time is reset for long radioactive decays.
228+
inline Bool_t isGlobalTimeReset() const { return fResetGlobalTime; }
229+
230+
inline Double_t GetResetTimePrecision() const { return fResetTimePrecision; }
231+
219232
/// \brief Returns the isotopes that will stop the full chain decay simulation.
220233
inline std::set<std::string> GetFullChainStopIsotopes() const { return fFullChainStopIsotopes; }
221234

@@ -417,7 +430,7 @@ class TRestGeant4Metadata : public TRestMetadata {
417430
TRestGeant4Metadata(const TRestGeant4Metadata& metadata);
418431
TRestGeant4Metadata& operator=(const TRestGeant4Metadata& metadata);
419432

420-
ClassDefOverride(TRestGeant4Metadata, 19);
433+
ClassDefOverride(TRestGeant4Metadata, 20);
421434

422435
// Allow modification of otherwise inaccessible / immutable members that shouldn't be modified by the user
423436
friend class SteppingAction;

src/TRestGeant4Metadata.cxx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -850,6 +850,8 @@ void TRestGeant4Metadata::InitFromConfigFile() {
850850
Double_t defaultTime = 1. / REST_Units::s;
851851
fSubEventTimeDelay = GetDblParameterWithUnits("subEventTimeDelay", defaultTime);
852852

853+
fResetTimePrecision = GetDblParameterWithUnits("resetTimePrecision", defaultTime);
854+
853855
auto nEventsString = GetParameter("nEvents");
854856
if (nEventsString == PARAMETER_NOT_FOUND_STR) {
855857
nEventsString = GetParameter("Nevents"); // old name
@@ -872,6 +874,9 @@ void TRestGeant4Metadata::InitFromConfigFile() {
872874
fRegisterEmptyTracks = ToUpper(GetParameter("registerEmptyTracks", "false")) == "TRUE" ||
873875
ToUpper(GetParameter("registerEmptyTracks", "off")) == "ON";
874876

877+
fResetGlobalTime = ToUpper(GetParameter("resetGlobalTime", "true")) == "TRUE" ||
878+
ToUpper(GetParameter("resetGlobalTime", "on")) == "ON";
879+
875880
ReadGenerator();
876881
// Detector (old storage) section is processed after initializing geometry info in Detector Construction
877882
// This allows to use regular expression to match logical or physical volumes etc.
@@ -1508,6 +1513,14 @@ void TRestGeant4Metadata::PrintMetadata() {
15081513
RESTMetadata << "GDML geometry: " << GetGdmlReference() << RESTendl;
15091514
RESTMetadata << "GDML materials reference: " << GetMaterialsReference() << RESTendl;
15101515
RESTMetadata << "Sub-event time delay: " << GetSubEventTimeDelay() << " us" << RESTendl;
1516+
1517+
if(isGlobalTimeReset()){
1518+
RESTMetadata << "Reset global time: enabled" << RESTendl;
1519+
RESTMetadata << "Reset Time precision " << GetResetTimePrecision() << " us" << RESTendl;
1520+
} else {
1521+
RESTMetadata << "Reset global time: disabled" << RESTendl;
1522+
}
1523+
15111524
Double_t mx = GetMagneticField().X();
15121525
Double_t my = GetMagneticField().Y();
15131526
Double_t mz = GetMagneticField().Z();
@@ -1703,6 +1716,8 @@ TRestGeant4Metadata& TRestGeant4Metadata::operator=(const TRestGeant4Metadata& m
17031716
fBiasingVolumes = metadata.fBiasingVolumes;
17041717
fMaxTargetStepSize = metadata.fMaxTargetStepSize;
17051718
fSubEventTimeDelay = metadata.fSubEventTimeDelay;
1719+
fResetTimePrecision = metadata.fResetTimePrecision;
1720+
fResetGlobalTime = metadata.fResetGlobalTime;
17061721
fFullChain = metadata.fFullChain;
17071722
fSensitiveVolumes = metadata.fSensitiveVolumes;
17081723
fNEvents = metadata.fNEvents;

0 commit comments

Comments
 (0)