//
fSensors = AliDCSSensor::ReadTree(confTree);
fSensors->BypassStreamer(kFALSE);
- fStartTime = TTimeStamp(startTime);
- fEndTime = TTimeStamp(endTime);
+ fStartTime = TTimeStamp((time_t)startTime);
+ fEndTime = TTimeStamp((time_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);
}
//_____________________________________________________________________________
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()));
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);
if (!val) continue;
if (time0==0){
time0=val->GetTimeStamp();
+ firstTime= val->GetTimeStamp();
+ lastTime=val->GetTimeStamp();
}
switch ( type )
{
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;
return 0;
}
}
-
+//_____________________________________________________________________________
AliDCSSensor* AliDCSSensorArray::GetSensorNum(Int_t ind)
{
//
return (AliDCSSensor*)fSensors->At(ind);
}
+//_____________________________________________________________________________
void AliDCSSensorArray::RemoveSensorNum(Int_t ind)
{
//
delete fSensors->RemoveAt(ind);
fSensors->Compress();
}
+//_____________________________________________________________________________
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; isensor<nsensors; isensor++) { // loop over sensors
+ AliDCSSensor *entry = (AliDCSSensor*)fSensors->At(isensor);
+ Double_t val=entry->GetValue(timeSec);
+ if (below) {
+ if (val<threshold) array[outside++] = entry->GetIdDCS();
+ } else {
+ if (val>threshold) array[outside++] = entry->GetIdDCS();
+ }
+ }
+ array.Set(outside);
+ return array;
+}
+
+//_____________________________________________________________________________
Int_t AliDCSSensorArray::GetFirstIdDCS() const
{
//
}
}
+//_____________________________________________________________________________
Int_t AliDCSSensorArray::GetLastIdDCS() const
{
//
return 0;
}
}
+//_____________________________________________________________________________
void AliDCSSensorArray::ClearGraph()
{
//
sensor->SetGraph(0);
}
}
+//_____________________________________________________________________________
void AliDCSSensorArray::ClearFit()
{
//