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