]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpFiles.cxx
Coding convention violations (RC17): suppression
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpFiles.cxx
index 3a9537e08bbb4e05a21bd8e2ed1afdda62b57936..f53ffbea505a07ae4a3a52173e5b8721e2041a71 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 <Riostream.h>
+
+#include <stdlib.h>
+
+/// \cond CLASSIMP
 ClassImp(AliMpFiles)
+/// \endcond
+
+//
+// static
 
 // static data members
 
-AliMpFiles* AliMpFiles::fgInstance = 0;
-const TString AliMpFiles::fgkDefaultTop = getenv("MINSTALL");    
 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";      
-
-//______________________________________________________________________________
-AliMpFiles::AliMpFiles()
-  : TObject(),
-    fTop(fgkDefaultTop)
-{
-/// Default constructor
-    
-  if (fgInstance) {
-    Fatal("AliMpFiles", 
-          "AliMpFiles: attempt to create two instances of singleton.");
-  }
-      
-  fgInstance = this;      
-}
-  
-//______________________________________________________________________________
-AliMpFiles::AliMpFiles(const AliMpFiles& right)
-  : TObject(right) 
-{
-/// Protected copy constructor 
-
-  Fatal("AliMpFiles", "Attempt to copy AliMpFiles singleton.");
-}
-
+const TString AliMpFiles::fgkBergToGCFileName = "bergToGC"; 
+const TString AliMpFiles::fgkTriggerLocalBoards = "RegionalCrate";
+const TString AliMpFiles::fgkTriggerGlobalBoards = "GlobalCrate";
+const TString AliMpFiles::fgkBusPatchFileName = "DetElemIdToBusPatch";
+const TString AliMpFiles::fgkBusPatchInfoFileName = "BusPatchInfo";
+const TString AliMpFiles::fgkBusPatchSpecialFileName = "BusPatchSpecial";
+const TString AliMpFiles::fgkSerialToBinFileName = "ManuSerialToBin";
 
 //______________________________________________________________________________
 AliMpFiles::~AliMpFiles() 
 {
 /// Destructor
-
-  fgInstance = 0;      
 }
 
-// operators
-
-//______________________________________________________________________________
-AliMpFiles& AliMpFiles::operator=(const AliMpFiles& right)
-{
-/// Assignment operator
-
-  // check assignment to self
-  if (this == &right) return *this;
-
-  Fatal("operator=", "Attempt to assign AliMpFiles singleton.");
-    
-  return *this;  
-}    
-          
 //
-// private methods
+// public methods
 //
 
 //______________________________________________________________________________
-TString AliMpFiles::PlaneDataDir(AliMpStationType station, 
-                                 AliMpPlaneType plane) const
+TString AliMpFiles::PlaneDataDir(AliMp::StationType station, 
+                                 AliMq::Station12Type station12Type,
+                                 AliMp::PlaneType plane)
 {
 /// Returns path to data files with sector description
 /// for a specified plane.
 
   switch (station) {
-  case kStation1:
-  case kStation2:
+  case AliMp::kStation12:
     switch (plane) {
-    case kBendingPlane:
-      return fTop + fgkDataDir + StationDataDir(station) + fgkBendingDir;
+    case AliMp::kBendingPlane:
+      return GetTop() + fgkDataDir + StationDataDir(station, station12Type) + fgkBendingDir;
       ;;
-    case kNonBendingPlane:   
-      return fTop + fgkDataDir + StationDataDir(station) + fgkNonBendingDir;
+    case AliMp::kNonBendingPlane:   
+      return GetTop() + fgkDataDir + StationDataDir(station, station12Type) + fgkNonBendingDir;
       ;;
     }   
     break;
-  case kStation345:
-    return fTop + fgkDataDir + StationDataDir(station) + "/";
+  case AliMp::kStation345:
+  case AliMp::kStationTrigger:  
+    return GetTop() + fgkDataDir + StationDataDir(station, AliMq::kNotSt12);
+    break;
+  default:  
+    AliFatalClass("Incomplete switch on AliMp::PlaneType");
     break;
   }
-
-  Fatal("PlaneDataDir", "Incomplete switch on AliMpPlaneType");
   return TString();
 }
 
 //______________________________________________________________________________
