Upgraded possibility of DCS data size reduction (V. Pospisil)
[u/mrichter/AliRoot.git] / ITS / AliITSDCSAnalyzerSDD.h
index 13efef848f44065dbfefd9a8bd3d2dd2529ea609..9e1efdcd599166f2b82a55eac6f8898b07a633ec 100644 (file)
@@ -6,15 +6,15 @@
 
 /* $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             //
-///////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////
+// 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"
 
@@ -34,6 +34,21 @@ class AliITSDCSAnalyzerSDD : public TObject
                         //  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
 
@@ -47,6 +62,15 @@ class AliITSDCSAnalyzerSDD : public TObject
                                   { 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 */);
@@ -61,26 +85,31 @@ class AliITSDCSAnalyzerSDD : public TObject
          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
+         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.
+  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, 2);
+  ClassDef(AliITSDCSAnalyzerSDD, 3);
 
 }; /*class AliITSDCSAnalyzerSDD*/