#include "AliDCSValue.h"
#include "AliLog.h"
-#include "TGraph.h"
-#include "TAxis.h"
-#include "TCanvas.h"
-#include "TTimeStamp.h"
-#include "TMap.h"
+#include <TGraph.h>
+#include <TAxis.h>
+#include <TCanvas.h>
+#include <TTimeStamp.h>
+#include <TMap.h>
+#include <TString.h>
+#include <TObjString.h>
+#include <TH1F.h>
class TH2;
class AliCDBMetaData;
fRun(0),
fStartTime(0),
fEndTime(0),
- fGraphs("TGraph",kNGraphs),
+ fGraphs("TGraph",kNGraphs),
+ fFEEParameters(NULL),
fIsProcessed(kFALSE)
+
{
// Default constructor
+ for(int i=0;i<kNHvChannel;i++) fDeadChannel[i] = kFALSE;
}
//_____________________________________________________________________________
fRun(nRun),
fStartTime(startTime),
fEndTime(endTime),
- fGraphs("TGraph",kNGraphs),
+ fGraphs("TGraph",kNGraphs),
+ fFEEParameters(new TMap()),
fIsProcessed(kFALSE)
+
{
// constructor with arguments
+ for(int i=0;i<kNHvChannel;i++) fDeadChannel[i] = kFALSE;
AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", nRun,
- TTimeStamp(startTime).AsString(),
- TTimeStamp(endTime).AsString()));
-
+ TTimeStamp(startTime).AsString(),
+ TTimeStamp(endTime).AsString()));
+
+ fFEEParameters->SetOwnerValue();
Init();
}
// destructor
fGraphs.Clear("C");
+ delete fFEEParameters;
}
return;
}
- Introduce(iAlias, aliasArr);
+ //Introduce(iAlias, aliasArr);
if(aliasArr->GetEntries()<2){
- AliError(Form("Alias %s has just %d entries!",
+ AliWarning(Form("Alias %s has just %d entries!",
fAliasNames[iAlias].Data(),aliasArr->GetEntries()));
- continue;
}
TIter iterarray(aliasArr);
-
- Int_t nentries = aliasArr->GetEntries();
-
- Double_t *Times = new Double_t[nentries];
- Double_t *Values = new Double_t[nentries];
-
- UInt_t iValue=0;
- while((aValue = (AliDCSValue*) iterarray.Next())) {
- Values[iValue] = aValue->GetFloat();
- Times[iValue] = (Double_t) (aValue->GetTimeStamp());
- fHv[iAlias]->Fill(Values[iValue]);
- iValue++;
- }
- CreateGraph(iAlias, aliasArr->GetEntries(), Times, Values); // fill graphs
-
- delete[] Values;
- delete[] Times;
+
+ if(iAlias<kNHvChannel){ // Treating HV values
+ Int_t nentries = aliasArr->GetEntries();
+
+ Double_t *times = new Double_t[nentries];
+ Double_t *values = new Double_t[nentries];
+
+ UInt_t iValue=0;
+ Float_t variation = 0.0;
+
+ while((aValue = (AliDCSValue*) iterarray.Next())) {
+ values[iValue] = aValue->GetFloat();
+ if(iValue>0) {
+ if(values[iValue-1]>0.) variation = TMath::Abs(values[iValue]-values[iValue-1])/values[iValue-1];
+ if(variation > 0.10) fDeadChannel[GetOfflineChannel(iAlias)] = kTRUE;
+ }
+ times[iValue] = (Double_t) (aValue->GetTimeStamp());
+ fHv[iAlias]->Fill(values[iValue]);
+ printf("%s %f Dead=%d\n",fAliasNames[iAlias].Data(),values[iValue],fDeadChannel[GetOfflineChannel(iAlias)]);
+ iValue++;
+ }
+ CreateGraph(iAlias, aliasArr->GetEntries(), times, values); // fill graphs
+
+ delete[] values;
+ delete[] times;
+ } else { // Treating FEE Parameters
+ AliDCSValue * lastVal = NULL;
+ while((aValue = (AliDCSValue*) iterarray.Next())) lastVal = aValue; // Take only the last value
+ fFEEParameters->Add(new TObjString(fAliasNames[iAlias].Data()),lastVal);
+ }
}
// calculate mean and rms of the first two histos
// and convert index to aliroot channel
- for(int i=0;i<kNAliases;i++){
- Int_t iChannel = GetOfflineChannel(i);
+ for(int i=0;i<kNHvChannel;i++){
+ Int_t iChannel = GetOfflineChannel(i);
fMeanHV[iChannel] = fHv[i]->GetMean();
fWidthHV[iChannel] = fHv[i]->GetRMS();
}
}
}
}
+
+ // Time Resolution Parameters
+
+ for(int iCIU = 0; iCIU<8 ; iCIU++){
+ fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/TimeResolution",iCIU);
+ fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/WidthResolution",iCIU);
+ }
+
if(iAlias!=kNAliases)
AliError(Form("Number of DCS Aliases defined not correct"));
if(fGraphs.GetEntries()==0) return;
- TString CanvasName;
+ TString canvasName;
TCanvas *cHV[8];
for(int iSide = 0 ;iSide<2;iSide++){
for(int iRing=0;iRing<4;iRing++){
- if(iSide == 0) CanvasName = "V0A_Ring";
- else CanvasName = "V0C_Ring";
- CanvasName += iRing;
+ if(iSide == 0) canvasName = "V0A_Ring";
+ else canvasName = "V0C_Ring";
+ canvasName += iRing;
int iCanvas = iSide*4 + iRing;
- cHV[iCanvas] = new TCanvas(CanvasName,CanvasName);
+ cHV[iCanvas] = new TCanvas(canvasName,canvasName);
cHV[iCanvas]->Divide(3,3);
for(int iSector=0;iSector<8;iSector++){
cHV[iCanvas]->cd(iSector+1);