// AliGRPDCS class
// This class deals with the DCS related info of the GRP
// Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
+// Modified: Ernesto.Lopez.Torres@cern.ch CEADEN-CERN
//-----------------------------------------------------------------
#include "Riostream.h"
#include "TError.h"
//_______________________________________________________________
AliGRPDCS::AliGRPDCS():
- TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
+ TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray())
+{
// default constructor
}
//___________________________________________________________________________
AliGRPDCS::AliGRPDCS(const AliGRPDCS& grpDcs):
TObject(grpDcs),
- fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime) {
+ fStartTime(grpDcs.fStartTime), fStopTime(grpDcs.fStopTime),
+ fDCSArray(grpDcs.fDCSArray)
+{
//copy constructor
- if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
+ //if (grpDcs.fDCSArray) fDCSArray = new TObjArray();
}
//_______________________________________________________________
-const char* AliGRPDCS::ProcessDCS(Int_t iType) {
+const char* AliGRPDCS::ProcessDCS(Int_t iType)
+{
// process the dcs dps
if(!fDCSArray->GetEntries()) {
Error("AliGRPDCS::ProcessDCS","No entries in array!!!");
return 0;
}
- //0:Int - 1:UInt - 2:Float - 3:String - 4:Bool
+ // 1:Bool - 2:Char - 3:Int - 4:UInt - 5:Float
TString fDCSDataPointValue;
switch (iType) {
- case 0: {
- fDCSDataPointValue += ProcessInt();
- break;
- }
- case 1: {
- fDCSDataPointValue += ProcessUInt();
- break;
- }
- case 2: {
- fDCSDataPointValue += ProcessFloat();
- break;
- }
- case 3: {
- fDCSDataPointValue += ProcessString();
- cout<<fDCSDataPointValue.Data()<<endl;
- break;
- }
- case 4: {
- fDCSDataPointValue += ProcessBoolean();
- break;
- }
- default: break;
+ case 1: {
+ fDCSDataPointValue += ProcessBoolean();
+ break;
+ }
+ case 2: {
+ fDCSDataPointValue += ProcessChar();
+ break;
+ }
+ case 3: {
+ fDCSDataPointValue += ProcessInt();
+ break;
+ }
+ case 4: {
+ fDCSDataPointValue += ProcessUInt();
+ break;
+ }
+ case 5: {
+ fDCSDataPointValue += ProcessFloat();
+ break;
+ }
+// case 6: {
+// fDCSDataPointValue += ProcessString();
+// break;
+// }
+ default: {
+ Error("AliGRPDCS::ProcessDCS", "Unknown type!!!" );
+ break;
+ }
}//switch
- cout<<fDCSDataPointValue.Data()<<endl;
+ //cout<<fDCSDataPointValue.Data()<<endl;
+ return fDCSDataPointValue.Data();
+}
+
+//_______________________________________________________________
+const char* AliGRPDCS::ProcessBoolean()
+{
+ Bool_t fDCSBool = kTRUE;
+ Bool_t previousBool = kTRUE;
+
+ AliDCSValue *v = 0x0;
+
+ for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
+ v = (AliDCSValue *)fDCSArray->At(iCount);
+ if ((v->GetTimeStamp() < fStartTime) || (v->GetTimeStamp() > fStopTime)) {
+ AliError(Form("DCS values for the parameter outside the queried interval"));
+ continue;
+ }
+ fDCSBool = v->GetBool();
+ if (iCount > 0) {
+ if (fDCSBool != previousBool)
+ AliError(Form("DCS values for the parameter changed from %d to %d within the queried interval", (Int_t)previousBool, (Int_t)fDCSBool));
+ }
+ previousBool = fDCSBool;
+ }
+
+ TString fDCSDataPointValue = (fDCSBool)? "1" : "0";
+
return fDCSDataPointValue.Data();
}
//_______________________________________________________________
-const char* AliGRPDCS::ProcessInt() {
+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++) {
}
//_______________________________________________________________
-const char* AliGRPDCS::ProcessUInt() {
+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++) {
}
//_______________________________________________________________
-const char* AliGRPDCS::ProcessFloat() {
+const char* AliGRPDCS::ProcessFloat()
+{
Float_t fFDCSArraySum = 0.0, fFDCSArrayMean = 0.0;
Int_t iCounts = 0;
+ //printf("Entries: %d\n",fDCSArray->GetEntries());
+ //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
for(Int_t i = 0; i < fDCSArray->GetEntries(); i++) {
AliDCSValue *v = (AliDCSValue *)fDCSArray->At(i);
if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
}
//_______________________________________________________________
-const char* AliGRPDCS::ProcessString() {
- TString fDCSString, fDCSTemp;
- Bool_t kFound = kFALSE;
- Int_t iCount = 0;
+const char* AliGRPDCS::ProcessChar()
+{
+ TString fDCSString;
AliDCSValue *v = 0x0;
- printf("Entries: %d\n",fDCSArray->GetEntries());
- printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
-
- while(!kFound) {
+ //printf("Entries: %d\n",fDCSArray->GetEntries());
+ //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
+
+ for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
v = (AliDCSValue *)fDCSArray->At(iCount);
- iCount += 1;
- cout<<"Time: "<<v->GetTimeStamp()<<endl;
- if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) kFound = kTRUE;
- }
- fDCSTemp = v->GetChar();
- cout<<"Found: "<<kFound<<" - String: "<<fDCSTemp.Data()<<endl;
- 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!!!");
- }
+ if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime))
+ AliError(Form("DCS values for the parameter changed within the queried interval"));
+ if (v->GetTimeStamp() > fStopTime) continue;
+ fDCSString = v->GetChar();
}
+
TString fDCSDataPointValue = fDCSString;
- cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;
-
+
return fDCSDataPointValue.Data();
}
+/*
//_______________________________________________________________
-const char* AliGRPDCS::ProcessBoolean() {
- Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
- Bool_t kFound = kFALSE;
- Int_t iCount = 0;
+const char* AliGRPDCS::ProcessString()
+{
+ TString fDCSString;
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!!!");
- }
+
+ //printf("Entries: %d\n",fDCSArray->GetEntries());
+ //printf("Start: %d - Stop: %d\n",fStartTime,fStopTime);
+
+ for(Int_t iCount = 0; iCount < fDCSArray->GetEntries(); iCount++) {
+ v = (TObjString *)fDCSArray->At(iCount);
+ if ((v->GetTimeStamp() >= fStartTime) && (v->GetTimeStamp() <= fStopTime))
+ AliError(Form("DCS values for the parameter changed within the queried interval"));
+ if (v->GetTimeStamp() > fStopTime) continue;
+ fDCSString = v->GetChar(); // FIXME should be something like v->GetString()
}
- TString fDCSDataPointValue = fDCSBool;
+
+ TString fDCSDataPointValue = fDCSString;
+ //cout<<"Returned String: "<<fDCSDataPointValue.Data()<<endl;
return fDCSDataPointValue.Data();
}
+*/