-TString AliMpFiles::StationDataDir(AliMpStationType station) const
+TString AliMpFiles::StationDataDir(AliMp::StationType station,
+                                   AliMq::Station12Type station12Type)
 {
 /// Returns the station directory name for the specified station number.
 
   TString stationDataDir(fgkStationDir);
   switch (station) {
-  case kStation1: 
-    stationDataDir += 1;
-    break;
-    ;;
-  case kStation2: 
-    stationDataDir += 2;
+  case AliMp::kStation12: 
+    switch (station12Type) {
+    case AliMq::kStation1:
+      stationDataDir += "1/";
+      break;
+      ;;
+    case AliMq::kStation2:   
+      stationDataDir += "2/";
+      break;
+      ;;
+    case AliMq::kNotSt12:   
+      AliFatalClass("Incorrect switch on AliMq::Station12Type");
+      break;
+    }   
     break;
     ;;
-  case kStation345: 
+  case AliMp::kStation345: 
     stationDataDir += "345/";
     break;
     ;;      
+  case AliMp::kStationTrigger:
+    stationDataDir += "Trigger/";
+    break;
+    ;;
+  default:
+    stationDataDir += "Invalid/";
+    break;
   }   
   return stationDataDir;
 }
 
-//
-// public methods
-//
+//______________________________________________________________________________
+TString AliMpFiles::BusPatchFilePath()
+{
+/// Return path to data file with bus patch mapping.
+
+  return GetTop() + fgkDataDir + "/" + fgkBusPatchFileName + fgkDataExt;
+}  
 
 //______________________________________________________________________________
-AliMpFiles* AliMpFiles::Instance() 
-{ 
-/// Return the singleton instance;
-/// Creates it if it does not yet exist,
+TString AliMpFiles::BusPatchInfoFilePath()
+{
+/// Return path to data file with bus patch mapping.
 
-  if (!fgInstance)  fgInstance = new AliMpFiles(); 
-  
-  return fgInstance; 
+  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,
+                                    AliMq::Station12Type station12Type)
+{
+/// Return path to data file with DE names for given station.
+  return GetTop() + fgkDataDir + StationDataDir(station, station12Type) 
+           + fgkDENames + fgkDataExt;
 }
 
+//______________________________________________________________________________
+TString AliMpFiles::LocalTriggerBoardMapping()
+{
+/// Return path to data file with local trigger board mapping.
+
+  return GetTop() + fgkDataDir 
+          + StationDataDir(AliMp::kStationTrigger, AliMq::kNotSt12) 
+          + fgkTriggerLocalBoards + fgkDataExt;;
+}
 
-//_____________________________________________________________________________
-TString AliMpFiles::SlatFilePath(const char* slatType,
-                                AliMpPlaneType plane) const
+//______________________________________________________________________________
+TString AliMpFiles::GlobalTriggerBoardMapping()
 {
-/// \todo add ..
+/// Return path to data file with local trigger board mapping.
 
-  return TString(PlaneDataDir(kStation345,plane) + slatType + "." +
-                ( plane == kNonBendingPlane ? "NonBending":"Bending" ) + ".slat");
+  return GetTop() + fgkDataDir 
+      + StationDataDir(AliMp::kStationTrigger, AliMq::kNotSt12) 
+      + fgkTriggerGlobalBoards + fgkDataExt;;
 }
 
 //_____________________________________________________________________________
-TString AliMpFiles::SlatPCBFilePath(const char* pcbType) const
+TString AliMpFiles::SlatFilePath(AliMp::StationType stationType,
+                                 const char* slatType,
+                                 AliMp::PlaneType plane)
 {
-/// Get the full path for a given PCB (only relevant to stations 3,
-/// 4 and 5). The bending parameter below is of no use in this case, but
-/// we use it to re-use the PlaneDataDir() method untouched.
+/// \todo add ..
 
-  return TString(PlaneDataDir(kStation345,kNonBendingPlane) + pcbType +
-                ".pcb");
+  return TString(PlaneDataDir(stationType, AliMq::kNotSt12, plane) 
+                 + slatType + "." +
+                ( plane == AliMp::kNonBendingPlane ? "NonBending":"Bending" ) + ".slat");
 }
 
 //_____________________________________________________________________________
-TString 
-AliMpFiles::DetElemIdToSlatTypeFilePath() const
+TString AliMpFiles::SlatPCBFilePath(AliMp::StationType stationType,
+                                    const char* pcbType)
 {
-/// Get the full path of the file containing the mapping detElemId <->
-/// SlatType.
-/// The bending parameter below is of no use in this case, but
+/// 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(kStation345,kNonBendingPlane) + 
-                "DetElemIdToSlatType.dat");
+  return TString(PlaneDataDir(stationType, AliMq::kNotSt12, AliMp::kNonBendingPlane) 
+                 + pcbType + ".pcb");
 }
+
 //______________________________________________________________________________
-TString AliMpFiles::SectorFilePath(AliMpStationType station
-                                   AliMpPlaneType plane) const
+TString AliMpFiles::SectorFilePath(AliMq::Station12Type station12Type
+                                   AliMp::PlaneType plane)
 {
 /// Return path to data file with sector description.
  
-  return TString(PlaneDataDir(station, plane) + fgkSector + fgkDataExt);
+  return TString(PlaneDataDir(AliMp::kStation12, station12Type, plane) 
+                 + fgkSector + fgkDataExt);
 }
     
 //______________________________________________________________________________
