Taking into account the DCS dp's time stamp in the calculation of mean values - We...
authorpanos <panos@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Mar 2007 15:50:12 +0000 (15:50 +0000)
committerpanos <panos@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 19 Mar 2007 15:50:12 +0000 (15:50 +0000)
STEER/AliGRPDCS.cxx
STEER/AliGRPDCS.h
STEER/AliGRPPreprocessor.cxx

index a0c362c..8eab15e 100644 (file)
@@ -33,14 +33,14 @@ ClassImp(AliGRPDCS)
 
 //_______________________________________________________________
 AliGRPDCS::AliGRPDCS():
-  TObject(), fDCSArray(new TObjArray()) {
+  TObject(), fStartTime(0), fStopTime(0), fDCSArray(new TObjArray()) {
   // default constructor
   
 }
 
 //_______________________________________________________________
-AliGRPDCS::AliGRPDCS(TObjArray *dcsArray):
-  TObject(), fDCSArray(new TObjArray()) {
+AliGRPDCS::AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop):
+  TObject(), fStartTime(fStart), fStopTime(fStop), fDCSArray(new TObjArray()) {
   // constructor
   fDCSArray = dcsArray;
 }
@@ -88,11 +88,17 @@ const char* AliGRPDCS::ProcessDCS(Int_t iType) {
 //_______________________________________________________________
 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);
-    fFDCSArraySum += v->GetInt();
+    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
+      fFDCSArraySum += v->GetInt();
+      iCounts += 1;
+    }
   }
-  fFDCSArrayMean = fFDCSArraySum/fDCSArray->GetEntries();
+  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
+  else fFDCSArrayMean = -10.;
   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
 
   return fDCSDataPointValue.Data();
@@ -101,11 +107,17 @@ const char* AliGRPDCS::ProcessInt() {
 //_______________________________________________________________
 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);
-    fFDCSArraySum += v->GetUInt();
+    if((v->GetTimeStamp() >= fStartTime) &&(v->GetTimeStamp() <= fStopTime)) {
+      fFDCSArraySum += v->GetUInt();
+      iCounts += 1;
+    }
   }
-  fFDCSArrayMean = fFDCSArraySum/fDCSArray->GetEntries();
+  if(iCounts != 0) fFDCSArrayMean = fFDCSArraySum/iCounts;
+  else fFDCSArrayMean = -10.;
+   
   TString fDCSDataPointValue; fDCSDataPointValue += fFDCSArrayMean;
 
   return fDCSDataPointValue.Data();
@@ -114,11 +126,17 @@ const char* AliGRPDCS::ProcessUInt() {
 //_______________________________________________________________
 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);
