From: hristov Date: Thu, 28 Feb 2008 11:52:40 +0000 (+0000) Subject: Added OutsideThreshold function. Corrections to TTimeStamp syntax. Set startTime... X-Git-Url: http://git.uio.no/git/?a=commitdiff_plain;h=bf84b4031aa8e1580ea2f7cd5987ae3516c866f4;p=u%2Fmrichter%2FAliRoot.git Added OutsideThreshold function. Corrections to TTimeStamp syntax. Set startTime/endTime to first/last point in map. (Haavard) --- diff --git a/STEER/AliDCSSensor.cxx b/STEER/AliDCSSensor.cxx index 378ff071e06..47c3e07fac7 100644 --- a/STEER/AliDCSSensor.cxx +++ b/STEER/AliDCSSensor.cxx @@ -81,7 +81,7 @@ Double_t AliDCSSensor::GetValue(UInt_t timeSec) // timeSec given as offset from start-of-run measured in seconds // Bool_t inside; - return Eval(TTimeStamp(fStartTime+timeSec),inside); + return Eval(TTimeStamp((time_t)(fStartTime+timeSec)),inside); } //_____________________________________________________________________________ Double_t AliDCSSensor::GetValue(TTimeStamp time) diff --git a/STEER/AliDCSSensorArray.cxx b/STEER/AliDCSSensorArray.cxx index 94341a43419..0bdf76eb9a3 100644 --- a/STEER/AliDCSSensorArray.cxx +++ b/STEER/AliDCSSensorArray.cxx @@ -108,8 +108,8 @@ AliDCSSensorArray::AliDCSSensorArray(UInt_t startTime, UInt_t endTime, // fSensors = AliDCSSensor::ReadTree(confTree); fSensors->BypassStreamer(kFALSE); - fStartTime = TTimeStamp(startTime); - fEndTime = TTimeStamp(endTime); + fStartTime = TTimeStamp((time_t)startTime); + fEndTime = TTimeStamp((time_t)endTime); } @@ -133,8 +133,8 @@ AliDCSSensorArray::AliDCSSensorArray(UInt_t startTime, UInt_t endTime, // AliDCSSensorArray constructor for Shuttle preprocessor // (TClonesArray of AliDCSSensor objects) // - fStartTime = TTimeStamp(startTime); - fEndTime = TTimeStamp(endTime); + fStartTime = TTimeStamp((time_t)startTime); + fEndTime = TTimeStamp((time_t)endTime); } //_____________________________________________________________________________ @@ -213,7 +213,7 @@ void AliDCSSensorArray::MakeSplineFit(TMap *map, Bool_t keepMap) AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor); TString stringID = entry->GetStringID(); TGraph *gr = (TGraph*)map->GetValue(stringID.Data()); - if (!gr ) { + if (!gr || gr->GetN() == 0 ) { entry->SetFit(0); entry->SetGraph(0); AliWarning(Form("sensor %s: no input graph",stringID.Data())); @@ -296,7 +296,9 @@ TGraph* AliDCSSensorArray::MakeGraph(TObjArray* valueSet){ Float_t *x = new Float_t[nentries]; Float_t *y = new Float_t[nentries]; - Int_t time0=fStartTime.GetSec(); + Int_t time0=0; + TTimeStamp firstTime(0); + TTimeStamp lastTime(0); Int_t out=0; Int_t skipped=0; AliDCSValue *val = (AliDCSValue *)valueSet->At(0); @@ -308,6 +310,8 @@ TGraph* AliDCSSensorArray::MakeGraph(TObjArray* valueSet){ if (!val) continue; if (time0==0){ time0=val->GetTimeStamp(); + firstTime= val->GetTimeStamp(); + lastTime=val->GetTimeStamp(); } switch ( type ) { @@ -335,11 +339,13 @@ TGraph* AliDCSSensorArray::MakeGraph(TObjArray* valueSet){ skipped=0; } if (val->GetTimeStamp()-time0>1000000) continue; + lastTime=val->GetTimeStamp(); x[out] = (val->GetTimeStamp()-time0)/kSecInHour; // give times in fractions of hours y[out] = val->GetFloat(); - out++; - + out++; } + SetStartTime(firstTime); + SetEndTime(lastTime); TGraph * graph = new TGraph(out,x,y); delete [] x; delete [] y; @@ -399,7 +405,7 @@ AliDCSSensor* AliDCSSensorArray::GetSensor(Double_t x, Double_t y, Double_t z) return 0; } } - +//_____________________________________________________________________________ AliDCSSensor* AliDCSSensorArray::GetSensorNum(Int_t ind) { // @@ -408,6 +414,7 @@ AliDCSSensor* AliDCSSensorArray::GetSensorNum(Int_t ind) return (AliDCSSensor*)fSensors->At(ind); } +//_____________________________________________________________________________ void AliDCSSensorArray::RemoveSensorNum(Int_t ind) { // @@ -417,6 +424,7 @@ void AliDCSSensorArray::RemoveSensorNum(Int_t ind) delete fSensors->RemoveAt(ind); fSensors->Compress(); } +//_____________________________________________________________________________ void AliDCSSensorArray::RemoveSensor(Int_t IdDCS) { // @@ -433,7 +441,32 @@ void AliDCSSensorArray::RemoveSensor(Int_t IdDCS) } fSensors->Compress(); } - +//_____________________________________________________________________________ +TArrayI AliDCSSensorArray::OutsideThreshold(Double_t threshold, UInt_t timeSec, Bool_t below) const +{ + // + // Return sensors with values outside threshold at time defined by second + // parameter + // By default sensors with values below threshold are listed, if third + // parameter is set to kFALSE sensors with values above threshold are listed + // + Int_t nsensors = fSensors->GetEntries(); + TArrayI array(nsensors); + Int_t outside=0; + for (Int_t isensor=0; isensorAt(isensor); + Double_t val=entry->GetValue(timeSec); + if (below) { + if (valGetIdDCS(); + } else { + if (val>threshold) array[outside++] = entry->GetIdDCS(); + } + } + array.Set(outside); + return array; +} + +//_____________________________________________________________________________ Int_t AliDCSSensorArray::GetFirstIdDCS() const { // @@ -446,6 +479,7 @@ Int_t AliDCSSensorArray::GetFirstIdDCS() const } } +//_____________________________________________________________________________ Int_t AliDCSSensorArray::GetLastIdDCS() const { // @@ -458,6 +492,7 @@ Int_t AliDCSSensorArray::GetLastIdDCS() const return 0; } } +//_____________________________________________________________________________ void AliDCSSensorArray::ClearGraph() { // @@ -475,6 +510,7 @@ void AliDCSSensorArray::ClearGraph() sensor->SetGraph(0); } } +//_____________________________________________________________________________ void AliDCSSensorArray::ClearFit() { // diff --git a/STEER/AliDCSSensorArray.h b/STEER/AliDCSSensorArray.h index 2dd2fc3a3a2..91ab6cd4cec 100644 --- a/STEER/AliDCSSensorArray.h +++ b/STEER/AliDCSSensorArray.h @@ -64,6 +64,7 @@ class AliDCSSensorArray : public TNamed { AliDCSSensor* GetSensorNum (Int_t ind); void RemoveSensorNum(Int_t ind); void RemoveSensor(Int_t IdDCS); + TArrayI OutsideThreshold(Double_t threshold, UInt_t timeSec=0, Bool_t below=kTRUE) const; Int_t NumSensors() const { return fSensors->GetEntries(); } Int_t NumFits() const;