]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - FMD/AliFMDBaseDA.h
Adding directory with the production requests
[u/mrichter/AliRoot.git] / FMD / AliFMDBaseDA.h
index d156cc313131566a09ba6bfd9dcbe58a08bf3259..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,33 +47,57 @@ class AliFMDBaseDA: public TNamed {
   void SetSaveDiagnostics(Bool_t save) {fSaveHistograms = save;}
   void SetRequiredEvents(Int_t nEvents) {fRequiredEvents = nEvents;}
   Int_t GetRequiredEvents() {return fRequiredEvents ;}
- protected:
-  
-  virtual void Init() = 0;
-  virtual void FillChannels(AliFMDDigit* ) = 0;
-  virtual void Analyse(UShort_t, Char_t, UShort_t, UShort_t ) = 0;
-  virtual void WriteHeaderToFile() = 0;
-  virtual void AddChannelContainer(TObjArray*, UShort_t, Char_t, UShort_t, UShort_t ) = 0;
-  virtual void FinishEvent() = 0;
+protected:
   
+  virtual void Init()  {};
+  virtual void FillChannels(AliFMDDigit* )  {};
+  virtual void Analyse(UShort_t, Char_t, UShort_t, UShort_t )  {};
+  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(AliFMDRawReader* fmdReader);
   void SetCurrentEvent(Int_t currentEvent) {fCurrentEvent = currentEvent; }
-  void InitContainer();
+  void InitContainer(TDirectory* dir);
   Int_t fRequiredEvents;
   Int_t fCurrentEvent;   
-   
+  
+  
+  
   ClassDef(AliFMDBaseDA,0)
 
 };