Skip to content

Commit a0a41df

Browse files
refactor(Base): Part of FairDetector::Initialize to FairRunSim
A part of FairDetector::Initialize updates the sensitive volumes related to that Detector(Module). Instead of handling this inline, move the code to a new member function on FairRunSim.
1 parent c920cca commit a0a41df

File tree

3 files changed

+28
-19
lines changed

3 files changed

+28
-19
lines changed

fairroot/base/sim/FairDetector.cxx

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -94,25 +94,7 @@ void FairDetector::Initialize()
9494
DefineSensitiveVolumes();
9595
}
9696

97-
Int_t fMCid;
98-
FairGeoNode* fN;
99-
TString cutName;
100-
TString copysign = "#";
101-
for (auto aVol : GetRunSim().RangeAllSensitiveVolumes()) {
102-
cutName = aVol->GetName();
103-
Ssiz_t pos = cutName.Index(copysign, 1);
104-
if (pos > 1) {
105-
cutName.Resize(pos);
106-
}
107-
if (aVol->getModId() == GetModId()) {
108-
fMCid = TVirtualMC::GetMC()->VolId(cutName.Data());
109-
aVol->setMCid(fMCid);
110-
fN = aVol->getGeoNode();
111-
if (fN) {
112-
fN->setMCid(fMCid);
113-
}
114-
}
115-
}
97+
GetRunSim().UpdateSensitiveVolumesForModule(*this);
11698

11799
// Initialize cached pointer to MC (on master in sequential mode)
118100
fMC = TVirtualMC::GetMC();

fairroot/base/steer/FairRunSim.cxx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "FairRunIdGenerator.h" // for FairRunIdGenerator
2929
#include "FairRuntimeDb.h" // for FairRuntimeDb
3030
#include "FairTask.h" // for FairTask
31+
#include "FairVolume.h"
3132

3233
#include <TCollection.h> // for TIter
3334
#include <TGeoManager.h> // for gGeoManager
@@ -431,3 +432,24 @@ void FairRunSim::ls(Option_t* option) const
431432
}
432433

433434
TMCThreadLocal FairRunSim* FairRunSim::fginstance = nullptr;
435+
436+
void FairRunSim::UpdateSensitiveVolumesForModule(FairModule& mod)
437+
{
438+
TString copysign = "#";
439+
for (auto aVol : fAllSensitiveVolumes) {
440+
if (aVol->getModId() != mod.GetModId()) {
441+
continue;
442+
}
443+
TString cutName{aVol->GetName()};
444+
Ssiz_t pos = cutName.Index(copysign, 1);
445+
if (pos > 1) {
446+
cutName.Resize(pos);
447+
}
448+
Int_t mcid = TVirtualMC::GetMC()->VolId(cutName.Data());
449+
aVol->setMCid(mcid);
450+
FairGeoNode* node = aVol->getGeoNode();
451+
if (node) {
452+
node->setMCid(mcid);
453+
}
454+
}
455+
}

fairroot/base/steer/FairRunSim.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,11 @@ class FairRunSim : public FairRun
234234
*/
235235
auto const& RangeAllSensitiveVolumes() const { return fAllSensitiveVolumes; }
236236

237+
/**
238+
* \brief Internal helper for FairDetector
239+
*/
240+
void UpdateSensitiveVolumesForModule(FairModule& mod);
241+
237242
private:
238243
FairRunSim(const FairRunSim& M);
239244
FairRunSim& operator=(const FairRunSim&) { return *this; }

0 commit comments

Comments
 (0)