]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/ITSSSDPEDda.cxx
Handling of static DDL maps (S. Borysov)
[u/mrichter/AliRoot.git] / ITS / ITSSSDPEDda.cxx
1 /**************************************************************************
2 - Contact: Oleksandr_Borysov aborysov@ts.infnf.it
3 - Link: /afs/infn.it/ts/user/efragiac/public/testCosm3125.001
4 - Run Type: 
5 - DA Type: LDC
6 - Number of events needed: >=500
7 - Input Files: raw_data_file_on_LDC, ssdddlmap.txt, badchannels.root
8 - Output Files: ./ssddaldc_<LDCID>.root, FXS_name=ITSSSDda_<LDCID>.root 
9                 local files are persistent over runs: data source
10 - Trigger types used:
11  **************************************************************************/
12
13
14 #include <iostream>
15 #include "TString.h"
16 #include "TFile.h"
17 #include "daqDA.h"
18 #include "AliITSHandleDaSSD.h" 
19 #include "TROOT.h"
20 #include "TPluginManager.h"
21
22 using namespace std;
23
24
25 int main( int argc, char** argv )
26 {
27   AliITSHandleDaSSD  *ssddaldc;
28   TString             feefname, fcdbsave, lfname;
29   Int_t               status;
30   Char_t             *dafname = NULL;
31   const Char_t       *bcfname = "badchannels.root";
32   const Char_t       *ddlmfname = "ssdddlmap.txt";
33
34
35    gROOT->GetPluginManager()->AddHandler("TVirtualStreamerInfo",
36                                         "*",
37                                         "TStreamerInfo",
38                                         "RIO",
39                                         "TStreamerInfo()");
40
41
42
43   /* check that we got some arguments = list of files */
44   if (argc<2) {
45     fprintf(stderr, "Wrong number of arguments\n");
46     return -1;
47   }
48
49   char *datafilename = argv[1];
50   ssddaldc = new AliITSHandleDaSSD(datafilename);
51   if (ssddaldc->IsZombie()) return -1;
52
53   lfname.Form("./%s", bcfname);
54   status = daqDA_DB_getFile(bcfname, lfname.Data());
55   if (!status) {
56     if (!ssddaldc->ReadStaticBadChannelsMap(lfname.Data())) cerr << "Error reading static bad channels map " << lfname.Data() << " !\n"; 
57   } else fprintf(stderr, "Failed to import file %s from the detector db: %d, %s \n", bcfname, status, lfname.Data());
58
59   lfname.Form("./%s", ddlmfname);
60   status = daqDA_DB_getFile(ddlmfname, lfname.Data());
61   if (!status) {
62     if (!ssddaldc->ReadDDLModuleMap(lfname.Data())) cerr << "Error reading DDL map from file " << lfname.Data() << " !\n"; 
63   } else {
64     fprintf(stderr, "Failed to import file %s from the detector db: %d, %s \n", bcfname, status, lfname.Data());
65     if (!ssddaldc->ReadDDLModuleMap()) cerr << "Failed to load the DDL map from AliITSRawStreamSSD!\n"; 
66   }    
67
68   if (!ssddaldc->ProcessRawData())
69   {
70      cerr << "Error !ssddaldc->ProcessRawData()" << endl;
71      delete ssddaldc;
72      return -1;
73   }
74   daqDA_progressReport(90);
75
76   dafname = ".";
77   if (ssddaldc->SaveCalibrationSSDLDC(dafname)) {
78     cout << "SSDDA data are saved in " << dafname << endl;
79     status = daqDA_FES_storeFile(dafname, "CALIBRATION");
80     if (status) fprintf(stderr, "Failed to export file : %d\n", status);
81   } else cerr << "Error saving DA data to the file! Probably $DA_TEST_DIR defined incorrectly!" << endl;
82
83   feefname.Form("%s/ssddaldc_%i.root", ".", ssddaldc->GetLdcId());
84   cout << "Saving feessdda data in " << feefname << endl;
85   TFile *fileRun = new TFile (feefname.Data(),"RECREATE");
86   if (fileRun->IsZombie()) {
87     cerr << "Error open file " << feefname << endl;
88     delete ssddaldc;
89     delete fileRun;
90     return 2;
91   }  
92   ssddaldc->Write();
93   fileRun->Close();
94   delete fileRun;
95
96   fcdbsave.Form("ssddaldc_%i.root", ssddaldc->GetLdcId());
97   status = daqDA_DB_storeFile(feefname.Data(), fcdbsave.Data());
98   if (status) fprintf(stderr, "Failed to export file %s to the detector db: %d, %s \n", feefname.Data(), status, fcdbsave.Data());
99
100   delete ssddaldc;
101   daqDA_progressReport(100);
102   return 0;
103 }