]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/CalibMacros/CalibEnv.C
Extacting the OCDB in a separate module. The detectors have write permission in the...
[u/mrichter/AliRoot.git] / TPC / CalibMacros / CalibEnv.C
CommitLineData
d47d42ee 1/*
2gSystem->AddIncludePath("-I$ALICE_ROOT/TPC");
e2914767 3
4gSystem->Load("libXrdClient.so");
5gSystem->Load("libNetx.so");
6if (!gGrid) TGrid::Connect("alien://",0,0,"t");
7
8
9.L CalibEnv.C++
d47d42ee 10Init();
e2914767 11CalibEnv("listAll.txt");
e79211e8 12TFile f("dcsTime.root")
d47d42ee 13
e2914767 14
d47d42ee 15*/
16
17#include <iostream>
18#include <fstream>
19#include <AliCDBManager.h>
20#include <AliCDBEntry.h>
21#include <AliLog.h>
22#include <AliMagF.h>
23#include "AliTPCcalibDB.h"
24#include "AliTPCAltroMapping.h"
25#include "AliTPCExB.h"
26#include "AliTPCCalROC.h"
27#include "AliTPCCalPad.h"
28#include "AliTPCSensorTempArray.h"
29#include "AliGRPObject.h"
30#include "AliTPCTransform.h"
31#include "TFile.h"
32#include "TKey.h"
33#include "TObjArray.h"
34#include "TObjString.h"
35#include "TString.h"
36#include "AliTPCCalPad.h"
37#include "AliTPCCalibPulser.h"
38#include "AliTPCCalibPedestal.h"
39#include "AliTPCCalibCE.h"
40#include "AliTPCExBFirst.h"
41#include "TTreeStream.h"
42#include "AliTPCTempMap.h"
43
44void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS);
45
46void Init(){
47 //
48 //
49 //
162637e4 50 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
51 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Parameters","local://$ALICE_ROOT/OCDB");
d47d42ee 52 AliCDBManager::Instance()->SetSpecificStorage("GRP/GRP/Data","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
53 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Temperature","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
e2914767 54 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/HighVoltage","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
d47d42ee 55 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Goofie","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
d47d42ee 56 AliCDBManager::Instance()->SetRun(1);
e2914767 57}
58
d47d42ee 59
e2914767 60void InitAlien(const char *path="LHC08b"){
61 //
62 //
63 //
64 TString alpath="alien://folder=/alice/data/2008/";
65 alpath+=path;
66 alpath+="/OCDB";
67
162637e4 68 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
69 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Parameters","local://$ALICE_ROOT/OCDB");
e2914767 70 AliCDBManager::Instance()->SetSpecificStorage("GRP/GRP/Data",alpath.Data());
71 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Temperature",alpath.Data());
72 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Goofie",alpath.Data());
73 AliCDBManager::Instance()->SetRun(1);
d47d42ee 74}
75
76
77void CalibEnv(const char * runList){
78 //
79 //
80 //
e79211e8 81 AliTPCcalibDB * calibDB = AliTPCcalibDB::Instance();
d47d42ee 82 ifstream in;
83 in.open(runList);
84 Int_t irun=0;
e79211e8 85 TTreeSRedirector *pcstream = new TTreeSRedirector("dcsTime.root");
d47d42ee 86 // for (Int_t irun=startRun; irun<stopRun; irun++){
87 while(in.good()) {
88 in >> irun;
89 if (irun==0) continue;
e2914767 90 printf("Processing run %d ...\n",irun);
d47d42ee 91 AliDCSSensor * sensorPressure = AliTPCcalibDB::Instance()->GetPressureSensor(irun);
92 if (!sensorPressure) continue;
93 AliTPCSensorTempArray * tempArray = AliTPCcalibDB::Instance()->GetTemperatureSensor(irun);
94 AliTPCTempMap * tempMap = new AliTPCTempMap(tempArray);
95 AliDCSSensorArray* goofieArray = AliTPCcalibDB::Instance()->GetGoofieSensors(irun);
96 //
97 Int_t startTime = sensorPressure->GetStartTime();
98 Int_t endTime = sensorPressure->GetEndTime();
99 Int_t dtime = TMath::Max((endTime-startTime)/20,10*60);
100 for (Int_t itime=startTime; itime<endTime; itime+=dtime){
101 //
e2914767 102 TTimeStamp tstamp(itime);
e79211e8 103 Float_t valuePressure = calibDB->GetPressure(tstamp,irun,0);
104 Float_t valuePressure2 = calibDB->GetPressure(tstamp,irun,1);
d47d42ee 105
106 TLinearFitter * fitter = 0;
107 TVectorD vecTemp[10];
e79211e8 108 for (Int_t itype=0; itype<5; itype++)
e2914767 109 for (Int_t iside=0; iside<2; iside++){
110 fitter= tempMap->GetLinearFitter(itype,iside,tstamp);
e79211e8 111 if (!fitter) continue;
e2914767 112 fitter->Eval();
113 fitter->GetParameters(vecTemp[itype+iside*5]);
e79211e8 114 delete fitter;
115 }
116
d47d42ee 117
118 TVectorD vecGoofie, vecEntries, vecMean, vecMedian,vecRMS;
119 if (goofieArray){
120 vecGoofie.ResizeTo(goofieArray->NumSensors());
121 ProcessGoofie(goofieArray, vecEntries ,vecMedian, vecMean, vecRMS);
e2914767 122 //
d47d42ee 123 for (Int_t isensor=0; isensor<goofieArray->NumSensors();isensor++){
124 AliDCSSensor *gsensor = goofieArray->GetSensor(isensor);
125 if (gsensor){
126 vecGoofie[isensor] = gsensor->GetValue(tstamp);
127 }
128 }
129 }
e79211e8 130 Double_t ptrelative0 = AliTPCcalibDB::GetPTRelative(tstamp,irun,0);
131 Double_t ptrelative1 = AliTPCcalibDB::GetPTRelative(tstamp,irun,1);
e2914767 132 //
133 Double_t voltagesIROC[36];
134 Double_t voltagesOROC[36];
135 for(Int_t j=1; j<36; j++) voltagesIROC[j-1] = AliTPCcalibDB::Instance()->GetChamberHighVoltage(startTime, irun, j);
136 for(Int_t j=36; j<72; j++) voltagesOROC[j-36] = AliTPCcalibDB::Instance()->GetChamberHighVoltage(startTime, irun, j);
137 Double_t voltIROC = TMath::Median(36, voltagesIROC);
138 Double_t voltOROC = TMath::Median(36, voltagesOROC);
d47d42ee 139
e2914767 140 //tempMap->GetLinearFitter(0,0,itime);
d47d42ee 141 (*pcstream)<<"dcs"<<
142 "run="<<irun<<
143 "time="<<itime<<
e2914767 144 "voltageIROC="<<voltIROC<<
145 "voltageOROC="<<voltOROC<<
e79211e8 146 "ptrel0="<<ptrelative0<<
147 "ptrel1="<<ptrelative1<<
d47d42ee 148 "goofie.="<<&vecGoofie<<
149 "goofieE.="<<&vecEntries<<
150 "goofieMean.="<<&vecMean<<
151 "goofieMedian.="<<&vecMedian<<
152 "goofieRMS.="<<&vecRMS<<
153 "press="<<valuePressure<<
e79211e8 154 "press2="<<valuePressure2<<
d47d42ee 155 "temp00.="<<&vecTemp[0]<<
156 "temp10.="<<&vecTemp[1]<<
157 "temp20.="<<&vecTemp[2]<<
158 "temp30.="<<&vecTemp[3]<<
159 "temp40.="<<&vecTemp[4]<<
160 "temp01.="<<&vecTemp[5]<<
161 "temp11.="<<&vecTemp[6]<<
162 "temp21.="<<&vecTemp[7]<<
163 "temp31.="<<&vecTemp[8]<<
164 "temp41.="<<&vecTemp[9]<<
165 "\n";
166 }
167 }
168 delete pcstream;
169}
170
171
172void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS){
173 /*
174
175 1 TPC_ANODE_I_A00_STAT
176 2 TPC_DVM_CO2
177 3 TPC_DVM_DriftVelocity
178 4 TPC_DVM_FCageHV
179 5 TPC_DVM_GainFar
180 6 TPC_DVM_GainNear
181 7 TPC_DVM_N2
182 8 TPC_DVM_NumberOfSparks
183 9 TPC_DVM_PeakAreaFar
184 10 TPC_DVM_PeakAreaNear
185 11 TPC_DVM_PeakPosFar
186 12 TPC_DVM_PeakPosNear
187 13 TPC_DVM_PickupHV
188 14 TPC_DVM_Pressure
189 15 TPC_DVM_T1_Over_P
190 16 TPC_DVM_T2_Over_P
191 17 TPC_DVM_T_Over_P
192 18 TPC_DVM_TemperatureS1
193 */
194 //
195 //
196 // TVectorD vecMedian; TVectorD vecEntries; TVectorD vecMean; TVectorD vecRMS;
197 Double_t kEpsilon=0.0000000001;
198 Double_t kBig=100000000000.;
199 Int_t nsensors = goofieArray->NumSensors();
200 vecEntries.ResizeTo(nsensors);
201 vecMedian.ResizeTo(nsensors);
202 vecMean.ResizeTo(nsensors);
203 vecRMS.ResizeTo(nsensors);
204 TVectorF values;
205 for (Int_t isensor=0; isensor<goofieArray->NumSensors();isensor++){
206 AliDCSSensor *gsensor = goofieArray->GetSensor(isensor);
207 if (gsensor && gsensor->GetGraph()){
208 Int_t npoints = gsensor->GetGraph()->GetN();
209 // filter zeroes
210 values.ResizeTo(npoints);
211 Int_t nused =0;
212 for (Int_t ipoint=0; ipoint<npoints; ipoint++){
213 if (TMath::Abs(gsensor->GetGraph()->GetY()[ipoint])>kEpsilon &&
214 TMath::Abs(gsensor->GetGraph()->GetY()[ipoint])<kBig ){
215 values[nused]=gsensor->GetGraph()->GetY()[ipoint];
216 nused++;
217 }
218 }
219 //
220 vecEntries[isensor]= nused;
221 if (nused>1){
222 vecMedian[isensor] = TMath::Median(nused,values.GetMatrixArray());
223 vecMean[isensor] = TMath::Mean(nused,values.GetMatrixArray());
224 vecRMS[isensor] = TMath::RMS(nused,values.GetMatrixArray());
225 }
226 }
227 }
228}
229
e2914767 230
231void FilterMag(const char * runList){
232 //
233 //
234 //
235 // AliTPCcalibDB * calibDB = AliTPCcalibDB::Instance();
236 ifstream in;
237 in.open(runList);
238 Int_t irun=0;
239 while(in.good()) {
240 in >> irun;
241 if (irun==0) continue;
242 AliGRPObject *grp = AliTPCcalibDB::GetGRP(irun);
243 Float_t current = -1;
244 Float_t bz = -1;
245 Float_t press = 0;
246 if (grp){
247 current = grp->GetL3Current((AliGRPObject::Stats)0);
248 bz = 5*current/30000.;
249 printf("Run%d\tL3 current%f\tBz\t%f\n",irun,current,bz);
250 }
251 else{
252 printf("Run%d\tL3 current%f\tBz\t%f\n",irun,current,bz);
253 }
254 }
255
256}
257
d47d42ee 258/*
259
260AliDCSSensor * sensorPressure = AliTPCcalibDB::Instance()->GetPressureSensor(62084);
261entry = AliCDBManager::Instance()->Get("TPC/Calib/Temperature",run);
262AliTPCSensorTempArray * tempArray = (AliTPCSensorTempArray *)entry->GetObject();
263AliTPCSensorTempArray * tempArray = (AliTPCSensorTempArray *)AliTPCcalibDB::Instance()->GetTemperatureSensor(62084)
264AliTPCTempMap * tempMap = new AliTPCTempMap(tempArray);
e79211e8 265TLinearFitter * fitter = tempMap->GetLinearFitter(0,0,tempArray->GetStartTime());
d47d42ee 266
267AliDCSSensorArray* goofieArray = AliTPCcalibDB::Instance()->GetGoofieSensors(62084);
268
269*/