/// \brief Singleton container class for mapping segmentations
///
/// It provides access to mapping segmentations based on the
-/// AliMpVSegmentation interface. \n
+/// AliMpVSegmentation interface and to segmentations underlying
+/// detectors (sector, slat, trigger). \n
/// Mapping segmentations for all detection elements
/// are created at the first call to AliMpSegmentation::Instance().
/// The class is a singleton, it has all constructors
# include "AliMpCathodType.h"
#endif
-#ifndef ALIMPSLATMOTIFMAP_H
-# include "AliMpSlatMotifMap.h"
-#endif
-
-class AliMpVSegmentation;
+class AliMpDEStore;
class AliMpSegmentation;
+class AliMpVSegmentation;
+class AliMpSlatMotifMap;
+class AliMpDataStreams;
+class AliMpSector;
+class AliMpSlat;
+class AliMpTrigger;
class TRootIOCtor;
class AliMpSegmentation : public TObject {
public:
- AliMpSegmentation(TRootIOCtor* /*ioCtor*/);
+ AliMpSegmentation(TRootIOCtor* ioCtor);
virtual ~AliMpSegmentation();
// static methods
static AliMpSegmentation* Instance(Bool_t warn = true);
- static AliMpSegmentation* ReadData(Bool_t warn = true);
+ static AliMpSegmentation* ReadData(const AliMpDataStreams& dataStreams,
+ Bool_t warn = true);
// methods
+
+ //
+ // Access to segmentations
+ //
+
const AliMpVSegmentation* GetMpSegmentation(
Int_t detElemId, AliMp::CathodType cath,
Bool_t warn = true) const;
const AliMpVSegmentation* GetMpSegmentationByElectronics(
Int_t detElemId, Int_t elCardID,
Bool_t warn = true) const;
-
+ //
+ // Access to sectors, slats, triggers
+ //
+
+ const AliMpSector* GetSector(const AliMpVSegmentation* kSegmentation,
+ Bool_t warn = true) const;
+ const AliMpSector* GetSector(Int_t detElemId, AliMp::CathodType cath,
+ Bool_t warn = true) const;
+ const AliMpSector* GetSectorByElectronics(Int_t detElemId, Int_t elCardID,
+ Bool_t warn = true) const;
+
+ const AliMpSlat* GetSlat(const AliMpVSegmentation* kSegmentation,
+ Bool_t warn = true) const;
+ const AliMpSlat* GetSlat(Int_t detElemId, AliMp::CathodType cath,
+ Bool_t warn = true) const;
+ const AliMpSlat* GetSlatByElectronics(Int_t detElemId, Int_t elCardID,
+ Bool_t warn = true) const;
+
+ const AliMpTrigger* GetTrigger(const AliMpVSegmentation* kSegmentation,
+ Bool_t warn = true) const;
+ const AliMpTrigger* GetTrigger(Int_t detElemId, AliMp::CathodType cath,
+ Bool_t warn = true) const;
+ const AliMpTrigger* GetTriggerByElectronics(Int_t detElemId, Int_t elCardID,
+ Bool_t warn = true) const;
+
private:
- /// Not implemented
- AliMpSegmentation();
+ AliMpSegmentation(const AliMpDataStreams& dataStreams);
/// Not implemented
AliMpSegmentation(const AliMpSegmentation& rhs);
/// Not implemented
AliMpVSegmentation* CreateMpSegmentation(
Int_t detElemId, AliMp::CathodType cath);
+
AliMpExMap* FillElCardsMap(Int_t detElemId);
static AliMpSegmentation* fgInstance; ///< Singleton instance
// data members
+ const AliMpDataStreams& fkDataStreams; //!< Data streams
+ AliMpDEStore* fDetElements; ///< Detection element store
AliMpStringObjMap fMpSegmentations;///< Map of mapping segmentations to DE seg names
AliMpExMap fElCardsMap; ///< Map of el. cards IDs to segmentations
- AliMpSlatMotifMap fSlatMotifMap; ///< Map of motif, motifTypes to avoid duplications and allow proper deletion
+ AliMpSlatMotifMap* fSlatMotifMap; ///< Map of motif, motifTypes to avoid duplications and allow proper deletion
- ClassDef(AliMpSegmentation,1) // The factory for building mapping segmentations
+ ClassDef(AliMpSegmentation,3) // The factory for building mapping segmentations
};
#endif //ALI_MP_SEGMENTATION_H