]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDBaseDA.h
CSP registers depend of FEE firmware, not RCU firmware
[u/mrichter/AliRoot.git] / FMD / AliFMDBaseDA.h
index 1051ed9d472611fa9e1fecc8b66dbbcf090455f1..2077edc0d981159cde3d5e3cccc7b15f4aa9e144 100644 (file)
@@ -1,3 +1,4 @@
+// -*- mode: C++ -*- 
 #ifndef ALIFMDBASEDA_H
 #define ALIFMDBASEDA_H
 
@@ -7,13 +8,16 @@
  * See cxx source for full Copyright notice                               
  */
 //
-//This class provides a base interface for the Detector Algorithms (DA) of the FMD. 
-//At least three implementations are needed: AliFMDPedestalDA, AliFMDGainDA and AliFMDPhysicsDA . 
-//These classes will provide the calibration data for the AliFMDPreprocessor to be used in the shuttle.
-//The input for this class are raw data (AliRawReader) and the output is a comma-separated file
-//(std::ofstream) that contains the values defined in the implementations of this class.
+// This class provides a base interface for the Detector Algorithms
+// (DA) of the FMD.  At least three implementations are needed:
+// AliFMDPedestalDA, AliFMDGainDA and AliFMDPhysicsDA .  These classes
+// will provide the calibration data for the AliFMDPreprocessor to be
+// used in the shuttle.  The input for this class are raw data
+// (AliRawReader) and the output is a comma-separated file
+// (std::ofstream) that contains the values defined in the
+// implementations of this class.
 //
-//Author: Hans Hjersing Dalsgaard, hans.dalsgaard@cern.ch
+// Author: Hans Hjersing Dalsgaard, hans.dalsgaard@cern.ch
 //
 
 #include "TNamed.h"
 #include "TFile.h"
 #include "iostream"
 #include "fstream"
-
+#include "TString.h"
 #include "AliRawReader.h"
 #include "AliFMDDigit.h"
 #include "AliFMDParameters.h"
-
+#include "TArrayS.h"
+class TDirectory;
+class AliFMDRawReader;
 
 class AliFMDBaseDA: public TNamed {
   
- public:
+public:
   AliFMDBaseDA() ;
   AliFMDBaseDA(const AliFMDBaseDA & baseDA) ;
-  AliFMDBaseDA& operator = (const AliFMDBaseDA & baseDA) ; 
+  //  AliFMDBaseDA& operator = (const AliFMDBaseDA & baseDA) ; 
   
   ~AliFMDBaseDA() ;
   
@@ -41,7 +47,7 @@ class AliFMDBaseDA: public TNamed {
   void SetSaveDiagnostics(Bool_t save) {fSaveHistograms = save;}
   void SetRequiredEvents(Int_t nEvents) {fRequiredEvents = nEvents;}
   Int_t GetRequiredEvents() {return fRequiredEvents ;}
- protected:
+protected:
   
   virtual void Init()  {};
   virtual void FillChannels(AliFMDDigit* )  {};
@@ -49,26 +55,49 @@ class AliFMDBaseDA: public TNamed {
   virtual void WriteHeaderToFile()  {};
   virtual void AddChannelContainer(TObjArray*, UShort_t, Char_t, UShort_t, UShort_t )  {};
   virtual void FinishEvent()  {};
-  
+  virtual void Terminate(TFile* ) {};
   
   Int_t GetCurrentEvent() {return fCurrentEvent;}
   
   static const UInt_t kBaseDDL = 3072;
-  Char_t* fDiagnosticsFilename;
+  //Char_t* fDiagnosticsFilename;
+  TString fDiagnosticsFilename;
   std::ofstream fOutputFile;
   std::ofstream fConditionsFile;
   Bool_t fSaveHistograms;
   TObjArray fDetectorArray;
+
+  Int_t GetHalfringIndex(UShort_t, Char_t, UShort_t);
+  Int_t GetPulseSize(UShort_t det , 
+                    Char_t ring, 
+                    UShort_t board) {return fPulseSize.At(GetHalfringIndex(det,ring,board));}
+  Int_t GetPulseLength(UShort_t det, 
+                      Char_t ring, 
+                      UShort_t board) {return fPulseLength.At(GetHalfringIndex(det,ring,board));}
+
   
+  const char* GetDetectorPath(UShort_t det, Bool_t full=kTRUE) const;
+  const char* GetRingPath(UShort_t det, Char_t ring, Bool_t full=kTRUE) const;
+  const char* GetSectorPath(UShort_t det, Char_t ring, UShort_t sec, 
+                           Bool_t full=kTRUE) const;
+  const char* GetStripPath(UShort_t det, Char_t ring, UShort_t sec, 
+                          UShort_t str, Bool_t full=kTRUE) const;
   
- private:
+
+  
+  TArrayS fPulseSize;
+  TArrayS fPulseLength;
+
+private:
  
-  void WriteConditionsData();
+  void WriteConditionsData(AliFMDRawReader* fmdReader);
   void SetCurrentEvent(Int_t currentEvent) {fCurrentEvent = currentEvent; }
-  void InitContainer();
+  void InitContainer(TDirectory* dir);
   Int_t fRequiredEvents;
   Int_t fCurrentEvent;   
-   
+  
+  
+  
   ClassDef(AliFMDBaseDA,0)
 
 };