From 1f9bf847c77c5579b777a8f5298f26b1c70d1f60 Mon Sep 17 00:00:00 2001 From: panos Date: Mon, 19 Mar 2007 15:50:12 +0000 Subject: [PATCH] Taking into account the DCS dp's time stamp in the calculation of mean values - We still get an AliFatal in case the values of dp's with string or bool type change within a run --- STEER/AliGRPDCS.cxx | 68 ++++++++++++++++++++++++++++-------- STEER/AliGRPDCS.h | 5 +-- STEER/AliGRPPreprocessor.cxx | 22 ++++++------ 3 files changed, 68 insertions(+), 27 deletions(-) diff --git a/STEER/AliGRPDCS.cxx b/STEER/AliGRPDCS.cxx index a0c362c7636..8eab15e7943 100644 --- a/STEER/AliGRPDCS.cxx +++ b/STEER/AliGRPDCS.cxx @@ -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; diff --git a/STEER/AliGRPDCS.h b/STEER/AliGRPDCS.h index 2306e3c6239..6d846f1abfc 100644 --- a/STEER/AliGRPDCS.h +++ b/STEER/AliGRPDCS.h @@ -24,14 +24,15 @@ 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(); diff --git a/STEER/AliGRPPreprocessor.cxx b/STEER/AliGRPPreprocessor.cxx index 8b1346203b5..b3f02092b02 100644 --- a/STEER/AliGRPPreprocessor.cxx +++ b/STEER/AliGRPPreprocessor.cxx @@ -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(" 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(" 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(" 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(" 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(" 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(" 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(" 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(" 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(" 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(" for run %d: %s",fRun, sMeanCavernPressure.Data())); -- 2.43.5