]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSPreprocessorSDD.cxx
Partial removal of coding convention violations (A. Dainese)
[u/mrichter/AliRoot.git] / ITS / AliITSPreprocessorSDD.cxx
1 /////////////////////////////////////////
2 // Class for SDD digits preprocessing  //
3 //                                     //
4 //                                     //
5 ////////////////////////////////////////
6
7 /* $Id$ */
8
9 #include "AliITSPreprocessorSDD.h"
10 #include "AliITSCalibrationSDD.h"
11 #include "AliShuttleInterface.h"
12 #include "AliCDBMetaData.h"
13 #include "TObjArray.h"
14 #include "AliLog.h"
15 #include <TObjString.h>
16 #include <TSystem.h>
17 #include <TList.h>
18
19 const Int_t AliITSPreprocessorSDD::fgkNumberOfSDD = 260;
20 const Int_t AliITSPreprocessorSDD::fgkNumberOfChannels = 512;
21 const Int_t AliITSPreprocessorSDD::fgkNumberOfChannelsPerChip = 64;
22 const TString AliITSPreprocessorSDD::fgkNameHistoPedestals = "hpedestal";
23 const TString AliITSPreprocessorSDD::fgkNameHistoNoise = "hnoise";
24 ClassImp(AliITSPreprocessorSDD)
25
26
27 UInt_t AliITSPreprocessorSDD::Process(TMap*/* dcsAliasMap*/){
28
29   //preprocessing. 
30
31   TObjArray respSDD(fgkNumberOfSDD);
32   respSDD.SetOwner(kFALSE);
33   Float_t baseline,rawnoise,cmn,gain;
34   Int_t isgoodan,i,im,is,isgoodmod;
35   Int_t numOfBadChannels[fgkNumberOfSDD];
36   //TString pwd = gSystem->pwd();
37 //  const Char_t* tempDir=AliShuttleInterface::GetShuttleTempDir();
38   
39   TList* sourceList = GetFileSources(kDAQ, "SDD_Calib");
40   if (!sourceList){ 
41     Log("Error: no sources found for SDD_Calib");
42     return 2;
43   }
44
45   Int_t ind = 0;
46   Char_t command[100];
47   while (sourceList->At(ind)!=NULL) {
48     TObjString* tarId = (TObjString*) sourceList->At(ind);
49     TString tarName = GetFile(kDAQ, "SDD_Calib", tarId->GetString().Data());
50 //    gSystem->cd(tempDir);
51     if(tarName.Length()==0){
52       Log(Form("Baseline tar file from source %d not found.",ind));
53       return 2;
54     }
55     sprintf(command,"tar -xf %s",tarName.Data());
56     gSystem->Exec(command);
57     ind++;
58   }
59    
60   sourceList = GetFileSources(kDAQ, "SDD_Injec");
61   if (!sourceList){ 
62     Log("Error: no sources found for SDD_Injec");
63     return 2;
64   }
65
66   ind = 0;
67   while (sourceList->At(ind)!=NULL) {
68    TObjString* tarId = (TObjString*) sourceList->At(ind);
69    TString tarName = GetFile(kDAQ, "SDD_Injec", tarId->GetString().Data());
70 //    gSystem->cd(tempDir);
71     if(tarName.Length()==0){
72       Log(Form("Injector tar file from source %d not found.",ind));
73       return 2;
74     }
75     sprintf(command,"tar -xf %s",tarName.Data());
76     gSystem->Exec(command);
77     ind++;
78   }
79   
80   delete sourceList;
81
82   for(Int_t imod=0;imod<fgkNumberOfSDD;imod++){
83     AliITSCalibrationSDD *cal = new AliITSCalibrationSDD("simulated");
84     numOfBadChannels[imod]=0;
85     Int_t badch[fgkNumberOfChannels];
86     for(Int_t isid=0;isid<=1;isid++){
87       Char_t basFileName[100];
88 //      sprintf(basFileName,"%s/SDDbase_mod%03d_sid%d.data",tempDir,imod,isid);
89       sprintf(basFileName,"./SDDbase_mod%03d_sid%d.data",imod,isid);
90       FILE* basFil = fopen(basFileName,"read");
91       if (basFil == 0) {
92         Log(Form("File %s not found.",basFileName));
93         return 2;
94       }      
95       fscanf(basFil,"%d %d %d\n",&im,&is,&isgoodmod);
96       if(!isgoodmod) cal->SetDead();
97       for(Int_t ian=0;ian<(fgkNumberOfChannels/2);ian++){
98         fscanf(basFil,"%d %d %f %f %f %f\n",&i,&isgoodan,&baseline,&rawnoise,&cmn,&gain);
99         Int_t ich=ian;
100         if(isid==1) ich+=256;
101         if(!isgoodan){ 
102           Int_t ibad=numOfBadChannels[imod];
103           numOfBadChannels[imod]++;
104           badch[ibad]=ich;
105         }
106         cal->SetBaseline(ich,baseline);
107         cal->SetNoiseAfterElectronics(ich,rawnoise);
108         Int_t iChip=ian/fgkNumberOfChannelsPerChip;
109         Int_t iChInChip=ian%fgkNumberOfChannelsPerChip;
110         cal->SetGain(gain,isid,iChip,iChInChip);
111       }
112       cal->SetDeadChannels(numOfBadChannels[imod]);
113       for(Int_t ibad=0;ibad<numOfBadChannels[imod];ibad++){
114         cal->SetBadChannel(ibad,badch[ibad]);
115       }
116       fclose(basFil);
117
118       Char_t injFileName[100];
119       Int_t evNumb; 
120       UInt_t timeStamp;
121       Float_t param[4];
122       sprintf(injFileName,"./SDDinj_mod%03d_sid%d.data",imod,isid);
123       FILE* injFil = fopen(injFileName,"read");
124       if (injFil == 0) {
125         Log(Form("File %s not found.",basFileName));
126         return 2;
127       }      
128       while (!feof(injFil)){
129         fscanf(injFil,"%d %d",&evNumb,&timeStamp);
130         if(feof(injFil)) break;
131         for(Int_t ic=0;ic<4;ic++) fscanf(injFil,"%f",&param[ic]);
132         cal->SetDriftSpeedParam(isid,param);
133       }
134     }
135     respSDD.Add(cal);
136   }
137
138   AliCDBMetaData *md1= new AliCDBMetaData(); // metaData describing the object
139   md1->SetObjectClassName("AliITSCalibration");
140   md1->SetResponsible("Elisabetta Crescio, Francesco Prino");
141   md1->SetBeamPeriod(0);
142   md1->SetAliRootVersion("head 5 April 2007"); //root version
143   md1->SetComment("This is a test");
144
145   Bool_t retcode = Store("Calib","CalibSDD",&respSDD,md1, 0, kTRUE);
146
147   if(retcode) return 0;
148   else return 1;
149 }