2 gSystem->AddIncludePath("-I$ALICE_ROOT/TPC");
3 .L $ALICE_ROOT/TPC/CalibMacros/CalibEnv.C+
5 CalibEnv("listenv.txt");
6 TFile f("dccTime.root")
12 #include <AliCDBManager.h>
13 #include <AliCDBEntry.h>
16 #include "AliTPCcalibDB.h"
17 #include "AliTPCAltroMapping.h"
18 #include "AliTPCExB.h"
19 #include "AliTPCCalROC.h"
20 #include "AliTPCCalPad.h"
21 #include "AliTPCSensorTempArray.h"
22 #include "AliGRPObject.h"
23 #include "AliTPCTransform.h"
26 #include "TObjArray.h"
27 #include "TObjString.h"
29 #include "AliTPCCalPad.h"
30 #include "AliTPCCalibPulser.h"
31 #include "AliTPCCalibPedestal.h"
32 #include "AliTPCCalibCE.h"
33 #include "AliTPCExBFirst.h"
34 #include "TTreeStream.h"
35 #include "AliTPCTempMap.h"
37 void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS);
43 AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
44 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Parameters","local://$ALICE_ROOT");
45 AliCDBManager::Instance()->SetSpecificStorage("GRP/GRP/Data","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
46 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Temperature","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
47 AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Goofie","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
49 AliCDBManager::Instance()->SetRun(1);
54 void CalibEnv(const char * runList){
61 TTreeSRedirector *pcstream = new TTreeSRedirector("dccTime.root");
62 // for (Int_t irun=startRun; irun<stopRun; irun++){
65 if (irun==0) continue;
66 printf("Processing run %d\n",irun);
67 AliDCSSensor * sensorPressure = AliTPCcalibDB::Instance()->GetPressureSensor(irun);
68 if (!sensorPressure) continue;
69 AliTPCSensorTempArray * tempArray = AliTPCcalibDB::Instance()->GetTemperatureSensor(irun);
70 AliTPCTempMap * tempMap = new AliTPCTempMap(tempArray);
71 AliDCSSensorArray* goofieArray = AliTPCcalibDB::Instance()->GetGoofieSensors(irun);
73 Int_t startTime = sensorPressure->GetStartTime();
74 Int_t endTime = sensorPressure->GetEndTime();
75 Int_t dtime = TMath::Max((endTime-startTime)/20,10*60);
76 for (Int_t itime=startTime; itime<endTime; itime+=dtime){
78 TTimeStamp tstamp(itime);
79 Float_t valuePressure = sensorPressure->GetValue(tstamp);
81 TLinearFitter * fitter = 0;
83 if (itime<tempArray->GetStartTime().GetSec() || itime>tempArray->GetEndTime().GetSec()){
85 for (Int_t itype=0; itype<5; itype++)
86 for (Int_t iside=0; iside<2; iside++){
87 fitter= tempMap->GetLinearFitter(itype,iside,tstamp);
88 if (!fitter) continue;
89 fitter->Eval(); fitter->GetParameters(vecTemp[itype+iside*5]);
94 TVectorD vecGoofie, vecEntries, vecMean, vecMedian,vecRMS;
96 vecGoofie.ResizeTo(goofieArray->NumSensors());
97 ProcessGoofie(goofieArray, vecEntries ,vecMedian, vecMean, vecRMS);
99 for (Int_t isensor=0; isensor<goofieArray->NumSensors();isensor++){
100 AliDCSSensor *gsensor = goofieArray->GetSensor(isensor);
102 vecGoofie[isensor] = gsensor->GetValue(tstamp);
108 tempMap->GetLinearFitter(0,0,itime);
112 "goofie.="<<&vecGoofie<<
113 "goofieE.="<<&vecEntries<<
114 "goofieMean.="<<&vecMean<<
115 "goofieMedian.="<<&vecMedian<<
116 "goofieRMS.="<<&vecRMS<<
117 "press="<<valuePressure<<
118 "temp00.="<<&vecTemp[0]<<
119 "temp10.="<<&vecTemp[1]<<
120 "temp20.="<<&vecTemp[2]<<
121 "temp30.="<<&vecTemp[3]<<
122 "temp40.="<<&vecTemp[4]<<
123 "temp01.="<<&vecTemp[5]<<
124 "temp11.="<<&vecTemp[6]<<
125 "temp21.="<<&vecTemp[7]<<
126 "temp31.="<<&vecTemp[8]<<
127 "temp41.="<<&vecTemp[9]<<
135 void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS){
138 1 TPC_ANODE_I_A00_STAT
140 3 TPC_DVM_DriftVelocity
145 8 TPC_DVM_NumberOfSparks
146 9 TPC_DVM_PeakAreaFar
147 10 TPC_DVM_PeakAreaNear
148 11 TPC_DVM_PeakPosFar
149 12 TPC_DVM_PeakPosNear
155 18 TPC_DVM_TemperatureS1
159 // TVectorD vecMedian; TVectorD vecEntries; TVectorD vecMean; TVectorD vecRMS;
160 Double_t kEpsilon=0.0000000001;
161 Double_t kBig=100000000000.;
162 Int_t nsensors = goofieArray->NumSensors();
163 vecEntries.ResizeTo(nsensors);
164 vecMedian.ResizeTo(nsensors);
165 vecMean.ResizeTo(nsensors);
166 vecRMS.ResizeTo(nsensors);
168 for (Int_t isensor=0; isensor<goofieArray->NumSensors();isensor++){
169 AliDCSSensor *gsensor = goofieArray->GetSensor(isensor);
170 if (gsensor && gsensor->GetGraph()){
171 Int_t npoints = gsensor->GetGraph()->GetN();
173 values.ResizeTo(npoints);
175 for (Int_t ipoint=0; ipoint<npoints; ipoint++){
176 if (TMath::Abs(gsensor->GetGraph()->GetY()[ipoint])>kEpsilon &&
177 TMath::Abs(gsensor->GetGraph()->GetY()[ipoint])<kBig ){
178 values[nused]=gsensor->GetGraph()->GetY()[ipoint];
183 vecEntries[isensor]= nused;
185 vecMedian[isensor] = TMath::Median(nused,values.GetMatrixArray());
186 vecMean[isensor] = TMath::Mean(nused,values.GetMatrixArray());
187 vecRMS[isensor] = TMath::RMS(nused,values.GetMatrixArray());
195 AliDCSSensor * sensorPressure = AliTPCcalibDB::Instance()->GetPressureSensor(62084);
196 entry = AliCDBManager::Instance()->Get("TPC/Calib/Temperature",run);
197 AliTPCSensorTempArray * tempArray = (AliTPCSensorTempArray *)entry->GetObject();
198 AliTPCSensorTempArray * tempArray = (AliTPCSensorTempArray *)AliTPCcalibDB::Instance()->GetTemperatureSensor(62084)
199 AliTPCTempMap * tempMap = new AliTPCTempMap(tempArray);
200 TLinearFitter * fitter = tempMap->GetLinearFitter(0,0,tempArray->GetStartTime()->GetSec());
202 AliDCSSensorArray* goofieArray = AliTPCcalibDB::Instance()->GetGoofieSensors(62084);