LCOV - code coverage report
Current view: top level - VZERO/VZERObase - AliVZERODataDCS.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 139 0.7 %
Date: 2016-06-14 17:26:59 Functions: 1 13 7.7 %

          Line data    Source code
       1             : /**************************************************************************
       2             :  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             :  *                                                                        *
       4             :  * Author: The ALICE Off-line Project.                                    *
       5             :  * Contributors are mentioned in the code where appropriate.              *
       6             :  *                                                                        *
       7             :  * Permission to use, copy, modify and distribute this software and its   *
       8             :  * documentation strictly for non-commercial purposes is hereby granted   *
       9             :  * without fee, provided that the above copyright notice appears in all   *
      10             :  * copies and that both the copyright notice and this permission notice   *
      11             :  * appear in the supporting documentation. The authors make no claims     *
      12             :  * about the suitability of this software for any purpose. It is          *
      13             :  * provided "as is" without express or implied warranty.                  *
      14             :  **************************************************************************/
      15             : 
      16             : 
      17             : #include "AliVZERODataDCS.h"
      18             : 
      19             : #include "AliDCSValue.h"
      20             : #include "AliLog.h"
      21             : 
      22             : #include <TGraph.h>
      23             : #include <TAxis.h>
      24             : #include <TCanvas.h>
      25             : #include <TTimeStamp.h>
      26             : #include <TMap.h>
      27             : #include <TString.h>
      28             : #include <TObjString.h>
      29             : #include <TH1F.h>
      30             : 
      31             : class TH2;
      32             : class AliCDBMetaData;
      33             : class TDatime;
      34             : 
      35             : // AliVZERODataDCS class
      36             : // main aim to introduce the aliases for the VZERO DCS
      37             : // data points to be then
      38             : // stored in the OCDB, and to process them. 
      39             : // ProcessData() method called by VZEROPreprocessor
      40             : 
      41          44 : ClassImp(AliVZERODataDCS)
      42             : 
      43             : //_____________________________________________________________________________
      44           0 : AliVZERODataDCS::AliVZERODataDCS():
      45           0 :         TObject(),
      46           0 :         fRun(0),
      47           0 :         fStartTime(0),
      48           0 :         fEndTime(0),
      49           0 :         fDaqStartTime(0),
      50           0 :         fDaqEndTime(0),
      51           0 :         fCtpStartTime(0),
      52           0 :         fCtpEndTime(0),
      53           0 :     fGraphs("TGraph",kNGraphs),
      54           0 :         fFEEParameters(NULL),
      55           0 :         fIsProcessed(kFALSE)
      56             : 
      57           0 : {
      58             :   // Default constructor
      59           0 :         for(int i=0;i<kNHvChannel;i++) {
      60           0 :                 fDeadChannel[i] = kFALSE;
      61           0 :                 fMeanHV[i]      = 100.0;
      62           0 :                 fWidthHV[i]     = 0.0; 
      63           0 :                 fHv[i]          = NULL;
      64             :         }
      65           0 : }
      66             : 
      67             : //_____________________________________________________________________________
      68           0 : AliVZERODataDCS::AliVZERODataDCS(Int_t nRun, UInt_t startTime, UInt_t endTime, UInt_t daqStartTime, UInt_t daqEndTime, UInt_t ctpStartTime, UInt_t ctpEndTime):
      69           0 :         TObject(),
      70           0 :         fRun(nRun),
      71           0 :         fStartTime(startTime),
      72           0 :         fEndTime(endTime),
      73           0 :         fDaqStartTime(daqStartTime),
      74           0 :         fDaqEndTime(daqEndTime),
      75           0 :         fCtpStartTime(ctpStartTime),
      76           0 :         fCtpEndTime(ctpEndTime),
      77           0 :         fGraphs("TGraph",kNGraphs),
      78           0 :         fFEEParameters(new TMap()),
      79           0 :         fIsProcessed(kFALSE)
      80             : 
      81           0 : {
      82             : 
      83             :   // constructor with arguments
      84           0 :         for(int i=0;i<kNHvChannel;i++) {
      85           0 :          fDeadChannel[i] = kFALSE;        
      86           0 :          fMeanHV[i]      = 100.0;
      87           0 :      fWidthHV[i]     = 0.0; 
      88             :         }
      89           0 :         AliInfo(Form("\n\tRun %d \n\tTime Created %s \n\tTime Completed %s \n\tDAQ start %s \n\tDAQ end %s \n\tCTP start %s \n\tCTP end %s   ", nRun,
      90             :                 TTimeStamp(startTime).AsString(),
      91             :                 TTimeStamp(endTime).AsString(),
      92             :                 TTimeStamp(daqStartTime).AsString(),
      93             :                 TTimeStamp(daqEndTime).AsString(),
      94             :                 TTimeStamp(ctpStartTime).AsString(),
      95             :                 TTimeStamp(ctpEndTime).AsString()
      96             :                 ));
      97             :         
      98           0 :         fFEEParameters->SetOwnerValue();
      99           0 :         Init();
     100             : 
     101           0 : }
     102             : 
     103             : //_____________________________________________________________________________
     104           0 : AliVZERODataDCS::~AliVZERODataDCS() {
     105             : 
     106             :   // destructor
     107           0 :   fGraphs.Clear("C");
     108           0 :   delete fFEEParameters;
     109             : 
     110           0 : }
     111             : 
     112             : //_____________________________________________________________________________
     113             : Bool_t AliVZERODataDCS::ProcessData(TMap& aliasMap){
     114             : 
     115             :   // method to process the data
     116             :   Bool_t success = kTRUE;
     117             : 
     118           0 :   if(!(fAliasNames[0])) Init();
     119             : 
     120             :   TObjArray *aliasArr;
     121             :   AliDCSValue* aValue;
     122             : 
     123             :   // starting loop on aliases
     124           0 :   for(int iAlias=0; iAlias<kNAliases; iAlias++){
     125             : 
     126           0 :     aliasArr = (TObjArray*) aliasMap.GetValue(fAliasNames[iAlias].Data());
     127           0 :     if(!aliasArr){
     128           0 :       AliError(Form("Alias %s not found!", fAliasNames[iAlias].Data()));
     129             :       success = kFALSE;
     130           0 :       continue;
     131             :     }
     132             : 
     133             :     //Introduce(iAlias, aliasArr);
     134             :     
     135           0 :     if(aliasArr->GetEntries()<2){
     136           0 :       AliWarning(Form("Alias %s has just %d entries!",
     137             :                     fAliasNames[iAlias].Data(),aliasArr->GetEntries()));
     138           0 :     }
     139             :     
     140           0 :     TIter iterarray(aliasArr);
     141             :         
     142           0 :     if(iAlias<kNHvChannel){ // Treating HV values
     143           0 :         Int_t nentries = aliasArr->GetEntries();
     144             : 
     145           0 :         Double_t *times = new Double_t[nentries];
     146           0 :         Double_t *values = new Double_t[nentries];
     147             : 
     148             :         UInt_t iValue=0;
     149             :         Float_t variation = 0.0;
     150             : 
     151           0 :         while((aValue = (AliDCSValue*) iterarray.Next())) {
     152           0 :                         UInt_t currentTime = aValue->GetTimeStamp();
     153           0 :                         if(currentTime>fCtpEndTime) break;
     154             : 
     155           0 :                         values[iValue] = aValue->GetFloat();
     156           0 :                         times[iValue] = (Double_t) (currentTime);
     157             :                         
     158           0 :                         if(iValue>0) {
     159           0 :                                 if(values[iValue-1]>0.) variation = TMath::Abs(values[iValue]-values[iValue-1])/values[iValue-1];
     160           0 :                                 if(variation > 0.01) fDeadChannel[GetOfflineChannel(iAlias)] = kTRUE;
     161             :                         }
     162           0 :                         fHv[iAlias]->Fill(values[iValue]);
     163           0 :                         printf("%s : %s : %f Dead=%d\n",fAliasNames[iAlias].Data(),TTimeStamp(currentTime).AsString(),values[iValue],fDeadChannel[GetOfflineChannel(iAlias)]);
     164           0 :                         iValue++;
     165           0 :         }      
     166           0 :         CreateGraph(iAlias, aliasArr->GetEntries(), times, values); // fill graphs 
     167             : 
     168             :         // calculate mean and rms of the first two histos
     169             :         // and convert index to aliroot channel
     170           0 :         Int_t iChannel     = GetOfflineChannel(iAlias); 
     171           0 :         fMeanHV[iChannel]  = fHv[iAlias]->GetMean();
     172           0 :         fWidthHV[iChannel] = fHv[iAlias]->GetRMS();
     173             : 
     174           0 :         delete[] values;
     175           0 :         delete[] times; 
     176           0 :         } else { // Treating FEE Parameters
     177             :                 AliDCSValue * lastVal = NULL;
     178           0 :                 while((aValue = (AliDCSValue*) iterarray.Next())) lastVal = aValue; // Take only the last value
     179           0 :                 fFEEParameters->Add(new TObjString(fAliasNames[iAlias].Data()),lastVal);
     180             :         }      
     181           0 :   }
     182             :   
     183           0 :   fIsProcessed=kTRUE;
     184             : 
     185           0 :   return success;
     186           0 : }
     187             : 
     188             : //_____________________________________________________________________________
     189             : void AliVZERODataDCS::Init(){
     190             : 
     191             :   // initialization of aliases and DCS data
     192             : 
     193           0 :   TString sindex;
     194             :   int iAlias = 0;
     195             :   
     196           0 :   for(int iSide = 0; iSide<2 ; iSide++){
     197           0 :         for(int iRing = 0; iRing<4 ; iRing++){
     198           0 :                 for(int iSector = 0; iSector<8 ; iSector++){
     199           0 :                         if(iSide == 0) fAliasNames[iAlias] = "V00/HV/V0A/SECTOR";
     200           0 :                         else fAliasNames[iAlias] = "V00/HV/V0C/SECTOR";
     201           0 :                         sindex.Form("%d/RING%d",iSector,iRing);
     202           0 :                         fAliasNames[iAlias] += sindex;
     203             :                         
     204           0 :                         fHv[iAlias] = new TH1F(fAliasNames[iAlias].Data(),fAliasNames[iAlias].Data(), 3000, kHvMin, kHvMax);
     205           0 :                         fHv[iAlias]->GetXaxis()->SetTitle("Hv");
     206           0 :                         iAlias++;
     207             :                 }
     208             :         }
     209             :   }
     210             : 
     211             :  // Time Resolution Parameters
     212             :         
     213           0 :         for(int iCIU = 0; iCIU<8 ; iCIU++){
     214           0 :                 fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/TimeResolution",iCIU);
     215           0 :                 fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/WidthResolution",iCIU);
     216             :         }
     217             : 
     218             :         // HPTDC parameters
     219           0 :         for(int iCIU = 0; iCIU<8 ; iCIU++){
     220           0 :           fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/MatchWindow",iCIU);
     221           0 :           fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/SearchWindow",iCIU);
     222           0 :           fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/TriggerCountOffset",iCIU);
     223           0 :           fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/RollOver",iCIU);
     224             :         }
     225             : 
     226           0 :         for(int iCIU = 0; iCIU<8 ; iCIU++){
     227           0 :           for(int iCh=1;iCh<=8;iCh++){
     228           0 :             fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/DelayHit%d",iCIU,iCh);
     229             :           }
     230             :         }
     231             : 
     232           0 :         for(int iCIU = 0; iCIU<8 ; iCIU++){
     233           0 :           for(int iCh=1;iCh<=8;iCh++){
     234           0 :             fAliasNames[iAlias++] = Form("V00/FEE/CIU%d/DiscriThr%d",iCIU,iCh);
     235             :           }
     236             :         }
     237             : 
     238           0 :   if(iAlias!=kNAliases) 
     239           0 :               AliError(Form("Number of DCS Aliases defined not correct"));
     240             : 
     241           0 : }
     242             : 
     243             : //_____________________________________________________________________________
     244             : void AliVZERODataDCS::Introduce(UInt_t numAlias, const TObjArray* aliasArr)const
     245             : {
     246             : 
     247             :   // method to introduce new aliases
     248             : 
     249           0 :   int entries=aliasArr->GetEntries();
     250           0 :   AliInfo(Form("************ Alias: %s **********",fAliasNames[numAlias].Data()));
     251           0 :   AliInfo(Form("           %d DP values collected",entries));
     252             : 
     253           0 : }
     254             : 
     255             : //_____________________________________________________________________________
     256             : void AliVZERODataDCS::CreateGraph(int i, int dim, const Double_t *x, const Double_t *y)
     257             : {
     258             : 
     259             :    // Create graphics
     260             :    
     261           0 :    TGraph *gr = new(fGraphs[fGraphs.GetEntriesFast()]) TGraph(dim, x, y);
     262             : 
     263           0 :    gr->GetXaxis()->SetTimeDisplay(1);
     264           0 :    gr->SetTitle(fAliasNames[i].Data());
     265             : 
     266           0 :    AliInfo(Form("Array entries: %d",fGraphs.GetEntriesFast()));
     267             : 
     268           0 : }
     269             : 
     270             : 
     271             : //_____________________________________________________________________________
     272             : void AliVZERODataDCS::Draw(const Option_t* /*option*/)
     273             : {
     274             : // Draw all histos and graphs
     275             : 
     276           0 :   if(!fIsProcessed) return;
     277             : 
     278           0 :   if(fGraphs.GetEntries()==0)  return;
     279             :   
     280           0 :   TString canvasName;
     281           0 :   TCanvas *cHV[8];
     282             :   
     283           0 :   for(int iSide = 0 ;iSide<2;iSide++){
     284           0 :         for(int iRing=0;iRing<4;iRing++){
     285           0 :                 if(iSide == 0)  canvasName = "V0A_Ring";
     286           0 :                 else  canvasName = "V0C_Ring";
     287           0 :                 canvasName += iRing;
     288           0 :                 int iCanvas = iSide*4 + iRing;
     289           0 :                 cHV[iCanvas] = new TCanvas(canvasName,canvasName);
     290           0 :                 cHV[iCanvas]->Divide(3,3);
     291           0 :                 for(int iSector=0;iSector<8;iSector++){
     292           0 :                         cHV[iCanvas]->cd(iSector+1);
     293           0 :                         int iChannel = iSide*32 + iRing*8 + iSector; 
     294           0 :                         ((TGraph*) fGraphs.UncheckedAt(iChannel))->SetMarkerStyle(20);
     295           0 :                         ((TGraph*) fGraphs.UncheckedAt(iChannel))->Draw("ALP");
     296             : 
     297             :                 }
     298             :                                 
     299             :         }
     300             :   }
     301             : 
     302           0 : }
     303             : 

Generated by: LCOV version 1.11