]>
Commit | Line | Data |
---|---|---|
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 | ||
10 | using namespace std; | |
11 | ||
12 | Bool_t GetRunSettings (const char *datafilename, Long_t &eventsnumber, Long_t &stripsnumber); | |
13 | ||
14 | int 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 | ||
94 | Bool_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 | } |