]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliGRPDCS.cxx
Adding the lhc tag cuts in the repository
[u/mrichter/AliRoot.git] / STEER / AliGRPDCS.cxx
index 7994e5ee269a24ec181a514d9d6c32e6820f6d06..8eab15e794385826738b766a9262f548823dc3eb 100644 (file)
 //-----------------------------------------------------------------
 
 #include "AliGRPDCS.h"
-
 #include "AliDCSValue.h"
+#include "AliLog.h"
 
-//#include <TObjString.h>
 class TObjString;
 
-#include <TH1.h>
 #include <TObjArray.h>
 
 ClassImp(AliGRPDCS)
 
 //_______________________________________________________________
 AliGRPDCS::AliGRPDCS():
-  TObject(), fDCSArray(new TObjArray()) {
+  TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
   // default constructor
   
 }
 
 //_______________________________________________________________
-AliGRPDCS::AliGRPDCS(TObjArray *dcsArray):
-  TObject() {
+AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
+  TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
   // constructor
-  fDCSArray = new TObjArray();
   fDCSArray = dcsArray;
 }
 
@@ -57,17 +54,140 @@ AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
 }
 
 //_______________________________________________________________
-const char* AliGRPDCS::ProcessDCS(TH1 *h) {
-  // process the dcs float values
+const char* AliGRPDCS::ProcessDCS(Int_t iType) {
+  // process the dcs dps
+  //0:Int - 1:UInt - 2:Float - 3:String - 4:Bool
+  TString fDCSDataPointValue;
+  switch (iType) {
+  case 0: {
+    fDCSDataPointValue += ProcessInt();
+    break;
+  }
+  case 1: {
+    fDCSDataPointValue += ProcessUInt();
+    break;
+  }
+  case 2: {
+    fDCSDataPointValue += ProcessFloat();
+    break;
+  }
+  case 3: {
+    fDCSDataPointValue += ProcessString();
+    break;
+  }
+  case 4: {
+    fDCSDataPointValue += ProcessBoolean();
+    break;
+  }
+  default: break;
+  }//switch
+
+  return fDCSDataPointValue.Data();
+}
+
+//_______________________________________________________________
+const char* AliGRPDCS::ProcessInt() {
+  Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
+  Int_t iCounts = 0;
+  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
+    AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
+    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
+      fFDCSArraySum += v->GetInt();
+      iCounts += 1;
+    }
+  }
+  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
+  else fFDCSArrayMean = -10.;
+  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
+
+  return fDCSDataPointValue.Data();
+}
+
+//_______________________________________________________________
+const char* AliGRPDCS::ProcessUInt() {
+  Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
+  Int_t iCounts = 0;
+  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
+    AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
+    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
+      fFDCSArraySum += v->GetUInt();
+      iCounts += 1;
+    }
+  }
+  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
+  else fFDCSArrayMean = -10.;
+   
+  TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
+
+  return fDCSDataPointValue.Data();
+}
+
+//_______________________________________________________________
+const char* AliGRPDCS::ProcessFloat() {
   Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
+  Int_t iCounts = 0;
   for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
     AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
-    h->Fill(v->GetFloat());
-    fFDCSArraySum += v->GetFloat();
+    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
+      fFDCSArraySum += v->GetFloat();
+      iCounts += 1;
+    }
   }
-  fFDCSArrayMean = fFDCSArraySum/fDCSArray->GetEntries();
+  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
+  else fFDCSArrayMean = -10.;
+   
   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
 
   return fDCSDataPointValue.Data();
 }
 
+//_______________________________________________________________
+const char* AliGRPDCS::ProcessString() {
+  TString fDCSString, fDCSTemp;
+  Bool_t kFound = kFALSE;
+  Int_t iCount = 0;
+
+  AliDCSValue *v = 0x0;
+  while(!kFound) {
+    v = (AliDCSValue *)fDCSArray->At(iCount);
+    iCount += 1;
+    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
+  }
+  fDCSTemp = v->GetChar();
+  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
+    AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
+    if((v1->GetTimeStamp() >= fStartTime) &&(v1->GetTimeStamp() <= fStopTime)) {
+      fDCSString = v1->GetChar();
+      if(fDCSTemp != fDCSString) AliFatal("DCS data point value changed within the run!!!");
+    }
+  }
+  TString fDCSDataPointValue = fDCSString;
+
+  return fDCSDataPointValue.Data();
+}
+
+//_______________________________________________________________
+const char* AliGRPDCS::ProcessBoolean() {
+  Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
+  Bool_t kFound = kFALSE;
+  Int_t iCount = 0;
+
+  AliDCSValue *v = 0x0;
+  while(!kFound) {
+    v = (AliDCSValue *)fDCSArray->At(iCount);
+    iCount += 1;
+    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
+  }
+  fDCSTemp = v->GetBool();
+  for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
+    AliDCSValue *v1 = (AliDCSValue *)fDCSArray->At(i);
+    if((v1->GetTimeStamp() >= fStartTime) &&(v1->GetTimeStamp() <= fStopTime)) {
+      fDCSBool = v1->GetBool();
+      if(fDCSTemp != fDCSBool) AliFatal("DCS data point value changed within the run!!!");
+    }
+  }
+  TString fDCSDataPointValue = fDCSBool;
+
+  return fDCSDataPointValue.Data();
+}