]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpFiles.cxx
Separating run-dependent mapping data from data, which are not
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpFiles.cxx
index 921648d1beb78785911d99d20a928be09ee355cb..c4890da18689c5bce6acb86b5a63dc757a245aff 100755 (executable)
  **************************************************************************/
 
 // $Id$
-// $MpId: AliMpFiles.cxx,v 1.4 2005/08/26 15:43:36 ivana Exp $
+// $MpId: AliMpFiles.cxx,v 1.12 2006/05/23 13:09:54 ivana Exp $
 // Category: basic
-//
+
+//-----------------------------------------------------------------------------
 // Class AliMpFiles
 // ----------------
 // Class for generating file names and paths.
 //
 // Included in AliRoot: 2003/05/02
 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
-
-#include <stdlib.h>
+//-----------------------------------------------------------------------------
 
 #include "AliMpFiles.h"
+
 #include "AliLog.h"
-#include "TClass.h"
 
+#include <TClass.h>
+#include <Riostream.h>
+
+#include <stdlib.h>
+
+/// \cond CLASSIMP
 ClassImp(AliMpFiles)
+/// \endcond
 
 //
 // static
 
 // static data members
 
-const TString AliMpFiles::fgkDefaultTop = GetDefaultTop();
 const TString AliMpFiles::fgkDataDir = "/data";
+const TString AliMpFiles::fgkDataRunDir = "/data_run";
 const TString AliMpFiles::fgkStationDir = "/station";
-const TString AliMpFiles::fgkBendingDir = "/bending_plane/";
-const TString AliMpFiles::fgkNonBendingDir = "/non-bending_plane/";
+const TString AliMpFiles::fgkBendingDir = "bending_plane/";
+const TString AliMpFiles::fgkNonBendingDir = "non-bending_plane/";
+const TString AliMpFiles::fgkDENames = "denames"; 
 const TString AliMpFiles::fgkSector  = "zones"; 
 const TString AliMpFiles::fgkSectorSpecial = "zones_special";
 const TString AliMpFiles::fgkSectorSpecial2 = "zones_special_outer";
 const TString AliMpFiles::fgkMotifPrefix   = "motif";  
 const TString AliMpFiles::fgkMotifSpecialPrefix ="motifSpecial";
+const TString AliMpFiles::fgkManuToSerial ="_manu";
 const TString AliMpFiles::fgkPadPosPrefix  = "padPos"; 
 const TString AliMpFiles::fgkDataExt = ".dat";      
-const TString AliMpFiles::fgkBergToGCFileName = "/bergToGC"; 
-const TString AliMpFiles::fgkTriggerLocalBoards = "MUONLocalTriggerBoard";
+const TString AliMpFiles::fgkBergToGCFileName = "bergToGC"; 
+const TString AliMpFiles::fgkTriggerLocalBoards = "RegionalCrate";
+const TString AliMpFiles::fgkTriggerGlobalBoards = "GlobalCrate";
 const TString AliMpFiles::fgkBusPatchFileName = "DetElemIdToBusPatch";
-
-TString AliMpFiles::fgTop = AliMpFiles::fgkDefaultTop;
-
-//______________________________________________________________________________
-AliMpFiles::AliMpFiles()
-  : TObject()
-{
-/// Default constructor
-}
-  
-//______________________________________________________________________________
-AliMpFiles::AliMpFiles(const AliMpFiles& right)
-  : TObject(right) 
-{
-/// Protected copy constructor 
-
-  AliFatalClass("Attempt to copy AliMpFiles singleton.");
-}
-
+const TString AliMpFiles::fgkBusPatchInfoFileName = "BusPatchInfo";
+const TString AliMpFiles::fgkBusPatchSpecialFileName = "BusPatchSpecial";
+const TString AliMpFiles::fgkSerialToBinFileName = "ManuSerialToBin";
 
 //______________________________________________________________________________
 AliMpFiles::~AliMpFiles() 
@@ -82,90 +76,60 @@ AliMpFiles::~AliMpFiles()
 /// Destructor
 }
 
-// operators
-
-//______________________________________________________________________________
-AliMpFiles& AliMpFiles::operator=(const AliMpFiles& right)
-{
-/// Assignment operator
-
-  // check assignment to self
-  if (this == &right) return *this;
-
-  AliFatalClass("Attempt to assign AliMpFiles singleton.");
-    
-  return *this;  
-}    
-          
 //
 // private methods
 //
 
 //______________________________________________________________________________
