]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSPreprocessorSDD.cxx
DA for SDD pedestal runs updated with info for DAQ team (link to test data) and usage...
[u/mrichter/AliRoot.git] / ITS / AliITSPreprocessorSDD.cxx
CommitLineData
e56160b8 1/////////////////////////////////////////
2// Class for SDD digits preprocessing //
7537d03c 3// //
4// //
e56160b8 5////////////////////////////////////////
6
5a9fd7dd 7/* $Id$ */
8
e56160b8 9#include "AliITSPreprocessorSDD.h"
10#include "AliITSCalibrationSDD.h"
18da6e54 11#include "AliITSDriftSpeedSDD.h"
12#include "AliITSDriftSpeedArraySDD.h"
e56160b8 13#include "AliShuttleInterface.h"
14#include "AliCDBMetaData.h"
15#include "TObjArray.h"
e56160b8 16#include "AliLog.h"
dfb8947f 17#include <TObjString.h>
18#include <TSystem.h>
19#include <TList.h>
e56160b8 20
21const Int_t AliITSPreprocessorSDD::fgkNumberOfSDD = 260;
22const Int_t AliITSPreprocessorSDD::fgkNumberOfChannels = 512;
7537d03c 23const TString AliITSPreprocessorSDD::fgkNameHistoPedestals = "hpedestal";
24const TString AliITSPreprocessorSDD::fgkNameHistoNoise = "hnoise";
e56160b8 25ClassImp(AliITSPreprocessorSDD)
26
27
28UInt_t AliITSPreprocessorSDD::Process(TMap*/* dcsAliasMap*/){
29
30 //preprocessing.
31
18da6e54 32 TString runType = GetRunType();
33 Bool_t retcode;
c2bd28b6 34 Char_t command[100];
18da6e54 35 Char_t inpFileName[100];
36 AliCDBMetaData *md1= new AliCDBMetaData();
37 md1->SetResponsible("Elisabetta Crescio, Francesco Prino");
38 md1->SetBeamPeriod(0);
39 md1->SetAliRootVersion("head 30 November 2007"); //root version
40 md1->SetComment("This is a test");
c2bd28b6 41
18da6e54 42 if (runType == "PULSER_RUN"){
43 TObjArray calSDD(fgkNumberOfSDD);
44 calSDD.SetOwner(kFALSE);
45 Float_t baseline,rawnoise,cmn,corn,gain;
af066a8f 46 Int_t isgoodan,i,im,is,isgoodmod,basmin,basoff;
18da6e54 47 Int_t numOfBadChannels[fgkNumberOfSDD];
48
49 TList* sourceList = GetFileSources(kDAQ, "SDD_Calib");
50 if (!sourceList){
51 Log("Error: no sources found for SDD_Calib");
ba541030 52 return 2;
53 }
dfb8947f 54
18da6e54 55 Int_t ind = 0;
56 while (sourceList->At(ind)!=NULL) {
57 TObjString* tarId = (TObjString*) sourceList->At(ind);
58 TString tarName = GetFile(kDAQ, "SDD_Calib", tarId->GetString().Data());
59 if(tarName.Length()==0){
60 Log(Form("Baseline tar file from source %d not found.",ind));
dfb8947f 61 return 2;
afa07040 62 }
18da6e54 63 sprintf(command,"tar -xf %s",tarName.Data());
64 gSystem->Exec(command);
65 ind++;
66 }
67 delete sourceList;
c2bd28b6 68
18da6e54 69 for(Int_t imod=0;imod<fgkNumberOfSDD;imod++){
70 AliITSCalibrationSDD *cal = new AliITSCalibrationSDD("simulated");
71 numOfBadChannels[imod]=0;
72 Int_t badch[fgkNumberOfChannels];
73 for(Int_t isid=0;isid<=1;isid++){
74 sprintf(inpFileName,"./SDDbase_mod%03d_sid%d.data",imod,isid);
75 FILE* basFil = fopen(inpFileName,"read");
76 if (basFil == 0) {
77 Log(Form("File %s not found.",inpFileName));
78 return 2;
79 }
80 fscanf(basFil,"%d %d %d\n",&im,&is,&isgoodmod);
81 if(!isgoodmod) cal->SetDead();
82 for(Int_t ian=0;ian<(fgkNumberOfChannels/2);ian++){
af066a8f 83 fscanf(basFil,"%d %d %f %d %d %f %f %f %f\n",&i,&isgoodan,&baseline,&basmin,&basoff,&rawnoise,&cmn,&corn,&gain);
18da6e54 84 Int_t ich=ian;
85 if(isid==1) ich+=256;
86 if(!isgoodan){
87 Int_t ibad=numOfBadChannels[imod];
88 numOfBadChannels[imod]++;
89 badch[ibad]=ich;
90 }
91 cal->SetBaseline(ich,baseline);
92 cal->SetNoiseAfterElectronics(ich,rawnoise);
93 Int_t iChip=cal->GetChip(ich);
94 Int_t iChInChip=cal->GetChipChannel(ich);
95 cal->SetGain(gain,isid,iChip,iChInChip);
96 }
97 cal->SetDeadChannels(numOfBadChannels[imod]);
98 for(Int_t ibad=0;ibad<numOfBadChannels[imod];ibad++){
99 cal->SetBadChannel(ibad,badch[ibad]);
100 }
101 fclose(basFil);
c2bd28b6 102 }
18da6e54 103 calSDD.Add(cal);
e56160b8 104 }
18da6e54 105 md1->SetObjectClassName("AliITSCalibration");
106 retcode = Store("Calib","CalibSDD",&calSDD,md1, 0, kTRUE);
107 }else if(runType == "PHYSICS"){
e56160b8 108
18da6e54 109 TObjArray vdrift(2*fgkNumberOfSDD);
110 vdrift.SetOwner(kFALSE);
111 Int_t evNumb,polDeg;
112 UInt_t timeStamp;
113 Float_t param[4];
e56160b8 114
18da6e54 115 TList* sourceList = GetFileSources(kDAQ, "SDD_Injec");
116 if (!sourceList){
117 Log("Error: no sources found for SDD_Injec");
118 return 2;
119 }
120 Int_t ind = 0;
121 while (sourceList->At(ind)!=NULL) {
122 TObjString* tarId = (TObjString*) sourceList->At(ind);
123 TString tarName = GetFile(kDAQ, "SDD_Injec", tarId->GetString().Data());
124 if(tarName.Length()==0){
125 Log(Form("Injector tar file from source %d not found.",ind));
126 return 2;
127 }
128 sprintf(command,"tar -xf %s",tarName.Data());
129 gSystem->Exec(command);
130 ind++;
131 }
132 delete sourceList;
e56160b8 133
18da6e54 134 for(Int_t imod=0;imod<fgkNumberOfSDD;imod++){
135 for(Int_t isid=0;isid<=1;isid++){
136 AliITSDriftSpeedArraySDD *arr=new AliITSDriftSpeedArraySDD();
137 sprintf(inpFileName,"./SDDinj_mod%03d_sid%d.data",imod,isid);
138 FILE* injFil = fopen(inpFileName,"read");
139 if (injFil == 0) {
140 Log(Form("File %s not found.",inpFileName));
141 return 2;
142 }
143 fscanf(injFil,"%d",&polDeg);
144 while (!feof(injFil)){
145 fscanf(injFil,"%d %d",&evNumb,&timeStamp);
146 if(feof(injFil)) break;
147 for(Int_t ic=0;ic<4;ic++) fscanf(injFil,"%f",&param[ic]);
148 AliITSDriftSpeedSDD *dsp=new AliITSDriftSpeedSDD(evNumb,timeStamp,polDeg,param);
149 arr->AddDriftSpeed(dsp);
150 }
151 vdrift.Add(arr);
152 }
153 }
154 md1->SetObjectClassName("AliITSDriftSpeedArraySDD");
155 retcode = Store("Calib","DriftSpeedSDD",&vdrift,md1,0, kTRUE);
156 }else{
157 // do nothing for other run types
158 retcode=1;
159 }
afa07040 160 if(retcode) return 0;
161 else return 1;
e56160b8 162}