#include "TString.h" #include "TList.h" #include "TError.h" #include "hparoraio.h" #include "horainfo.h" #include "hruntimedb.h" #include "hparasciifileio.h" #include "hparrootfileio.h" #include "htaskset.h" #include "TStopwatch.h" extern Char_t node[200]; extern TString *files[20]; extern TString *dir[20]; extern TString archive[20]; extern TString robot[20]; extern Int_t primaryInput; extern Int_t secondaryInput; extern Int_t refRunId; extern Char_t asciiFile[200]; extern Char_t rootFile[200]; extern Int_t smartRunId; extern Int_t refRunId; extern HRuntimeDb *rtdb; extern TString *oradate; extern HTaskSet *masterTaskSetReal; extern HTaskSet *masterTaskSetCal; enum modes {OFF=0,ORAFILE=1,ASCIIFILE=2,ROOTFILE=3,RAWLEVEL=1,CALLEVEL=2}; void splitFiles(TString *files, TList **list) { Char_t fNames[2048]; Char_t *file; strcpy(fNames,files->Data()); if(strlen(fNames) != 0) { file = strtok(fNames,","); if(strlen(file) != 0) { do { (*list)->Add((TObject *)(new TString(file))); file = strtok(NULL,","); } while(file != 0); } } } Int_t getExistingRefRunId(TString inputfile, TString beamtime, Int_t primaryFile, Int_t secondaryFile, Int_t refRunId, HParOraIo *oracle) { Int_t runId = -1; if (primaryFile != ROOTFILE && secondaryFile != ROOTFILE) { if (refRunId < 0) { if (oracle) { HOraInfo *oracleInfo=0; oracleInfo = oracle->getOraInfo(); if (inputfile.EndsWith(".hld")) { runId = oracleInfo->getRunId((Text_t*)inputfile.Data()); if (runId==-1) { if (smartRunId) { runId = oracleInfo->getLastRun((Text_t*)beamtime.Data()); return runId; } } } } } } return refRunId; } HParOraIo *setParameterSource(void) { HParIo *inp1=0; HParIo *inp2=0; HParOraIo *ora=0; if (primaryInput) { switch (primaryInput) { { case ORAFILE: ora = new HParOraIo ; ora->open(); if (!ora->check()) { Error("ora->check","no connection to Oracle\nexiting...!"); exit(1);} rtdb->setFirstInput(ora); ora->setHistoryDate(oradate->Data()); if (secondaryInput==ORAFILE) secondaryInput=OFF; break; case ASCIIFILE: // ------------ ascii file info ------------------- inp1 = new HParAsciiFileIo; ((HParAsciiFileIo*) inp1)->open(asciiFile); if(!inp1->check()) { Error("ascii->check","file not found\nexiting...!"); exit(1); } rtdb->setFirstInput(inp1); break; case ROOTFILE: // ------------ root file info -------------------- inp1 = new HParRootFileIo; ((HParRootFileIo*) inp1)->open(rootFile); if(!inp1->check()) { Error("root->check","file not found\nexiting...!"); exit(1); } rtdb->setFirstInput(inp1); break; default: Error("unpacker","No valid:%i input chosen\nexiting...",primaryInput); exit(1); } } } if (secondaryInput) { switch (secondaryInput) { case ORAFILE: ora = new HParOraIo ; ora->open(); if (!ora->check()) { Error("ora->check","no connection to Oracle\nexiting...!"); exit(1);} rtdb->setSecondInput(ora); ora->setHistoryDate(oradate->Data()); break; case ASCIIFILE: // ------------ ascii file info ------------------- inp2 = new HParAsciiFileIo; ((HParAsciiFileIo*) inp2)->open(asciiFile); if(!inp2->check()) { Error("ascii->check","file not found\nexiting...!"); exit(1); } rtdb->setSecondInput(inp2); break; case ROOTFILE: // ------------ root file info -------------------- inp2 = new HParRootFileIo; ((HParRootFileIo*) inp2)->open(rootFile); if(!inp2->check()) { Error("root->check","file not found\nexiting...!"); exit(1); } rtdb->setSecondInput(inp2); break; default: Error("unpacker","No valid:%i input chosen\nexiting...",secondaryInput); exit(1); } } return ora; } void evalStopwatch(TStopwatch *timer, Int_t nevts) { Double_t realtime=(*timer).RealTime(); Double_t cputime =(*timer).CpuTime(); Int_t realHour=(Int_t) ((realtime/3600)); Int_t realMin =(Int_t) (((realtime-realHour*3600)/60)); Int_t realSec =(Int_t) ((realtime-realHour*3600-realMin*60)); Int_t realmSec=(Int_t) (((realtime - (Int_t) (realtime-realHour*3600-realMin*60))*1000)); Int_t cpuHour=(Int_t) (( cputime/3600)); Int_t cpuMin =(Int_t) ((( cputime- cpuHour*3600)/60)); Int_t cpuSec =(Int_t) (( cputime- cpuHour*3600- cpuMin*60)); Int_t cpumSec=(Int_t) ((( cputime - (Int_t) ( cputime- cpuHour*3600- cpuMin*60))*1000)); if(masterTaskSetReal) masterTaskSetReal->printTimer(); if(masterTaskSetCal) masterTaskSetCal->printTimer(); printf("------------------------------------------------------\n"); printf("Events processed: %i\n",nevts); printf("Real time(hh:mm:ss.ms): %02i:%02i:%02i.%03i\n",realHour,realMin,realSec,realmSec); printf("Cpu time (hh:mm:ss.ms): %02i:%02i:%02i.%03i\n", cpuHour, cpuMin, cpuSec, cpumSec); if (nevts) printf("Performance: %f s/ev\n",cputime/nevts); return; }