-TString AliMpFiles::SectorSpecialFilePath(AliMpStationType station, 
-                                          AliMpPlaneType plane) const
+TString AliMpFiles::SectorSpecialFilePath(AliMq::Station12Type station12Type,
+                                          AliMp::PlaneType plane)
 {
 /// Return path to data file with sector special description (irregular motifs).
 
-  return TString(PlaneDataDir(station, plane) + fgkSectorSpecial + fgkDataExt);
+  return TString(PlaneDataDir(AliMp::kStation12, station12Type, plane) 
+                 + fgkSectorSpecial + fgkDataExt);
 }
     
 //______________________________________________________________________________
-TString AliMpFiles::SectorSpecialFilePath2(AliMpStationType station
-                                           AliMpPlaneType plane) const
+TString AliMpFiles::SectorSpecialFilePath2(AliMq::Station12Type station12Type
+                                           AliMp::PlaneType plane)
 {
 /// Returns path to data file with sector special description (irregular motifs).
 
-  return TString(PlaneDataDir(station, plane) + fgkSectorSpecial2 + fgkDataExt);
+  return TString(PlaneDataDir(AliMp::kStation12, station12Type, plane) 
+                 + fgkSectorSpecial2 + fgkDataExt);
 }
-    
+
+//______________________________________________________________________________
+TString AliMpFiles::MotifFileName(const TString& motifTypeID)
+{
+  /// Returns name of data file for a given motif type.
+  
+  return TString(fgkMotifPrefix +  motifTypeID + fgkDataExt);
+}
+
 //______________________________________________________________________________
-TString AliMpFiles::MotifFilePath(AliMpStationType station, 
-                                  AliMpPlaneType plane, 
-                                  const TString& motifTypeID) const
+TString AliMpFiles::MotifFilePath(AliMp::StationType station, 
+                                  AliMq::Station12Type station12Type,
+                                  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, station12Type, plane) 
+                 + MotifFileName(motifTypeID));
 }
-    
+
 //______________________________________________________________________________
-TString AliMpFiles::PadPosFilePath(AliMpStationType station, 
-                                   AliMpPlaneType plane, 
-                                   const TString& motifTypeID) const
+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, 
+                                   AliMq::Station12Type station12Type,
+                                   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, station12Type, plane) 
+                 + PadPosFileName(motifTypeID));
 }
 
 //______________________________________________________________________________ 
-TString AliMpFiles::MotifSpecialFilePath(AliMpStationType station, 
-                                         AliMpPlaneType plane,
-                                         const TString& motifID) const
+TString AliMpFiles::MotifSpecialFileName(const TString& motifID)
 {
-/// Returns path to data file with pad dimensions for a given motif ID.
+  /// Returns name of data file with pad dimensions for a given motif ID.
+  
+  return TString(fgkMotifSpecialPrefix + motifID + fgkDataExt);
+  
+}
 
-  return TString(PlaneDataDir(station, plane) 
-                 + fgkMotifSpecialPrefix + motifID + fgkDataExt);
+//______________________________________________________________________________ 
+TString AliMpFiles::MotifSpecialFilePath(AliMp::StationType station, 
+                                         AliMq::Station12Type station12Type,
+                                         AliMp::PlaneType plane,
+                                         const TString& motifID)
+{
+/// Returns path to data file with pad dimensions for a given motif ID.
 
+  return TString(PlaneDataDir(station, station12Type, plane) 
+                 + MotifSpecialFileName(motifID));
 }
 
 //______________________________________________________________________________ 
-TString AliMpFiles::BergToGCFilePath(AliMpStationType station) const
+TString AliMpFiles::BergToGCFilePath(AliMp::StationType station,
+                                     AliMq::Station12Type station12Type)
 {
 /// Returns the path of the file which describes the correspondance between
 /// the berg number and the gassiplex channel.
 
-  return fTop + fgkDataDir + StationDataDir(station)
+  return GetTop() + fgkDataDir + StationDataDir(station, station12Type)
               + fgkBergToGCFileName + fgkDataExt;
 }
+
+//______________________________________________________________________________ 
+TString AliMpFiles::ManuToSerialPath(const TString& deName, 
+                                     AliMp::StationType station,
+                                     AliMq::Station12Type station12Type)
+{
+/// Returns the path of the file for the manu id to their serial number
+
+  return  GetTop() + fgkDataRunDir + StationDataDir(station, station12Type)
+              + deName + fgkManuToSerial + fgkDataExt; 
+}
+
+
+//______________________________________________________________________________ 
+void 
+AliMpFiles::SetTopPath(const TString& 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;
+}
+