-const char* AliMpFiles::GetDefaultTop()
-{
-  const char* top = getenv("MINSTALL");    
-  if (!top)
-  {
-    const char* ntop = getenv("ALICE_ROOT");
-    if (!ntop) return 0;
-    TString dirPath(ntop);
-    dirPath += "/MUON/mapping"; 
-    return dirPath.Data();
-  }
-  return top;
-}
-
-//______________________________________________________________________________
-TString AliMpFiles::PlaneDataDir(AliMpStationType station, 
-                                 AliMpPlaneType plane)
+TString AliMpFiles::PlaneDataDir(AliMp::StationType station, 
+                                 AliMp::PlaneType plane)
 {
 /// Returns path to data files with sector description
 /// for a specified plane.
 
   switch (station) {
-  case kStation1:
-  case kStation2:
+  case AliMp::kStation1:
+  case AliMp::kStation2:
     switch (plane) {
-    case kBendingPlane:
-      return fgTop + fgkDataDir + StationDataDir(station) + fgkBendingDir;
+    case AliMp::kBendingPlane:
+      return GetTop() + fgkDataDir + StationDataDir(station) + fgkBendingDir;
       ;;
-    case kNonBendingPlane:   
-      return fgTop + fgkDataDir + StationDataDir(station) + fgkNonBendingDir;
+    case AliMp::kNonBendingPlane:   
+      return GetTop() + fgkDataDir + StationDataDir(station) + fgkNonBendingDir;
       ;;
     }   
     break;
-  case kStation345:
-  case kStationTrigger:  
-    return fgTop + fgkDataDir + StationDataDir(station) + "/";
+  case AliMp::kStation345:
+  case AliMp::kStationTrigger:  
+    return GetTop() + fgkDataDir + StationDataDir(station);
     break;
   default:  
-    AliFatalClass("Incomplete switch on AliMpPlaneType");
+    AliFatalClass("Incomplete switch on AliMp::PlaneType");
     break;
   }
   return TString();
 }
 
 //______________________________________________________________________________
