]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpFiles.cxx
- Use dedicated splines for MC periods for 2012 pp (LHC14e2*)
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpFiles.cxx
index 92384cc59f3a3790c04133ecd17130ca0cd28002..691ec043af41564c16c9a03eae5fd5f392b144ff 100755 (executable)
@@ -16,7 +16,8 @@
 // $Id$
 // $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.
@@ -27,6 +28,7 @@
 //
 // Included in AliRoot: 2003/05/02
 // Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+//-----------------------------------------------------------------------------
 
 #include "AliMpFiles.h"
 
 
 #include <stdlib.h>
 
+using std::endl;
 /// \cond CLASSIMP
 ClassImp(AliMpFiles)
 /// \endcond
 
 //
-// static
-
-// static data members
-
-const TString AliMpFiles::fgkDataDir = "/data";
-const TString AliMpFiles::fgkStationDir = "/station";
-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::fgkPadPosPrefix  = "padPos"; 
-const TString AliMpFiles::fgkDataExt = ".dat";      
-const TString AliMpFiles::fgkBergToGCFileName = "/bergToGC"; 
-const TString AliMpFiles::fgkTriggerLocalBoards = "crate";
-const TString AliMpFiles::fgkBusPatchFileName = "DetElemIdToBusPatch";
-
-//______________________________________________________________________________
-AliMpFiles::AliMpFiles()
-  : TObject()
-{
-/// Default constructor
-}
+// static private methods
+//
+
+//______________________________________________________________________________
+const TString& AliMpFiles::GetDataDir() 
+{
+  /// data directory
+  static const TString kDataDir = "/data";
+  return kDataDir;
+}  
   
 //______________________________________________________________________________
-AliMpFiles::AliMpFiles(const AliMpFiles& right)
-  : TObject(right) 
+const TString& AliMpFiles::GetDataRunDir() 
 {
-/// Protected copy constructor 
-
-  AliFatalClass("Attempt to copy AliMpFiles singleton.");
+  /// directory for run dependent data
+  static const TString kDataRunDir = "/data_run";
+  return kDataRunDir;
 }
 
