#include "param.h" Bool_t readParams(Char_t confName[200]) { TString *tmp; char dname[200]; conf = new AppConfig(); conf->readFile(confName); /* Read general configuration */ if(!conf->isOk()) { printf("%s\n","Config file not found!"); printf("\t%s\n",confName); delete conf; return kFALSE; } conf->setCurrentPath("general"); tmp = new TString(conf->readEntry("maketree","false")); tmp->ToUpper(); makeTree = tmp->CompareTo("FALSE"); delete tmp; beamtime = new TString(conf->readEntry("beamtime","")); sprintf(node,"%s",conf->readEntry("remotenode","")); tmp = new TString(conf->readEntry("batch","false")); tmp->ToUpper(); batchJob = tmp->CompareTo("FALSE"); delete tmp; detectors = new TString(conf->readEntry("detectors","all")); detectors->ToUpper(); if(detectors->Contains("ALL")) { delete detectors; detectors = new TString(DETECTORLIST); detectors->ToUpper(); } // if((detectors->Contains("START")) && (!detectors->Contains("TRIGGER"))) // detectors->Append(",TRIGGER"); repRate = conf->readEntry("reprate",1000L); compLevel = conf->readEntry("complevel",2L); tmp = new TString(conf->readEntry("evaltimer","true")); tmp->ToUpper(); evalTimer = tmp->CompareTo("FALSE"); delete tmp; /* Read output */ conf->setCurrentPath("output"); outputDir= new TString(conf->readEntry("directory","./")); notPersistentCat= new TString(conf->readEntry("notpersistentcat","")); notPersistentCat->ToUpper(); messageFile= new TString(conf->readEntry("messagedir","")); /* Read parameter source */ conf->setCurrentPath("parametersource"); pI = new TString(conf->readEntry("configsource1","ASCII")); sI = new TString(conf->readEntry("configsource2","ASCII")); if(pI->CompareTo("ASCII") == 0) primaryInput = ASCIIFILE; else if(pI->CompareTo("ORACLE") == 0) primaryInput = ORAFILE; else if(pI->CompareTo("ROOT") == 0) primaryInput = ROOTFILE; if(sI->CompareTo("ASCII") == 0) secondaryInput = ASCIIFILE; else if(sI->CompareTo("ORACLE") == 0) secondaryInput = ORAFILE; else if(sI->CompareTo("ROOT") == 0) secondaryInput = ROOTFILE; if(primaryInput == ASCIIFILE) strcpy(asciiFile,conf->readEntry("configfile1","")); if(secondaryInput == ASCIIFILE) strcpy(asciiFile,conf->readEntry("configfile2","")); if(primaryInput == ROOTFILE) strcpy(rootFile,conf->readEntry("configfile1","")); if(secondaryInput == ROOTFILE) strcpy(rootFile,conf->readEntry("configfile2","")); oradate = new TString(conf->readEntry("oradate","now")); refRunId = conf->readEntry("refrunid",0L); dboutfile = new TString(conf->readEntry("rtdbout","rtdb.txt")); tmp = new TString(conf->readEntry("creatertdbfile","OFF")); tmp->ToUpper(); creatertdbfile = tmp->CompareTo("OFF"); delete tmp; dbouttype = new TString(conf->readEntry("rtdbouttype","ASCII")); dbouttype->ToUpper(); /* Read unpacker settings */ conf->setCurrentPath("unpacker"); tmp = new TString(conf->readEntry("mdcdebug","false")); tmp->ToUpper(); mdcDebug = tmp->CompareTo("FALSE"); delete tmp; tmp = new TString(conf->readEntry("mdcconsistency","false")); tmp->ToUpper(); mdcConsistency = tmp->CompareTo("FALSE"); delete tmp; tmp = new TString(conf->readEntry("mdcquiet","false")); tmp->ToUpper(); mdcQuiet = tmp->CompareTo("FALSE"); delete tmp; /* Read tasksets */ conf->setCurrentPath("taskset"); masterTaskConfig = new TString(conf->readEntry("mastertaskconfig","real")); masterTaskConfig->ToLower(); mdcTaskConfig = new TString(conf->readEntry("mdctaskconfig","")); mdcTaskConfig->ToUpper(); mdcGlobalOffset1 = conf->readEntry("globaloffset1",0.); mdcGlobalOffset2 = conf->readEntry("globaloffset2",0.); mdcGlobalOffset3 = conf->readEntry("globaloffset3",0.); mdcGlobalOffset4 = conf->readEntry("globaloffset4",0.); tofTaskConfig = new TString(conf->readEntry("toftaskconfig","")); tofTaskConfig->ToUpper(); tofinoTaskConfig = new TString(conf->readEntry("tofinotaskconfig","")); tofinoTaskConfig->ToUpper(); startTaskConfig = new TString(conf->readEntry("starttaskconfig","")); startTaskConfig->ToUpper(); richTaskConfig = new TString(conf->readEntry("richtaskconfig","real")); richTaskConfig->ToUpper(); richIPUTaskConfig = new TString(conf->readEntry("richiputaskconfig","real")); richIPUTaskConfig->ToUpper(); richIPUthrContext = new TString(conf->readEntry("richiputhrcontext","")); richIPUlocContext = new TString(conf->readEntry("richipuloccontext","")); richDigitisationContext = new TString(conf->readEntry("richdigitcontext","")); richCorrelatorContext = new TString(conf->readEntry("richcorrelatorcontext","")); showerTaskConfig = new TString(conf->readEntry("showertaskconfig","")); showerTaskConfig->ToUpper(); showertofinoTaskConfig = new TString(conf->readEntry("showertofinotaskconfig","")); showertofinoTaskConfig->ToUpper(); triggerTaskConfig = new TString(conf->readEntry("triggertaskconfig","")); kickTaskConfig = new TString(conf->readEntry("kicktaskconfig","")); kickTaskConfig->ToUpper(); tmp = new TString(conf->readEntry("findvertex","FALSE")); tmp->ToUpper(); findVertex = tmp->CompareTo("FALSE"); calTaskConfig = new TString(conf->readEntry("caltaskconfig","")); calTaskConfig->ToUpper(); momentumTaskConfig = new TString(conf->readEntry("momentumtask","")); momentumTaskConfig->ToUpper(); delete tmp; if(((momentumTaskConfig->Contains("KICKTRACK")) || (momentumTaskConfig->Contains("KICKTRACK")) || (momentumTaskConfig->Contains("SPLINE"))) && (!(momentumTaskConfig->Contains("KICKPLANE")))) momentumTaskConfig->Append(",KICKPLANE"); if(((momentumTaskConfig->Contains("KICKPLANE")) || (momentumTaskConfig->Contains("KICKTRACK")) || (momentumTaskConfig->Contains("SPLINE")))&& !(mdcTaskConfig->Contains("FIT"))) { mdcTaskConfig->Append(",FIT"); mdcTaskConfig->ReplaceAll("CAL1,",""); } /* Read QA configuration */ conf->setCurrentPath("qa"); tmp = new TString(conf->readEntry("runqa","false")); tmp->ToUpper(); runQa = tmp->CompareTo("FALSE"); delete tmp; qaDir = new TString(conf->readEntry("directory","./")); qaSamplingRate = conf->readEntry("samplingrate",5L); qaInterval = conf->readEntry("interval",5000L); tmp = new TString(conf->readEntry("runmdcqa","FALSE")); tmp->ToUpper(); runMdcQa = tmp->CompareTo("FALSE"); delete tmp; mdcQaName = new TString(conf->readEntry("mdcqaname","")); delete tmp; /* Read datasource configuration */ conf->setCurrentPath("firstdatasource"); tmp = new TString(conf->readEntry("remotenode","OFF")); tmp->ToUpper(); firstRemoteSource = tmp->CompareTo("OFF"); delete tmp; tmp = new TString(conf->readEntry("rfiosource","OFF")); tmp->ToUpper(); firstRFIOSource = tmp->CompareTo("OFF"); delete tmp; tmp = new TString(conf->readEntry("rootsource","OFF")); tmp->ToUpper(); firstRootSource = tmp->CompareTo("OFF"); delete tmp; conf->setCurrentPath("seconddatasource"); tmp = new TString(conf->readEntry("rfiofile","OFF")); tmp->ToUpper(); secondRFIOsource = tmp->CompareTo("OFF"); delete tmp; /* Read data sources */ for(Int_t i=0;i<20;i++) { sprintf(dname,"%s%d","firstdatasource/",i); conf->setCurrentPath(dname); firstArchive[i] = new TString(conf->readEntry("archive","hades")); firstRobot[i] = new TString(conf->readEntry("robot","adsmexp")); firstDir[i] = new TString(conf->readEntry("directory","")); if(firstDir[0]->Length() != 0) { firstFiles[i] = new TString(conf->readEntry("files","")); } } for(Int_t i=0;i<20;i++) { sprintf(dname,"%s%d","seconddatasource/",i); conf->setCurrentPath(dname); secondArchive[i] = new TString(conf->readEntry("archive","hades")); secondRobot[i] = new TString(conf->readEntry("robot","adsmexp")); secondDir[i] = new TString(conf->readEntry("directory","")); if(firstDir[0]->Length() != 0) { secondFiles[i] = new TString(conf->readEntry("files","")); } } /* finished reading */ delete conf; return kTRUE; }