-TString AliMpFiles::StationDataDir(AliMpStationType station)
+TString AliMpFiles::StationDataDir(AliMp::StationType station)
 {
 /// Returns the station directory name for the specified station number.
 
   TString stationDataDir(fgkStationDir);
   switch (station) {
-  case kStation1: 
-    stationDataDir += 1;
+  case AliMp::kStation1: 
+    stationDataDir += "1/";
     break;
     ;;
-  case kStation2: 
-    stationDataDir += 2;
+  case AliMp::kStation2: 
+    stationDataDir += "2/";
     break;
     ;;
-  case kStation345: 
+  case AliMp::kStation345: 
     stationDataDir += "345/";
     break;
     ;;      
-  case kStationTrigger:
+  case AliMp::kStationTrigger:
     stationDataDir += "Trigger/";
     break;
     ;;
@@ -185,43 +149,86 @@ TString AliMpFiles::BusPatchFilePath()
 {
 /// Return path to data file with bus patch mapping.
 
-  return fgTop + fgkDataDir + "/" + fgkBusPatchFileName + fgkDataExt;
+  return GetTop() + fgkDataDir + "/" + fgkBusPatchFileName + fgkDataExt;
+}  
+
+//______________________________________________________________________________
+TString AliMpFiles::BusPatchInfoFilePath()
+{
+/// Return path to data file with bus patch mapping.
+
+  return GetTop() + fgkDataDir + "/" + fgkBusPatchInfoFileName + fgkDataExt;
+}  
+
+//______________________________________________________________________________
+TString AliMpFiles::BusPatchSpecialFilePath()
+{
+/// Return path to data file with special bus patch mapping.
+
+  return GetTop() + fgkDataDir + "/" + fgkBusPatchSpecialFileName + fgkDataExt;
+}  
+
+//______________________________________________________________________________
+TString AliMpFiles::SerialToBinFilePath()
+{
+/// Return path to data file containing manu serial numbers with their bin.
+
+  return GetTop() + fgkDataDir + "/" + fgkSerialToBinFileName + fgkDataExt;
 }  
 
+
+//______________________________________________________________________________
+TString AliMpFiles::DENamesFilePath(AliMp::StationType station)
+{
+/// Return path to data file with DE names for given station.
+  return GetTop() + fgkDataDir + StationDataDir(station) + fgkDENames + fgkDataExt;
+}
+
 //______________________________________________________________________________
 TString AliMpFiles::LocalTriggerBoardMapping()
 {
-  return TString(PlaneDataDir(kStationTrigger,kNonBendingPlane) 
-                 + fgkTriggerLocalBoards
-                 + fgkDataExt);
+/// Return path to data file with local trigger board mapping.
+
+  return GetTop() + fgkDataDir + StationDataDir(AliMp::kStationTrigger) 
+          + fgkTriggerLocalBoards + fgkDataExt;;
+}
+
+//______________________________________________________________________________
+TString AliMpFiles::GlobalTriggerBoardMapping()
+{
+/// Return path to data file with local trigger board mapping.
+
+  return GetTop() + fgkDataDir + StationDataDir(AliMp::kStationTrigger) 
+      + fgkTriggerGlobalBoards + fgkDataExt;;
 }
 
 //_____________________________________________________________________________
-TString AliMpFiles::SlatFilePath(AliMpStationType stationType,
+TString AliMpFiles::SlatFilePath(AliMp::StationType stationType,
                                  const char* slatType,
-                                 AliMpPlaneType plane)
+                                 AliMp::PlaneType plane)
 {
 /// \todo add ..
 
   return TString(PlaneDataDir(stationType,plane) + slatType + "." +
-                ( plane == kNonBendingPlane ? "NonBending":"Bending" ) + ".slat");
+                ( plane == AliMp::kNonBendingPlane ? "NonBending":"Bending" ) + ".slat");
 }
 
 //_____________________________________________________________________________
-TString AliMpFiles::SlatPCBFilePath(AliMpStationType stationType,
+TString AliMpFiles::SlatPCBFilePath(AliMp::StationType stationType,
                                     const char* pcbType)
 {
 /// Get the full path for a given PCB (only relevant to stations 3,
 /// 4, 5 and trigger). The bending parameter below is of no use in this case, but
 /// we use it to re-use the PlaneDataDir() method untouched.
 
-  return TString(PlaneDataDir(stationType,kNonBendingPlane) + pcbType +
+  return TString(PlaneDataDir(stationType,AliMp::kNonBendingPlane) + pcbType +
                  ".pcb");
 }
 
 //______________________________________________________________________________
-TString AliMpFiles::SectorFilePath(AliMpStationType station, 
-                                   AliMpPlaneType plane)
+TString AliMpFiles::SectorFilePath(AliMp::StationType station, 
+                                   AliMp::PlaneType plane)
 {
 /// Return path to data file with sector description.
  
@@ -229,8 +236,8 @@ TString AliMpFiles::SectorFilePath(AliMpStationType station,
 }
     
 //______________________________________________________________________________
-TString AliMpFiles::SectorSpecialFilePath(AliMpStationType station, 
-                                          AliMpPlaneType plane)
+TString AliMpFiles::SectorSpecialFilePath(AliMp::StationType station, 
+                                          AliMp::PlaneType plane)
 {
 /// Return path to data file with sector special description (irregular motifs).
 
@@ -238,62 +245,114 @@ TString AliMpFiles::SectorSpecialFilePath(AliMpStationType station,
 }
     
 //______________________________________________________________________________
-TString AliMpFiles::SectorSpecialFilePath2(AliMpStationType station, 
-                                           AliMpPlaneType plane)
+TString AliMpFiles::SectorSpecialFilePath2(AliMp::StationType station, 
+                                           AliMp::PlaneType plane)
 {
 /// Returns path to data file with sector special description (irregular motifs).
 
   return TString(PlaneDataDir(station, plane) + fgkSectorSpecial2 + fgkDataExt);
 }
-    
+
 //______________________________________________________________________________
-TString AliMpFiles::MotifFilePath(AliMpStationType station, 
-                                  AliMpPlaneType plane, 
+TString AliMpFiles::MotifFileName(const TString& motifTypeID)
+{
+  /// Returns name of data file for a given motif type.
+  
+  return TString(fgkMotifPrefix +  motifTypeID + fgkDataExt);
+}
+
+//______________________________________________________________________________
+TString AliMpFiles::MotifFilePath(AliMp::StationType station, 
+                                  AliMp::PlaneType plane, 
                                   const TString& motifTypeID)
 {
 /// Returns path to data file for a given motif type.
 
-  return TString(PlaneDataDir(station, plane) 
-                 + fgkMotifPrefix +  motifTypeID + fgkDataExt);
+  return TString(PlaneDataDir(station, plane) + MotifFileName(motifTypeID));
 }
-    
+
 //______________________________________________________________________________
-TString AliMpFiles::PadPosFilePath(AliMpStationType station, 
-                                   AliMpPlaneType plane, 
+TString AliMpFiles::PadPosFileName(const TString& motifTypeID)
+{
+  /// Returns name of data file with pad positions for a given motif type.
+  
+  return TString(fgkPadPosPrefix +  motifTypeID + fgkDataExt);
+}
+
+//______________________________________________________________________________
+TString AliMpFiles::PadPosFilePath(AliMp::StationType station, 
+                                   AliMp::PlaneType plane, 
                                    const TString& motifTypeID)
 {
 /// Returns path to data file with pad positions for a given motif type.
 
-  return TString(PlaneDataDir(station, plane) 
-                 + fgkPadPosPrefix +  motifTypeID + fgkDataExt);
+  return TString(PlaneDataDir(station, plane) + PadPosFileName(motifTypeID));
 }
 
 //______________________________________________________________________________ 
-TString AliMpFiles::MotifSpecialFilePath(AliMpStationType station, 
-                                         AliMpPlaneType plane,
+TString AliMpFiles::MotifSpecialFileName(const TString& motifID)
+{
+  /// Returns name of data file with pad dimensions for a given motif ID.
+  
+  return TString(fgkMotifSpecialPrefix + motifID + fgkDataExt);
+  
+}
+
+//______________________________________________________________________________ 
+TString AliMpFiles::MotifSpecialFilePath(AliMp::StationType station, 
+                                         AliMp::PlaneType plane,
                                          const TString& motifID)
 {
 /// Returns path to data file with pad dimensions for a given motif ID.
 
-  return TString(PlaneDataDir(station, plane) 
-                 + fgkMotifSpecialPrefix + motifID + fgkDataExt);
-
+  return TString(PlaneDataDir(station, plane) + MotifSpecialFileName(motifID));
 }
 
 //______________________________________________________________________________ 
-TString AliMpFiles::BergToGCFilePath(AliMpStationType station)
+TString AliMpFiles::BergToGCFilePath(AliMp::StationType station)
 {
 /// Returns the path of the file which describes the correspondance between
 /// the berg number and the gassiplex channel.
 
-  return fgTop + fgkDataDir + StationDataDir(station)
+  return GetTop() + fgkDataDir + StationDataDir(station)
               + fgkBergToGCFileName + fgkDataExt;
 }
 
+//______________________________________________________________________________ 
+TString AliMpFiles::ManuToSerialPath(const TString& deName, AliMp::StationType station)
+{
+/// Returns the path of the file for the manu id to their serial number
+
+  return  GetTop() + fgkDataRunDir + StationDataDir(station)
+              + deName + fgkManuToSerial + fgkDataExt; 
+}
+
+
 //______________________________________________________________________________ 
 void 
 AliMpFiles::SetTopPath(const TString& topPath)
 { 
-  fgTop = topPath; 
+/// Set top file path
+
+  GetTop() = topPath; 
+}
+
+//______________________________________________________________________________
+TString AliMpFiles::GetTop()
+{
+/// Return top path to mapping data defined either via MINSTALL
+/// or ALICE_ROOT environment variable.                                      \n
+/// If both variables are defined, MINSTALL is used.
+
+  TString top = getenv("MINSTALL");    
+  if ( ! top.IsNull() ) return top;
+
+  TString ntop = getenv("ALICE_ROOT");
+  if ( ntop.IsNull() ) {
+    AliErrorClassStream() << "Cannot find path to mapping data." << endl;
+    return ntop;
+  }  
+  ntop += "/MUON/mapping";
+  return ntop;
 }