+//______________________________________________________________________________
+const TString& AliMpFiles::GetStationDir() 
+{
+  /// station directory
+  static const TString kStationDir = "/station";
+  return kStationDir;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetBendingDir() 
+{
+  /// bending plane directory
+  static const TString kBendingDir = "bending_plane/";
+  return kBendingDir;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetNonBendingDir() 
+{
+  /// non-bending plane directory
+  static const TString kNonBendingDir = "non-bending_plane/";
+  return kNonBendingDir;
+}  
 
 //______________________________________________________________________________
-AliMpFiles::~AliMpFiles() 
+const TString& AliMpFiles::GetDENames() 
 {
-/// Destructor
-}
+  /// DE names data file name
+  static const TString kDENames = "denames"; 
+  return kDENames;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetSector() 
+{
+  /// sector data file name
+  static const TString kSector  = "zones"; 
+  return kSector;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetSectorSpecial() 
+{
+  /// sector special data file name
+  static const TString kSectorSpecial = "zones_special";
+  return kSectorSpecial;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetSectorSpecial2() 
+{
+  /// sector special data file name
+  static const TString kSectorSpecial2 = "zones_special_outer";
+  return kSectorSpecial2;
+}  
 
-// operators
+//______________________________________________________________________________
+const TString& AliMpFiles::GetMotifPrefix() 
+{
+  /// motif data file name
+  static const TString kMotifPrefix   = "motif"; 
+  return kMotifPrefix;
+}   
+    
 
 //______________________________________________________________________________
-AliMpFiles& AliMpFiles::operator=(const AliMpFiles& right)
+const TString& AliMpFiles::GetMotifSpecialPrefix() 
 {
-/// Assignment operator
+  /// special motif data file name 
+  static const TString kMotifSpecialPrefix ="motifSpecial";
+  return kMotifSpecialPrefix;
+}  
 
-  // check assignment to self
-  if (this == &right) return *this;
+//______________________________________________________________________________
+const TString& AliMpFiles::GetManuToSerial() 
+{
+  /// manu to serial file name suffix
+  static const TString kManuToSerial ="_manu";
+  return kManuToSerial;
+}  
 
-  AliFatalClass("Attempt to assign AliMpFiles singleton.");
-    
-  return *this;  
-}    
-          
-//
-// private methods
-//
+//______________________________________________________________________________
+const TString& AliMpFiles::GetPadPosPrefix() 
+{  
+  /// pad position data file name
+  static const TString kPadPosPrefix  = "padPos"; 
+  return kPadPosPrefix;
+}  
 
 //______________________________________________________________________________
-TString AliMpFiles::GetTop()
+const TString& AliMpFiles::GetDataExt() 
 {
-/// Return top path to mapping data defined either via MINSTALL
-/// or ALICE_ROOT environment variable.                                      \n
-/// If both variables are defined, MINSTALL is used.
+  /// file extension
+  static const TString kDataExt = ".dat"; 
+  return kDataExt;
+}
+       
+//______________________________________________________________________________
+const TString& AliMpFiles::GetBergToGCFileName() 
+{
+  /// BergToGC mapping file name
+  static const TString kBergToGCFileName = "bergToGC"; 
+  return kBergToGCFileName;
+}  
 
-  TString top = getenv("MINSTALL");    
-  if ( ! top.IsNull() ) return top;
+//______________________________________________________________________________
+const TString& AliMpFiles::GetTriggerLocalBoards() 
+{
+  ///  local board name to id mapping
+  static const TString kTriggerLocalBoards = "RegionalCrate";
+  return kTriggerLocalBoards;
+}  
 
-  TString ntop = getenv("ALICE_ROOT");
-  if ( ntop.IsNull() ) {
-    AliErrorClassStream() << "Cannot find path to mapping data." << endl;
-    return ntop;
-  }  
-  ntop += "/MUON/mapping";
-  return ntop;
-}
+//______________________________________________________________________________
+const TString& AliMpFiles::GetTriggerGlobalBoards() 
+{
+  ///  global board name to id mapping
+  static const TString kTriggerGlobalBoards = "GlobalCrate";
+  return kTriggerGlobalBoards;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetBusPatchFileName() 
+{
+  /// DetElemIdToBusPatch file name
+  static const TString kBusPatchFileName = "DetElemIdToBusPatch";
+  return kBusPatchFileName;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetBusPatchInfoFileName() 
+{
+  /// BusPatch length file name
+  static const TString kBusPatchInfoFileName = "BusPatchInfo";
+  return kBusPatchInfoFileName;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetBusPatchSpecialFileName() 
+{
+  /// BusPatch special file name
+  static const TString kBusPatchSpecialFileName = "BusPatchSpecial";
+  return kBusPatchSpecialFileName;
+}  
+  
+//______________________________________________________________________________
+const TString& AliMpFiles::GetSerialToBinFileName() 
+{
+  /// serial to bin  number file name
+  static const TString kSerialToBinFileName = "ManuSerialToBin";
+  return kSerialToBinFileName;
+}  
+  
+//
+// static public methods
+//
 
 //______________________________________________________________________________
-TString AliMpFiles::PlaneDataDir(AliMpStationType station, 
-                                 AliMpPlaneType plane)
+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 GetTop() + fgkDataDir + StationDataDir(station) + fgkBendingDir;
+    case AliMp::kBendingPlane:
+      return GetTop() + GetDataDir() + StationDataDir(station, station12Type) + GetBendingDir();
       ;;
-    case kNonBendingPlane:   
-      return GetTop() + fgkDataDir + StationDataDir(station) + fgkNonBendingDir;
+    case AliMp::kNonBendingPlane:   
+      return GetTop() + GetDataDir() + StationDataDir(station, station12Type) + GetNonBendingDir();
       ;;
     }   
     break;
-  case kStation345:
-  case kStationTrigger:  
-    return GetTop() + fgkDataDir + StationDataDir(station) + "/";
+  case AliMp::kStation345:
+  case AliMp::kStationTrigger:  
+    return GetTop() + GetDataDir() + StationDataDir(station, AliMq::kNotSt12);
     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,
+                                   AliMq::Station12Type station12Type)
 {
 /// Returns the station directory name for the specified station number.
 
-  TString stationDataDir(fgkStationDir);
+  TString stationDataDir(GetStationDir());
   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 kStationTrigger:
+  case AliMp::kStationTrigger:
     stationDataDir += "Trigger/";
     break;
     ;;
@@ -183,24 +290,47 @@ TString AliMpFiles::StationDataDir(AliMpStationType station)
   return stationDataDir;
 }
 
-//
-// public methods
-//
-
 //______________________________________________________________________________
 TString AliMpFiles::BusPatchFilePath()
 {
 /// Return path to data file with bus patch mapping.
 
-  return GetTop() + fgkDataDir + "/" + fgkBusPatchFileName + fgkDataExt;
+  return GetTop() + GetDataDir() + "/" + GetBusPatchFileName() + GetDataExt();
 }  
 
 //______________________________________________________________________________
-TString AliMpFiles::DENamesFilePath(AliMpStationType station)
+TString AliMpFiles::BusPatchInfoFilePath()
+{
+/// Return path to data file with bus patch mapping.
+
+  return GetTop() + GetDataDir() + "/" + GetBusPatchInfoFileName() + GetDataExt();
+}  
+
+//______________________________________________________________________________
+TString AliMpFiles::BusPatchSpecialFilePath()
+{
+/// Return path to data file with special bus patch mapping.
+
+  return GetTop() + GetDataDir() + "/" + GetBusPatchSpecialFileName() + GetDataExt();
+}  
+
+//______________________________________________________________________________
+TString AliMpFiles::SerialToBinFilePath()
+{
+/// Return path to data file containing manu serial numbers with their bin.
+
+  return GetTop() + GetDataDir() + "/" + GetSerialToBinFileName() + GetDataExt();
+}  
+
+
+//______________________________________________________________________________
+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) + fgkDENames + fgkDataExt;
+  return GetTop() + GetDataDir() + StationDataDir(station, station12Type) 
+           + GetDENames() + GetDataExt();
 }
 
 //______________________________________________________________________________
@@ -208,108 +338,194 @@ TString AliMpFiles::LocalTriggerBoardMapping()
 {
 /// Return path to data file with local trigger board mapping.
 
-  return GetTop() + fgkDataDir + StationDataDir(kStationTrigger) 
-          + fgkTriggerLocalBoards + fgkDataExt;;
+  return GetTop() + GetDataDir() 
+          + StationDataDir(AliMp::kStationTrigger, AliMq::kNotSt12) 
+          + GetTriggerLocalBoards() + GetDataExt();;
+}
+
+//______________________________________________________________________________
+TString AliMpFiles::GlobalTriggerBoardMapping()
+{
+/// Return path to data file with local trigger board mapping.
+
+  return GetTop() + GetDataDir() 
+      + StationDataDir(AliMp::kStationTrigger, AliMq::kNotSt12) 
+      + GetTriggerGlobalBoards() + GetDataExt();;
 }
 
 //_____________________________________________________________________________
-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");
+  return TString(PlaneDataDir(stationType, AliMq::kNotSt12, plane) 
+                 + slatType + "." +
+                ( 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 +
-                 ".pcb");
+  return TString(PlaneDataDir(stationType, AliMq::kNotSt12, AliMp::kNonBendingPlane) 
+                 + pcbType + ".pcb");
 }
 
 //______________________________________________________________________________
-TString AliMpFiles::SectorFilePath(AliMpStationType station
-                                   AliMpPlaneType plane)
+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) 
+                 + GetSector() + GetDataExt());
 }
     
 //______________________________________________________________________________
