#ifndef ALI_MP_DE_MANAGER_H
#define ALI_MP_DE_MANAGER_H
#include <TObject.h>
#include <TArrayI.h>
#include "AliMpExMap.h"
#include "AliMpPlaneType.h"
#include "AliMpCathodType.h"
#include "AliMpStationType.h"
#include "AliMpStation12Type.h"
#include "AliMpDEIterator.h"
#include "AliMpEncodePair.h"
class AliMpDetElement;
class TString;
class AliMpDEManager : public TObject {
public:
virtual ~AliMpDEManager();
static Bool_t IsValidDetElemId(Int_t detElemId, Bool_t warn = false);
static Bool_t IsValidChamberId(Int_t chamberId, Bool_t warn = false);
static Bool_t IsValidGeomModuleId(Int_t moduleId, Bool_t warn = false);
static Int_t GetChamberId(Int_t detElemId, Bool_t warn = true);
static Int_t GetGeomModuleId(Int_t detElemId, Bool_t warn = true);
static AliMp::PlaneType GetPlaneType(Int_t detElemId, AliMp::CathodType cath);
static AliMp::CathodType GetCathod(Int_t detElemId, AliMp::PlaneType planeType);
static AliMp::StationType GetStationType(Int_t detElemId);
static AliMq::Station12Type GetStation12Type(Int_t detElemId);
static AliMpDetElement* GetDetElement(Int_t detElemId, Bool_t warn = true);
static AliMpDetElement* GetDetElement(const TString& deName, Bool_t warn = true);
static Int_t GetNofDEInChamber(Int_t chamberId, Bool_t warn = true);
static MpPair_t GetDetElemIdRange(Int_t chamberId);
private:
AliMpDEManager();
AliMpDEManager(const AliMpDEManager& rhs);
AliMpDEManager& operator=(const AliMpDEManager& rhs);
static TArrayI& GetNofDEPerChamber();
static const Int_t fgkCoefficient;
ClassDef(AliMpDEManager,0)
};
#endif //ALI_MP_MANAGER_H