Update HFE v2 analyses
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpDEManager.cxx
index 3eaec12..11688c5 100644 (file)
 // $Id$
 // $MpId: AliMpDEManager.cxx,v 1.4 2006/05/24 13:58:34 ivana Exp $
 // Category: management
-//
+
+//-----------------------------------------------------------------------------
 // Class AliMpDEManager
 // --------------------
 // The manager class for definition of detection element types
 // Authors: Ivana Hrivnacova, IPN Orsay
 //          Laurent Aphecetche, SUBATECH Nantes
+//-----------------------------------------------------------------------------
 
 #include "AliMpDEManager.h"
 #include "AliMpDEStore.h"
 #include "AliMpDetElement.h"
 #include "AliMpConstants.h"
 #include "AliMpCathodType.h"
+#include "AliMpEncodePair.h"
 
 #include "AliLog.h"
 
 #include <Riostream.h>
 #include <TClass.h>
-//#include <TSystem.h>
-//#include <TObjString.h>
-//#include <TMap.h>
 
+using std::endl;
 /// \cond CLASSIMP
 ClassImp(AliMpDEManager)
 /// \endcond
 
 const Int_t AliMpDEManager::fgkCoefficient = 100;
-TArrayI     AliMpDEManager::fgNofDEPerChamber;
 
+//
+// static private methods
+//
 //______________________________________________________________________________
-
-AliMpDEManager::~AliMpDEManager()
+TArrayI& AliMpDEManager::GetNofDEPerChamber() 
 {
-/// Destructor
+  /// number of detElemId per chamber
+  static TArrayI nofDEPerChamber;
+  return nofDEPerChamber;
 }
 
 //
-// static private methods
+// static public methods
 //
 
 //______________________________________________________________________________
@@ -63,6 +67,14 @@ AliMpDetElement* AliMpDEManager::GetDetElement(Int_t detElemId, Bool_t warn)
   return AliMpDEStore::Instance()->GetDetElement(detElemId, warn);
 }    
 
+//______________________________________________________________________________
+AliMpDetElement* AliMpDEManager::GetDetElement(const TString& deName, Bool_t warn)
+{
+/// Return det element for given deName
+
+  return AliMpDEStore::Instance()->GetDetElement(deName, warn);
+}    
+
 //
 // static public methods
 //
@@ -147,12 +159,12 @@ Int_t AliMpDEManager::GetGeomModuleId(Int_t detElemId, Bool_t warn)
   if ( ! IsValidDetElemId(detElemId, warn) ) return -1;
   
   return detElemId/fgkCoefficient 
-           + (detElemId >=  505 && detElemId <=  513 || detElemId >= 600 )
-          + (detElemId >=  605 && detElemId <=  613 || detElemId >= 700 )
-          + (detElemId >=  707 && detElemId <=  719 || detElemId >= 800 )
-          + (detElemId >=  807 && detElemId <=  819 || detElemId >= 900 )
-          + (detElemId >=  907 && detElemId <=  919 || detElemId >= 1000 )
-          + (detElemId >= 1007 && detElemId <= 1019 || detElemId >= 1100 ) - 1;
+    + ((detElemId >=  505 && detElemId <=  513) || detElemId >= 600 )
+    + ((detElemId >=  605 && detElemId <=  613) || detElemId >= 700 )
+    + ((detElemId >=  707 && detElemId <=  719) || detElemId >= 800 )
+    + ((detElemId >=  807 && detElemId <=  819) || detElemId >= 900 )
+    + ((detElemId >=  907 && detElemId <=  919) || detElemId >= 1000 )
+    + ((detElemId >= 1007 && detElemId <= 1019) || detElemId >= 1100 ) - 1;
 }  
 
 //______________________________________________________________________________
@@ -179,13 +191,28 @@ AliMp::StationType AliMpDEManager::GetStationType(Int_t detElemId)
 
   if ( ! IsValidDetElemId(detElemId, true) ) {
     AliFatalClass("Cannot return AliMp::StationType value.");
-    return AliMp::kStation1;
+    return AliMp::kStation12;
   }  
   
   return GetDetElement(detElemId)->GetStationType();
 }
 
 //______________________________________________________________________________
+AliMq::Station12Type AliMpDEManager::GetStation12Type(Int_t detElemId)
+{
+/// Return station12 type                                                    \n
+/// Failure causes Fatal error - as AliMp::StationNumber has no possibility
+/// to return undefined value
+
+  if ( ! IsValidDetElemId(detElemId, true) ) {
+    AliFatalClass("Cannot return AliMp::Station12Type value.");
+    return AliMq::kNotSt12;
+  }  
+  
+  return GetDetElement(detElemId)->GetStation12Type();
+}
+
+//______________________________________________________________________________
 AliMp::CathodType 
 AliMpDEManager::GetCathod(Int_t detElemId, AliMp::PlaneType planeType)
 {
@@ -208,17 +235,41 @@ Int_t AliMpDEManager::GetNofDEInChamber(Int_t chamberId, Bool_t warn)
   if ( ! IsValidChamberId(chamberId,warn) ) return 0;
 
   // Fill array if it is empty
-  if ( ! fgNofDEPerChamber.GetSize() ) {
-    fgNofDEPerChamber.Set(AliMpConstants::NofChambers());
+  if ( ! GetNofDEPerChamber().GetSize() ) {
+    GetNofDEPerChamber().Set(AliMpConstants::NofChambers());
     AliMpDEIterator it;
     for ( Int_t i=0; i<AliMpConstants::NofChambers(); i++ ) {
       Int_t counter = 0;
       for ( it.First(i); ! it.IsDone(); it.Next() ) ++counter;
-      fgNofDEPerChamber[i] = counter;
+      GetNofDEPerChamber()[i] = counter;
     }  
   }
   
-  return fgNofDEPerChamber[chamberId];    
+  return GetNofDEPerChamber()[chamberId];    
+
+}
+
+//______________________________________________________________________________
+MpPair_t AliMpDEManager::GetDetElemIdRange(Int_t chamberId)
+{
+/// Return the detection element Id range for given chamberId
+/// es encoded pair
+  if ( ! IsValidChamberId(chamberId) ) return 0;
+
+  return AliMp::Pair(
+           (chamberId+1)*fgkCoefficient,
+           (chamberId+1)*fgkCoefficient + GetNofDEInChamber(chamberId) - 1);
+  
+}
+
+//
+// ctors, dtor
+//
 
+//______________________________________________________________________________
+AliMpDEManager::~AliMpDEManager()
+{
+/// Destructor
 }