X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=FMD%2FFMDBaseda.cxx;h=388e8e70d6e89d4a317875e338e4e1bc0065a646;hb=5f195a83b55ac3d5df711f50a554ae05c2f27668;hp=a00116efeeb5b9697f7960850693b5c6b2521bff;hpb=9a090ccd393c8347c8512e632ce54eeceed8ac1f;p=u%2Fmrichter%2FAliRoot.git diff --git a/FMD/FMDBaseda.cxx b/FMD/FMDBaseda.cxx index a00116efeeb..388e8e70d6e 100644 --- a/FMD/FMDBaseda.cxx +++ b/FMD/FMDBaseda.cxx @@ -11,6 +11,9 @@ Output Files: conditions.csv Trigger types used: PHYSICS_EVENT */ +#include "monitor.h" +#include "event.h" +#include #include #include #include @@ -38,34 +41,85 @@ int main(int argc, char **argv) #endif - Char_t* fileName = argv[1]; - + const Char_t* tableSOD[] = {"ALL", "no", "SOD", "all", NULL, NULL}; + Bool_t old = kTRUE; - + monitorDeclareTable(const_cast(tableSOD)); + AliFMDParameters::Instance()->Init(kFALSE,0); - AliFMDParameters::Instance()->UseCompleteHeader(!old); - - AliRawReader *reader = 0; - TString fileNam(fileName); - if (fileNam.EndsWith(".root")) reader = new AliRawReaderRoot(fileName); - else if (fileNam.EndsWith(".raw")) reader = new AliRawReaderDate(fileName); - if (!reader) { - std::cerr << "Don't know how to make reader for " << fileNam - << std::endl; - return -2; + AliFMDParameters::Instance()->UseCompleteHeader(old); + struct eventHeaderStruct *event; + int status; + /* define data source : this is argument 1 */ + if (argc < 2) { + std::cout << "No monitor source set" << std::endl; + return -1; + } + status=monitorSetDataSource( argv[1] ); + if (status!=0) { + printf("monitorSetDataSource() failed : %s\n",monitorDecodeError(status)); + return -1; } - TStopwatch timer; - timer.Start(); - AliFMDBaseDA baseDA; - - baseDA.Run(reader); + if (argc > 2) AliLog::SetModuleDebugLevel("FMD", atoi(argv[2])); + /* declare monitoring program */ + status=monitorDeclareMp( __FILE__ ); + if (status!=0) { + printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(status)); + return -1; + } - timer.Stop(); - timer.Print(); + monitorSetNowait(); + monitorSetNoWaitNetworkTimeout(1000); - Int_t retval = daqDA_FES_storeFile("conditions.csv", AliFMDParameters::Instance()->GetConditionsShuttleID()); - if (retval != 0) std::cerr << "Base DA failed" << std::endl; - + AliRawReader *reader = 0; + AliFMDBaseDA baseDA; + Int_t retval = 0; + Int_t iev = 0; + Bool_t SODread = kFALSE; + while(!SODread && iev<1000) { + + /* check shutdown condition */ + if (daqDA_checkShutdown()) {break;} + + /* get next event (blocking call until timeout) */ + status=monitorGetEventDynamic((void **)&event); + if (status==MON_ERR_EOF) { + printf ("End of File detected\n"); + break; /* end of monitoring file has been reached */ + } + + if (status!=0) { + printf("monitorGetEventDynamic() failed : %s\n",monitorDecodeError(status)); + break; + } + + /* retry if got no event */ + if (event==NULL) { + continue; + } + + iev++; + + switch (event->eventType){ + + case START_OF_DATA: + reader = new AliRawReaderDate((void*)event); + baseDA.Run(reader); + SODread = kTRUE; + retval = + daqDA_FES_storeFile("conditions.csv", + AliFMDParameters::Instance()->GetConditionsShuttleID()); + if (retval != 0) std::cerr << "Base DA failed" << std::endl; + + break; + + default: + break; + + } + } + + return retval; }