-    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();
@@ -127,12 +145,22 @@ const char* AliGRPDCS::ProcessFloat() {
 //_______________________________________________________________
 const char* AliGRPDCS::ProcessString() {
   TString fDCSString, fDCSTemp;
-  AliDCSValue *v = (AliDCSValue *)fDCSArray->At(0);
+  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);
-    fDCSString = v1->GetChar();
-    if(fDCSTemp != fDCSString) AliFatal("DCS data point value changed within the run!!!");
+    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;
 
@@ -142,12 +170,22 @@ const char* AliGRPDCS::ProcessString() {
 //_______________________________________________________________
 const char* AliGRPDCS::ProcessBoolean() {
   Bool_t fDCSBool = kTRUE, fDCSTemp = kTRUE;
-  AliDCSValue *v = (AliDCSValue *)fDCSArray->At(0);
+  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);
-    fDCSBool = v1->GetBool();
-    if(fDCSTemp != fDCSBool) AliFatal("DCS data point value changed within the run!!!");
+    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;
 
index 2306e3c..6d846f1 100644 (file)
 class AliGRPDCS: public TObject {
  public:
   AliGRPDCS();
-  AliGRPDCS(TObjArray *dcsArray);
+  AliGRPDCS(TObjArray *dcsArray, UInt_t fStart, UInt_t fStop);
   AliGRPDCS(const AliGRPDCS& grpDcs);
 
+  void SetTime(UInt_t fStart, UInt_t fStop) {fStartTime = fStart; fStopTime = fStop;}
   void SetObjArray(TObjArray *dcsSArray) {fDCSArray = dcsSArray;}
   const char *ProcessDCS(Int_t iType);  
   
  private:
-  
+  UInt_t fStartTime, fStopTime; //start and stop time of the run (DAQ lb)
   TObjArray *fDCSArray; //TObjArray for a dcs data point
   
   const char *ProcessInt();
index 8b13462..b3f0209 100644 (file)
@@ -74,7 +74,9 @@ void AliGRPPreprocessor::Initialize(Int_t run, UInt_t startTime, UInt_t endTime)
 UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
   // process data retrieved by the Shuttle
   const char* timeStart = GetRunParameter("time_start");
+  UInt_t iStartTime = atoi(timeStart);
   const char* timeEnd = GetRunParameter("time_end");
+  UInt_t iStopTime = atoi(timeEnd);
   const char* beamEnergy = GetRunParameter("beamEnergy");
   const char* beamType = GetRunParameter("beamType");
   const char* numberOfDetectors = GetRunParameter("numberOfDetectors");
@@ -89,7 +91,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("LHCState not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs1 = new AliGRPDCS(aliasLHCState);
+  AliGRPDCS *dcs1 = new AliGRPDCS(aliasLHCState,iStartTime,iStopTime);
   TString sLHCState = dcs1->ProcessDCS(3);  
   if (sLHCState) {
     Log(Form("<LHCState> for run %d: %s",fRun, sLHCState.Data()));
@@ -102,7 +104,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("LHCPeriod not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs2 = new AliGRPDCS(aliasLHCPeriod);
+  AliGRPDCS *dcs2 = new AliGRPDCS(aliasLHCPeriod,iStartTime,iStopTime);
   TString sLHCPeriod = dcs2->ProcessDCS(3);  
   if (sLHCPeriod) {
     Log(Form("<LHCPeriod> for run %d: %s",fRun, sLHCPeriod.Data()));
@@ -115,7 +117,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("LHCLuminosity not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs3 = new AliGRPDCS(aliasLHCLuminosity);
+  AliGRPDCS *dcs3 = new AliGRPDCS(aliasLHCLuminosity,iStartTime,iStopTime);
   TString sMeanLHCLuminosity = dcs3->ProcessDCS(2);  
   if (sMeanLHCLuminosity) {
     Log(Form("<LHCLuminosity> for run %d: %s",fRun, sMeanLHCLuminosity.Data()));
@@ -128,7 +130,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("BeamIntensity not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs4 = new AliGRPDCS(aliasBeamIntensity);
+  AliGRPDCS *dcs4 = new AliGRPDCS(aliasBeamIntensity,iStartTime,iStopTime);
   TString sMeanBeamIntensity = dcs4->ProcessDCS(2);  
   if (sMeanBeamIntensity) {
     Log(Form("<BeamIntensity> for run %d: %s",fRun, sMeanBeamIntensity.Data()));
@@ -141,7 +143,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("L3Current not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs5 = new AliGRPDCS(aliasL3Current);
+  AliGRPDCS *dcs5 = new AliGRPDCS(aliasL3Current,iStartTime,iStopTime);
   TString sMeanL3Current = dcs5->ProcessDCS(2);  
   if (sMeanL3Current) {
     Log(Form("<L3Current> for run %d: %s",fRun, sMeanL3Current.Data()));
@@ -154,7 +156,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("L3Polarity not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs6 = new AliGRPDCS(aliasL3Polarity);
+  AliGRPDCS *dcs6 = new AliGRPDCS(aliasL3Polarity,iStartTime,iStopTime);
   TString sL3Polarity = dcs6->ProcessDCS(4);  
   if (sL3Polarity) {
     Log(Form("<L3Polarity> for run %d: %s",fRun, sL3Polarity.Data()));
@@ -167,7 +169,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("DipoleCurrent not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs7 = new AliGRPDCS(aliasDipoleCurrent);
+  AliGRPDCS *dcs7 = new AliGRPDCS(aliasDipoleCurrent,iStartTime,iStopTime);
   TString sMeanDipoleCurrent = dcs7->ProcessDCS(2);  
   if (sMeanDipoleCurrent) {
     Log(Form("<DipoleCurrent> for run %d: %s",fRun, sMeanDipoleCurrent.Data()));
@@ -180,7 +182,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("DipolePolarity not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs8 = new AliGRPDCS(aliasDipolePolarity);
+  AliGRPDCS *dcs8 = new AliGRPDCS(aliasDipolePolarity,iStartTime,iStopTime);
   TString sDipolePolarity = dcs8->ProcessDCS(4);  
   if (sDipolePolarity) {
     Log(Form("<DipolePolarity> for run %d: %s",fRun, sDipolePolarity.Data()));
@@ -193,7 +195,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("CavernTemperature not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs9 = new AliGRPDCS(aliasCavernTemperature);
+  AliGRPDCS *dcs9 = new AliGRPDCS(aliasCavernTemperature,iStartTime,iStopTime);
   TString sMeanCavernTemperature = dcs9->ProcessDCS(2);  
   if (sMeanCavernTemperature) {
     Log(Form("<CavernTemperature> for run %d: %s",fRun, sMeanCavernTemperature.Data()));
@@ -206,7 +208,7 @@ UInt_t AliGRPPreprocessor::Process(TMap* valueMap) {
     Log(Form("CavernPressure not found!!!"));
     return 0;
   }
-  AliGRPDCS *dcs10 = new AliGRPDCS(aliasCavernPressure);
+  AliGRPDCS *dcs10 = new AliGRPDCS(aliasCavernPressure,iStartTime,iStopTime);
   TString sMeanCavernPressure = dcs10->ProcessDCS(2);  
   if (sMeanCavernPressure) {
     Log(Form("<CavernPressure> for run %d: %s",fRun, sMeanCavernPressure.Data()));