]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/CalibMacros/CalibEnv.C
calibration updates (Marian)
[u/mrichter/AliRoot.git] / TPC / CalibMacros / CalibEnv.C
1 /*
2 gSystem->AddIncludePath("-I$ALICE_ROOT/TPC");
3 .L $ALICE_ROOT/TPC/CalibMacros/CalibEnv.C+
4 Init();
5 CalibEnv("listenv.txt");
6 TFile f("dccTime.root")
7
8 */
9
10 #include <iostream>
11 #include <fstream>
12 #include <AliCDBManager.h>
13 #include <AliCDBEntry.h>
14 #include <AliLog.h>
15 #include <AliMagF.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"
24 #include "TFile.h"
25 #include "TKey.h"
26 #include "TObjArray.h"
27 #include "TObjString.h"
28 #include "TString.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"
36
37 void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS);
38
39 void Init(){
40   //
41   //
42   //
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/");
48   
49   AliCDBManager::Instance()->SetRun(1);
50
51 }
52
53
54 void CalibEnv(const char * runList){
55   //
56   //
57   //  
58   ifstream in;
59   in.open(runList);
60   Int_t irun=0;
61   TTreeSRedirector *pcstream = new TTreeSRedirector("dccTime.root");
62   //  for (Int_t irun=startRun; irun<stopRun; irun++){
63   while(in.good()) {
64     in >> 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);
72     //
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){
77       //
78       TTimeStamp tstamp(itime);
79       Float_t valuePressure = sensorPressure->GetValue(tstamp);
80
81       TLinearFitter * fitter = 0;
82       TVectorD vecTemp[10];
83       if (itime<tempArray->GetStartTime().GetSec() || itime>tempArray->GetEndTime().GetSec()){  
84       }else{
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]);
90             delete fitter;
91           }
92       }
93       
94       TVectorD vecGoofie, vecEntries, vecMean, vecMedian,vecRMS;
95       if (goofieArray){ 
96         vecGoofie.ResizeTo(goofieArray->NumSensors());
97         ProcessGoofie(goofieArray, vecEntries ,vecMedian, vecMean, vecRMS);
98   //
99         for (Int_t isensor=0; isensor<goofieArray->NumSensors();isensor++){
100           AliDCSSensor *gsensor = goofieArray->GetSensor(isensor);
101           if (gsensor){
102             vecGoofie[isensor] = gsensor->GetValue(tstamp);
103           }
104         }
105       }
106
107
108       tempMap->GetLinearFitter(0,0,itime);
109       (*pcstream)<<"dcs"<<
110         "run="<<irun<<
111         "time="<<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]<<
128         "\n";
129     }
130   }
131   delete pcstream;
132 }
133
134
135 void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS){
136   /*
137     
138   1       TPC_ANODE_I_A00_STAT
139   2       TPC_DVM_CO2
140   3       TPC_DVM_DriftVelocity
141   4       TPC_DVM_FCageHV
142   5       TPC_DVM_GainFar
143   6       TPC_DVM_GainNear
144   7       TPC_DVM_N2
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
150   13      TPC_DVM_PickupHV
151   14      TPC_DVM_Pressure
152   15      TPC_DVM_T1_Over_P
153   16      TPC_DVM_T2_Over_P
154   17      TPC_DVM_T_Over_P
155   18      TPC_DVM_TemperatureS1
156    */
157   //
158   //
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);
167   TVectorF values;
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();
172       // filter zeroes
173       values.ResizeTo(npoints);
174       Int_t nused =0;
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];
179           nused++;
180         }
181       }
182       //
183       vecEntries[isensor]= nused;      
184       if (nused>1){
185         vecMedian[isensor] = TMath::Median(nused,values.GetMatrixArray());
186         vecMean[isensor]   = TMath::Mean(nused,values.GetMatrixArray());
187         vecRMS[isensor]    = TMath::RMS(nused,values.GetMatrixArray());
188       }
189     }
190   }
191 }
192
193 /*
194
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());
201
202 AliDCSSensorArray* goofieArray = AliTPCcalibDB::Instance()->GetGoofieSensors(62084);
203
204 */