diff --git a/.zenodo.json b/.zenodo.json index c088975486..4947652468 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -94,6 +94,11 @@ "type": "Other", "name": "Krzewicki, Mikolaj" }, + { + "type": "Other", + "name": "Lalik, Rafa\u0142", + "orcid": "0000-0003-1313-3729" + }, { "type": "Other", "name": "Lavezzi, Lia" diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c42840f9cd..2ea92c5ab2 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -14,6 +14,7 @@ Klenze, Philipp Kollegger, Thorsten Koenig, Ilse Krzewicki, Mikolaj +Lalik, RafaƂ [https://orcid.org/0000-0003-1313-3729] Lavezzi, Lia Lavrik, Evgeny Lantwin, Oliver diff --git a/codemeta.json b/codemeta.json index bce898658d..e1b733b763 100644 --- a/codemeta.json +++ b/codemeta.json @@ -150,6 +150,12 @@ "givenName": "Mikolaj", "familyName": "Krzewicki" }, + { + "@type": "Person", + "@id": "https://orcid.org/0000-0003-1313-3729", + "givenName": "Rafa\u0142", + "familyName": "Lalik" + }, { "@type": "Person", "givenName": "Lia", diff --git a/examples/MQ/pixelDetector/src/Pixel.cxx b/examples/MQ/pixelDetector/src/Pixel.cxx index 397d63d162..41ea77691c 100644 --- a/examples/MQ/pixelDetector/src/Pixel.cxx +++ b/examples/MQ/pixelDetector/src/Pixel.cxx @@ -162,11 +162,6 @@ void Pixel::ConstructGeometry() ConstructASCIIGeometry("PixelGeoPar"); } -Bool_t Pixel::IsSensitive(const std::string& name) -{ - return name.find("Pixel") != std::string::npos; -} - PixelPoint* Pixel::AddHit(Int_t trackID, Int_t detID, TVector3 pos, diff --git a/examples/MQ/pixelDetector/src/Pixel.h b/examples/MQ/pixelDetector/src/Pixel.h index 35fd19f8fc..4cbb43fe8c 100644 --- a/examples/MQ/pixelDetector/src/Pixel.h +++ b/examples/MQ/pixelDetector/src/Pixel.h @@ -62,7 +62,6 @@ class Pixel : public FairDetector void EndOfEvent() override; - Bool_t IsSensitive(const std::string& name) override; FairModule* CloneModule() const override; private: diff --git a/examples/common/passive/FairMagnet.cxx b/examples/common/passive/FairMagnet.cxx index 8893f2f79b..2b9eba5cf9 100644 --- a/examples/common/passive/FairMagnet.cxx +++ b/examples/common/passive/FairMagnet.cxx @@ -41,12 +41,6 @@ void FairMagnet::ConstructGeometry() } } -Bool_t FairMagnet::IsSensitive(const std::string& /*name*/) -{ - // just to get rid of the warrning during run, not need this is a passive element! - return kFALSE; -} - void FairMagnet::ConstructASCIIGeometry() { FairModule::ConstructASCIIGeometry("FairGeoPassivePar"); diff --git a/examples/common/passive/FairMagnet.h b/examples/common/passive/FairMagnet.h index 5732ab4575..4b67a2d68e 100644 --- a/examples/common/passive/FairMagnet.h +++ b/examples/common/passive/FairMagnet.h @@ -21,7 +21,6 @@ class FairMagnet : public FairModule virtual ~FairMagnet(); void ConstructGeometry(); void ConstructASCIIGeometry(); - Bool_t IsSensitive(const std::string& name); virtual FairModule* CloneModule() const; diff --git a/examples/simulation/Tutorial1/src/FairFastSimExample.cxx b/examples/simulation/Tutorial1/src/FairFastSimExample.cxx index f445e85830..ef0f237ce5 100644 --- a/examples/simulation/Tutorial1/src/FairFastSimExample.cxx +++ b/examples/simulation/Tutorial1/src/FairFastSimExample.cxx @@ -172,8 +172,6 @@ FairTutorialDet1Point* FairFastSimExample::AddHit(Int_t trackID, return new (clref[size]) FairTutorialDet1Point(trackID, detID, pos, mom, time, length, eLoss); } -Bool_t FairFastSimExample::IsSensitive(const std::string& name) { return name == "fast_sim_vol"; } - FairModule* FairFastSimExample::CloneModule() const { return new FairFastSimExample(*this); diff --git a/examples/simulation/Tutorial1/src/FairFastSimExample.h b/examples/simulation/Tutorial1/src/FairFastSimExample.h index c0fa92520b..e66b374663 100644 --- a/examples/simulation/Tutorial1/src/FairFastSimExample.h +++ b/examples/simulation/Tutorial1/src/FairFastSimExample.h @@ -53,8 +53,6 @@ class FairFastSimExample : public FairFastSimDetector */ virtual void EndOfEvent(); - virtual Bool_t IsSensitive(const std::string& name); - virtual FairModule* CloneModule() const; protected: diff --git a/examples/simulation/Tutorial1/src/FairFastSimExample2.cxx b/examples/simulation/Tutorial1/src/FairFastSimExample2.cxx index 82cb2a0339..1f2e336878 100644 --- a/examples/simulation/Tutorial1/src/FairFastSimExample2.cxx +++ b/examples/simulation/Tutorial1/src/FairFastSimExample2.cxx @@ -152,8 +152,6 @@ FairTutorialDet1Point* FairFastSimExample2::AddHit(Int_t trackID, return new (clref[size]) FairTutorialDet1Point(trackID, detID, pos, mom, time, length, eLoss); } -Bool_t FairFastSimExample2::IsSensitive(const std::string& name) { return name == "fast_sim_vol_n2"; } - FairModule* FairFastSimExample2::CloneModule() const { return new FairFastSimExample2(*this); diff --git a/examples/simulation/Tutorial1/src/FairFastSimExample2.h b/examples/simulation/Tutorial1/src/FairFastSimExample2.h index 1da52b4418..67078fe406 100644 --- a/examples/simulation/Tutorial1/src/FairFastSimExample2.h +++ b/examples/simulation/Tutorial1/src/FairFastSimExample2.h @@ -53,8 +53,6 @@ class FairFastSimExample2 : public FairFastSimDetector */ virtual void EndOfEvent(); - virtual Bool_t IsSensitive(const std::string& name); - virtual FairModule* CloneModule() const; protected: diff --git a/examples/simulation/Tutorial1/src/FairTutorialDet1.cxx b/examples/simulation/Tutorial1/src/FairTutorialDet1.cxx index adee3c9da7..dc45924704 100644 --- a/examples/simulation/Tutorial1/src/FairTutorialDet1.cxx +++ b/examples/simulation/Tutorial1/src/FairTutorialDet1.cxx @@ -115,11 +115,6 @@ TClonesArray* FairTutorialDet1::GetCollection(Int_t iColl) const void FairTutorialDet1::Reset() { fFairTutorialDet1PointCollection->Clear(); } -Bool_t FairTutorialDet1::IsSensitive(const std::string& name) -{ - return name.find("tutdet") != std::string::npos; -} - void FairTutorialDet1::ConstructGeometry() { /** If you are using the standard ASCII input for the geometry diff --git a/examples/simulation/Tutorial1/src/FairTutorialDet1.h b/examples/simulation/Tutorial1/src/FairTutorialDet1.h index 3a0e73dae7..0a9f00ab9a 100644 --- a/examples/simulation/Tutorial1/src/FairTutorialDet1.h +++ b/examples/simulation/Tutorial1/src/FairTutorialDet1.h @@ -70,8 +70,6 @@ class FairTutorialDet1 : public FairDetector FairModule* CloneModule() const override; - Bool_t IsSensitive(const std::string& name) override; - private: /** Track information to be stored until the track leaves the active volume. diff --git a/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.cxx b/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.cxx index 59e3f9845e..4044712ff5 100644 --- a/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.cxx +++ b/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.cxx @@ -248,11 +248,6 @@ void FairTutorialDet4::ConstructGeometry() } } -Bool_t FairTutorialDet4::IsSensitive(const std::string& name) -{ - return name.find("tut4") != std::string::npos; -} - void FairTutorialDet4::ConstructASCIIGeometry() { /** If you are using the standard ASCII input for the geometry diff --git a/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.h b/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.h index a60f614f08..8ec4671215 100644 --- a/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.h +++ b/examples/simulation/Tutorial4/src/mc/FairTutorialDet4.h @@ -87,8 +87,6 @@ class FairTutorialDet4 : public FairDetector virtual void RegisterAlignmentMatrices(); - virtual Bool_t IsSensitive(const std::string& name); - private: /** Track information to be stored until the track leaves the active volume. diff --git a/fairroot/base/sim/FairDetector.cxx b/fairroot/base/sim/FairDetector.cxx index a1f0299a04..6c4f7e0c5c 100644 --- a/fairroot/base/sim/FairDetector.cxx +++ b/fairroot/base/sim/FairDetector.cxx @@ -75,7 +75,7 @@ void FairDetector::DefineSensitiveVolumes() TIter next(volumes); TGeoVolume* volume; while ((volume = static_cast(next()))) { - if (IsSensitive(volume->GetName())) { + if (IsSensitive(volume)) { LOG(debug) << "Sensitive Volume " << volume->GetName(); AddSensitiveVolume(volume); } diff --git a/fairroot/base/sim/FairModule.cxx b/fairroot/base/sim/FairModule.cxx index bf29fa561f..ab942691fa 100644 --- a/fairroot/base/sim/FairModule.cxx +++ b/fairroot/base/sim/FairModule.cxx @@ -459,7 +459,7 @@ void FairModule::ExpandNodeForGDML(TGeoNode* curNode) AssignMediumAtImport(curVol); // Check if the volume is sensitive - if ((this->InheritsFrom("FairDetector")) && IsSensitive(curVol->GetName())) { + if ((this->InheritsFrom("FairDetector")) && IsSensitive(curVol)) { LOG(debug2) << "Sensitive Volume " << curVol->GetName(); AddSensitiveVolume(curVol); } @@ -564,7 +564,7 @@ void FairModule::ExpandNode(TGeoNode* fN) LOG(debug2) << "Register Volume " << v->GetName(); v->RegisterYourself(); } - if ((this->InheritsFrom("FairDetector")) && IsSensitive(v->GetName())) { + if ((this->InheritsFrom("FairDetector")) && IsSensitive(v)) { LOG(debug2) << "Sensitive Volume " << v->GetName(); AddSensitiveVolume(v); } diff --git a/fairroot/base/sim/FairModule.h b/fairroot/base/sim/FairModule.h index 55563741ea..c948e1723f 100644 --- a/fairroot/base/sim/FairModule.h +++ b/fairroot/base/sim/FairModule.h @@ -17,6 +17,7 @@ #include "FairRuntimeDb.h" // for FairRuntimeDb #include // for TRangeDynCast +#include #include #include #include @@ -103,12 +104,28 @@ class FairModule : public TNamed template void ConstructASCIIGeometry(TString containerName = ""); - /**Set the sensitivity flag for volumes, called from ConstructASCIIRootGeometry(), and has to be implimented for - * detectors which use ConstructASCIIRootGeometry() to build the geometry */ - virtual Bool_t IsSensitive(const std::string& name); + /** + * Check volume sensitivity by probing medium sensitivity flag. + * + * Function checks the sensitivity property of the medium. This is generic approach and should work for any volume. + * Override this _only_ in case of specific customisation. + * + * See Bool_t IsSensitive(const std::string& name) for deprecation notice. + */ + virtual bool IsSensitive(TGeoVolume* vol) { return (vol->GetMedium()->GetParam(0) == 1.0); } + + /** + * Set the sensitivity flag for volumes, called from ConstructASCIIRootGeometry(), and has to be implimented for + * detectors which use ConstructASCIIRootGeometry() to build the geometry + */ + [[deprecated("Remove override of this function. Use override of IsSensitive(TGeoVolume* vol) only if customisation " + "required. This function will be removed in the future releases.")]] + virtual Bool_t IsSensitive(const std::string& name) final; + /**The function below is depracated, please change to the new method above */ - virtual Bool_t CheckIfSensitive(__attribute__((unused)) std::string name) __attribute__(( - deprecated("The method CheckIfSensitive is deprecated. Implement IsSensitive in the detector classes."))) + [[deprecated("The method CheckIfSensitive is deprecated. Implement IsSensitive in the detector " + "classes. To be removed in the future.")]] + virtual Bool_t CheckIfSensitive(__attribute__((unused)) std::string name) final { return kFALSE; }