Adding a GetCathod(Int_t detElemId, AliMpPlaneType planeType) method
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 2 Mar 2006 16:59:40 +0000 (16:59 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 2 Mar 2006 16:59:40 +0000 (16:59 +0000)
(Laurent)

MUON/mapping/AliMpDEManager.cxx
MUON/mapping/AliMpDEManager.h

index cacd5d4..327bf68 100644 (file)
@@ -14,7 +14,7 @@
  **************************************************************************/
 
 // $Id$
-// $MpId: AliMpDEManager.cxx,v 1.1 2006/01/11 10:24:44 ivana Exp $
+// $MpId: AliMpDEManager.cxx,v 1.2 2006/03/02 16:30:09 ivana Exp $
 // Category: management
 //
 // Class AliMpDEManager
@@ -26,6 +26,7 @@
 #include "AliMpDEManager.h"
 #include "AliMpConstants.h"
 #include "AliMpFiles.h"
+#include "AliMpIntPair.h"
 
 #include "AliLog.h"
 
 #include <TObjString.h>
 #include <TMap.h>
 
-ClassImp(AliMpDEManager)
-
 const char  AliMpDEManager::fgkNameSeparator = '_'; 
 const char  AliMpDEManager::fgkCommentPrefix = '#'; 
 const Int_t AliMpDEManager::fgkCoefficient = 100;
-AliMpExMap  AliMpDEManager::fgDENamesMap = AliMpExMap(true);
+AliMpExMap  AliMpDEManager::fgDENamesMap(true);
+AliMpExMap  AliMpDEManager::fgDECathBNBMap(true);
+
+ClassImp(AliMpDEManager)
 
 //______________________________________________________________________________
 AliMpDEManager::AliMpDEManager()
@@ -171,26 +173,71 @@ AliMpDEManager::ReadDENames(AliMpStationType station)
   //
   Int_t detElemId;
   TString name1, name2;
-  while ( ! in.eof() ) {
+  AliMpPlaneType planeForCathode[2];
+  
+  while ( ! in.eof() ) 
+  {
     if ( word[0] == '#' ) 
+    {
       in.getline(line, 80);
-    else {  
+    }
+    else 
+    {  
       detElemId = word.Atoi();
       in >> name1;
-      if ( ! isCathNameDefined ) 
+      // warning : important to check non bending first (=nbp),
+      // as bp is contained within nbp...
+      if ( name1.Contains(PlaneTypeName(kNonBendingPlane)) )
+      {
+        planeForCathode[0] = kNonBendingPlane;
+      }
+      else
+      {
+        planeForCathode[0] = kBendingPlane;
+      }
+      if ( !isCathNameDefined ) 
+      {       
         in >> name2;
-      else {
+        // Other cathode is other plane...
+        if ( planeForCathode[0] == kBendingPlane ) 
+        {
+          planeForCathode[1]=kNonBendingPlane;
+        }
+        else
+        {
+          planeForCathode[1]=kBendingPlane;
+        }
+      }
+      else 
+      {
         name1 += fgkNameSeparator;
-       name2 = name1;
+        name2 = name1;
         name1 += cathName1;
         name2 += cathName2;
+        if ( name2.Contains(PlaneTypeName(kNonBendingPlane)) )
+        {
+          planeForCathode[1] = kNonBendingPlane;
+        }
+        else
+        {
+          planeForCathode[1] = kBendingPlane;
+        }        
       }   
 
-      if ( ! fgDENamesMap.GetValue(detElemId) ) {
+      if ( planeForCathode[0]==planeForCathode[1] )
+      {
+        AliFatalClass(Form("Got the same cathode type for both planes"
+                      " of DetElemId %d",detElemId));
+      }
+      
+      if ( ! fgDENamesMap.GetValue(detElemId) ) 
+      {
         AliDebugClassStream(1)  
-         << "Adding  "  << detElemId << "  " << name1 << "  " << name2 << endl;
-       fgDENamesMap.Add(detElemId, 
-                        new TPair(new TObjString(name1), new TObjString(name2)));
+        << "Adding  "  << detElemId << "  " << name1 << "  " << name2 << endl;
+        fgDENamesMap.Add(detElemId, 
+                         new TPair(new TObjString(name1), new TObjString(name2)));
+        fgDECathBNBMap.Add(detElemId,
+                           new AliMpIntPair(planeForCathode[0],planeForCathode[1]));
       } 
     } 
     in >> word;
@@ -277,6 +324,20 @@ Bool_t AliMpDEManager::IsValidModuleId(Int_t moduleId, Bool_t warn)
 }    
 
 //______________________________________________________________________________
+Int_t 
+AliMpDEManager::GetCathod(Int_t detElemId, AliMpPlaneType planeType)
+{
+  if ( !IsValidDetElemId(detElemId) ) return -1;
+  AliMpIntPair* pair = 
+    static_cast<AliMpIntPair*>(fgDECathBNBMap.GetValue(detElemId));
+  if ( planeType == pair->GetFirst() )
+  {
+    return 0;
+  }
+  return 1;
+}
+
+//______________________________________________________________________________
 TString AliMpDEManager::GetDEName(Int_t detElemId, Int_t cath, Bool_t warn)
 {
 /// Return det element type name
index de9f48e..cca78b0 100644 (file)
@@ -43,6 +43,7 @@ class AliMpDEManager : public  TObject {
     static Int_t   GetModuleId(Int_t detElemId, Bool_t warn = true);    
     static AliMpPlaneType   GetPlaneType(Int_t detElemId, Int_t cath);
     static AliMpStationType GetStationType(Int_t detElemId);
+    static Int_t            GetCathod(Int_t detElemId, AliMpPlaneType planeType);
 
   protected:
     AliMpDEManager();
@@ -64,8 +65,10 @@ class AliMpDEManager : public  TObject {
     static const Int_t fgkCoefficient;   // Coefficient used in DE Id <-> station
 
     // data members    
-    static  AliMpExMap fgDENamesMap; // Map between DE Ids and 
-                                     // a pair of DE names for 2 cathods
+    static  AliMpExMap fgDENamesMap;  // Map between DE Ids and 
+                                      // a pair of DE names for 2 cathods
+    static  AliMpExMap fgDECathBNBMap;// Map between DE Is and a pair
+                                      // of planeTypes for cathodes (0,1)
 
   ClassDef(AliMpDEManager,0)  // 
 };