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