Skip to content

Commit 6092275

Browse files
chore: Refactor part of FairDetector::Initialize
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 5c317ec commit 6092275

File tree

3 files changed

+28
-20
lines changed

3 files changed

+28
-20
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 : FairRunSim::Instance()->fAllSensitiveVolumes) {
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+
FairRunSim::Instance()->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
@@ -422,3 +423,24 @@ void FairRunSim::ls(Option_t* option) const
422423
}
423424

424425
TMCThreadLocal FairRunSim* FairRunSim::fginstance = nullptr;
426+
427+
void FairRunSim::UpdateSensitiveVolumesForModule(FairModule& mod)
428+
{
429+
TString copysign = "#";
430+
for (auto aVol : fAllSensitiveVolumes) {
431+
if (aVol->getModId() != mod.GetModId()) {
432+
continue;
433+
}
434+
TString cutName{aVol->GetName()};
435+
Ssiz_t pos = cutName.Index(copysign, 1);
436+
if (pos > 1) {
437+
cutName.Resize(pos);
438+
}
439+
Int_t mcid = TVirtualMC::GetMC()->VolId(cutName.Data());
440+
aVol->setMCid(mcid);
441+
FairGeoNode* node = aVol->getGeoNode();
442+
if (node) {
443+
node->setMCid(mcid);
444+
}
445+
}
446+
}

fairroot/base/steer/FairRunSim.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ class FairVolume;
4141
class FairRunSim : public FairRun
4242
{
4343
friend class FairModule;
44-
friend class FairDetector;
4544
friend class FairMCApplication;
4645

4746
public:
@@ -222,6 +221,11 @@ class FairRunSim : public FairRun
222221

223222
void ls(Option_t* option = "") const override;
224223

224+
/**
225+
* \brief Internal helper for FairDetector
226+
*/
227+
void UpdateSensitiveVolumesForModule(FairModule& mod);
228+
225229
private:
226230
FairRunSim(const FairRunSim& M);
227231
FairRunSim& operator=(const FairRunSim&) { return *this; }

0 commit comments

Comments
 (0)