Mark kink daughter as secondary.
[u/mrichter/AliRoot.git] / EMCAL / EMCALSignalda.cxx
CommitLineData
07cc7773 1/*
2 EMCAL DA for online calibration
3
4 Contact: silvermy@ornl.gov
5 Run Type: PHYSICS or STANDALONE
6 DA Type: LDC
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)
12
13*/
14/*
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).
17*/
18
19#define RESULT_FILE "EMCALCalibSignal.root"
20#define FILE_ID "EMCALCalibSignal"
21#define AliDebugLevel() -1
27288fa6 22#define FILE_ClassName "emcCalibSignal"
07cc7773 23
24extern "C" {
25#include <daqDA.h>
26}
27#include "event.h"
28#include "monitor.h"
29
30#include "stdio.h"
31#include "stdlib.h"
32
33//
34//AliRoot includes
35//
36#include "AliRawReader.h"
37#include "AliRawReaderDate.h"
38#include "AliRawEventHeaderBase.h"
39#include "AliCaloRawStream.h"
40#include "AliLog.h"
41
42//
43// EMC calibration-helper algorithm includes
44//
45#include "AliCaloCalibSignal.h"
27288fa6 46#include <TFile.h> // ROOT
07cc7773 47
48/*
49 Main routine, EMC signal detector algorithm to be run on EMC LDC
50 Arguments: list of DATE raw data files
51*/
52
53int main(int argc, char **argv) {
54
55 AliLog::SetClassDebugLevel("AliCaloRawStream",-5);
56 AliLog::SetClassDebugLevel("AliRawReaderDate",-5);
57 AliLog::SetModuleDebugLevel("RAW",-5);
58
59 if (argc<2) {
60 printf("Wrong number of arguments\n");
61 return -1;
62 }
63
64 int i, status;
65
66 /* log start of process */
67 printf("EMCAL DA started - %s\n",__FILE__);
68
69 /* declare monitoring program */
70 status=monitorDeclareMp( __FILE__ );
71 if (status!=0) {
72 printf("monitorDeclareMp() failed : %s\n",monitorDecodeError(status));
73 return -1;
74 }
75
76 AliCaloCalibSignal * calibSignal = new
77 AliCaloCalibSignal(AliCaloCalibSignal::kEmCal); // signal and noise calibration
78
79 /* loop over RAW data files */
80 int nevents=0;
81 for ( i=1; i<argc; i++ ) {
82
83 /* define data source : this is argument i */
84 printf("Processing file %s\n", argv[i]);
85
86 AliRawReader *rawReader = new AliRawReaderDate(argv[i]);
87 AliCaloRawStream *in = new AliCaloRawStream(rawReader,"EMCAL");
88 AliRawEventHeaderBase *aliHeader=NULL;
89
90 /* read until EOF */
91 while ( rawReader->NextEvent() ) {
92
93 /* check shutdown condition */
94 if (daqDA_checkShutdown()) {break;}
95
96 aliHeader = (AliRawEventHeaderBase*) rawReader->GetEventHeader();
07cc7773 97
98 // select physics and calibration events now (only calibration in future)
6441a66e 99 // For running on testbeam files: we don't have any event classifications then: commented out selection with //DS below
100 //DS if ( aliHeader->Get("Type") == AliRawEventHeaderBase::kPhysicsEvent || aliHeader->Get("Type") == AliRawEventHeaderBase::kCalibrationEvent ) {
07cc7773 101
102 nevents++;
103
104 // Signal calibration
27288fa6 105 calibSignal->ProcessEvent(in, aliHeader);
6441a66e 106 //DS } // event selection
07cc7773 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 class to rootfile
115 //
116
117 printf ("%d physics/calibration events processed.\n",nevents);
118
119 TFile f(RESULT_FILE, "recreate");
120 if (!f.IsZombie()) {
121 f.cd();
27288fa6 122 calibSignal->Write(FILE_ClassName);
07cc7773 123 f.Close();
27288fa6 124 printf("Object saved to file \"%s\" as \"%s\".\n", RESULT_FILE, FILE_ClassName);
07cc7773 125 }
126 else {
127 printf("Could not save the object to file \"%s\".\n", RESULT_FILE);
128 }
129
130 /* store the result file on FES */
131 status = daqDA_FES_storeFile(RESULT_FILE, FILE_ID);
132
133 // see if we can delete our analysis helper also
134 delete calibSignal;
135
136 return status;
137}