#include "AliMpFiles.h"
#include "AliLog.h"
#include <TClass.h>
#include <Riostream.h>
#include <stdlib.h>
using std::endl;
ClassImp(AliMpFiles)
const TString& AliMpFiles::GetDataDir()
{
static const TString kDataDir = "/data";
return kDataDir;
}
const TString& AliMpFiles::GetDataRunDir()
{
static const TString kDataRunDir = "/data_run";
return kDataRunDir;
}
const TString& AliMpFiles::GetStationDir()
{
static const TString kStationDir = "/station";
return kStationDir;
}
const TString& AliMpFiles::GetBendingDir()
{
static const TString kBendingDir = "bending_plane/";
return kBendingDir;
}
const TString& AliMpFiles::GetNonBendingDir()
{
static const TString kNonBendingDir = "non-bending_plane/";
return kNonBendingDir;
}
const TString& AliMpFiles::GetDENames()
{
static const TString kDENames = "denames";
return kDENames;
}
const TString& AliMpFiles::GetSector()
{
static const TString kSector = "zones";
return kSector;
}
const TString& AliMpFiles::GetSectorSpecial()
{
static const TString kSectorSpecial = "zones_special";
return kSectorSpecial;
}
const TString& AliMpFiles::GetSectorSpecial2()
{
static const TString kSectorSpecial2 = "zones_special_outer";
return kSectorSpecial2;
}
const TString& AliMpFiles::GetMotifPrefix()
{
static const TString kMotifPrefix = "motif";
return kMotifPrefix;
}
const TString& AliMpFiles::GetMotifSpecialPrefix()
{
static const TString kMotifSpecialPrefix ="motifSpecial";
return kMotifSpecialPrefix;
}
const TString& AliMpFiles::GetManuToSerial()
{
static const TString kManuToSerial ="_manu";
return kManuToSerial;
}
const TString& AliMpFiles::GetPadPosPrefix()
{
static const TString kPadPosPrefix = "padPos";
return kPadPosPrefix;
}
const TString& AliMpFiles::GetDataExt()
{
static const TString kDataExt = ".dat";
return kDataExt;
}
const TString& AliMpFiles::GetBergToGCFileName()
{
static const TString kBergToGCFileName = "bergToGC";
return kBergToGCFileName;
}
const TString& AliMpFiles::GetTriggerLocalBoards()
{
static const TString kTriggerLocalBoards = "RegionalCrate";
return kTriggerLocalBoards;
}
const TString& AliMpFiles::GetTriggerGlobalBoards()
{
static const TString kTriggerGlobalBoards = "GlobalCrate";
return kTriggerGlobalBoards;
}
const TString& AliMpFiles::GetBusPatchFileName()
{
static const TString kBusPatchFileName = "DetElemIdToBusPatch";
return kBusPatchFileName;
}
const TString& AliMpFiles::GetBusPatchInfoFileName()
{
static const TString kBusPatchInfoFileName = "BusPatchInfo";
return kBusPatchInfoFileName;
}
const TString& AliMpFiles::GetBusPatchSpecialFileName()
{
static const TString kBusPatchSpecialFileName = "BusPatchSpecial";
return kBusPatchSpecialFileName;
}
const TString& AliMpFiles::GetSerialToBinFileName()
{
static const TString kSerialToBinFileName = "ManuSerialToBin";
return kSerialToBinFileName;
}
TString AliMpFiles::PlaneDataDir(AliMp::StationType station,
AliMq::Station12Type station12Type,
AliMp::PlaneType plane)
{
switch (station) {
case AliMp::kStation12:
switch (plane) {
case AliMp::kBendingPlane:
return GetTop() + GetDataDir() + StationDataDir(station, station12Type) + GetBendingDir();
;;
case AliMp::kNonBendingPlane:
return GetTop() + GetDataDir() + StationDataDir(station, station12Type) + GetNonBendingDir();
;;
}
break;
case AliMp::kStation345:
case AliMp::kStationTrigger:
return GetTop() + GetDataDir() + StationDataDir(station, AliMq::kNotSt12);
break;
default:
AliFatalClass("Incomplete switch on AliMp::PlaneType");
break;
}
return TString();
}
TString AliMpFiles::StationDataDir(AliMp::StationType station,
AliMq::Station12Type station12Type)
{
TString stationDataDir(GetStationDir());
switch (station) {
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 AliMp::kStation345:
stationDataDir += "345/";
break;
;;
case AliMp::kStationTrigger:
stationDataDir += "Trigger/";
break;
;;
default:
stationDataDir += "Invalid/";
break;
}
return stationDataDir;
}
TString AliMpFiles::BusPatchFilePath()
{
return GetTop() + GetDataDir() + "/" + GetBusPatchFileName() + GetDataExt();
}
TString AliMpFiles::BusPatchInfoFilePath()
{
return GetTop() + GetDataDir() + "/" + GetBusPatchInfoFileName() + GetDataExt();
}
TString AliMpFiles::BusPatchSpecialFilePath()
{
return GetTop() + GetDataDir() + "/" + GetBusPatchSpecialFileName() + GetDataExt();
}
TString AliMpFiles::SerialToBinFilePath()
{
return GetTop() + GetDataDir() + "/" + GetSerialToBinFileName() + GetDataExt();
}
TString AliMpFiles::DENamesFilePath(AliMp::StationType station,
AliMq::Station12Type station12Type)
{
return GetTop() + GetDataDir() + StationDataDir(station, station12Type)
+ GetDENames() + GetDataExt();
}
TString AliMpFiles::LocalTriggerBoardMapping()
{
return GetTop() + GetDataDir()
+ StationDataDir(AliMp::kStationTrigger, AliMq::kNotSt12)
+ GetTriggerLocalBoards() + GetDataExt();;
}
TString AliMpFiles::GlobalTriggerBoardMapping()
{
return GetTop() + GetDataDir()
+ StationDataDir(AliMp::kStationTrigger, AliMq::kNotSt12)
+ GetTriggerGlobalBoards() + GetDataExt();;
}
TString AliMpFiles::SlatFilePath(AliMp::StationType stationType,
const char* slatType,
AliMp::PlaneType plane)
{
return TString(PlaneDataDir(stationType, AliMq::kNotSt12, plane)
+ slatType + "." +
( plane == AliMp::kNonBendingPlane ? "NonBending":"Bending" ) + ".slat");
}
TString AliMpFiles::SlatPCBFilePath(AliMp::StationType stationType,
const char* pcbType)
{
return TString(PlaneDataDir(stationType, AliMq::kNotSt12, AliMp::kNonBendingPlane)
+ pcbType + ".pcb");
}
TString AliMpFiles::SectorFilePath(AliMq::Station12Type station12Type,
AliMp::PlaneType plane)
{
return TString(PlaneDataDir(AliMp::kStation12, station12Type, plane)
+ GetSector() + GetDataExt());
}
TString AliMpFiles::SectorSpecialFilePath(AliMq::Station12Type station12Type,
AliMp::PlaneType plane)
{
return TString(PlaneDataDir(AliMp::kStation12, station12Type, plane)
+ GetSectorSpecial() + GetDataExt());
}
TString AliMpFiles::SectorSpecialFilePath2(AliMq::Station12Type station12Type,
AliMp::PlaneType plane)
{
return TString(PlaneDataDir(AliMp::kStation12, station12Type, plane)
+ GetSectorSpecial2() + GetDataExt());
}
TString AliMpFiles::MotifFileName(const TString& motifTypeID)
{
return TString(GetMotifPrefix() + motifTypeID + GetDataExt());
}
TString AliMpFiles::MotifFilePath(AliMp::StationType station,
AliMq::Station12Type station12Type,
AliMp::PlaneType plane,
const TString& motifTypeID)
{
return TString(PlaneDataDir(station, station12Type, plane)
+ MotifFileName(motifTypeID));
}
TString AliMpFiles::PadPosFileName(const TString& motifTypeID)
{
return TString(GetPadPosPrefix() + motifTypeID + GetDataExt());
}
TString AliMpFiles::PadPosFilePath(AliMp::StationType station,
AliMq::Station12Type station12Type,
AliMp::PlaneType plane,
const TString& motifTypeID)
{
return TString(PlaneDataDir(station, station12Type, plane)
+ PadPosFileName(motifTypeID));
}
TString AliMpFiles::MotifSpecialFileName(const TString& motifID)
{
return TString(GetMotifSpecialPrefix() + motifID + GetDataExt());
}
TString AliMpFiles::MotifSpecialFilePath(AliMp::StationType station,
AliMq::Station12Type station12Type,
AliMp::PlaneType plane,
const TString& motifID)
{
return TString(PlaneDataDir(station, station12Type, plane)
+ MotifSpecialFileName(motifID));
}
TString AliMpFiles::BergToGCFilePath(AliMp::StationType station,
AliMq::Station12Type station12Type)
{
return GetTop() + GetDataDir() + StationDataDir(station, station12Type)
+ GetBergToGCFileName() + GetDataExt();
}
TString AliMpFiles::ManuToSerialPath(const TString& deName,
AliMp::StationType station,
AliMq::Station12Type station12Type)
{
return GetTop() + GetDataRunDir() + StationDataDir(station, station12Type)
+ deName + GetManuToSerial() + GetDataExt();
}
void
AliMpFiles::SetTopPath(const TString& topPath)
{
GetTop() = topPath;
}
TString AliMpFiles::GetTop()
{
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;
}
AliMpFiles::~AliMpFiles()
{
}