/* * CbmRichDigiMap.h * * Created on: Dec 17, 2015 * Author: slebedev */ #ifndef RICH_DETECTOR_CBMRICHMCBMDIGIMAPMANAGER_H_ #define RICH_DETECTOR_CBMRICHMCBMDIGIMAPMANAGER_H_ #include // for Int_t #include // for string #include // for map #include // for vector class CbmRichPixelData; class CbmRichPmtData; class CbmRichMCbmDigiMapManager { private: CbmRichMCbmDigiMapManager(); public: /** * Return Instance of CbmRichGeoManager. */ static CbmRichMCbmDigiMapManager& GetInstance() { static CbmRichMCbmDigiMapManager fInstance; return fInstance; } /* * \brief Return digi address by path to node. */ Int_t GetPixelAddressByPath(const std::string& path); /* * \brief Return CbmRichDataPixel by digi address. */ CbmRichPixelData* GetPixelDataByAddress(Int_t address); /* * \brief Return the addresses of the direct neighbour pixels. * C++11 efficient way to return vector */ std::vector GetDirectNeighbourPixels(Int_t address); /* * \brief Return the addresses of the diagonal neighbour pixels. * C++11 efficient way to return vector */ std::vector GetDiagonalNeighbourPixels(Int_t address); /* * \brief Return random address. Needed for noise digi. */ Int_t GetRandomPixelAddress(); /* * \brief Return addresses of all pixels */ std::vector GetPixelAddresses(); /* * \brief Return ids for all pmts */ std::vector GetPmtIds(); /* * \brief Return CbmRichDataPmt by id. */ CbmRichPmtData* GetPmtDataById(Int_t id); public: virtual ~CbmRichMCbmDigiMapManager(); private: std::map fPixelPathToAddressMap; std::map fPixelAddressToDataMap; std::vector fPixelAddresses; // vector of all pixel addresses std::map fPmtPathToIdMap; std::map fPmtIdToDataMap; std::vector fPmtIds; /* * \brief Initialize maps. */ void Init(); /** * \brief Copy constructor. */ CbmRichMCbmDigiMapManager(const CbmRichMCbmDigiMapManager&); /** * \brief Assignment operator. */ CbmRichMCbmDigiMapManager& operator=(const CbmRichMCbmDigiMapManager&); }; #endif /* RICH_DETECTOR_CBMRICHDIGIMAPMANAGER_H_ */