]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Adding inteface for DCS voltage
authormarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 8 Dec 2008 15:17:00 +0000 (15:17 +0000)
committermarian <marian@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 8 Dec 2008 15:17:00 +0000 (15:17 +0000)
see CalibEnv.C example macro how to use the interface

(Alexander Kalweit)

TPC/AliTPCcalibDB.cxx
TPC/AliTPCcalibDB.h
TPC/CalibMacros/CalibEnv.C

index 17851cb19a8d182b7d0b821b757dd1080c222d5f..8b6c123afafa72375177ccfdbc11c3b65f4893bc 100644 (file)
@@ -177,6 +177,7 @@ AliTPCcalibDB::AliTPCcalibDB():
   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 
@@ -206,6 +207,7 @@ AliTPCcalibDB::AliTPCcalibDB(const AliTPCcalibDB& ):
   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 
@@ -732,7 +734,8 @@ void AliTPCcalibDB::GetRunInformations( Int_t run){
     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);
   }
@@ -743,8 +746,10 @@ void AliTPCcalibDB::GetRunInformations( Int_t run){
     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);
       }
     }
@@ -752,6 +757,10 @@ void AliTPCcalibDB::GetRunInformations( Int_t 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
@@ -855,6 +864,18 @@ AliDCSSensorArray * AliTPCcalibDB::GetGoofieSensors(Int_t run){
   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 
@@ -868,7 +889,17 @@ AliTPCCalibVdrift *     AliTPCcalibDB::GetVdrift(Int_t run){
 }
 
 
-
+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){
   //
@@ -877,8 +908,6 @@ 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);
 }
 
@@ -1086,3 +1115,38 @@ void AliTPCcalibDB::ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & ve
   }
 }
 
+
+
+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;
+}
+
+
+
index 9cdb2bda22559d93b3f9249d502058ca8a11c652..539dc4168b8d2832c2c1e6a79317032d66bd89e7 100644 (file)
@@ -58,13 +58,16 @@ class AliTPCcalibDB : public TObject
   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);
   //
@@ -76,8 +79,10 @@ class AliTPCcalibDB : public TObject
   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
@@ -105,6 +110,7 @@ protected:
   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
index f3be634ec155252cfd2292bd05541e8982a6b8e1..fc0c3e6b60c2cd3364276a81985bd3c6bd75a6fe 100644 (file)
@@ -1,10 +1,17 @@
 /*
 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>
@@ -44,10 +51,26 @@ void Init(){
   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);
 }
 
 
@@ -64,7 +87,7 @@ void CalibEnv(const char * runList){
   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);
@@ -76,17 +99,18 @@ void CalibEnv(const char * runList){
     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;
        } 
       
@@ -95,7 +119,7 @@ void CalibEnv(const char * runList){
       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){
@@ -105,11 +129,20 @@ void CalibEnv(const char * runList){
       }
       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<<
@@ -194,6 +227,34 @@ void ProcessGoofie( AliDCSSensorArray* goofieArray, TVectorD & vecEntries, TVect
   }
 }
 
+
+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);