X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliDCSSensor.cxx;h=9aff23e41854b58a77b840bec27c7f3e0bb9dc08;hb=54af1addac9b317077543cb8f3e5e13eeff8bcec;hp=b856049f07d7b48cfa2bc24379a8e8e8b282bdb6;hpb=008ef66a86191d6052b2c6f0b86ff04750a31052;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliDCSSensor.cxx b/STEER/AliDCSSensor.cxx index b856049f07d..9aff23e4185 100644 --- a/STEER/AliDCSSensor.cxx +++ b/STEER/AliDCSSensor.cxx @@ -23,6 +23,7 @@ #include "AliDCSSensor.h" +#include "TDatime.h" ClassImp(AliDCSSensor) const Double_t kSecInHour = 3600.; // seconds in one hour @@ -78,9 +79,15 @@ Double_t AliDCSSensor::GetValue(UInt_t timeSec) { // // Get temperature value for actual sensor - // timeSec given as offset from start-of-run measured in seconds + // timeSec given as offset from start-of-map measured in seconds + // *NOTE* In the current TPC setup, start-of-map is defined as the + // first measured point for each sensor. This will be different + // for each sensor in the array. If you want to get a value at the + // same absolute time, use AliDCSSensor::GetValue(TTimeStamp time) + // or AliDCSSensorArray::GetValue (UInt_t timeSec, Int_t sensor) + // which measure offsets with respect to the (global) start-of-run // - Bool_t inside; + Bool_t inside=kTRUE; return Eval(TTimeStamp((time_t)(fStartTime+timeSec),0),inside); } //_____________________________________________________________________________ @@ -89,7 +96,7 @@ Double_t AliDCSSensor::GetValue(TTimeStamp time) // Get temperature value for actual sensor // time given as absolute TTimeStamp // - Bool_t inside; + Bool_t inside=kTRUE; return Eval(time, inside); } @@ -119,25 +126,71 @@ Double_t AliDCSSensor::Eval(const TTimeStamp& time, Bool_t inside) const if ( fFit ) { return fFit->Eval(timeHour); } else { - return -99; + if ( fGraph ) { + return EvalGraph(timeHour); + } else { + return -99; + } } } +//_____________________________________________________________________________ +Double_t AliDCSSensor::EvalGraph(const Double_t& timeHour) const +{ + // + // Extract last value in graph observed before time given by timeHour + // -TGraph* AliDCSSensor::MakeGraph(Int_t nPoints) const + // return -99 if point specified is before beginning of graph + Double_t x=0; Double_t y=0; + fGraph->GetPoint(0,x,y); + if ( timeHour < x ) return -99; + + // return previous point when first time > timeHour is observed + + Int_t npoints = fGraph->GetN(); + for (Int_t i=1; iGetPoint(i,x,y); + if ( timeHour < x ) { + fGraph->GetPoint(i-1,x,y); + return y; + } + } + + // return last point if all times are < timeHour + return y; +} + + +//_____________________________________________________________________________ +TGraph* AliDCSSensor::MakeGraph(Int_t nPoints, Bool_t debug) const { // // Make graph from start time to end time of DCS values // + + UInt_t stepTime = (fEndTime-fStartTime)/nPoints; + if (debug==kTRUE) { + printf ("Start time %d, End time %d, step time %d\n", + fStartTime,fEndTime,stepTime); + TTimeStamp t((time_t)fStartTime,0); t.Print(); + TTimeStamp t2((time_t)fEndTime,0); t2.Print(); + } + if ( !fFit ) return 0; Double_t *x = new Double_t[nPoints+1]; Double_t *y = new Double_t[nPoints+1]; for (Int_t ip=0; ipEval(ip*stepTime/kSecInHour); + if (debug==kTRUE) { + TTimeStamp t3((time_t)x[ip],0); + printf ("x=%f, y=%f ",x[ip],y[ip]); + t3.Print(); + } } TGraph *graph = new TGraph(nPoints,x,y);