////////////////////////////////////////////////////////////////////////////////
-// Running instructions:
-/*
- TClonesArray * arr = AliDCSSensor::ReadList("TempSensor.txt");
- TFile f("TempSensors.root","RECREATE");
- TTree * tree = new TTree("TempSensor", "TempSensor");
- tree->Branch("Temp",&arr);
- tree->Fill();
- tree->Write();
-
- */
-//
-
-
#include "AliDCSSensor.h"
ClassImp(AliDCSSensor)
-const Double_t kSmall = -9e99; // invalid small value
-const Double_t kLarge = 9e99; // invalid large value
const Double_t kSecInHour = 3600.; // seconds in one hour
AliDCSSensor::AliDCSSensor():
fId(),
fIdDCS(0),
+ fStringID(),
fStartTime(0),
fEndTime(0),
fGraph(0),
TNamed(source),
fId(source.fId),
fIdDCS(source.fIdDCS),
+ fStringID(source.fStringID),
fStartTime(source.fStartTime),
fEndTime(source.fEndTime),
fGraph(source.fGraph),
//
if (&source == this) return *this;
new (this) AliDCSSensor(source);
-
- return *this;
+
+ return *this;
}
//_____________________________________________________________________________
-Double_t AliDCSSensor::GetValue(UInt_t timeSec)
+Double_t AliDCSSensor::GetValue(UInt_t timeSec)
{
//
// Get temperature value for actual sensor
// timeSec given as offset from start-of-run measured in seconds
//
- return Eval(TTimeStamp(timeSec));
+ Bool_t inside;
+ return Eval(TTimeStamp(fStartTime+timeSec),inside);
}
//_____________________________________________________________________________
Double_t AliDCSSensor::GetValue(TTimeStamp time)
// Get temperature value for actual sensor
// time given as absolute TTimeStamp
//
- return Eval(time);
+ Bool_t inside;
+ return Eval(time, inside);
}
//_____________________________________________________________________________
-Double_t AliDCSSensor::Eval(const TTimeStamp& time) const
+Double_t AliDCSSensor::Eval(const TTimeStamp& time, Bool_t inside) const
{
//
// Return temperature at given time
- // If time < start of map return kSmall
- // If time > end of map return kLarge
+ // If time < start of map return value at start of map, inside = false
+ // If time > end of map return value at end of map, inside = false
UInt_t timeSec = time.GetSec();
UInt_t diff = timeSec-fStartTime;
+ inside = true;
- if ( timeSec < fStartTime ) return kSmall;
- if ( timeSec > fEndTime ) return kLarge;
+ if ( timeSec < fStartTime ) {
+ inside=false;
+ diff=0;
+ }
+ if ( timeSec > fEndTime ) {
+ inside=false;
+ diff = fEndTime-fStartTime;
+ }
Double_t timeHour = diff/kSecInHour;
if ( fFit ) {
return fFit->Eval(timeHour);
} else {
- return kSmall;
+ return -99;
}
}
graph->GetXaxis()->SetTimeDisplay(1);
graph->GetXaxis()->SetLabelOffset(0.02);
graph->GetXaxis()->SetTimeFormat("#splitline{%d/%m}{%H:%M}");
-
+
return graph;
}
+//_____________________________________________________________________________
+
+TClonesArray * AliDCSSensor::ReadTree(TTree* tree) {
+ //
+ // read values from ascii file
+ //
+
+ Int_t nentries = tree->GetEntries();
+
+ char stringId[100];
+ Int_t num=0;
+ Int_t idDCS=0;
+ Double_t x=0;
+ Double_t y=0;
+ Double_t z=0;
+
+ tree->SetBranchAddress("StringID",&stringId);
+ tree->SetBranchAddress("IdDCS",&idDCS);
+ tree->SetBranchAddress("Num",&num);
+ tree->SetBranchAddress("X",&x);
+ tree->SetBranchAddress("Y",&y);
+ tree->SetBranchAddress("Z",&z);
+
+ // firstSensor = (Int_t)tree->GetMinimum("ECha");
+ // lastSensor = (Int_t)tree->GetMaximum("ECha");
+
+ TClonesArray * array = new TClonesArray("AliDCSSensor",nentries);
+ printf ("nentries = %d\n",nentries);
+
+ for (Int_t isensor=0; isensor<nentries; isensor++){
+ AliDCSSensor * sens = new ((*array)[isensor])AliDCSSensor;
+ tree->GetEntry(isensor);
+ sens->SetId(isensor);
+ sens->SetIdDCS(idDCS);
+ sens->SetStringID(TString(stringId));
+ sens->SetX(x);
+ sens->SetY(y);
+ sens->SetZ(z);
+
+ }
+ return array;
+}