]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSPreprocessorSDD.cxx
hopefully the last refinements for correct type conversion in calibration
[u/mrichter/AliRoot.git] / ITS / AliITSPreprocessorSDD.cxx
CommitLineData
e56160b8 1/////////////////////////////////////////
2// Class for SDD digits preprocessing //
7537d03c 3// //
4// //
e56160b8 5////////////////////////////////////////
6
7#include "AliITSPreprocessorSDD.h"
8#include "AliITSCalibrationSDD.h"
9#include "AliShuttleInterface.h"
10#include "AliCDBMetaData.h"
11#include "TObjArray.h"
e56160b8 12#include "AliLog.h"
dfb8947f 13#include <TObjString.h>
14#include <TSystem.h>
15#include <TList.h>
e56160b8 16
17const Int_t AliITSPreprocessorSDD::fgkNumberOfSDD = 260;
18const Int_t AliITSPreprocessorSDD::fgkNumberOfChannels = 512;
dfb8947f 19const Int_t AliITSPreprocessorSDD::fgkNumberOfChannelsPerChip = 64;
7537d03c 20const TString AliITSPreprocessorSDD::fgkNameHistoPedestals = "hpedestal";
21const TString AliITSPreprocessorSDD::fgkNameHistoNoise = "hnoise";
e56160b8 22ClassImp(AliITSPreprocessorSDD)
23
24
25UInt_t AliITSPreprocessorSDD::Process(TMap*/* dcsAliasMap*/){
26
27 //preprocessing.
28
afa07040 29 TObjArray respSDD(fgkNumberOfSDD);
e56160b8 30 respSDD.SetOwner(kFALSE);
afa07040 31 Float_t baseline,rawnoise,cmn,gain;
32 Int_t isgoodan,i,im,is,isgoodmod;
33 Int_t numOfBadChannels[fgkNumberOfSDD];
dfb8947f 34 //TString pwd = gSystem->pwd();
35 const Char_t* tempDir=AliShuttleInterface::GetShuttleTempDir();
36
37 TList* sourceList = GetFileSources(kDAQ, "SDD_Calib");
38 if (!sourceList){
39 Log("Error: no sources found for SDD_Calib");
40 return 2;
41 }
42
43 Int_t ind = 0;
44 while (sourceList->At(ind)!=NULL) {
45 TObjString* tarId = (TObjString*) sourceList->At(ind);
46 TString tarName = GetFile(kDAQ, "SDD_Calib", tarId->GetString().Data());
47 gSystem->cd(tempDir);
48 Char_t command[100];
49 sprintf(command,"tar -xf %s",tarName.Data());
50 gSystem->Exec(command);
51 ind++;
52 }
53
54 delete sourceList;
55
e56160b8 56 for(Int_t imod=0;imod<fgkNumberOfSDD;imod++){
57 AliITSCalibrationSDD *cal = new AliITSCalibrationSDD("simulated");
afa07040 58 numOfBadChannels[imod]=0;
59 Int_t badch[fgkNumberOfChannels];
60 for(Int_t isid=0;isid<=1;isid++){
dfb8947f 61 Char_t basFileName[100];
62 sprintf(basFileName,"%s/SDDbase_mod%03d_sid%d.data",tempDir,imod,isid);
63 FILE* basFil = fopen(basFileName,"read");
64 if (basFil == 0) {
65 Log(Form("File %s not found.",basFileName));
66 return 2;
67 }
68 fscanf(basFil,"%d %d %d\n",&im,&is,&isgoodmod);
afa07040 69 if(!isgoodmod) cal->SetDead();
70 for(Int_t ian=0;ian<(fgkNumberOfChannels/2);ian++){
dfb8947f 71 fscanf(basFil,"%d %d %f %f %f %f\n",&i,&isgoodan,&baseline,&rawnoise,&cmn,&gain);
afa07040 72 Int_t ich=ian;
73 if(isid==1) ich+=256;
74 if(!isgoodan){
75 Int_t ibad=numOfBadChannels[imod];
76 numOfBadChannels[imod]++;
77 badch[ibad]=ich;
78 }
79 cal->SetBaseline(ich,baseline);
dfb8947f 80 cal->SetNoiseAfterElectronics(ich,rawnoise);
81 Int_t iChip=ian/fgkNumberOfChannelsPerChip;
82 Int_t iChInChip=ian%fgkNumberOfChannelsPerChip;
83 cal->SetGain(gain,isid,iChip,iChInChip);
afa07040 84 }
85 cal->SetDeadChannels(numOfBadChannels[imod]);
86 for(Int_t ibad=0;ibad<numOfBadChannels[imod];ibad++){
87 cal->SetBadChannel(ibad,badch[ibad]);
88 }
dfb8947f 89 fclose(basFil);
e56160b8 90 }
91 respSDD.Add(cal);
92 }
93
dfb8947f 94 AliCDBMetaData *md1= new AliCDBMetaData(); // metaData describing the object
95 md1->SetObjectClassName("AliITSCalibration");
96 md1->SetResponsible("Elisabetta Crescio, Francesco Prino");
97 md1->SetBeamPeriod(0);
98 md1->SetAliRootVersion("head 5 April 2007"); //root version
99 md1->SetComment("This is a test");
e56160b8 100
dfb8947f 101 Bool_t retcode = Store("Calib","CalibSDD",&respSDD,md1, 0, kTRUE);
e56160b8 102
afa07040 103 if(retcode) return 0;
104 else return 1;
e56160b8 105}