/** @file CbmReco.h ** @author Volker Friese ** @date 11.03.2019 **/ #ifndef CBMSTSRECO_H #define CBMSTSRECO_H 1 #include "FairTask.h" #include "CbmStsDigitizeParameters.h" class CbmStsSetup; /** @enum ECbmMode ** @brief Time-slice or event-by-event mode **/ enum ECbmMode{kCbmTimeslice, kCbmEvent}; /** @class CbmStsReco ** @brief Task class for local reconstruction in STS ** @author Volker Friese ** @since 11.03.2019 ** @date 11.03.2019 ** ** Local reconstruction in the CBM-STS. On presence of the ** respective input data, the cluster and hit finder tasks ** will be instantiated an registered. **/ class CbmStsReco : public FairTask { public: /** @brief Constructor **/ CbmStsReco(); /** @brief Destructor **/ virtual ~CbmStsReco(); /** @brief Initialisation ** @return Success of initialisation ** ** Inherited from FairTask. **/ virtual InitStatus Init(); /** @brief Change the global module parameters ** @param nChannels Number of readout channels ** @param dynRange Dynamic range [e] ** @param threshold Threshold [e] ** @param nAdc Number of ADC channels ** @param timeResol Time resolution [ns] ** @param deadTime Channel dead time [ns] ** @param noise Noise RMS ** @param deadChannelFrac Fraction of dead channels [%] ** ** These parameters replace the default ones defined in ** DefineDefaultParameters. They will be used if a ** parameter container is not available. */ void SetGlobalModuleParameters(Double_t dynRange, Double_t threshold, Int_t nAdc, Double_t timeResol, Double_t deadTime, Double_t noise, Double_t zeroNoiseRate, Double_t deadChannelFrac) { fGlobalPar.SetModuleParameters(dynRange, threshold, nAdc, timeResol, deadTime, noise, zeroNoiseRate, deadChannelFrac); fIsModuleParametersDefault = kFALSE; } /** @brief Change the global sensor conditions ** @param vDep Full depletion voltage [V] ** @param vBias Bias voltage [V] ** @param temp Temperature [K] ** @param cCoup Coupling capacitance [pF] ** @param cInter Inter-strip capacitance [pF] ** ** These parameters replace the default ones defined in ** DefineDefaultParameters. They will be used if a ** parameter container is not available. */ void SetGlobalSensorConditions(Double_t vDep, Double_t vBias, Double_t temp, Double_t cCoup, Double_t cInter) { fGlobalPar.SetSensorConditions(vDep, vBias, temp, cCoup, cInter); fIsSensorConditionsDefault = kFALSE; } /** @brief Set processing mode ** @param mode Processing mode (time slice or event) ** ** Default is time-slice processing. In case event mode ** is selected, an event branch has to be present. **/ void SetMode(ECbmMode mode) { fMode = mode; } /** @brief Set parameter containers ** ** Specify the needed parameter containers (CbmStsDigitizeParameters). ** Inherited from FairTask. **/ virtual void SetParContainers(); private: ECbmMode fMode; ///< time-slice or event CbmStsSetup* fSetup; //! Setup instance CbmStsDigitizeParameters* fDigiPar; ///< Parameters CbmStsDigitizeParameters fGlobalPar; ///< User defined global defaults Bool_t fIsSensorConditionsDefault; ///< Flag if parameters were changed Bool_t fIsModuleParametersDefault; ///< Flag if parameters were changed /** @brief Copy constructor forbidden **/ CbmStsReco(const CbmStsReco&) = delete; /** @brief Assignment operator forbidden **/ CbmStsReco operator=(const CbmStsReco&) = delete; /** @brief Set default parameters for sensors and modules ** ** The default values are hard-coded here. Used from the constructor. **/ void DefineDefaultParameters(); /** @brief Set global sensor conditions (same for all sensors) ** @param digiPar Parameter container ** ** If the parameter container is not present, default values ** will be used. **/ void SetSensorConditions(CbmStsDigitizeParameters* par = nullptr); ClassDef(CbmStsReco, 1); }; #endif