#include "AliMUONGeometryDEIndexing.h"
#include "AliMUONConstants.h"
-ClassImp(AliMUONGeometryDEIndexing)
-
-const Int_t AliMUONGeometryDEIndexing::fgkHemisphere = 50;
-
-//______________________________________________________________________________
-AliMUONGeometryDEIndexing::AliMUONGeometryDEIndexing(
- Int_t moduleId, Int_t nofDetElements)
- : AliMUONVGeometryDEIndexing(),
- fModuleId(moduleId),
- fNofDetElements(nofDetElements)
-{
-/// Standard constructor
-}
-
-//______________________________________________________________________________
-AliMUONGeometryDEIndexing::AliMUONGeometryDEIndexing()
- : AliMUONVGeometryDEIndexing(),
- fModuleId(0),
- fNofDetElements(0)
-{
-/// Default constructor
-}
-
-//______________________________________________________________________________
-AliMUONGeometryDEIndexing::~AliMUONGeometryDEIndexing()
-{
-/// Destructor
-}
+Int_t const AliMUONGeometryDEIndexing::fgkSeparator = 100;
//
-// private methods
+// static methods
//
//______________________________________________________________________________
-Int_t AliMUONGeometryDEIndexing::GetFirstDetElemId() const
+Int_t AliMUONGeometryDEIndexing::GetModuleId(Int_t detElemId)
{
-/// Get first detection element Id for chamber specified by moduleId
+// Get module Id from detection element Id
+// ---
- return (fModuleId+1)*100;
+ return detElemId/fgkSeparator - 1;
}
-//
-// public methods
-//
-
//______________________________________________________________________________
-Int_t AliMUONGeometryDEIndexing::GetDetElementIndex(Int_t detElemId) const
+Int_t AliMUONGeometryDEIndexing::GetDEIndex(Int_t detElemId)
{
/// Returns the index of detector element specified by detElemId
- if ( fNofDetElements == 0 ) {
- AliFatal("The number of detection elements has not been set.");
- return 0;
- }
-
- Int_t index = detElemId - GetFirstDetElemId();
- if (index >= fgkHemisphere)
- index += - fgkHemisphere + fNofDetElements/2;
-
- return index;
-}
+ return detElemId - detElemId/fgkSeparator*fgkSeparator;
+ }
//______________________________________________________________________________
-Int_t AliMUONGeometryDEIndexing::GetDetElementId(Int_t detElemIndex) const
+Int_t AliMUONGeometryDEIndexing::GetDEId(Int_t moduleId, Int_t detElemIndex)
{
/// Returns the ID of detector element specified by index
- if ( fNofDetElements == 0 ) {
- AliFatal("The number of detection elements has not been set.");
- return 0;
- }
-
- Int_t detElemId = detElemIndex;
-
- if ( detElemIndex >= fNofDetElements/2 )
- detElemId += fgkHemisphere - fNofDetElements/2;
-
- detElemId += GetFirstDetElemId();
-
- return detElemId;
+ return ( moduleId + 1 ) * fgkSeparator + detElemIndex;
}
/// \class AliMUONGeometryDEIndexing
/// \brief Conversion between the detection element Id and the array index
///
-/// The class that provides conversion between the detection element Id
+/// The class that provides static methods for conversions
+/// between the module & detection element Id
/// and the index in the array.
/// Used in storing DE transformations and segmentations.
/// The detection elements numbering:
-/// DetElemId = chamberId*100 + [50] + detElemNum
+/// DetElemId = chamberId*100 + detElemNum
/// where chamberId = 1, 2, ..., 14
/// detElemNum = 0, 1, ...
-/// The number 50 is added to distinguish detector elements
-/// in the left and the right hemispheres.
///
/// Author: Ivana Hrivnacova, IPN Orsay
#ifndef ALI_MUON_GEOMETRY_DE_INDEXING_H
#define ALI_MUON_GEOMETRY_DE_INDEXING_H
-#include "AliMUONVGeometryDEIndexing.h"
-
-class AliMUONGeometryDEIndexing : public AliMUONVGeometryDEIndexing
+class AliMUONGeometryDEIndexing
{
public:
- AliMUONGeometryDEIndexing(Int_t moduleId, Int_t nofDetElements);
- AliMUONGeometryDEIndexing();
- virtual ~AliMUONGeometryDEIndexing();
-
- // methods for conversion between det element Id and index
- virtual Int_t GetDetElementIndex(Int_t detElemId) const;
- virtual Int_t GetDetElementId(Int_t detElemIndex) const;
-
- // set method
- virtual Int_t GetNofDetElements() const ;
- virtual void SetNofDetElements(Int_t nofDetElements);
+ // static methods
+ static Int_t GetModuleId(Int_t detElemId);
+ static Int_t GetDEIndex(Int_t detElemId);
+ static Int_t GetDEId(Int_t moduleId, Int_t detElemIndex);
private:
- Int_t GetFirstDetElemId() const;
-
- // static data members
- static const Int_t fgkHemisphere; // The constant to distinguish
- // the left/right hemispere
-
+ AliMUONGeometryDEIndexing() {}
+ ~AliMUONGeometryDEIndexing() {}
+
// data members
- Int_t fModuleId; // module Id
- Int_t fNofDetElements; // number of detection elements in the module
-
- ClassDef(AliMUONGeometryDEIndexing,1) // Conversion between the DE Id and the array index
+ static const Int_t fgkSeparator;
};
-// inline functions
-
-inline Int_t AliMUONGeometryDEIndexing::GetNofDetElements() const
-{ return fNofDetElements; }
-
-inline void AliMUONGeometryDEIndexing::SetNofDetElements(Int_t nofDetElements)
-{ fNofDetElements = nofDetElements; }
-
#endif //ALI_MUON_GEOMETRY_DE_INDEXING_H