]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSPreprocessorSDD.cxx
Updates concerning the geometry: versioning system, new V11hybrid version, bug fixes...
[u/mrichter/AliRoot.git] / ITS / AliITSPreprocessorSDD.cxx
1 /////////////////////////////////////////
2 // Class for SDD digits preprocessing  //
3 //                                     //
4 //                                     //
5 ////////////////////////////////////////
6
7 #include "AliITSPreprocessorSDD.h"
8 #include "AliITSCalibrationSDD.h"
9 #include "AliShuttleInterface.h"
10 #include "AliCDBMetaData.h"
11 #include "TObjArray.h"
12 #include "AliLog.h"
13 #include <TObjString.h>
14 #include <TSystem.h>
15 #include <TList.h>
16
17 const Int_t AliITSPreprocessorSDD::fgkNumberOfSDD = 260;
18 const Int_t AliITSPreprocessorSDD::fgkNumberOfChannels = 512;
19 const Int_t AliITSPreprocessorSDD::fgkNumberOfChannelsPerChip = 64;
20 const TString AliITSPreprocessorSDD::fgkNameHistoPedestals = "hpedestal";
21 const TString AliITSPreprocessorSDD::fgkNameHistoNoise = "hnoise";
22 ClassImp(AliITSPreprocessorSDD)
23
24
25 UInt_t AliITSPreprocessorSDD::Process(TMap*/* dcsAliasMap*/){
26
27   //preprocessing. 
28
29   TObjArray respSDD(fgkNumberOfSDD);
30   respSDD.SetOwner(kFALSE);
31   Float_t baseline,rawnoise,cmn,gain;
32   Int_t isgoodan,i,im,is,isgoodmod;
33   Int_t numOfBadChannels[fgkNumberOfSDD];
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
56   for(Int_t imod=0;imod<fgkNumberOfSDD;imod++){
57     AliITSCalibrationSDD *cal = new AliITSCalibrationSDD("simulated");
58     numOfBadChannels[imod]=0;
59     Int_t badch[fgkNumberOfChannels];
60     for(Int_t isid=0;isid<=1;isid++){
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);
69       if(!isgoodmod) cal->SetDead();
70       for(Int_t ian=0;ian<(fgkNumberOfChannels/2);ian++){
71         fscanf(basFil,"%d %d %f %f %f %f\n",&i,&isgoodan,&baseline,&rawnoise,&cmn,&gain);
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);
80         cal->SetNoiseAfterElectronics(ich,rawnoise);
81         Int_t iChip=ian/fgkNumberOfChannelsPerChip;
82         Int_t iChInChip=ian%fgkNumberOfChannelsPerChip;
83         cal->SetGain(gain,isid,iChip,iChInChip);
84       }
85       cal->SetDeadChannels(numOfBadChannels[imod]);
86       for(Int_t ibad=0;ibad<numOfBadChannels[imod];ibad++){
87         cal->SetBadChannel(ibad,badch[ibad]);
88       }
89       fclose(basFil);
90     }
91     respSDD.Add(cal);
92   }
93
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");
100
101   Bool_t retcode = Store("Calib","CalibSDD",&respSDD,md1, 0, kTRUE);
102
103   if(retcode) return 0;
104   else return 1;
105 }