fGRPArray(100000), //! array of GRPs - per run - JUST for calibration studies
fGRPMaps(100000), //! array of GRPs - per run - JUST for calibration studies
fGoofieArray(100000), //! array of GOOFIE values -per run - Just for calibration studies
+ fVoltageArray(100000),
fTemperatureArray(100000), //! array of temperature sensors - per run - Just for calibration studies
fVdriftArray(100000), //! array of v drift interfaces
fRunList(100000) //! run list - indicates try to get the run param
fGRPArray(0), //! array of GRPs - per run - JUST for calibration studies
fGRPMaps(0), //! array of GRPs - per run - JUST for calibration studies
fGoofieArray(0), //! array of GOOFIE values -per run - Just for calibration studies
+ fVoltageArray(0),
fTemperatureArray(0), //! array of temperature sensors - per run - Just for calibration studies
fVdriftArray(0), //! array of v drift interfaces
fRunList(0) //! run list - indicates try to get the run param
fRunList.Set(run*2+1);
fGRPArray.Expand(run*2+1);
fGRPMaps.Expand(run*2+1);
- fGoofieArray.Expand(run*2+1);
+ fGoofieArray.Expand(run*2+1);
+ fVoltageArray.Expand(run*2+1);
fTemperatureArray.Expand(run*2+1);
fVdriftArray.Expand(run*2+1);
}
if (!grpRun){
TMap* map = dynamic_cast<TMap*>(entry->GetObject());
if (map){
- grpRun = new AliGRPObject;
- grpRun->ReadValuesFromMap(map);
+ //grpRun = new AliGRPObject;
+ //grpRun->ReadValuesFromMap(map);
+ grpRun = MakeGRPObjectFromMap(map);
+
fGRPMaps.AddAt(map,run);
}
}
}
entry = AliCDBManager::Instance()->Get("TPC/Calib/Goofie",run);
if (entry) fGoofieArray.AddAt(entry->GetObject(),run);
+ //
+ entry = AliCDBManager::Instance()->Get("TPC/Calib/HighVoltage",run);
+ if (entry) fVoltageArray.AddAt(entry->GetObject(),run);
+ //
entry = AliCDBManager::Instance()->Get("TPC/Calib/Temperature",run);
if (entry) fTemperatureArray.AddAt(entry->GetObject(),run);
fRunList[run]=1; // sign as used
return goofieArray;
}
+AliDCSSensorArray * AliTPCcalibDB::GetVoltageSensors(Int_t run){
+ //
+ // Get temperature sensor array
+ //
+ AliDCSSensorArray * voltageArray = (AliDCSSensorArray *)fVoltageArray.At(run);
+ if (!voltageArray) {
+ GetRunInformations(run);
+ voltageArray = (AliDCSSensorArray *)fVoltageArray.At(run);
+ }
+ return voltageArray;
+}
+
AliTPCCalibVdrift * AliTPCcalibDB::GetVdrift(Int_t run){
//
// Get the interface to the the vdrift
}
-
+Float_t AliTPCcalibDB::GetChamberHighVoltage(Int_t timeStamp, Int_t run, Int_t sector) {
+ //
+ // return the chamber HV for given run and time: 0-35 IROC, 36-72 OROC
+ //
+ TTimeStamp stamp(timeStamp);
+ AliDCSSensorArray* voltageArray = AliTPCcalibDB::Instance()->GetVoltageSensors(run);
+ if (!voltageArray) return 0;
+ AliDCSSensor *sensor = voltageArray->GetSensor((sector+1)*3);
+ if (!sensor) return 0;
+ return sensor->GetValue(stamp);
+}
Float_t AliTPCcalibDB::GetPressure(Int_t timeStamp, Int_t run, Int_t type){
//
TTimeStamp stamp(timeStamp);
AliDCSSensor * sensor = Instance()->GetPressureSensor(run,type);
if (!sensor) return 0;
-
- if (!sensor->GetFit()) return 0;
return sensor->GetValue(stamp);
}
}
}
+
+
+AliGRPObject * AliTPCcalibDB::MakeGRPObjectFromMap(TMap *map){
+ //
+ // Function to covert old GRP run information from TMap to GRPObject
+ //
+ // TMap * map = AliTPCcalibDB::GetGRPMap(52406);
+ if (!map) return 0;
+ AliDCSSensor * sensor = 0;
+ TObject *osensor=0;
+ osensor = ((*map)("fP2Pressure"));
+ sensor =dynamic_cast<AliDCSSensor *>(osensor);
+ //
+ if (!sensor) return 0;
+ //
+ AliDCSSensor * sensor2 = new AliDCSSensor(*sensor);
+ osensor = ((*map)("fCavernPressure"));
+ TGraph * gr = new TGraph(2);
+ gr->GetX()[0]= -100000.;
+ gr->GetX()[1]= 1000000.;
+ gr->GetY()[0]= atof(osensor->GetName());
+ gr->GetY()[1]= atof(osensor->GetName());
+ sensor2->SetGraph(gr);
+ sensor2->SetFit(0);
+
+
+ AliGRPObject *grpRun = new AliGRPObject;
+ grpRun->ReadValuesFromMap(map);
+ grpRun->SetCavernAtmosPressure(sensor2);
+ grpRun->SetSurfaceAtmosPressure(sensor);
+ return grpRun;
+}
+
+
+
static AliGRPObject * GetGRP(Int_t run);
static TMap * GetGRPMap(Int_t run);
static Float_t GetPressure(Int_t timeStamp, Int_t run, Int_t type=0);
+ static Float_t GetChamberHighVoltage(Int_t timeStamp, Int_t run, Int_t sector);
static Float_t GetValueGoofie(Int_t timeStamp, Int_t run, Int_t type);
static Bool_t GetTemperatureFit(Int_t timeStamp, Int_t run, Int_t side,TVectorD& fit);
static Float_t GetTemperature(Int_t timeStamp, Int_t run, Int_t side);
static Double_t GetPTRelative(UInt_t timeSec, Int_t run, Int_t side);
AliDCSSensor * GetPressureSensor(Int_t run, Int_t type=0);
+ //AliDCSSensor * GetVoltageSensor(Int_t run, Int_t type=0);
AliTPCSensorTempArray * GetTemperatureSensor(Int_t run);
AliDCSSensorArray * GetGoofieSensors(Int_t run);
+ AliDCSSensorArray * GetVoltageSensors(Int_t run);
AliTPCCalibVdrift * GetVdrift(Int_t run);
static Float_t GetGain(Int_t sector, Int_t row, Int_t pad);
//
static void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVectorD & vecMedian, TVectorD &vecMean, TVectorD &vecRMS);
static void ProcessEnv(const char * runList);
+ AliGRPObject * MakeGRPObjectFromMap(TMap *map);
//
protected:
+
void Update(); //update entries
AliCDBEntry* GetCDBEntry(const char* cdbPath);
void GetRunInformations(Int_t run); // JUST FOR CALIBRATION STUDIES
TObjArray fGRPArray; //! array of GRPs - per run
TObjArray fGRPMaps; //! array of GRPs maps - per run - old data
TObjArray fGoofieArray; //! array of GOOFIE values -per run
+ TObjArray fVoltageArray; //! array of Chamber HV values -per run
TObjArray fTemperatureArray; //! array of temperature sensors - per run
TObjArray fVdriftArray; //! array of v drift interfaces
TArrayI fRunList; //! run list - indicates try to get the run param
/*
gSystem->AddIncludePath("-I$ALICE_ROOT/TPC");
-.L $ALICE_ROOT/TPC/CalibMacros/CalibEnv.C+
+
+gSystem->Load("libXrdClient.so");
+gSystem->Load("libNetx.so");
+if (!gGrid) TGrid::Connect("alien://",0,0,"t");
+
+
+.L CalibEnv.C++
Init();
-CalibEnv("listenv2.txt");
+CalibEnv("listAll.txt");
TFile f("dcsTime.root")
+
*/
#include <iostream>
AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Parameters","local://$ALICE_ROOT");
AliCDBManager::Instance()->SetSpecificStorage("GRP/GRP/Data","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Temperature","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
+ AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/HighVoltage","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Goofie","local:///lustre_alpha/alice/alien/alice/data/2008/LHC08d/OCDB/");
-
AliCDBManager::Instance()->SetRun(1);
+}
+
+void InitAlien(const char *path="LHC08b"){
+ //
+ //
+ //
+ TString alpath="alien://folder=/alice/data/2008/";
+ alpath+=path;
+ alpath+="/OCDB";
+
+ AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT");
+ AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Parameters","local://$ALICE_ROOT");
+ AliCDBManager::Instance()->SetSpecificStorage("GRP/GRP/Data",alpath.Data());
+ AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Temperature",alpath.Data());
+ AliCDBManager::Instance()->SetSpecificStorage("TPC/Calib/Goofie",alpath.Data());
+ AliCDBManager::Instance()->SetRun(1);
}
while(in.good()) {
in >> irun;
if (irun==0) continue;
- printf("Processing run %d\n",irun);
+ printf("Processing run %d ...\n",irun);
AliDCSSensor * sensorPressure = AliTPCcalibDB::Instance()->GetPressureSensor(irun);
if (!sensorPressure) continue;
AliTPCSensorTempArray * tempArray = AliTPCcalibDB::Instance()->GetTemperatureSensor(irun);
Int_t dtime = TMath::Max((endTime-startTime)/20,10*60);
for (Int_t itime=startTime; itime<endTime; itime+=dtime){
//
- TTimeStamp tstamp(itime);
+ TTimeStamp tstamp(itime);
Float_t valuePressure = calibDB->GetPressure(tstamp,irun,0);
Float_t valuePressure2 = calibDB->GetPressure(tstamp,irun,1);
TLinearFitter * fitter = 0;
TVectorD vecTemp[10];
for (Int_t itype=0; itype<5; itype++)
- for (Int_t iside=0; iside<2; iside++){
- fitter= tempMap->GetLinearFitter(itype,iside,tstamp);
+ for (Int_t iside=0; iside<2; iside++){
+ fitter= tempMap->GetLinearFitter(itype,iside,tstamp);
if (!fitter) continue;
- fitter->Eval(); fitter->GetParameters(vecTemp[itype+iside*5]);
+ fitter->Eval();
+ fitter->GetParameters(vecTemp[itype+iside*5]);
delete fitter;
}
if (goofieArray){
vecGoofie.ResizeTo(goofieArray->NumSensors());
ProcessGoofie(goofieArray, vecEntries ,vecMedian, vecMean, vecRMS);
- //
+ //
for (Int_t isensor=0; isensor<goofieArray->NumSensors();isensor++){
AliDCSSensor *gsensor = goofieArray->GetSensor(isensor);
if (gsensor){
}
Double_t ptrelative0 = AliTPCcalibDB::GetPTRelative(tstamp,irun,0);
Double_t ptrelative1 = AliTPCcalibDB::GetPTRelative(tstamp,irun,1);
+ //
+ Double_t voltagesIROC[36];
+ Double_t voltagesOROC[36];
+ for(Int_t j=1; j<36; j++) voltagesIROC[j-1] = AliTPCcalibDB::Instance()->GetChamberHighVoltage(startTime, irun, j);
+ for(Int_t j=36; j<72; j++) voltagesOROC[j-36] = AliTPCcalibDB::Instance()->GetChamberHighVoltage(startTime, irun, j);
+ Double_t voltIROC = TMath::Median(36, voltagesIROC);
+ Double_t voltOROC = TMath::Median(36, voltagesOROC);
- tempMap->GetLinearFitter(0,0,itime);
+ //tempMap->GetLinearFitter(0,0,itime);
(*pcstream)<<"dcs"<<
"run="<<irun<<
"time="<<itime<<
+ "voltageIROC="<<voltIROC<<
+ "voltageOROC="<<voltOROC<<
"ptrel0="<<ptrelative0<<
"ptrel1="<<ptrelative1<<
"goofie.="<<&vecGoofie<<
}
}
+
+void FilterMag(const char * runList){
+ //
+ //
+ //
+ // AliTPCcalibDB * calibDB = AliTPCcalibDB::Instance();
+ ifstream in;
+ in.open(runList);
+ Int_t irun=0;
+ while(in.good()) {
+ in >> irun;
+ if (irun==0) continue;
+ AliGRPObject *grp = AliTPCcalibDB::GetGRP(irun);
+ Float_t current = -1;
+ Float_t bz = -1;
+ Float_t press = 0;
+ if (grp){
+ current = grp->GetL3Current((AliGRPObject::Stats)0);
+ bz = 5*current/30000.;
+ printf("Run%d\tL3 current%f\tBz\t%f\n",irun,current,bz);
+ }
+ else{
+ printf("Run%d\tL3 current%f\tBz\t%f\n",irun,current,bz);
+ }
+ }
+
+}
+
/*
AliDCSSensor * sensorPressure = AliTPCcalibDB::Instance()->GetPressureSensor(62084);