]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - VZERO/AliVZERODataDCS.cxx
More debug printout.
[u/mrichter/AliRoot.git] / VZERO / AliVZERODataDCS.cxx
index 1aa2195e337a665057a94f2591e5599ba949ae16..17a79f7241a7ba66e7760422e758d0c85f9933f1 100644 (file)
 #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;
@@ -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;i<kNHvChannel;i++) {
+               fDeadChannel[i] = kFALSE;
+               fMeanHV[i]      = 100.0;
+               fWidthHV[i]     = 0.0; 
+               fHv[i]          = NULL;
+       }
 }
 
 //_____________________________________________________________________________
-AliVZERODataDCS::AliVZERODataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime):
+AliVZERODataDCS::AliVZERODataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime, UInt_t daqStartTime, UInt_t daqEndTime):
        TObject(),
        fRun(nRun),
        fStartTime(startTime),
        fEndTime(endTime),
-        fGraphs("TGraph",kNGraphs),
+       fDaqStartTime(daqStartTime),
+       fDaqEndTime(daqEndTime),
+       fGraphs("TGraph",kNGraphs),
+       fFEEParameters(new TMap()),
        fIsProcessed(kFALSE)
+
 {
 
   // constructor with arguments
-
-       AliInfo(Form("\n\tRun %d \n\tStartTime %s \n\tEndTime %s", nRun,
-       TTimeStamp(startTime).AsString(),
-       TTimeStamp(endTime).AsString()));
-
+       for(int i=0;i<kNHvChannel;i++) {
+        fDeadChannel[i] = kFALSE;        
+        fMeanHV[i]      = 100.0;
+     fWidthHV[i]     = 0.0; 
+       }
+       AliInfo(Form("\n\tRun %d \n\tTime Created %s \n\tTime Completed %s \n\tDAQ start %s \n\tDAQ end %s  ", nRun,
+               TTimeStamp(startTime).AsString(),
+               TTimeStamp(endTime).AsString(),
+               TTimeStamp(daqStartTime).AsString(),
+               TTimeStamp(daqEndTime).AsString()));
+       
+       fFEEParameters->SetOwnerValue();
        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(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())) {
+                       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;i<kNAliases;i++){
-               Int_t iChannel     = GetOfflineChannel(i);      
-               fMeanHV[iChannel]  = fHv[i]->GetMean();
-               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);