Skip to content

Commit 1d4a1e4

Browse files
chore: Move FairModule::fAllSensitiveVolumes to FairRunSim
Instead of using a thread local, let's use something that is tied to the "simulaion session" (as noted in some places). FairRunSim has all the Modules anyway, so let it also have the list of sensitive Volumes.
1 parent 32bb52f commit 1d4a1e4

5 files changed

Lines changed: 21 additions & 15 deletions

File tree

fairroot/base/sim/FairDetector.cxx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#include "FairGeoNode.h" // for FairGeoNode
1616
#include "FairRootManager.h"
17+
#include "FairRunSim.h"
1718
#include "FairVolume.h" // for FairVolume
1819

1920
#include <TFolder.h> // for TFolder
@@ -97,7 +98,7 @@ void FairDetector::Initialize()
9798
FairGeoNode* fN;
9899
TString cutName;
99100
TString copysign = "#";
100-
for (auto aVol : fAllSensitiveVolumes) {
101+
for (auto aVol : FairRunSim::Instance()->fAllSensitiveVolumes) {
101102
cutName = aVol->GetName();
102103
Ssiz_t pos = cutName.Index(copysign, 1);
103104
if (pos > 1) {

fairroot/base/sim/FairMCApplication.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -887,7 +887,7 @@ void FairMCApplication::InitGeometry()
887887
fMCEventHeader->SetRunID(runId);
888888

889889
// Fill sensitive volumes in fVolMap
890-
for (auto fv : FairModule::fAllSensitiveVolumes) {
890+
for (auto fv : fRun->fAllSensitiveVolumes) {
891891
if (!fv) {
892892
continue;
893893
}

fairroot/base/sim/FairModule.cxx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include "FairGeoNode.h" // for FairGeoNode
2121
#include "FairGeoParSet.h" // for FairBaseParSet
2222
#include "FairMCApplication.h"
23-
#include "FairRun.h" // for FairRun
23+
#include "FairRunSim.h" // for FairRun, FairRunSim
2424
#include "FairRuntimeDb.h" // for FairRuntimeDb
2525
#include "FairVolume.h" // for FairVolume
2626
#include "FairVolumeList.h" // for FairVolumeList
@@ -50,8 +50,6 @@
5050
#include <memory>
5151
#include <tuple> // for std::ignore
5252

53-
thread_local std::vector<FairVolume*> FairModule::fAllSensitiveVolumes;
54-
5553
void FairModule::ConstructGeometry()
5654
{
5755
LOG(warn)
@@ -200,11 +198,11 @@ void FairModule::SetGeometryFileName(TString fname, TString)
200198
fgeoName = "";
201199
}
202200

203-
void FairModule::RegisterSensitiveVolume(FairVolume& vol)
201+
void FairModule::RegisterSensitiveVolume(FairRunSim& run, FairVolume& vol)
204202
{
205203
vol.setModId(fModId);
206204
vol.SetModule(this);
207-
fAllSensitiveVolumes.push_back(&vol);
205+
run.fAllSensitiveVolumes.push_back(&vol);
208206
++fNbOfSensitiveVol;
209207
}
210208

@@ -221,7 +219,8 @@ void FairModule::ProcessNodes(TList* nodes)
221219
vList = new FairVolumeList();
222220
}
223221

224-
auto rtdb = FairRun::Instance()->GetRuntimeDb();
222+
auto& run = *(FairRunSim::Instance());
223+
auto rtdb = run.GetRuntimeDb();
225224
auto par = static_cast<FairGeoParSet*>(rtdb->getContainer("FairGeoParSet"));
226225
TSeqCollection* parNodes = par->GetGeoNodes();
227226
for (auto node : TRangeDynCast<FairGeoNode>(nodes)) {
@@ -251,7 +250,7 @@ void FairModule::ProcessNodes(TList* nodes)
251250
}
252251

253252
if (node->isSensitive() && fActive) {
254-
RegisterSensitiveVolume(*addedVol);
253+
RegisterSensitiveVolume(run, *addedVol);
255254
parNodes->AddLast(node);
256255
}
257256
}
@@ -267,7 +266,7 @@ void FairModule::AddSensitiveVolume(TGeoVolume* vol)
267266
return;
268267
}
269268
++fNbOfVolumes;
270-
RegisterSensitiveVolume(*addedVol);
269+
RegisterSensitiveVolume(*FairRunSim::Instance(), *addedVol);
271270
}
272271

273272
FairVolume* FairModule::getFairVolume(FairGeoNode* fN)

fairroot/base/sim/FairModule.h

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@
2323
#include <TList.h> // for TList (ptr only), TListIter
2424
#include <TNamed.h> // for TNamed
2525
#include <TObjArray.h> // for TObjArray
26-
#include <TRefArray.h> // for TRefArray
2726
#include <TString.h> // for TString, operator!=
2827
#include <TVirtualMC.h>
2928
#include <string>
30-
#include <vector>
3129

30+
class FairRunSim;
3231
class FairVolumeList;
3332
class FairVolume;
3433

@@ -140,8 +139,6 @@ class FairModule : public TNamed
140139
static thread_local inline FairVolumeList* vList{nullptr}; //!
141140
/**total number of volumes in a simulaion session*/
142141
static thread_local inline Int_t fNbOfVolumes{0}; //!
143-
/**list of all sensitive volumes in a simulaion session*/
144-
static thread_local std::vector<FairVolume*> fAllSensitiveVolumes; //!
145142

146143
TString fMotherVolumeName{""}; //!
147144
/**
@@ -159,7 +156,7 @@ class FairModule : public TNamed
159156
void ReAssignMediaId();
160157
void swap(FairModule& other) throw();
161158

162-
void RegisterSensitiveVolume(FairVolume&);
159+
void RegisterSensitiveVolume(FairRunSim& run, FairVolume&);
163160

164161
protected:
165162
FairModule(const FairModule&);

fairroot/base/steer/FairRunSim.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@
2121
#include <functional>
2222
#include <memory>
2323
#include <utility>
24+
#include <vector>
2425

2526
class FairField;
2627
class FairGeoLoader;
2728
class FairMCEventHeader;
2829
class FairMesh;
2930
class FairModule;
3031
class FairPrimaryGenerator;
32+
class FairVolume;
3133

3234
/**
3335
* \brief Configure the Simulation session
@@ -38,6 +40,10 @@ class FairPrimaryGenerator;
3840
*/
3941
class FairRunSim : public FairRun
4042
{
43+
friend class FairModule;
44+
friend class FairDetector;
45+
friend class FairMCApplication;
46+
4147
public:
4248
/** default ctor*/
4349
FairRunSim(Bool_t isMaster = kTRUE);
@@ -226,6 +232,9 @@ class FairRunSim : public FairRun
226232

227233
std::unique_ptr<FairGeoLoader> fGeoLoader; //!
228234

235+
/**list of all sensitive volumes in a simulaion session*/
236+
std::vector<FairVolume*> fAllSensitiveVolumes; //!
237+
229238
protected:
230239
Int_t count{0}; //!< Internal counter
231240
FairMCApplication* fApp{nullptr}; //!< Main VMC application

0 commit comments

Comments
 (0)