diff --git a/reco/detectors/trd/qa/CbmTrdQa.cxx b/reco/detectors/trd/qa/CbmTrdQa.cxx index 02b757ecd966f892aada45214b5de34cba35b74a..dc4ce9e17e40f888fa307ff253f9d1ade6057570 100644 --- a/reco/detectors/trd/qa/CbmTrdQa.cxx +++ b/reco/detectors/trd/qa/CbmTrdQa.cxx @@ -48,16 +48,21 @@ #include "CbmTrdRadiator.h" #include "CbmTrdUtils.h" -using std::cin; using std::cout; using std::endl; using std::fabs; -using std::pair; + CbmTrdQa::CbmTrdQa(CbmTrdRadiator* radiator) : CbmTrdQa("TrdQa", "", "", 1e-6, radiator) {} -CbmTrdQa::CbmTrdQa(const char* /*name*/, const char* /*title*/, const char* geo, Double_t triggerThreshold, +CbmTrdQa::CbmTrdQa(const char* name, const char* title, const char* geo, Double_t triggerThreshold, CbmTrdRadiator* radiator) + : CbmTrdQa(name, title, geo, triggerThreshold, std::make_shared<CbmTrdRadiator>(radiator)) {}; + +CbmTrdQa::CbmTrdQa(std::shared_ptr<CbmTrdRadiator> radiator) : CbmTrdQa("TrdQa", "", "", 1e-6, radiator) {} + +CbmTrdQa::CbmTrdQa(const char* /*name*/, const char* /*title*/, const char* geo, Double_t triggerThreshold, + std::shared_ptr<CbmTrdRadiator> radiator) : FairTask("TrdQa") , fMCTracks(NULL) , fPoints(NULL) diff --git a/reco/detectors/trd/qa/CbmTrdQa.h b/reco/detectors/trd/qa/CbmTrdQa.h index 70e66fc129d789ad5722c35f41013402afcdc236..e432b42b5a38c7ad973d1b58afb1a2d28a7c6093 100644 --- a/reco/detectors/trd/qa/CbmTrdQa.h +++ b/reco/detectors/trd/qa/CbmTrdQa.h @@ -28,9 +28,11 @@ class TPolyLine; class CbmTrdQa : public FairTask { public: - CbmTrdQa(CbmTrdRadiator* radiator = NULL); + CbmTrdQa(std::shared_ptr<CbmTrdRadiator> radiator = nullptr); + CbmTrdQa(CbmTrdRadiator* radiator); CbmTrdQa(const char* name, const char* title = "CBM Task", const char* geo = "", Double_t triggerThreshold = 1.0e-6, - CbmTrdRadiator* radiator = NULL); + std::shared_ptr<CbmTrdRadiator> radiator = nullptr); + CbmTrdQa(const char* name, const char* title, const char* geo, Double_t triggerThreshold, CbmTrdRadiator* radiator); virtual ~CbmTrdQa(); virtual InitStatus ReInit(); virtual InitStatus Init(); @@ -184,7 +186,7 @@ private: TH2I* fPRF_2D; //LayerView - CbmTrdRadiator* fRadiator; + std::shared_ptr<CbmTrdRadiator> fRadiator = nullptr; ClassDef(CbmTrdQa, 1); }; diff --git a/sim/detectors/trd/CbmTrdDigitizer.cxx b/sim/detectors/trd/CbmTrdDigitizer.cxx index 7e1052fd8e54bdc6642922da76a4fcbcf4e9271c..60af95270052bf63e25f9d2c05c3aaeb1b1f8388 100644 --- a/sim/detectors/trd/CbmTrdDigitizer.cxx +++ b/sim/detectors/trd/CbmTrdDigitizer.cxx @@ -43,20 +43,18 @@ #include <iomanip> #include <iostream> +#include <memory> #include <cmath> -using std::cout; -using std::endl; -using std::make_pair; + using std::map; -using std::max; using std::pair; -using std::vector; +using std::shared_ptr; using namespace std; Int_t CbmTrdDigitizer::fConfig = 0; //________________________________________________________________________________________ -CbmTrdDigitizer::CbmTrdDigitizer(CbmTrdRadiator* radiator) +CbmTrdDigitizer::CbmTrdDigitizer(shared_ptr<CbmTrdRadiator> radiator) : CbmDigitize<CbmTrdDigi>("TrdDigitize") , fLastEventTime(0) , fpoints(0) @@ -79,9 +77,13 @@ CbmTrdDigitizer::CbmTrdDigitizer(CbmTrdRadiator* radiator) , fModuleMap() , fDigiMap() { - if (fRadiator == NULL) fRadiator = new CbmTrdRadiator(kTRUE, "tdr18"); + if (fRadiator == NULL) fRadiator = make_shared<CbmTrdRadiator>(kTRUE, "tdr18"); } +//________________________________________________________________________________________ +CbmTrdDigitizer::CbmTrdDigitizer(CbmTrdRadiator* radiator) + : CbmTrdDigitizer(std::make_shared<CbmTrdRadiator>(radiator)) {}; + //________________________________________________________________________________________ CbmTrdDigitizer::~CbmTrdDigitizer() @@ -93,7 +95,6 @@ CbmTrdDigitizer::~CbmTrdDigitizer() delete imod->second; fModuleMap.clear(); - // if (fRadiator2D) delete fRadiator2D; delete fConverter; delete fQA; } @@ -330,7 +331,7 @@ CbmTrdModuleSim* CbmTrdDigitizer::AddModule(Int_t detId) // 0.0025, // polyethylen sheets of 50 µm thickness // 1.2e-3, // 12 µm aluminized polyester foil // }; pwidth = widths; - fRadiator2D = new CbmTrdRadiator(kTRUE, "tdr18", ewin); + fRadiator2D = make_shared<CbmTrdRadiator>(kTRUE, "tdr18", ewin); fRadiator2D->SetEWwidths(5, widths); fRadiator2D->Init(); } diff --git a/sim/detectors/trd/CbmTrdDigitizer.h b/sim/detectors/trd/CbmTrdDigitizer.h index a4fe73831613a95504eb92c7221bac6c84d9c124..99c68c9d399ce75b89c6be825f2c727a1452f3e1 100644 --- a/sim/detectors/trd/CbmTrdDigitizer.h +++ b/sim/detectors/trd/CbmTrdDigitizer.h @@ -22,6 +22,7 @@ #include "CbmTrdRawToDigiR.h" #include <map> +#include <memory> class TClonesArray; @@ -52,7 +53,14 @@ public: * \brief Constructor. * \param[in] radiator TRD radiator to be used in digitization. */ - CbmTrdDigitizer(CbmTrdRadiator* radiator = NULL); + CbmTrdDigitizer(std::shared_ptr<CbmTrdRadiator> radiator = nullptr); + + /** + * \brief Constructor. + * \param[in] radiator TRD radiator to be used in digitization. + * @remark This is needed for backward compatibility with macros not using smart pointers. + */ + CbmTrdDigitizer(CbmTrdRadiator* radiator); /** * \brief Destructor. @@ -137,8 +145,10 @@ private: CbmTrdParSetDigi* fDigiPar; ///< parameter list for read-out geometry CbmTrdParSetGain* fGainPar; ///< parameter list for keV->ADC gain conversion CbmTrdParSetGeo* fGeoPar; ///< parameter list for geometry definitions - CbmTrdRadiator* fRadiator; ///< parametrization of radiator TR yield - CbmTrdRadiator* fRadiator2D; ///< parametrization of 2D radiator TR yield + /** @brief parametrization of radiator TR yield */ + std::shared_ptr<CbmTrdRadiator> fRadiator = nullptr; + /** @brief parametrization of 2D radiator TR yield */ + std::shared_ptr<CbmTrdRadiator> fRadiator2D = nullptr; CbmTrdRawToDigiR* fConverter; CbmTrdCheckUtil* fQA; diff --git a/sim/detectors/trd/CbmTrdModuleSim.h b/sim/detectors/trd/CbmTrdModuleSim.h index 1cfb020172c5fd8c886959b77c2e7963fcf248e8..478adae7c61a2674e479e346eb703e06d647569c 100644 --- a/sim/detectors/trd/CbmTrdModuleSim.h +++ b/sim/detectors/trd/CbmTrdModuleSim.h @@ -10,6 +10,7 @@ #include "CbmTrdRawToDigiR.h" #include <map> +#include <memory> class TClonesArray; class CbmTrdPoint; @@ -72,8 +73,9 @@ public: virtual void SetEventId(Int_t id) { fEventId = id; } virtual void SetInputId(Int_t id) { fInputId = id; } virtual void SetPointId(Int_t id) { fPointId = id; } - virtual void SetRadiator(CbmTrdRadiator* radiator = NULL) = 0; - virtual void SetGamma(Double_t gamma = 0.) = 0; + /** @brief Set the Radiator @param radiator Defintion of the radiator to be used for this module */ + virtual void SetRadiator(std::shared_ptr<CbmTrdRadiator> radiator) { fRadiator = radiator; } + virtual void SetGamma(Double_t gamma = 0.) = 0; virtual void SetPositionMC(Double_t pos[3]) { memcpy(fXYZ, pos, 3 * sizeof(Double_t)); } virtual void SetLinkId(Int_t input, Int_t event = -1, Int_t point = -1) { @@ -94,7 +96,8 @@ protected: CbmTrdDigitizer* fDigitizer; //! Pointer to digitizer // calibration objects - CbmTrdRadiator* fRadiator; ///< TR description for radiator + /** @brief TR description for radiator */ + std::shared_ptr<CbmTrdRadiator> fRadiator = nullptr; std::map<Int_t, std::pair<CbmTrdDigi*, CbmMatch*>> fDigiMap; ///< Temporary storage for complete digis for each CBM address. diff --git a/sim/detectors/trd/CbmTrdModuleSimR.h b/sim/detectors/trd/CbmTrdModuleSimR.h index 82b45a2b88f1308f4fa2e0b72b39047aec4a14b9..720b7ed5edb33350279ad85f808f2882d8f69787 100644 --- a/sim/detectors/trd/CbmTrdModuleSimR.h +++ b/sim/detectors/trd/CbmTrdModuleSimR.h @@ -42,7 +42,6 @@ public: void SetSpadicResponse(Double_t calibration, Double_t tau); void SetPulsePars(Int_t mode); void SetPulseMode(Bool_t pulsed); - void SetRadiator(CbmTrdRadiator* radiator) { fRadiator = radiator; } void SetGamma(Double_t gamma) { fGamma = gamma; } void SetTriggerThreshold(Double_t minCharge) { fMinimumChargeTH = minCharge; } void SetPadPlaneScanArea(Int_t row); diff --git a/sim/detectors/trd/CbmTrdModuleSimT.h b/sim/detectors/trd/CbmTrdModuleSimT.h index 48013813ab01e73672fef7880299407a5aacc8d2..7224d7e653e8d73bcde0ad85cb1c2885fd856ef7 100644 --- a/sim/detectors/trd/CbmTrdModuleSimT.h +++ b/sim/detectors/trd/CbmTrdModuleSimT.h @@ -47,7 +47,6 @@ public: **/ Bool_t MakeDigi(CbmTrdPoint* p, Double_t time, Bool_t TR); Bool_t MakeRaw(/*CbmTrdPoint *p*/) { return kTRUE; } - void SetRadiator(CbmTrdRadiator* radiator) { fRadiator = radiator; } void SetGamma(Double_t /*gamma*/) { ; } void SetMessageConverter(CbmTrdRawToDigiR* conv = NULL) { (void) conv; } void SetQA(CbmTrdCheckUtil* qa = NULL) { (void) qa; }