ROOT logo
#ifndef ALIITSDCSANALYZERSDD_H
#define ALIITSDCSANALYZERSDD_H

/* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

///////////////////////////////////////////////////////////////////////
// Class for SDD dcs data analysis called by AliITSPreprocessorSDD   //
// Origin: F.Prino, Torino, prino@to.infn.it                         //
//         V.Pospisil, CTU Prague, gdermog@seznam.cz                 //
///////////////////////////////////////////////////////////////////////

#include <TMap.h>
#include <TObjArray.h>
#include <TFile.h>
#include "AliITSDCSDataSDD.h"
#include "AliITSgeomTGeo.h"

class AliITSDCSAnalyzerSDD : public TObject 
{

 public:
  AliITSDCSAnalyzerSDD();
  ~AliITSDCSAnalyzerSDD();


  void SetVoltageDelays( Int_t HVDelay, Int_t MVDelay )     { fHVDelay = HVDelay; fMVDelay = MVDelay; }
  void SetTemperatureDelays( Int_t TLDelay, Int_t TRDelay ) { fTLDelay = TLDelay; fTRDelay = TRDelay; }
  void SetStatusDelays( Int_t StTLDelay, Int_t StTRDelay, Int_t OKDelay ) 
                                                            { fStTLDelay = StTLDelay; fStTRDelay = StTRDelay; fOKDelay = OKDelay; }
                        // There is some delay between variable readout and setting up the time stamp. Delays differs
                        //  in voltage and temperature readouts. So it is necessary to substract some value from time stamps
                        //  during the data processing 

  void SetHVThreshold( Float_t percent=0.1 ) { fHVThresholdFrac = percent / 100.0; };
  void SetMVThreshold( Float_t percent=0.1 ) { fMVThresholdFrac = percent / 100.0; };
  void SetTLThreshold( Float_t percent=0.1 ) { fTLThresholdFrac = percent / 100.0; };
  void SetTRThreshold( Float_t percent=0.1 ) { fTRThresholdFrac = percent / 100.0; };
                        // It is possible to keep value arrays condensed - new value is stored
                        //  only if it crosses a treshold. This threshold is determined from
                        //  last stored value by
                        //
                        //  low edge = value * (100 - percent) %
                        //  upper edge = value * (100 + percent) %
                        //
                        // These four Setters allows to tune tresholds for each DCS variable
                        //   independently. By default all tresholds are set to 0 % .


  void AnalyzeData( TMap* dcsMap );
                        // Processes the data

  void PrintDCSDPNames( FILE *output = stdout );
                        // Prints module identifications in text mode

  AliITSDCSDataSDD* GetDCSData( Int_t iModule ) const { return fDCSData[iModule]; }
                        // Returns data for module specified by its index in range 0..259

  AliITSDCSDataSDD* GetDCSData( Int_t iLayer, Int_t iLadder, Int_t iModule ) const
                                  { return fDCSData[AliITSgeomTGeo::GetModuleIndex( iLayer, iLadder, iModule ) - 240]; }
                        // Returns data for module specified by layer[3..4], ladder[1..22] and module number[1..8]

  void Export( char *outputDCSFileName );
                        // Exports all stored AliITSDCSDataSDD type object into specified root file. Objects are named as
                        //
                        // DCSDataSDD_module<number>
                        //
                        // where <number> is in range 0..256 and it is obtained by calling
                        //
                        // AliITSgeomTGeo::GetModuleIndex( layer, ladder, moduleInLadder ) - 240

 protected:
  AliITSDCSAnalyzerSDD(const AliITSDCSAnalyzerSDD& /* dcsa  */);
  AliITSDCSAnalyzerSDD& operator=(const AliITSDCSAnalyzerSDD& /* dcsa */);
                        // Copy constructor and assignment operator not allowed.
                        // They are protected to avoid misuse

  void Init();          // Creates module text identifications

 private:

  enum { kNmodules=260,
         kNladders3=14,
         kNladders4=22,
         kNmodLad3=6,
         kNmodLad4=8 };                   // Basic SDD geometry

  TString fHVDPNames[kNmodules];          // DCS DP names for High Voltage  
  TString fMVDPNames[kNmodules];          // DCS DP names for Medium Voltage
  TString fOKDPNames[kNmodules];          // DCS DP names for Medium Voltage
  TString fTLDPNames[kNmodules];          // DCS DP names for Temperature Left
  TString fTRDPNames[kNmodules];          // DCS DP names for Temperature Right
  TString fTLStDPNames[kNmodules];        // DCS DP names for status of Temperature Left
  TString fTRStDPNames[kNmodules];        // DCS DP names for status of Temperature Right
  AliITSDCSDataSDD *fDCSData[kNmodules];  // values of DCS data points

  Int_t fHVDelay;                         // There is some delay between variable readout
  Int_t fMVDelay;                         // and setting up the time stamp. Delays differs
  Int_t fTLDelay;                         // in voltage and temperature readouts. So it is
  Int_t fTRDelay;                         // necessary to substract some value from time stamp
  Int_t fStTLDelay;                       // during the data processing. 
  Int_t fStTRDelay;                       // Here are the values of delays stored
  Int_t fOKDelay;                         // for the 7 variables.

  Float_t fHVThresholdFrac;                // Value of HV won't be stored until it won't exceeds this fraction of last stored value
  Float_t fMVThresholdFrac;                // Same for MV
  Float_t fTLThresholdFrac;                // Same for TL
  Float_t fTRThresholdFrac;                // Same for TR

  ClassDef(AliITSDCSAnalyzerSDD, 3);

}; /*class AliITSDCSAnalyzerSDD*/

