]>
Commit | Line | Data |
---|---|---|
3b5beac9 | 1 | /* |
2 | EMCAL DA for online calibration | |
3 | ||
4 | Contact: silvermy@ornl.gov | |
5 | Run Type: PEDESTAL_RUN or PULSER_RUN | |
6 | DA Type: LDC | |
7 | Number of events needed: ~100 | |
8 | Input Files: argument list | |
9 | Output Files: RESULT_FILE=EMCALda1.root, to be exported to the DAQ FXS | |
10 | fileId: FILE_ID=EMCALda1 | |
11 | Trigger types used: CALIBRATION_EVENT (temporarily also PHYSICS_EVENT to start with) | |
12 | ||
13 | */ | |
14 | /* | |
15 | This process reads RAW data from the files provided as command line arguments | |
16 | and save results in a file (named from RESULT_FILE define - see below). | |
17 | */ | |
18 | ||
19 | #define RESULT_FILE "EMCALda.root" | |
20 | #define FILE_ID "EMCALda" | |
21 | #define AliDebugLevel() -1 | |
22 | ||
23 | extern "C" { | |
24 | #include <daqDA.h> | |
25 | } | |
26 | #include "event.h" | |
27 | #include "monitor.h" | |
28 | ||
29 | #include "stdio.h" | |
30 | #include "stdlib.h" | |
31 | ||
32 | // | |
33 | //AliRoot includes | |
34 | // | |
35 | #include "AliRawReader.h" | |
36 | #include "AliRawReaderDate.h" | |
37 | #include "AliRawEventHeaderBase.h" | |
38 | #include "AliCaloRawStream.h" | |
39 | #include "AliLog.h" | |
40 | ||
41 | // | |
42 | // EMC calibration-helper algorithm includes | |
43 | // | |
44 | #include "AliCaloCalibPedestal.h" | |
45 | ||
46 | /* | |
47 | Main routine, EMC pedestal detector algorithm to be run on EMC LDC | |
48 | Arguments: list of DATE raw data files | |
49 | */ | |
50 | ||
51 | int main(int argc, char **argv) { | |
52 | ||
53 | AliLog::SetClassDebugLevel("AliCaloRawStream",-5); | |
54 | AliLog::SetClassDebugLevel("AliRawReaderDate",-5); | |
55 | AliLog::SetModuleDebugLevel("RAW",-5); | |
56 | ||
57 | if (argc<2) { | |
58 | printf("Wrong number of arguments\n"); | |
59 | return -1; | |
60 | } | |
61 | ||
62 | int i, status; | |
63 | ||
64 | /* log start of process */ | |
65 | printf("EMCAL DA started - %s\n",__FILE__); | |
66 | ||
67 | /* declare monitoring program */ | |
68 | status=monitorDeclareMp( __FILE__ ); | |
69 | if (status!=0) { | |
70 | printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(status)); | |
71 | return -1; | |
72 | } | |
73 | ||
74 | AliCaloCalibPedestal * calibPedestal = new | |
75 | AliCaloCalibPedestal(AliCaloCalibPedestal::kEmCal); // pedestal and noise calibration | |
76 | ||
77 | /* loop over RAW data files */ | |
78 | int nevents=0; | |
79 | for ( i=1; i<argc; i++ ) { | |
80 | ||
81 | /* define data source : this is argument i */ | |
82 | printf("Processing file %s\n", argv[i]); | |
83 | ||
84 | AliRawReader *rawReader = new AliRawReaderDate(argv[i]); | |
85 | AliCaloRawStream *in = new AliCaloRawStream(rawReader,"EMCAL"); | |
86 | in->SetOldRCUFormat(kTRUE); | |
87 | AliRawEventHeaderBase *aliHeader=NULL; | |
88 | ||
89 | /* read until EOF */ | |
90 | while ( rawReader->NextEvent() ) { | |
91 | ||
92 | /* check shutdown condition */ | |
93 | if (daqDA_checkShutdown()) {break;} | |
94 | ||
95 | aliHeader = (AliRawEventHeaderBase*) rawReader->GetEventHeader(); | |
96 | calibPedestal->SetRunNumber( aliHeader->Get("RunNb") ); // just for fun; keep info on last run looked at | |
97 | ||
98 | // select physics and calibration events now (only calibration in future) | |
99 | if ( aliHeader->Get("Type") == AliRawEventHeaderBase::kPhysicsEvent || | |
100 | aliHeader->Get("Type") == AliRawEventHeaderBase::kCalibrationEvent ) { | |
101 | ||
102 | nevents++; | |
103 | ||
104 | // Pedestal calibration | |
105 | calibPedestal->ProcessEvent(in); | |
106 | } | |
107 | } // loop over all events in file | |
108 | /* cleanup the reading handles */ | |
109 | delete in; | |
110 | delete rawReader; | |
111 | } // loop over files | |
112 | ||
113 | // | |
114 | // write results/histograms to rootfile | |
115 | // | |
116 | ||
117 | printf ("%d physics/calibration events processed.\n",nevents); | |
118 | calibPedestal->SaveHistograms(RESULT_FILE); | |
119 | printf("Wrote %s.\n",RESULT_FILE); | |
120 | ||
121 | /* store the result file on FES */ | |
122 | status = daqDA_FES_storeFile(RESULT_FILE, FILE_ID); | |
123 | ||
124 | // see if we can delete our analysis helper also | |
125 | delete calibPedestal; | |
126 | ||
127 | return status; | |
128 | } |