]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/ITSSSDPEDda.cxx
Fixes for some mem-leaks: most changes where pretty basic (i.e. adding deletes).
[u/mrichter/AliRoot.git] / ITS / ITSSSDPEDda.cxx
CommitLineData
f67db810 1
2#include <iostream>
3#include <sstream>
4#include <string>
5#include "TFile.h"
6#include "daqDA.h"
7//#include "AliITSChannelDaSSD.h"
8#include "AliITSHandleDaSSD.h"
9
10using namespace std;
11
12Bool_t GetRunSettings (const char *datafilename, Long_t &eventsnumber, Long_t &stripsnumber);
13
14int main( int argc, char** argv )
15{
16 AliITSHandleDaSSD *ssddaldc;
17 ostringstream feefname;
18 Int_t status;
19 string dafname;
20 Char_t *dadaqdir = NULL;
21
22 /* check that we got some arguments = list of files */
23 if (argc<2) {
24 printf("Wrong number of arguments\n");
25 return -1;
26 }
27
28 char *datafilename = argv[1];
29
30 Long_t strn, evn;
31 if (!GetRunSettings (datafilename, evn, strn))
32 {
33 cout << "Error GetRunSettings (datafilename, evn, strn)!" << endl;
34 return -1;
35 }
36 cout << "Pysics events : " << evn << "; Total strip number : " << strn
37 << "; Modules number: " << strn / AliITSModuleDaSSD::GetStripsPerModuleConst() << endl;
38
39 ssddaldc = new AliITSHandleDaSSD();
40// if (!ssddaldc->SetNumberOfModules((Int_t)(strn / AliITSModuleDaSSD::GetStripsPerModuleConst())))
41 if (!ssddaldc->SetNumberOfModules(AliITSHandleDaSSD::GetNumberOfSSDModulesConst()))
42 {
43 cout << "Error ssddaldc->SetNumberOfModules" << endl;
44 delete ssddaldc;
45 return -1;
46 }
47 if (!ssddaldc->ReadCalibrationDataFile(datafilename, evn))
48 {
49 cout << "Error !ssddaldc->ReadCalibrationDataFile" << endl;
50 delete ssddaldc;
51 return -1;
52 }
53 daqDA_progressReport(30);
54// if (daqDA_checkShutdown() == 1) {
55// cout << "Shutdown has been requested!" << endl;
56// delete ssddaldc;
57// return -1;
58// }
59
60 if (!ssddaldc->CalculatePedestal()) {
61 cout << "Error, ssddaldc->CalculatePedestal()";
62 return 1;
63 }
64 daqDA_progressReport(50);
65 if (!ssddaldc->CalculateNoiseCM()) {
66 cout << "Error, ssddaldc->CalculateNoiseCM()";
67 return 2;
68 }
69 ssddaldc->DeleteSignal();
70 daqDA_progressReport(90);
71 dadaqdir = getenv ("DAQDA_TEST_DIR");
72 if (dadaqdir) {
73 dafname = dadaqdir;
74 if (!(ssddaldc->SaveCalibrationSSDLDC(dafname)))
75 cout << "Error saving DA data to the file! Probably $DAQDA_TEST_DIR defined incorrectly!" << endl;
76 else cout << "SSDDA data are saved in " << dafname << endl;
77 feefname << dadaqdir << "/ssddaldc.root";
78 cout << "Saving feessdda data in " << feefname.str() << endl;
79 TFile *fileRun = new TFile (feefname.str().data(),"RECREATE");
80 ssddaldc->Write();
81 fileRun->Close();
82 delete fileRun;
83 status = daqDA_FES_storeFile(dafname.data(),"DASSD_DB_results");
84 if (status) printf("Failed to export file : %d\n",status);
85 }
86 else cout << "Error: DAQDA_TEST_DIR is not defined, DA data are not saved!" << endl;
87 delete ssddaldc;
88 daqDA_progressReport(100);
89 return 0;
90}
91
92
93
94Bool_t GetRunSettings (const char *datafilename, Long_t &eventsnumber, Long_t &stripsnumber)
95{
96 Long_t physeventind = 0, strn = 0, strneq = 0;
97 AliRawReaderDate *rawreaderdate = NULL;
98 Int_t *data = NULL;
99 Long_t datasize = 0, eqdatasize = 0, eqbelsize = 1;
100 rawreaderdate = new AliRawReaderDate(datafilename, 0);
101 if (!rawreaderdate) {
102 cout << "GetRunSettings : Error new DARawReader(datafilename, 0);" << endl;
103 return kFALSE;
104 }
105 rawreaderdate->SelectEvents(PHYSICS_EVENT);
106 while (rawreaderdate->NextEvent())
107 {
108 physeventind += 1;
109 datasize = 0;
110 strn = 0;
111 while (rawreaderdate->ReadNextData((UChar_t*&)data)) {
112 eqdatasize = rawreaderdate->GetDataSize();
113 eqbelsize = rawreaderdate->GetEquipmentElementSize();
114 if ( (eqdatasize % eqbelsize) || (eqbelsize != sizeof(long32)) ) {
115 cout << "Error ReadCalibrationDataFile: equipment event data size " << eqdatasize
116 << " is not an integer of equipment data size " << eqbelsize << endl;
117 rawreaderdate->DumpData();
118 return kFALSE;
119 }
120 strneq = eqdatasize / eqbelsize;
121 datasize += eqdatasize;
122 strn += strneq;
123 }
124 if ((strn * eqbelsize != datasize)) {
125 if (physeventind != 1) {
126 cout << "Something is wrong with data file, strip number changes from event to event! Ev = " << physeventind << endl;
127 rawreaderdate->DumpData();
128 return kFALSE;
129 }
130 if ((datasize % eqbelsize)) {
131 cout << "Wrong number : (datasize % eqbelsize) != 0" << endl;
132 rawreaderdate->DumpData();
133 return kFALSE;
134 }
135 strneq = datasize / eqbelsize;
136 }
137 }
138 delete rawreaderdate;
139 if ((physeventind > 0) && (strn > 0))
140 {
141 eventsnumber = physeventind;
142 stripsnumber = strn;
143 return kTRUE;
144 }
145 return kFALSE;
146}