1 #if !defined(__CINT__) || defined(__MAKECINT__)
5 #include "AliITSGainSSDv2.h"
6 #include "AliCDBEntry.h"
7 #include "AliCDBManager.h"
8 #include "AliCDBMetaData.h"
10 Int_t GainCalibration(AliCDBManager * man, Float_t* gainP, Float_t* gainN)
12 const Int_t fgkSSDMODULES = 1698;
13 static const Int_t fgkDefaultNStripsSSD = 768;
14 AliITSGainSSDv2 *gainSSD = new AliITSGainSSDv2();
15 AliCDBEntry *entryGainSSD = man->Get("ITS/Calib/GainSSD");
16 TObject *empty = (TObject *)entryGainSSD->GetObject();
17 TString objectname = empty->GetName();
18 if(objectname=="AliITSGainSSDv2")
20 cout<<"Reading the new format of the calibration file..."<<endl;
21 gainSSD = (AliITSGainSSDv2 *)entryGainSSD->GetObject();
25 cout<<"Now OCDB object"<<endl;
28 for (Int_t i = 0; i < fgkSSDMODULES; i++)
30 //for (Int_t i = 0; i < 1; i++) {
31 //AliITSgeomTGeo::GetModuleId(i+500,layer,ladder,module);
32 for(Int_t j = 0; j < fgkDefaultNStripsSSD; j++)
34 gainP[i*fgkDefaultNStripsSSD+j] = gainSSD->GetGainP(i,j);
35 gainN[i*fgkDefaultNStripsSSD+j]= gainSSD->GetGainN(i,j);
43 void UpdateSSDGainOCDB(TString gainfile,Float_t globalMPV=84.0,const char* type = "alien", Int_t runNumber = 0, Int_t runRangemin=0 ,Int_t runRangemax= AliCDBRunRange::Infinity())
45 if((runRangemax<runRangemin))
47 cout<<"wrong run range "<<endl;
50 const Int_t fgkPNStripsPerModule = 768;
51 const Int_t fgkNumberOfSSDModules = 1698;
52 Float_t gainPold[fgkPNStripsPerModule* fgkNumberOfSSDModules];
53 Float_t gainNold[fgkPNStripsPerModule* fgkNumberOfSSDModules];
55 for(int i=0;i<fgkPNStripsPerModule* fgkNumberOfSSDModules;i++)
62 AliCDBManager * man = AliCDBManager::Instance();
64 man->SetDefaultStorage("alien://folder=/alice/data/2010/OCDB/");
65 else if(gType == "local")
66 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
69 cout<<"Allowed types: local or alien!!!"<<endl;
72 man->SetRun(runNumber);
73 if(!GainCalibration(man,gainPold,gainNold))
77 ifstream ingainfile(gainfile);
78 if(!ingainfile.good())
82 ingainfile.getline(buffer,256);
94 for(int jj=0;jj<1698;jj++)
103 corrP[module]=gainP*globalMPV/fMPV;
104 corrN[module]=gainN*globalMPV/fMPV;
116 TObjArray *array = new TObjArray();
117 array->SetName("Gain");
119 mc = new AliITSGainSSDv2();
120 for(Int_t mind = 0; mind < fgkNumberOfSSDModules; mind++)
122 for (Int_t i = 0; i < fgkPNStripsPerModule; i++)
124 mc->AddGainP(mind,i, gainPold[mind* fgkPNStripsPerModule+i]*corrP[mind]);
125 mc->AddGainN(mind,i,gainNold[mind* fgkPNStripsPerModule+i]*corrN[mind]);
129 man = AliCDBManager::Instance();
130 man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
132 //AliCDBId id("ITS/Calib/GainSSD",0,AliCDBRunRange::Infinity());
133 AliCDBId id("ITS/Calib/GainSSD",runRangemin,runRangemax);
134 AliCDBMetaData *metadata= new AliCDBMetaData();
135 metadata->SetResponsible("Marek.Chojnacki@cern.ch");
136 metadata->SetComment("Default values for the SSD gain calibration");
137 //man->Put(array,id,metadata);
138 man->Put(mc,id,metadata);
139 TFile* fout=TFile::Open("AliITSGainSSD_new.root","recreate");