diff --git a/core/detectors/sts/CbmStsParSetModule.h b/core/detectors/sts/CbmStsParSetModule.h index e2a7bb62f33a90d39f095829a7f12619f8e21511..3f516fc4f4adadb24d882c1d29521141529a3c71 100644 --- a/core/detectors/sts/CbmStsParSetModule.h +++ b/core/detectors/sts/CbmStsParSetModule.h @@ -43,14 +43,6 @@ public: const char* context = "Default"); - /** @brief Copy constructor (disabled) **/ - CbmStsParSetModule(const CbmStsParSetModule&) = delete; - - - /** @brief Move constructor (disabled) **/ - CbmStsParSetModule(CbmStsParSetModule&&) = delete; - - /** @brief Destructor **/ virtual ~CbmStsParSetModule(); @@ -89,18 +81,6 @@ public: Bool_t IsSet() const { return (fUseGlobal || (!fParams.empty())); } - /** @brief Copy assignment operator (disabled) **/ - CbmStsParSetModule& operator=(const CbmStsParSetModule&) = delete; - - - /** @brief Move assignment operator (disabled) **/ - CbmStsParSetModule& operator=(CbmStsParSetModule&&) = delete; - - - /** @brief Writing parameters to ASCII. Abstract in base class. - ** - ** An ASCII I/O is not implemented. The method throws an error. - **/ virtual void putParams(FairParamList* parList); diff --git a/core/detectors/sts/CbmStsParSetSensor.h b/core/detectors/sts/CbmStsParSetSensor.h index 30241eef4de0391e391dd5821db6a5c99926b7ee..d44104a5c92049a2ac21dd33c2917911436c9864 100644 --- a/core/detectors/sts/CbmStsParSetSensor.h +++ b/core/detectors/sts/CbmStsParSetSensor.h @@ -43,22 +43,14 @@ public: const char* context = "Default"); - /** @brief Copy constructor (disabled) **/ - CbmStsParSetSensor(const CbmStsParSetSensor&) = delete; - - - /** @brief Move constructor (disabled) **/ - CbmStsParSetSensor(CbmStsParSetSensor&&) = delete; + /** @brief Destructor **/ + virtual ~CbmStsParSetSensor(); /** @brief Reset all parameters **/ virtual void clear(); - /** @brief Destructor **/ - virtual ~CbmStsParSetSensor(); - - /** @brief Reading parameters from ASCII. Abstract in base class. ** ** An ASCII I/O is not implemented. The method throws an error. @@ -73,14 +65,6 @@ public: const CbmStsParSensor& GetParSensor(UInt_t address); - /** @brief Copy assignment operator (disabled) **/ - CbmStsParSetSensor& operator=(const CbmStsParSetSensor&) = delete; - - - /** @brief Move assignment operator (disabled) **/ - CbmStsParSetSensor& operator=(CbmStsParSetSensor&&) = delete; - - /** @brief Writing parameters to ASCII. Abstract in base class. ** ** An ASCII I/O is not implemented. The method throws an error. diff --git a/core/detectors/sts/CbmStsParSetSensorCond.h b/core/detectors/sts/CbmStsParSetSensorCond.h index 80b9765b9739ac74bbc937b1944ff3dea549b425..d58fd714b8e73276c5dc2635653eb4659bc38be6 100644 --- a/core/detectors/sts/CbmStsParSetSensorCond.h +++ b/core/detectors/sts/CbmStsParSetSensorCond.h @@ -43,14 +43,6 @@ public: const char* context = "Default"); - /** @brief Copy constructor (disabled) **/ - CbmStsParSetSensorCond(const CbmStsParSetSensorCond&) = delete; - - - /** @brief Move constructor (disabled) **/ - CbmStsParSetSensorCond(CbmStsParSetSensorCond&&) = delete; - - /** @brief Destructor **/ virtual ~CbmStsParSetSensorCond(); @@ -79,14 +71,6 @@ public: Bool_t IsSet() const { return (fGlobal || !fParams.empty()); } - /** @brief Copy assignment operator (disabled) **/ - CbmStsParSetSensorCond& operator=(const CbmStsParSetSensorCond&) = delete; - - - /** @brief Move assignment operator (disabled) **/ - CbmStsParSetSensorCond& operator=(CbmStsParSetSensorCond&&) = delete; - - /** @brief Writing parameters to ASCII. Abstract in base class. ** ** An ASCII I/O is not implemented. The method throws an error. diff --git a/reco/detectors/sts/CbmRecoSts.cxx b/reco/detectors/sts/CbmRecoSts.cxx index 235f00126327a029970301507162572ed277f72d..3d9d0230b8023f21dfa378e3f5812aba55dff60f 100644 --- a/reco/detectors/sts/CbmRecoSts.cxx +++ b/reco/detectors/sts/CbmRecoSts.cxx @@ -75,20 +75,10 @@ UInt_t CbmRecoSts::CreateModules() assert(setupSensor); Int_t sensorAddress = Int_t(setupSensor->GetAddress()); - // --- Parameter sets from database or user-defined - CbmStsParSetModule* modulePars = (fUserParSetModule ? fUserParSetModule : fParSetModule); - CbmStsParSetSensor* sensorPars = (fUserParSetSensor ? fUserParSetSensor : fParSetSensor); - CbmStsParSetSensorCond* sensorConds = (fUserParSetCond ? fUserParSetCond : fParSetCond); - // --- Module parameters - const CbmStsParModule& modPar = (fUserParModule ? *fUserParModule : modulePars->GetParModule(moduleAddress)); - - // --- Sensor parameters - const CbmStsParSensor& sensPar = (fUserParSensor ? *fUserParSensor : sensorPars->GetParSensor(sensorAddress)); - - // --- Sensor conditions - const CbmStsParSensorCond& sensCond = - (fUserParSensorCond ? *fUserParSensorCond : sensorConds->GetParSensor(sensorAddress)); + const CbmStsParModule& modPar = fParSetModule->GetParModule(moduleAddress); + const CbmStsParSensor& sensPar = fParSetSensor->GetParSensor(sensorAddress); + const CbmStsParSensorCond& sensCond = fParSetCond->GetParSensor(sensorAddress); // --- Calculate and set average Lorentz shift // --- This will be used in hit finding for correcting the position. @@ -290,18 +280,8 @@ InitStatus CbmRecoSts::Init() assert(fParSim); LOG(info) << GetName() << ": Sim settings " << fParSim->ToString(); - // --- Module parameters - assert(fParSetModule); - LOG(info) << GetName() << ": Module parameters " << fParSetModule->ToString(); - - // --- Sensor parameters - assert(fParSetSensor); - LOG(info) << GetName() << ": Sensor parameters " << fParSetModule->ToString(); - - // --- Sensor conditions - assert(fParSetCond); - //assert(fParSetCond->IsSet()); - LOG(info) << GetName() << ": Sensor conditions " << fParSetCond->ToString(); + // --- Parameters + InitParams(); // --- Initialise STS setup fSetup = CbmStsSetup::Instance(); @@ -320,6 +300,70 @@ InitStatus CbmRecoSts::Init() // ------------------------------------------------------------------------- +// ----- Parameter initialisation -------------------------------------- +void CbmRecoSts::InitParams() +{ + + // --- Module parameters + TString sourceModu = "database"; + assert(fParSetModule); + if (fUserParSetModule) { + fParSetModule->clear(); + *fParSetModule = *fUserParSetModule; + fParSetModule->setChanged(); + fParSetModule->setInputVersion(-2, 1); + sourceModu = "user-defined"; + } + if (fUserParModule) { // global settings override + fParSetModule->clear(); + fParSetModule->SetGlobalPar(*fUserParModule); + fParSetModule->setChanged(); + fParSetModule->setInputVersion(-2, 1); + sourceModu = "user-defined, global"; + } + LOG(info) << GetName() << ": Module parameters (" << sourceModu << ") " << fParSetModule->ToString(); + + // --- Sensor parameters + TString sourceSens = "database"; + assert(fParSetSensor); + if (fUserParSetSensor) { + fParSetSensor->clear(); + *fParSetSensor = *fUserParSetSensor; + fParSetSensor->setChanged(); + fParSetSensor->setInputVersion(-2, 1); + sourceSens = "user-defined"; + } + if (fUserParSensor) { // global settings override + fParSetSensor->clear(); + fParSetSensor->SetGlobalPar(*fUserParSensor); + fParSetSensor->setChanged(); + fParSetSensor->setInputVersion(-2, 1); + sourceSens = "user-defined, global"; + } + LOG(info) << GetName() << ": Sensor parameters (" << sourceSens << ")" << fParSetSensor->ToString(); + + // --- Sensor conditions + TString sourceCond = "database"; + assert(fParSetCond); + if (fUserParSetCond) { + fParSetCond->clear(); + *fParSetCond = *fUserParSetCond; + fParSetCond->setChanged(); + fParSetCond->setInputVersion(-2, 1); + sourceSens = "user-defined"; + } + if (fUserParCond) { // global settings override + fParSetCond->clear(); + fParSetCond->SetGlobalPar(*fUserParCond); + fParSetCond->setChanged(); + fParSetCond->setInputVersion(-2, 1); + sourceCond = "user-defined, global"; + } + LOG(info) << GetName() << ": Sensor conditions (" << sourceCond << ")" << fParSetCond->ToString(); +} +// ------------------------------------------------------------------------- + + // ----- Calculate the mean Lorentz shift in a sensor ------------------ std::pair<Double_t, Double_t> CbmRecoSts::LorentzShift(const CbmStsParSensorCond& conditions, Double_t dZ, Double_t bY) { diff --git a/reco/detectors/sts/CbmRecoSts.h b/reco/detectors/sts/CbmRecoSts.h index 0fe9f80c47aec6c2e440c81b79a1e401656494f0..15b5a804cd72927464dbb9f8384677d8b3b51fda 100644 --- a/reco/detectors/sts/CbmRecoSts.h +++ b/reco/detectors/sts/CbmRecoSts.h @@ -186,7 +186,7 @@ public: ** If defined, these condition parameters will be used for all sensors instead ** of those found in the runtimeDb. */ - void UseSensorCond(CbmStsParSensorCond* sensorCond) { fUserParSensorCond = sensorCond; } + void UseSensorCond(CbmStsParSensorCond* sensorCond) { fUserParCond = sensorCond; } /** @brief User-defined module parameter set ** @param parModule Module parameter set object @@ -237,6 +237,16 @@ private: void GetSensorParameters(CbmStsElement* geoSensor); + /** @brief Initialise parameters + ** + ** For simulated data, the parameters for modules and sensors are retrieved from the + ** runtimeDb. They can be overridden by user-specified parameter sets using the respective + ** setters. This is necessary when processing experiment data without a prior simulation step. + ** + **/ + void InitParams(); + + /** @brief Process one time slice or event ** @param event Pointer to CbmEvent object ** @@ -260,10 +270,10 @@ private: CbmStsParSetSensorCond* fParSetCond = nullptr; ///< Sensor conditions // --- User-defined parameters, not from database - CbmStsParAsic* fUserParAsic = nullptr; - CbmStsParModule* fUserParModule = nullptr; - CbmStsParSensor* fUserParSensor = nullptr; - CbmStsParSensorCond* fUserParSensorCond = nullptr; + CbmStsParAsic* fUserParAsic = nullptr; + CbmStsParModule* fUserParModule = nullptr; + CbmStsParSensor* fUserParSensor = nullptr; + CbmStsParSensorCond* fUserParCond = nullptr; // --- User-defined parameter sets, not from database CbmStsParSetModule* fUserParSetModule = nullptr;