#include "iostream.h" #include "/home/alice/guernane/date/tmp/ionlx/event.h" #include "/home/alice/guernane/date/tmp/ionlx/monitor.h" //======================================================================= // // The following macro is used to read raw data from run#.raw files // generated by DATE acquisition package. It was written using // Guy Jacquet (IPN Lyon) monitoring code. // // 1-Feb-2000 Rachid GUERNANE, IPN Lyon, France // // void MUONRawDigit (Int_t evNumber1 = 0, Int_t evNumber2 = 0, char* dataSource="/home/alice/guernane/test/run3403_Linux.raw") { // Dynamically link some shared libs if (gClassTable->GetID("AliRun") < 0) { gROOT->LoadMacro("loadlibs.C"); loadlibs(); } // Connect the Root Galice file containing Geometry, Kine and Hits TFile* file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root"); if (file) file->Close(); file = new TFile("galice.root", "UPDATE"); // Get AliRun object from file or create it if not on file if (!gAlice) { gAlice = (AliRun*)file->Get("gAlice"); if (gAlice) printf("AliRun object found on file\n"); if (!gAlice) gAlice = new AliRun("gAlice","Alice test program"); } AliMUONv2* MUON = (AliMUONv2*)gAlice->GetModule("MUON"); // // Start Event Loop // static int ilen; int status; status = monitorSetDataSource(dataSource); if (status != 0) { fprintf( stderr, "Error in monitorSetDataSource: %s\n", monitorSetDataSource(status)); } status = monitorDeclareMp("Retrieve Raw Data"); if (status != 0) { fprintf( stderr, "Error in monitorDeclareMp: %s\n", monitorSetDataSource(status)); } Int_t nev = 0; Int_t iev = 0; for (; iev <= evNumber2 && nev < evNumber2*20; nev++) { // // Raw event decoding // void *ptr; struct eventStruct *rawevent; status = monitorGetEventDynamic(&ptr); if (status != 0) { fprintf( stderr, "Error in monitorGetEventDynamic: %s\n", monitorDecodeError(status)); exit(1); } rawevent = (struct eventStruct*)ptr; ilen = (rawevent->eventHeader.size - rawevent->eventHeader.headLen)/4; if (rawevent->eventHeader.type == PHYSICS_EVENT) { iev = rawevent->eventHeader.nbInRun; gAlice->GetEvent(iev-1); printf("\nEvent No.: %d\n", iev); printf("--------------------------------------------\n"); int* lptr = (int*)&rawevent->rawData[0]; MUON->GetRawDigits(iev-1, lptr, ilen); } free(ptr); } // // End Event loop // file->Close(); }