]>
Commit | Line | Data |
---|---|---|
a9e2aefa | 1 | #include "iostream.h" |
2 | #include "/home/alice/guernane/date/tmp/ionlx/event.h" | |
3 | #include "/home/alice/guernane/date/tmp/ionlx/monitor.h" | |
4 | ||
5 | //======================================================================= | |
6 | // | |
7 | // The following macro is used to read raw data from run#.raw files | |
8 | // generated by DATE acquisition package. It was written using | |
9 | // Guy Jacquet (IPN Lyon) monitoring code. | |
10 | // | |
11 | // 1-Feb-2000 Rachid GUERNANE, IPN Lyon, France | |
12 | // | |
13 | // | |
14 | ||
15 | void MUONRawDigit (Int_t evNumber1 = 0, Int_t evNumber2 = 0, char* dataSource="/home/alice/guernane/test/run3403_Linux.raw") | |
16 | { | |
17 | ||
18 | // Dynamically link some shared libs | |
19 | ||
20 | if (gClassTable->GetID("AliRun") < 0) { | |
21 | gROOT->LoadMacro("loadlibs.C"); | |
22 | loadlibs(); | |
23 | } | |
24 | ||
25 | // Connect the Root Galice file containing Geometry, Kine and Hits | |
26 | ||
27 | TFile* file = (TFile*)gROOT->GetListOfFiles()->FindObject("galice.root"); | |
28 | if (file) file->Close(); | |
29 | file = new TFile("galice.root", "UPDATE"); | |
30 | ||
31 | // Get AliRun object from file or create it if not on file | |
32 | ||
33 | if (!gAlice) { | |
34 | gAlice = (AliRun*)file->Get("gAlice"); | |
35 | if (gAlice) printf("AliRun object found on file\n"); | |
36 | if (!gAlice) gAlice = new AliRun("gAlice","Alice test program"); | |
37 | } | |
38 | ||
39 | AliMUONv2* MUON = (AliMUONv2*)gAlice->GetModule("MUON"); | |
40 | ||
41 | // | |
42 | // Start Event Loop | |
43 | // | |
44 | ||
45 | static int ilen; | |
46 | int status; | |
47 | ||
48 | ||
49 | status = monitorSetDataSource(dataSource); | |
50 | ||
51 | if (status != 0) { | |
52 | fprintf( stderr, | |
53 | "Error in monitorSetDataSource: %s\n", | |
54 | monitorSetDataSource(status)); | |
55 | } | |
56 | ||
57 | status = monitorDeclareMp("Retrieve Raw Data"); | |
58 | ||
59 | if (status != 0) { | |
60 | fprintf( stderr, | |
61 | "Error in monitorDeclareMp: %s\n", | |
62 | monitorSetDataSource(status)); | |
63 | } | |
64 | ||
65 | Int_t nev = 0; | |
66 | Int_t iev = 0; | |
67 | ||
68 | for (; iev <= evNumber2 && nev < evNumber2*20; nev++) { | |
69 | ||
70 | // | |
71 | // Raw event decoding | |
72 | // | |
73 | ||
74 | void *ptr; | |
75 | struct eventStruct *rawevent; | |
76 | ||
77 | status = monitorGetEventDynamic(&ptr); | |
78 | ||
79 | if (status != 0) { | |
80 | fprintf( stderr, | |
81 | "Error in monitorGetEventDynamic: %s\n", | |
82 | monitorDecodeError(status)); | |
83 | exit(1); | |
84 | } | |
85 | ||
86 | rawevent = (struct eventStruct*)ptr; | |
87 | ||
88 | ilen = (rawevent->eventHeader.size - rawevent->eventHeader.headLen)/4; | |
89 | ||
90 | if (rawevent->eventHeader.type == PHYSICS_EVENT) { | |
91 | iev = rawevent->eventHeader.nbInRun; | |
92 | gAlice->GetEvent(iev-1); | |
93 | printf("\nEvent No.: %d\n", iev); | |
94 | printf("--------------------------------------------\n"); | |
95 | ||
96 | int* lptr = (int*)&rawevent->rawData[0]; | |
97 | ||
98 | MUON->GetRawDigits(iev-1, lptr, ilen); | |
99 | ||
100 | } | |
101 | ||
102 | free(ptr); | |
103 | ||
104 | } | |
105 | // | |
106 | // End Event loop | |
107 | // | |
108 | ||
109 | file->Close(); | |
110 | ||
111 | } | |
112 | ||
113 | ||
114 | ||
115 | ||
116 | ||
117 | ||
118 | ||
119 | ||
120 | ||
121 | ||
122 | ||
123 | ||
124 | ||
125 |