**************************************************************************/
// $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()
/// 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;
;;
{
/// 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.
}
//______________________________________________________________________________
-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).
}
//______________________________________________________________________________
-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;
}