2 EMCAL DA for online calibration
4 Contact: silvermy@ornl.gov
5 Run Type: PHYSICS or STANDALONE
7 Number of events needed: ~1000
8 Input Files: argument list
9 Output Files: RESULT_FILE=EMCALCalibSignal.root, to be exported to the DAQ FXS
10 fileId: FILE_ID=EMCALCalibSignal
11 Trigger types used: CALIBRATION_EVENT (temporarily also PHYSICS_EVENT to start with)
15 This process reads RAW data from the files provided as command line arguments
16 and save results (class itself) in a file (named from RESULT_FILE define - see below).
19 #define RESULT_FILE "EMCALCalibSignal.root"
20 #define FILE_ID "EMCALCalibSignal"
21 #define AliDebugLevel() -1
22 #define FILE_ClassName "emcCalibSignal"
36 #include "AliRawReader.h"
37 #include "AliRawReaderDate.h"
38 #include "AliRawEventHeaderBase.h"
39 #include "AliCaloRawStream.h"
43 // EMC calibration-helper algorithm includes
45 #include "AliCaloCalibSignal.h"
46 #include <TFile.h> // ROOT
49 Main routine, EMC signal detector algorithm to be run on EMC LDC
50 Arguments: list of DATE raw data files
53 int main(int argc, char **argv) {
55 AliLog::SetClassDebugLevel("AliCaloRawStream",-5);
56 AliLog::SetClassDebugLevel("AliRawReaderDate",-5);
57 AliLog::SetModuleDebugLevel("RAW",-5);
60 printf("Wrong number of arguments\n");
66 /* log start of process */
67 printf("EMCAL DA started - %s\n",__FILE__);
69 /* declare monitoring program */
70 status=monitorDeclareMp( __FILE__ );
72 printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(status));
76 AliCaloCalibSignal * calibSignal = new
77 AliCaloCalibSignal(AliCaloCalibSignal::kEmCal); // signal and noise calibration
79 /* loop over RAW data files */
81 for ( i=1; i<argc; i++ ) {
83 /* define data source : this is argument i */
84 printf("Processing file %s\n", argv[i]);
86 AliRawReader *rawReader = new AliRawReaderDate(argv[i]);
87 AliCaloRawStream *in = new AliCaloRawStream(rawReader,"EMCAL");
88 AliRawEventHeaderBase *aliHeader=NULL;
91 while ( rawReader->NextEvent() ) {
93 /* check shutdown condition */
94 if (daqDA_checkShutdown()) {break;}
96 aliHeader = (AliRawEventHeaderBase*) rawReader->GetEventHeader();
97 calibSignal->SetRunNumber( aliHeader->Get("RunNb") ); // just for fun; keep info on last run looked at
99 // select physics and calibration events now (only calibration in future)
100 if ( aliHeader->Get("Type") == AliRawEventHeaderBase::kPhysicsEvent ||
101 aliHeader->Get("Type") == AliRawEventHeaderBase::kCalibrationEvent ) {
105 // Signal calibration
106 calibSignal->ProcessEvent(in, aliHeader);
108 } // loop over all events in file
109 /* cleanup the reading handles */
115 // write class to rootfile
118 printf ("%d physics/calibration events processed.\n",nevents);
120 TFile f(RESULT_FILE, "recreate");
123 calibSignal->Write(FILE_ClassName);
125 printf("Object saved to file \"%s\" as \"%s\".\n", RESULT_FILE, FILE_ClassName);
128 printf("Could not save the object to file \"%s\".\n", RESULT_FILE);
131 /* store the result file on FES */
132 status = daqDA_FES_storeFile(RESULT_FILE, FILE_ID);
134 // see if we can delete our analysis helper also