-TString AliMpFiles::SectorSpecialFilePath(AliMpStationType station, 
-                                          AliMpPlaneType plane)
+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) 
+                 + GetSectorSpecial() + GetDataExt());
 }
     
 //______________________________________________________________________________
-TString AliMpFiles::SectorSpecialFilePath2(AliMpStationType station
-                                           AliMpPlaneType plane)
+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) 
+                 + GetSectorSpecial2() + GetDataExt());
 }
-    
+
+//______________________________________________________________________________
+TString AliMpFiles::MotifFileName(const TString& motifTypeID)
+{
+  /// Returns name of data file for a given motif type.
+  
+  return TString(GetMotifPrefix() +  motifTypeID + GetDataExt());
+}
+
 //______________________________________________________________________________
-TString AliMpFiles::MotifFilePath(AliMpStationType station, 
-                                  AliMpPlaneType plane, 
+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, 
+TString AliMpFiles::PadPosFileName(const TString& motifTypeID)
+{
+  /// Returns name of data file with pad positions for a given motif type.
+  
+  return TString(GetPadPosPrefix() +  motifTypeID + GetDataExt());
+}
+
+//______________________________________________________________________________
+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,
+TString AliMpFiles::MotifSpecialFileName(const TString& motifID)
+{
+  /// Returns name of data file with pad dimensions for a given motif ID.
+  
+  return TString(GetMotifSpecialPrefix() + motifID + GetDataExt());
+  
+}
+
+//______________________________________________________________________________ 
+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, plane) 
-                 + fgkMotifSpecialPrefix + motifID + fgkDataExt);
-
+  return TString(PlaneDataDir(station, station12Type, plane) 
+                 + MotifSpecialFileName(motifID));
 }
 
 //______________________________________________________________________________ 
-TString AliMpFiles::BergToGCFilePath(AliMpStationType station)
+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 GetTop() + fgkDataDir + StationDataDir(station)
-              + fgkBergToGCFileName + fgkDataExt;
+  return GetTop() + GetDataDir() + StationDataDir(station, station12Type)
+              + GetBergToGCFileName() + GetDataExt();
+}
+
+//______________________________________________________________________________ 
+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() + GetDataRunDir() + StationDataDir(station, station12Type)
+              + deName + GetManuToSerial() + GetDataExt(); 
 }
 
+
 //______________________________________________________________________________ 
 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;
+}
+
+//
+// ctors, dtor
+//
+
+//______________________________________________________________________________
+AliMpFiles::~AliMpFiles() 
+{
+/// Destructor
+}
+