diff --git a/base/sim/FairMCApplication.cxx b/base/sim/FairMCApplication.cxx index 5d446c2a78..2999f702d6 100644 --- a/base/sim/FairMCApplication.cxx +++ b/base/sim/FairMCApplication.cxx @@ -1316,9 +1316,22 @@ void FairMCApplication::UndoGeometryModifications() void FairMCApplication::ConstructSensitiveDetectors() { + std::map cloneVolumeMap; + for (auto const& x : fMapSensitiveDetectors) { - LOG(debug) << "FairMCApplication::ConstructSensitiveDetectors " << x.first << " " << x.second; - TVirtualMC::GetMC()->SetSensitiveDetector(x.first, x.second); + std::string volName = x.first; //.substr(0, x.first.find("#", 0)); + if (volName.find('#') != std::string::npos) { + volName = volName.substr(0, volName.find("#", 0)); + std::map::iterator it; + it = cloneVolumeMap.find(volName); + LOG(debug) << "FairMCApplication::ConstructSensitiveDetectors got clone " << x.first << " " << x.second; + if (it != cloneVolumeMap.end()) + continue; + cloneVolumeMap[volName] = x.second; + LOG(debug) << "FairMCApplication::ConstructSensitiveDetectors really do " << volName; + } + LOG(debug) << "FairMCApplication::ConstructSensitiveDetectors really do " << volName; + TVirtualMC::GetMC()->SetSensitiveDetector(volName, x.second); } }