#endif
 AliITSDCSAnalyzerSDD.h:1
 AliITSDCSAnalyzerSDD.h:2
 AliITSDCSAnalyzerSDD.h:3
 AliITSDCSAnalyzerSDD.h:4
 AliITSDCSAnalyzerSDD.h:5
 AliITSDCSAnalyzerSDD.h:6
 AliITSDCSAnalyzerSDD.h:7
 AliITSDCSAnalyzerSDD.h:8
 AliITSDCSAnalyzerSDD.h:9
 AliITSDCSAnalyzerSDD.h:10
 AliITSDCSAnalyzerSDD.h:11
 AliITSDCSAnalyzerSDD.h:12
 AliITSDCSAnalyzerSDD.h:13
 AliITSDCSAnalyzerSDD.h:14
 AliITSDCSAnalyzerSDD.h:15
 AliITSDCSAnalyzerSDD.h:16
 AliITSDCSAnalyzerSDD.h:17
 AliITSDCSAnalyzerSDD.h:18
 AliITSDCSAnalyzerSDD.h:19
 AliITSDCSAnalyzerSDD.h:20
 AliITSDCSAnalyzerSDD.h:21
 AliITSDCSAnalyzerSDD.h:22
 AliITSDCSAnalyzerSDD.h:23
 AliITSDCSAnalyzerSDD.h:24
 AliITSDCSAnalyzerSDD.h:25
 AliITSDCSAnalyzerSDD.h:26
 AliITSDCSAnalyzerSDD.h:27
 AliITSDCSAnalyzerSDD.h:28
 AliITSDCSAnalyzerSDD.h:29
 AliITSDCSAnalyzerSDD.h:30
 AliITSDCSAnalyzerSDD.h:31
 AliITSDCSAnalyzerSDD.h:32
 AliITSDCSAnalyzerSDD.h:33
 AliITSDCSAnalyzerSDD.h:34
 AliITSDCSAnalyzerSDD.h:35
 AliITSDCSAnalyzerSDD.h:36
 AliITSDCSAnalyzerSDD.h:37
 AliITSDCSAnalyzerSDD.h:38
 AliITSDCSAnalyzerSDD.h:39
 AliITSDCSAnalyzerSDD.h:40
 AliITSDCSAnalyzerSDD.h:41
 AliITSDCSAnalyzerSDD.h:42
 AliITSDCSAnalyzerSDD.h:43
 AliITSDCSAnalyzerSDD.h:44
 AliITSDCSAnalyzerSDD.h:45
 AliITSDCSAnalyzerSDD.h:46
 AliITSDCSAnalyzerSDD.h:47
 AliITSDCSAnalyzerSDD.h:48
 AliITSDCSAnalyzerSDD.h:49
 AliITSDCSAnalyzerSDD.h:50
 AliITSDCSAnalyzerSDD.h:51
 AliITSDCSAnalyzerSDD.h:52
 AliITSDCSAnalyzerSDD.h:53
 AliITSDCSAnalyzerSDD.h:54
 AliITSDCSAnalyzerSDD.h:55
 AliITSDCSAnalyzerSDD.h:56
 AliITSDCSAnalyzerSDD.h:57
 AliITSDCSAnalyzerSDD.h:58
 AliITSDCSAnalyzerSDD.h:59
 AliITSDCSAnalyzerSDD.h:60
 AliITSDCSAnalyzerSDD.h:61
 AliITSDCSAnalyzerSDD.h:62
 AliITSDCSAnalyzerSDD.h:63
 AliITSDCSAnalyzerSDD.h:64
 AliITSDCSAnalyzerSDD.h:65
 AliITSDCSAnalyzerSDD.h:66
 AliITSDCSAnalyzerSDD.h:67
 AliITSDCSAnalyzerSDD.h:68
 AliITSDCSAnalyzerSDD.h:69
 AliITSDCSAnalyzerSDD.h:70
 AliITSDCSAnalyzerSDD.h:71
 AliITSDCSAnalyzerSDD.h:72
 AliITSDCSAnalyzerSDD.h:73
 AliITSDCSAnalyzerSDD.h:74
 AliITSDCSAnalyzerSDD.h:75
 AliITSDCSAnalyzerSDD.h:76
 AliITSDCSAnalyzerSDD.h:77
 AliITSDCSAnalyzerSDD.h:78
 AliITSDCSAnalyzerSDD.h:79
 AliITSDCSAnalyzerSDD.h:80
 AliITSDCSAnalyzerSDD.h:81
 AliITSDCSAnalyzerSDD.h:82
 AliITSDCSAnalyzerSDD.h:83
 AliITSDCSAnalyzerSDD.h:84
 AliITSDCSAnalyzerSDD.h:85
 AliITSDCSAnalyzerSDD.h:86
 AliITSDCSAnalyzerSDD.h:87
 AliITSDCSAnalyzerSDD.h:88
 AliITSDCSAnalyzerSDD.h:89
 AliITSDCSAnalyzerSDD.h:90
 AliITSDCSAnalyzerSDD.h:91
 AliITSDCSAnalyzerSDD.h:92
 AliITSDCSAnalyzerSDD.h:93
 AliITSDCSAnalyzerSDD.h:94
 AliITSDCSAnalyzerSDD.h:95
 AliITSDCSAnalyzerSDD.h:96
 AliITSDCSAnalyzerSDD.h:97
 AliITSDCSAnalyzerSDD.h:98
 AliITSDCSAnalyzerSDD.h:99
 AliITSDCSAnalyzerSDD.h:100
 AliITSDCSAnalyzerSDD.h:101
 AliITSDCSAnalyzerSDD.h:102
 AliITSDCSAnalyzerSDD.h:103
 AliITSDCSAnalyzerSDD.h:104
 AliITSDCSAnalyzerSDD.h:105
 AliITSDCSAnalyzerSDD.h:106
 AliITSDCSAnalyzerSDD.h:107
 AliITSDCSAnalyzerSDD.h:108
 AliITSDCSAnalyzerSDD.h:109
 AliITSDCSAnalyzerSDD.h:110
 AliITSDCSAnalyzerSDD.h:111
 AliITSDCSAnalyzerSDD.h:112
 AliITSDCSAnalyzerSDD.h:113
 AliITSDCSAnalyzerSDD.h:114
 AliITSDCSAnalyzerSDD.h:115
 AliITSDCSAnalyzerSDD.h:116