X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=VZERO%2FAliVZERODataDCS.cxx;h=17a79f7241a7ba66e7760422e758d0c85f9933f1;hb=93f60e03a9f183a11dbfb03b4bd247d12f0bdcf5;hp=1aa2195e337a665057a94f2591e5599ba949ae16;hpb=ebee0db9816045c1185a7c2643ab39810391e658;p=u%2Fmrichter%2FAliRoot.git diff --git a/VZERO/AliVZERODataDCS.cxx b/VZERO/AliVZERODataDCS.cxx index 1aa2195e337..17a79f7241a 100644 --- a/VZERO/AliVZERODataDCS.cxx +++ b/VZERO/AliVZERODataDCS.cxx @@ -19,11 +19,14 @@ #include "AliDCSValue.h" #include "AliLog.h" -#include "TGraph.h" -#include "TAxis.h" -#include "TCanvas.h" -#include "TTimeStamp.h" -#include "TMap.h" +#include +#include +#include +#include +#include +#include +#include +#include class TH2; class AliCDBMetaData; @@ -43,28 +46,49 @@ AliVZERODataDCS::AliVZERODataDCS(): fRun(0), fStartTime(0), fEndTime(0), - fGraphs("TGraph",kNGraphs), + fDaqStartTime(0), + fDaqEndTime(0), + fGraphs("TGraph",kNGraphs), + fFEEParameters(NULL), fIsProcessed(kFALSE) + { // Default constructor + for(int i=0;iSetOwnerValue(); Init(); } @@ -74,13 +98,15 @@ AliVZERODataDCS::~AliVZERODataDCS() { // destructor fGraphs.Clear("C"); + delete fFEEParameters; } //_____________________________________________________________________________ -void AliVZERODataDCS::ProcessData(TMap& aliasMap){ +Bool_t AliVZERODataDCS::ProcessData(TMap& aliasMap){ // method to process the data + Bool_t success = kTRUE; if(!(fAliasNames[0])) Init(); @@ -93,46 +119,63 @@ void AliVZERODataDCS::ProcessData(TMap& aliasMap){ aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[iAlias].Data()); if(!aliasArr){ AliError(Form("Alias %s not found!", fAliasNames[iAlias].Data())); - return; + success = kFALSE; + continue; } - 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(iAliasGetEntries(); + + 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())) { + UInt_t currentTime = aValue->GetTimeStamp(); + if(currentTime>fDaqEndTime) break; + + values[iValue] = aValue->GetFloat(); + times[iValue] = (Double_t) (currentTime); + + if(iValue>0) { + if(values[iValue-1]>0.) variation = TMath::Abs(values[iValue]-values[iValue-1])/values[iValue-1]; + if(variation > 0.01) fDeadChannel[GetOfflineChannel(iAlias)] = kTRUE; + } + 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 + // calculate mean and rms of the first two histos // and convert index to aliroot channel - for(int i=0;iGetMean(); - fWidthHV[iChannel] = fHv[i]->GetRMS(); - } - + Int_t iChannel = GetOfflineChannel(iAlias); + fMeanHV[iChannel] = fHv[iAlias]->GetMean(); + fWidthHV[iChannel] = fHv[iAlias]->GetRMS(); + + 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); + } + } + fIsProcessed=kTRUE; + + return success; } //_____________________________________________________________________________ @@ -151,12 +194,40 @@ void AliVZERODataDCS::Init(){ sindex.Form("%d/RING%d",iSector,iRing); fAliasNames[iAlias] += sindex; - fHv[iAlias] = new TH1F(fAliasNames[iAlias].Data(),fAliasNames[iAlias].Data(), 2000, kHvMin, kHvMax); + fHv[iAlias] = new TH1F(fAliasNames[iAlias].Data(),fAliasNames[iAlias].Data(), 3000, kHvMin, kHvMax); fHv[iAlias]->GetXaxis()->SetTitle("Hv"); iAlias++; } } } + + // 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); + } + + // HPTDC parameters + for(int iCIU = 0; iCIU<8 ; iCIU++){ + fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/MatchWindow",iCIU); + fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/SearchWindow",iCIU); + fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/TriggerCountOffset",iCIU); + fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/RollOver",iCIU); + } + + for(int iCIU = 0; iCIU<8 ; iCIU++){ + for(int iCh=1;iCh<=8;iCh++){ + fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/DelayHit%d",iCIU,iCh); + } + } + + for(int iCIU = 0; iCIU<8 ; iCIU++){ + for(int iCh=1;iCh<=8;iCh++){ + fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/DiscriThr%d",iCIU,iCh); + } + } + if(iAlias!=kNAliases) AliError(Form("Number of DCS Aliases defined not correct")); @@ -199,16 +270,16 @@ void AliVZERODataDCS::Draw(const Option_t* /*option*/) 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);