/*
$Log$
+Revision 1.25 2007/01/15 19:13:52 acolla
+Moved some AliInfo to AliDebug in SendMail function
+
Revision 1.21 2006/12/07 08:51:26 jgrosseo
update (alberto):
table, db names in ldap configuration
Bool_t AliShuttle::fgkProcessDCS(kTRUE);
-const char* AliShuttle::fgkShuttleTempDir = gSystem->ExpandPathName("$ALICE_ROOT/SHUTTLE/temp");
-const char* AliShuttle::fgkShuttleLogDir = gSystem->ExpandPathName("$ALICE_ROOT/SHUTTLE/log");
+TString AliShuttle::fgkShuttleTempDir = gSystem->ExpandPathName("$ALICE_ROOT/SHUTTLE/temp");
+TString AliShuttle::fgkShuttleLogDir = gSystem->ExpandPathName("$ALICE_ROOT/SHUTTLE/log");
//______________________________________________________________________________________________
AliShuttle::AliShuttle(const AliShuttleConfig* config,
TString actionStr = Form("UpdateShuttleStatus - %s: Changing state from %s to %s",
fCurrentDetector.Data(),
- status->GetStatusName(),
+ status->GetStatusName(),
status->GetStatusName(newStatus));
Log("SHUTTLE", actionStr);
SetLastAction(actionStr);
// Retrieval of Aliases
TObjString* anAlias = 0;
+ Int_t iAlias = 1;
+ Int_t nTotAliases= ((TMap*)fConfig->GetDCSAliases(fCurrentDetector))->GetEntries();
TIter iterAliases(fConfig->GetDCSAliases(fCurrentDetector));
while ((anAlias = (TObjString*) iterAliases.Next()))
{
TObjArray *valueSet = new TObjArray();
valueSet->SetOwner(1);
- AliInfo("Querying DCS archive DB (Aliases)...");
+ if (((iAlias-1) % 500) == 0 || iAlias == nTotAliases)
+ AliInfo(Form("Querying DCS archive: alias %s (%d of %d)",
+ anAlias->GetName(), iAlias++, nTotAliases));
aDCSError = (GetValueSet(host, port, anAlias->String(), valueSet, kAlias) == 0);
if(!aDCSError)
// Retrieval of Data Points
TObjString* aDP = 0;
+ Int_t iDP = 0;
+ Int_t nTotDPs= ((TMap*)fConfig->GetDCSDataPoints(fCurrentDetector))->GetEntries();
TIter iterDP(fConfig->GetDCSDataPoints(fCurrentDetector));
while ((aDP = (TObjString*) iterDP.Next()))
{
TObjArray *valueSet = new TObjArray();
valueSet->SetOwner(1);
- AliInfo("Querying DCS archive DB (Data Points)...");
+ if (((iDP-1) % 500) == 0 || iDP == nTotDPs)
+ AliInfo(Form("Querying DCS archive: DP %s (%d of %d)",
+ aDP->GetName(), iDP++, nTotDPs));
aDCSError = (GetValueSet(host, port, aDP->String(), valueSet, kDP) == 0);
if(!aDCSError)
return 0;
} else {
AliInfo(Form("File %s copied from DAQ FXS into %s/%s",
- filePath.Data(), fgkShuttleTempDir, localFileName.Data()));
+ filePath.Data(), GetShuttleTempDir(), localFileName.Data()));
}
fFXSCalled[kDAQ]=kTRUE;
fFXSlist[kDAQ].Add(fileParams);
static TString fullLocalFileName;
- fullLocalFileName = TString::Format("%s/%s", fgkShuttleTempDir, localFileName.Data());
-
+ fullLocalFileName = TString::Format("%s/%s", GetShuttleTempDir(), localFileName.Data());
+
AliInfo(Form("fullLocalFileName = %s", fullLocalFileName.Data()));
return fullLocalFileName.Data();
// check temp directory: trying to cd to temp; if it does not exist, create it
AliDebug(2, Form("Copy file %s from DAQ FXS into %s/%s",
- daqFileName, fgkShuttleTempDir, localFileName));
+ daqFileName, GetShuttleTempDir(), localFileName));
- void* dir = gSystem->OpenDirectory(fgkShuttleTempDir);
+ void* dir = gSystem->OpenDirectory(GetShuttleTempDir());
if (dir == NULL) {
- if (gSystem->mkdir(fgkShuttleTempDir, kTRUE)) {
- AliError(Form("Can't open directory <%s>", fgkShuttleTempDir));
+ if (gSystem->mkdir(GetShuttleTempDir(), kTRUE)) {
+ AliError(Form("Can't open directory <%s>", GetShuttleTempDir()));
return kFALSE;
}
fConfig->GetFXSHost(kDAQ),
baseDAQFXSFolder.Data(),
daqFileName,
- fgkShuttleTempDir,
+ GetShuttleTempDir(),
localFileName);
AliDebug(2, Form("%s",command.Data()));
return 0;
} else {
AliInfo(Form("File %s copied from HLT FXS into %s/%s",
- filePath.Data(), fgkShuttleTempDir, localFileName.Data()));
+ filePath.Data(), GetShuttleTempDir(), localFileName.Data()));
}
// compare md5sum of local file with the one stored in the HLT DB
Int_t md5Comp = gSystem->Exec(Form("md5sum %s/%s |grep %s 2>&1 > /dev/null",
- fgkShuttleTempDir, localFileName.Data(), fileMd5Sum.Data()));
+ GetShuttleTempDir(), localFileName.Data(), fileMd5Sum.Data()));
if (md5Comp != 0)
{
fFXSlist[kHLT].Add(fileParams);
static TString fullLocalFileName;
- fullLocalFileName = TString::Format("%s/%s", fgkShuttleTempDir, localFileName.Data());
-
+ fullLocalFileName = TString::Format("%s/%s", GetShuttleTempDir(), localFileName.Data());
+
AliInfo(Form("fullLocalFileName = %s", fullLocalFileName.Data()));
return fullLocalFileName.Data();
// check temp directory: trying to cd to temp; if it does not exist, create it
AliDebug(2, Form("Copy file %s from HLT FXS into %s/%s",
- hltFileName, fgkShuttleTempDir, localFileName));
+ hltFileName, GetShuttleTempDir(), localFileName));
- void* dir = gSystem->OpenDirectory(fgkShuttleTempDir);
+ void* dir = gSystem->OpenDirectory(GetShuttleTempDir());
if (dir == NULL) {
- if (gSystem->mkdir(fgkShuttleTempDir, kTRUE)) {
- AliError(Form("Can't open directory <%s>", fgkShuttleTempDir));
+ if (gSystem->mkdir(GetShuttleTempDir(), kTRUE)) {
+ AliError(Form("Can't open directory <%s>", GetShuttleTempDir()));
return kFALSE;
}
fConfig->GetFXSHost(kHLT),
baseHLTFXSFolder.Data(),
hltFileName,
- fgkShuttleTempDir,
+ GetShuttleTempDir(),
localFileName);
AliDebug(2, Form("%s",command.Data()));
{
// Fill log string with a message
- void* dir = gSystem->OpenDirectory(fgkShuttleLogDir);
+ void* dir = gSystem->OpenDirectory(GetShuttleLogDir());
if (dir == NULL) {
- if (gSystem->mkdir(fgkShuttleLogDir, kTRUE)) {
- AliError(Form("Can't open directory <%s>", fgkShuttleTempDir));
+ if (gSystem->mkdir(GetShuttleLogDir(), kTRUE)) {
+ AliError(Form("Can't open directory <%s>", GetShuttleLogDir()));
return;
}
AliInfo(toLog.Data());
TString fileName;
- fileName.Form("%s/%s.log", fgkShuttleLogDir, detector);
+ fileName.Form("%s/%s.log", GetShuttleLogDir(), detector);
gSystem->ExpandPathName(fileName);
ofstream logFile;
return kFALSE;
}
+ Log("SHUTTLE", "Collect - Requested run(s) successfully processed");
return kTRUE;
}
ULong_t AliShuttle::GetTimeOfLastAction() const
{
ULong_t tmp;
-
+
fMonitoringMutex->Lock();
tmp = fLastActionTime;
-
+
fMonitoringMutex->UnLock();
-
+
return tmp;
}
// returns a string description of the last action
TString tmp;
-
+
fMonitoringMutex->Lock();
tmp = fLastAction;
fMonitoringMutex->UnLock();
- return tmp;
+ return tmp;
}
//______________________________________________________________________________________________
void AliShuttle::SetLastAction(const char* action)
{
// updates the monitoring variables
-
+
fMonitoringMutex->Lock();
-
+
fLastAction = action;
fLastActionTime = time(0);
{
// sends a mail to the subdetector expert in case of preprocessor error
- void* dir = gSystem->OpenDirectory(fgkShuttleLogDir);
+ void* dir = gSystem->OpenDirectory(GetShuttleLogDir());
if (dir == NULL)
{
- if (gSystem->mkdir(fgkShuttleLogDir, kTRUE))
+ if (gSystem->mkdir(GetShuttleLogDir(), kTRUE))
{
- AliError(Form("Can't open directory <%s>", fgkShuttleTempDir));
+ AliError(Form("Can't open directory <%s>", GetShuttleLogDir()));
return kFALSE;
}
}
TString bodyFileName;
- bodyFileName.Form("%s/mail.body", fgkShuttleLogDir);
+ bodyFileName.Form("%s/mail.body", GetShuttleLogDir());
gSystem->ExpandPathName(bodyFileName);
ofstream mailBody;
to.Remove(to.Length()-1);
AliDebug(2, Form("to: %s",to.Data()));
+ // TODO this will be removed...
+ if (to.Contains("not_yet_set")) {
+ AliInfo("List of detector responsibles not yet set!");
+ return kFALSE;
+ }
+
TString cc="alberto.colla@cern.ch";
TString subject = Form("%s Shuttle preprocessor error in run %d !",
TString body = Form("Dear %s expert(s), \n\n", fCurrentDetector.Data());
body += Form("SHUTTLE just detected that your preprocessor "
- "exited with ERROR state in run %d !!\n\n", GetCurrentRun());
+ "exited with ERROR state in run %d!!\n\n", GetCurrentRun());
body += Form("Please check %s status on the web page asap!\n\n", fCurrentDetector.Data());
body += Form("The last 10 lines of %s log file are following:\n\n");
mailBody.close();
mailBody.open(bodyFileName, ofstream::out | ofstream::app);
- TString logFileName = Form("%s/%s.log", fgkShuttleLogDir, fCurrentDetector.Data());
+ TString logFileName = Form("%s/%s.log", GetShuttleLogDir(), fCurrentDetector.Data());
TString tailCommand = Form("tail -n 10 %s >> %s", logFileName.Data(), bodyFileName.Data());
if (gSystem->Exec(tailCommand.Data()))
{
}
TString endBody = Form("------------------------------------------------------\n\n");
- endBody += Form("In case of problems please contact the SHUTTLE core team!\n\n");
- endBody += "Please do not answer this message directly, it is automatically generated!\n\n";
+ endBody += Form("In case of problems please contact the SHUTTLE core team.\n\n");
+ endBody += "Please do not answer this message directly, it is automatically generated.\n\n";
endBody += "Sincerely yours,\n\n \t\t\tthe SHUTTLE\n";
AliDebug(2, Form("Body end: %s", endBody.Data()));
return result == 0;
}
+
+//______________________________________________________________________________________________
+void AliShuttle::SetShuttleTempDir(const char* tmpDir)
+{
+// sets Shuttle temp directory
+
+ fgkShuttleTempDir = gSystem->ExpandPathName(tmpDir);
+}
+
+//______________________________________________________________________________________________
+void AliShuttle::SetShuttleLogDir(const char* logDir)
+{
+// sets Shuttle log directory
+
+ fgkShuttleLogDir = gSystem->ExpandPathName(logDir);
+}
void SetProcessDCS(Bool_t process) {fgkProcessDCS = process;}
void SetLogbookEntry(AliShuttleLogbookEntry* entry) {fLogbookEntry=entry;}
- static const char* GetShuttleTempDir() {return fgkShuttleTempDir;}
+ static void SetShuttleTempDir (const char* tmpDir);
+ static const char* GetShuttleTempDir() {return fgkShuttleTempDir.Data();}
+ static void SetShuttleLogDir (const char* logDir);
+ static const char* GetShuttleLogDir() {return fgkShuttleLogDir.Data();}
Bool_t Connect(Int_t system);
static TString fgkLocalCDB; //! URI of the local backup CDB storage
static TString fgkMainRefStorage; // URI of the main (Grid) REFERENCE storage
static TString fgkLocalRefStorage; // URI of the local REFERENCE storage
- static const char* fgkShuttleTempDir; // base path of SHUTTLE temp folder
- static const char* fgkShuttleLogDir; // path of SHUTTLE log folder
+ static TString fgkShuttleTempDir; // base path of SHUTTLE temp folder
+ static TString fgkShuttleLogDir; // path of SHUTTLE log folder
UInt_t fTimeout; // DCS server connection timeout parameter
Int_t fRetries; // Number of DCS server connection retries
/*
$Log$
+Revision 1.17 2007/01/18 11:17:47 jgrosseo
+changing spaces to tabs ;-)
+
Revision 1.16 2007/01/18 11:10:35 jgrosseo
adding the possibility of defining DCS alias and data points with patterns
first pattern introduced: [N..M] to add all names between the two digits, this works also recursively.
fDCSPort(0),
fDCSAliases(0),
fDCSDataPoints(0),
+fDCSAliasesComp(0),
+fDCSDataPointsComp(0),
fResponsibles(0),
fIsValid(kFALSE),
fSkipDCSQuery(kFALSE),
fDCSAliases->SetOwner(1);
fDCSDataPoints = new TObjArray();
fDCSDataPoints->SetOwner(1);
+ fDCSAliasesComp = new TObjArray();
+ fDCSAliasesComp->SetOwner(1);
+ fDCSDataPointsComp = new TObjArray();
+ fDCSDataPointsComp->SetOwner(1);
fResponsibles = new TObjArray();
fResponsibles->SetOwner(1);
const char* anAlias;
while ((anAlias = anAttribute->GetValue()))
{
+ fDCSAliasesComp->AddLast(new TObjString(anAlias));
ExpandAndAdd(fDCSAliases, anAlias);
}
}
const char* aDataPoint;
while ((aDataPoint = anAttribute->GetValue()))
{
- ExpandAndAdd(fDCSDataPoints, aDataPoint);
+ fDCSDataPointsComp->AddLast(new TObjString(aDataPoint));
+ ExpandAndAdd(fDCSDataPoints, aDataPoint);
}
}
}
//______________________________________________________________________________________________
-void AliShuttleConfig::Print(Option_t* /*option*/) const
+void AliShuttleConfig::Print(Option_t* option) const
{
// print configuration
-
+// options : "": print configuration for all detectors, aliases and DPs in compacted format
+// "uncompact": print configuration for all detectors, aliases and DPs in uncompacted format
+// "DET": print configuration for DET, aliases and DPs in compacted format
+// "DET, uncompact": print configuration for DET, aliases and DPs in uncompacted format
+
TString result;
result += '\n';
// result += Form("FXS Password:",fFXSPass[iSys].Data());
}
+ TString optStr(option);
+
result += "------------------------------------------------------\n";
result += "Detector-specific configuration\n\n";
TIter iter(fDetectorMap.GetTable());
TPair* aPair;
while ((aPair = (TPair*) iter.Next())) {
AliShuttleConfigHolder* aHolder = (AliShuttleConfigHolder*) aPair->Value();
+ if (option != 0 && !optStr.Contains(aHolder->GetDetector()) && optStr.CompareTo("uncompact",TString::kIgnoreCase) != 0 )
+ continue;
result += Form("*** %s *** \n", aHolder->GetDetector());
const TObjArray* responsibles = aHolder->GetResponsibles();
}
result += Form("\tAmanda server: %s:%d \n", aHolder->GetDCSHost(), aHolder->GetDCSPort());
- const TObjArray* aliases = aHolder->GetDCSAliases();
+ const TObjArray* aliases = 0;
+ if (optStr.Contains("uncompact",TString::kIgnoreCase))
+ {
+ aliases = aHolder->GetDCSAliases();
+ } else {
+ aliases = aHolder->GetCompactDCSAliases();
+ }
+
if (aliases->GetEntries() != 0)
{
result += "\tDCS Aliases: ";
result += "\n";
}
- const TObjArray* dataPoints = aHolder->GetDCSDataPoints();
+ const TObjArray* dataPoints = 0;
+ if (optStr.Contains("uncompact",TString::kIgnoreCase))
+ {
+ dataPoints = aHolder->GetDCSDataPoints();
+ } else {
+ dataPoints = aHolder->GetCompactDCSDataPoints();
+ }
if (dataPoints->GetEntries() != 0)
{
result += "\tDCS Data Points: ";
Int_t GetPPTimeOut() const { return fPPTimeOut; }
- const TObjArray* GetDetectors() const;
+ const TObjArray* GetDetectors() const;
Bool_t HasDetector(const char* detector) const;
const char* GetDCSHost(const char* detector) const;
Int_t GetDCSPort(const char* detector) const;
const TObjArray* GetDCSAliases(const char* detector) const;
const TObjArray* GetDCSDataPoints(const char* detector) const;
+ const TObjArray* GetCompactDCSAliases(const char* detector) const;
+ const TObjArray* GetCompactDCSDataPoints(const char* detector) const;
const TObjArray* GetResponsibles(const char* detector) const;
Bool_t StrictRunOrder(const char* detector) const;
Int_t GetDCSPort() const {return fDCSPort;}
const TObjArray* GetDCSAliases() const {return fDCSAliases;}
const TObjArray* GetDCSDataPoints() const {return fDCSDataPoints;}
+ const TObjArray* GetCompactDCSAliases() const {return fDCSAliasesComp;}
+ const TObjArray* GetCompactDCSDataPoints() const {return fDCSDataPointsComp;}
const TObjArray* GetResponsibles() const {return fResponsibles;}
Bool_t IsValid() const {return fIsValid;}
Int_t fDCSPort; // port of the DCS server
TObjArray* fDCSAliases; // List of DCS aliases to be retrieved
TObjArray* fDCSDataPoints; // List of DCS data points to be retrieved
+ TObjArray* fDCSAliasesComp; // Compact list of DCS aliases to be printed
+ TObjArray* fDCSDataPointsComp; // Compact list of DCS data points to be printed
TObjArray* fResponsibles; // List of email addresses of the detector's responsible(s)
Bool_t fIsValid; // flag for the validity of the configuration
Bool_t fSkipDCSQuery; // flag - if TRUE (-> DCS config empty) skip DCS archive data query
+++ /dev/null
-#ITS config
-dn: dt=ITS,dc=alice,dc=cern,dc=ch
-objectClass: shuttleConfig
-dt: ITS
-ipHost: 192.168.39.23
-ipServicePort: 4242
-alias: HighVol01
-alias: HighVol07
-
--- /dev/null
+#MCH config
+dn: det=MCH,o=alice,dc=cern,dc=ch
+objectClass: AliShuttleDetector
+det: MCH
+StrictRunOrder: 1
+responsible: not_yet_set
+DCSHost: aldcs053.cern.ch
+DCSPort: 4242
+DCSalias: MchHvLvRight/Chamber[01..04]Right/Quad1Sect[1..3].actual.vMon
+DCSalias: MchHvLvLeft/Chamber[01..04]Left/Quad2Sect[1..3].actual.vMon
+DCSalias: MchHvLvLeft/Chamber[01..04]Left/Quad3Sect[1..3].actual.vMon
+DCSalias: MchHvLvRight/Chamber[01..04]Right/Quad4Sect[1..3].actual.vMon
+DCSalias: MchHvLvRight/Chamber[05..10]Right/Slat[01..09].actual.vMon
+DCSalias: MchHvLvLeft/Chamber[05..10]Left/Slat[01..09].actual.vMon
+DCSalias: MchHvLvRight/Chamber[07..10]Right/Slat[10..13].actual.vMon
+DCSalias: MchHvLvLeft/Chamber[07..10]Left/Slat[10..13].actual.vMon
+DCSalias: MchDE500sw[1..4].inValue
+DCSalias: MchDE501sw[1..4].inValue
+DCSalias: MchDE502sw[1..4].inValue
+DCSalias: MchDE503sw[1..3].inValue
+DCSalias: MchDE504sw[1..2].inValue
+DCSalias: MchDE505sw[1..2].inValue
+DCSalias: MchDE506sw[1..3].inValue
+DCSalias: MchDE507sw[1..4].inValue
+DCSalias: MchDE508sw[1..4].inValue
+DCSalias: MchDE509sw[1..4].inValue
+DCSalias: MchDE510sw[1..4].inValue
+DCSalias: MchDE511sw[1..4].inValue
+DCSalias: MchDE512sw[1..3].inValue
+DCSalias: MchDE513sw[1..2].inValue
+DCSalias: MchDE514sw[1..2].inValue
+DCSalias: MchDE515sw[1..3].inValue
+DCSalias: MchDE516sw[1..4].inValue
+DCSalias: MchDE517sw[1..4].inValue
+DCSalias: MchDE600sw[1..4].inValue
+DCSalias: MchDE601sw[1..4].inValue
+DCSalias: MchDE602sw[1..4].inValue
+DCSalias: MchDE603sw[1..3].inValue
+DCSalias: MchDE604sw[1..2].inValue
+DCSalias: MchDE605sw[1..2].inValue
+DCSalias: MchDE606sw[1..3].inValue
+DCSalias: MchDE607sw[1..4].inValue
+DCSalias: MchDE608sw[1..4].inValue
+DCSalias: MchDE609sw[1..4].inValue
+DCSalias: MchDE610sw[1..4].inValue
+DCSalias: MchDE611sw[1..4].inValue
+DCSalias: MchDE612sw[1..3].inValue
+DCSalias: MchDE613sw[1..2].inValue
+DCSalias: MchDE614sw[1..2].inValue
+DCSalias: MchDE615sw[1..3].inValue
+DCSalias: MchDE616sw[1..4].inValue
+DCSalias: MchDE617sw[1..4].inValue
+DCSalias: MchDE700sw[1..5].inValue
+DCSalias: MchDE701sw[1..6].inValue
+DCSalias: MchDE702sw[1..5].inValue
+DCSalias: MchDE703sw[1..5].inValue
+DCSalias: MchDE704sw[1..4].inValue
+DCSalias: MchDE705sw[1..3].inValue
+DCSalias: MchDE706sw[1..2].inValue
+DCSalias: MchDE707sw[1..2].inValue
+DCSalias: MchDE708sw[1..3].inValue
+DCSalias: MchDE709sw[1..4].inValue
+DCSalias: MchDE710sw[1..5].inValue
+DCSalias: MchDE711sw[1..5].inValue
+DCSalias: MchDE712sw[1..6].inValue
+DCSalias: MchDE713sw[1..5].inValue
+DCSalias: MchDE714sw[1..6].inValue
+DCSalias: MchDE715sw[1..5].inValue
+DCSalias: MchDE716sw[1..5].inValue
+DCSalias: MchDE717sw[1..4].inValue
+DCSalias: MchDE718sw[1..3].inValue
+DCSalias: MchDE719sw[1..2].inValue
+DCSalias: MchDE720sw[1..2].inValue
+DCSalias: MchDE721sw[1..3].inValue
+DCSalias: MchDE722sw[1..4].inValue
+DCSalias: MchDE723sw[1..5].inValue
+DCSalias: MchDE724sw[1..5].inValue
+DCSalias: MchDE725sw[1..6].inValue
+DCSalias: MchDE800sw[1..5].inValue
+DCSalias: MchDE801sw[1..6].inValue
+DCSalias: MchDE802sw[1..5].inValue
+DCSalias: MchDE803sw[1..5].inValue
+DCSalias: MchDE804sw[1..4].inValue
+DCSalias: MchDE805sw[1..3].inValue
+DCSalias: MchDE806sw[1..2].inValue
+DCSalias: MchDE807sw[1..2].inValue
+DCSalias: MchDE808sw[1..3].inValue
+DCSalias: MchDE809sw[1..4].inValue
+DCSalias: MchDE810sw[1..5].inValue
+DCSalias: MchDE811sw[1..5].inValue
+DCSalias: MchDE812sw[1..6].inValue
+DCSalias: MchDE813sw[1..5].inValue
+DCSalias: MchDE814sw[1..6].inValue
+DCSalias: MchDE815sw[1..5].inValue
+DCSalias: MchDE816sw[1..5].inValue
+DCSalias: MchDE817sw[1..4].inValue
+DCSalias: MchDE818sw[1..3].inValue
+DCSalias: MchDE819sw[1..2].inValue
+DCSalias: MchDE820sw[1..2].inValue
+DCSalias: MchDE821sw[1..3].inValue
+DCSalias: MchDE822sw[1..4].inValue
+DCSalias: MchDE823sw[1..5].inValue
+DCSalias: MchDE824sw[1..5].inValue
+DCSalias: MchDE825sw[1..6].inValue
+DCSalias: MchDE900sw[1..5].inValue
+DCSalias: MchDE901sw[1..6].inValue
+DCSalias: MchDE902sw[1..6].inValue
+DCSalias: MchDE903sw[1..6].inValue
+DCSalias: MchDE904sw[1..5].inValue
+DCSalias: MchDE905sw[1..4].inValue
+DCSalias: MchDE906sw[1..3].inValue
+DCSalias: MchDE907sw[1..3].inValue
+DCSalias: MchDE908sw[1..4].inValue
+DCSalias: MchDE909sw[1..5].inValue
+DCSalias: MchDE910sw[1..6].inValue
+DCSalias: MchDE911sw[1..6].inValue
+DCSalias: MchDE912sw[1..6].inValue
+DCSalias: MchDE913sw[1..5].inValue
+DCSalias: MchDE914sw[1..6].inValue
+DCSalias: MchDE915sw[1..6].inValue
+DCSalias: MchDE916sw[1..6].inValue
+DCSalias: MchDE917sw[1..5].inValue
+DCSalias: MchDE918sw[1..4].inValue
+DCSalias: MchDE919sw[1..3].inValue
+DCSalias: MchDE920sw[1..3].inValue
+DCSalias: MchDE921sw[1..4].inValue
+DCSalias: MchDE922sw[1..5].inValue
+DCSalias: MchDE923sw[1..6].inValue
+DCSalias: MchDE924sw[1..6].inValue
+DCSalias: MchDE925sw[1..6].inValue
+DCSalias: MchDE1000sw[1..5].inValue
+DCSalias: MchDE1001sw[1..6].inValue
+DCSalias: MchDE1002sw[1..6].inValue
+DCSalias: MchDE1003sw[1..6].inValue
+DCSalias: MchDE1004sw[1..5].inValue
+DCSalias: MchDE1005sw[1..4].inValue
+DCSalias: MchDE1006sw[1..3].inValue
+DCSalias: MchDE1007sw[1..3].inValue
+DCSalias: MchDE1008sw[1..4].inValue
+DCSalias: MchDE1009sw[1..5].inValue
+DCSalias: MchDE1010sw[1..6].inValue
+DCSalias: MchDE1011sw[1..6].inValue
+DCSalias: MchDE1012sw[1..6].inValue
+DCSalias: MchDE1013sw[1..5].inValue
+DCSalias: MchDE1014sw[1..6].inValue
+DCSalias: MchDE1015sw[1..6].inValue
+DCSalias: MchDE1016sw[1..6].inValue
+DCSalias: MchDE1017sw[1..5].inValue
+DCSalias: MchDE1018sw[1..4].inValue
+DCSalias: MchDE1019sw[1..3].inValue
+DCSalias: MchDE1020sw[1..3].inValue
+DCSalias: MchDE1021sw[1..4].inValue
+DCSalias: MchDE1022sw[1..5].inValue
+DCSalias: MchDE1023sw[1..6].inValue
+DCSalias: MchDE1024sw[1..6].inValue
+DCSalias: MchDE1025sw[1..6].inValue
+++ /dev/null
-#PHOS config
-dn: dt=PHOS,dc=alice,dc=cern,dc=ch
-objectClass: shuttleConfig
-dt: PHOS
-ipHost: 192.168.39.23
-ipServicePort: 4242
-alias: temperature
-alias: pressure
-
--- /dev/null
+#
+# This file was generated by gq 1.0beta1 (http://biot.com/gq/)
+# run by colla Mon Jan 22 17:42:28 2007
+#
+# subtree search on server: ldap://pcalishuttle01.cern.ch:389/
+# binddn: cn=manager,dc=cern,dc=ch
+# searching below: det=MCH,o=alice,dc=cern,dc=ch
+# version: 1
+#
+dn: det=TOF,o=alice,dc=cern,dc=ch
+objectClass: AliShuttleDetector
+det: TOF
+StrictRunOrder: 1
+responsible: not_yet_set
+DCSHost: aldcs053.cern.ch
+DCSPort: 4242
+DCSalias: tof_hv_vp_[00..89]
+DCSalias: tof_hv_vn_[00..89]
+DCSalias: tof_hv_ip_[00..89]
+DCSalias: tof_hv_in_[00..89]
+DCSalias: tof_lv_vfea_[000..575]
+DCSalias: tof_lv_v33_[00..71]
+DCSalias: tof_lv_v50_[00..71]
+DCSalias: tof_lv_v48_[00..71]
+DCSalias: tof_lv_ifea_[000..575]
+DCSalias: tof_lv_i33_[00..71]
+DCSalias: tof_lv_i50_[00..71]
+DCSalias: tof_lv_i48_[00..71]
+DCSalias: tof_fee_th_[0000..1151]
+DCSalias: tof_fee_tfeac_[000..575]
+DCSalias: tof_fee_ttrm_[0000..6839]
+++ /dev/null
-#TPC config
-dn: dt=TPC,dc=alice,dc=cern,dc=ch
-objectClass: shuttleConfig
-dt: TPC
-ipHost: 192.168.39.23
-ipServicePort: 4242
-alias: HighVol01
-alias: HighVol07
-