ROOT logo
#ifndef ALIFMDRAWWRITER_H
#define ALIFMDRAWWRITER_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
 * reserved. 
 *
 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
 *
 * See cxx source for full Copyright notice                               
 */
/* $Id$ */
/** @file    AliFMDRawWriter.h
    @author  Christian Holm Christensen <cholm@nbi.dk>
    @date    Mon Mar 27 12:45:56 2006
    @brief   Class to write raw data 
*/
//____________________________________________________________________
// 
// Class to writer ADC values to a Raw File
// Uses general ALTRO class - which is wrong
// Should make it right!
//
#ifndef ROOT_TTask
# include <TTask.h>
#endif

//____________________________________________________________________
class AliFMD;
class AliAltroBuffer;
class AliAltroBufferV3;
class TArrayI;
class TArrayF;
class TClonesArray;

//____________________________________________________________________
/** @class AliFMDRawWriter
    @brief Class to write ALTRO formated raw data from an array of
    AliFMDDigit objects.
    @code 
    AliFMDRawWriter* fmdWriter = new AliFMDRawWriter(0);
    TClonesArray*    array     = fmd->DigitArray();
    fmdWriter->WriteDigits(array);
    @endcode 
    @ingroup FMD_sim
*/
class AliFMDRawWriter : public TTask 
{
public:
  /** Constructor 
      @param fmd Pointer to detector object. */
  AliFMDRawWriter(AliFMD* fmd);
  /** Destructor */
  virtual ~AliFMDRawWriter() {}

  /** Write the output from AliFMD object. 
      @param option Not used */
  virtual void Exec(Option_t* option="");
  /** Write an array of AliFMDDigit objects as raw ALTRO data. 
      @param digits Array of AliFMDDigit objects to convert to raw
      ALTRO data. */
  virtual Long_t WriteDigits(TClonesArray* digits);
  /** Do zero-suppression of channel data. 
      @param data      Contain @a nWords of valid data.  On input, it 
                       contains the full channel data.  On output it
                       will contain the zero-suppresed data. 
      @param peds      Contain @a nWords pedestals 
      @param noise     Contain @a nWords pedestal widths 
      @param threshold Zero suppression threshold. */
  void ZeroSuppress(Int_t*& data, Int_t nWords, const Float_t* peds, 
		    const Float_t* noise, UShort_t threshold) const;
protected:
  AliFMDRawWriter(const AliFMDRawWriter& o) 
    : TTask(o), 
      fFMD(o.fFMD), 
      fSampleRate(o.fSampleRate), 
      fChannelsPerAltro(o.fChannelsPerAltro), 
      fThreshold(o.fThreshold)
  {}
  AliFMDRawWriter& operator=(const AliFMDRawWriter&) { return *this; }
  void WriteRCUTrailer(AliAltroBufferV3* altro,
		       UInt_t ddl,
		       Bool_t zs,
		       UShort_t factor,
		       UShort_t rate) const;
  AliFMD*       fFMD;              //! Pointer to detector description 
  UShort_t      fSampleRate;       // The sample rate (0 -> inferred from data)
  UShort_t      fChannelsPerAltro; // Number of pre-amp. channels/adc channel 
  UShort_t      fThreshold;        // Threshold for zero-suppression

  ClassDef(AliFMDRawWriter, 0) // Write FMD raw data to a DDL file
};

#endif
//____________________________________________________________________
//
// Local Variables:
//   mode: C++
// End:
//
// EOF
//
 AliFMDRawWriter.h:1
 AliFMDRawWriter.h:2
 AliFMDRawWriter.h:3
 AliFMDRawWriter.h:4
 AliFMDRawWriter.h:5
 AliFMDRawWriter.h:6
 AliFMDRawWriter.h:7
 AliFMDRawWriter.h:8
 AliFMDRawWriter.h:9
 AliFMDRawWriter.h:10
 AliFMDRawWriter.h:11
 AliFMDRawWriter.h:12
 AliFMDRawWriter.h:13
 AliFMDRawWriter.h:14
 AliFMDRawWriter.h:15
 AliFMDRawWriter.h:16
 AliFMDRawWriter.h:17
 AliFMDRawWriter.h:18
 AliFMDRawWriter.h:19
 AliFMDRawWriter.h:20
 AliFMDRawWriter.h:21
 AliFMDRawWriter.h:22
 AliFMDRawWriter.h:23
 AliFMDRawWriter.h:24
 AliFMDRawWriter.h:25
 AliFMDRawWriter.h:26
 AliFMDRawWriter.h:27
 AliFMDRawWriter.h:28
 AliFMDRawWriter.h:29
 AliFMDRawWriter.h:30
 AliFMDRawWriter.h:31
 AliFMDRawWriter.h:32
 AliFMDRawWriter.h:33
 AliFMDRawWriter.h:34
 AliFMDRawWriter.h:35
 AliFMDRawWriter.h:36
 AliFMDRawWriter.h:37
 AliFMDRawWriter.h:38
 AliFMDRawWriter.h:39
 AliFMDRawWriter.h:40
 AliFMDRawWriter.h:41
 AliFMDRawWriter.h:42
 AliFMDRawWriter.h:43
 AliFMDRawWriter.h:44
 AliFMDRawWriter.h:45
 AliFMDRawWriter.h:46
 AliFMDRawWriter.h:47
 AliFMDRawWriter.h:48
 AliFMDRawWriter.h:49
 AliFMDRawWriter.h:50
 AliFMDRawWriter.h:51
 AliFMDRawWriter.h:52
 AliFMDRawWriter.h:53
 AliFMDRawWriter.h:54
 AliFMDRawWriter.h:55
 AliFMDRawWriter.h:56
 AliFMDRawWriter.h:57
 AliFMDRawWriter.h:58
 AliFMDRawWriter.h:59
 AliFMDRawWriter.h:60
 AliFMDRawWriter.h:61
 AliFMDRawWriter.h:62
 AliFMDRawWriter.h:63
 AliFMDRawWriter.h:64
 AliFMDRawWriter.h:65
 AliFMDRawWriter.h:66
 AliFMDRawWriter.h:67
 AliFMDRawWriter.h:68
 AliFMDRawWriter.h:69
 AliFMDRawWriter.h:70
 AliFMDRawWriter.h:71
 AliFMDRawWriter.h:72
 AliFMDRawWriter.h:73
 AliFMDRawWriter.h:74
 AliFMDRawWriter.h:75
 AliFMDRawWriter.h:76
 AliFMDRawWriter.h:77
 AliFMDRawWriter.h:78
 AliFMDRawWriter.h:79
 AliFMDRawWriter.h:80
 AliFMDRawWriter.h:81
 AliFMDRawWriter.h:82
 AliFMDRawWriter.h:83
 AliFMDRawWriter.h:84
 AliFMDRawWriter.h:85
 AliFMDRawWriter.h:86
 AliFMDRawWriter.h:87
 AliFMDRawWriter.h:88
 AliFMDRawWriter.h:89
 AliFMDRawWriter.h:90
 AliFMDRawWriter.h:91
 AliFMDRawWriter.h:92
 AliFMDRawWriter.h:93
 AliFMDRawWriter.h:94
 AliFMDRawWriter.h:95
 AliFMDRawWriter.h:96
 AliFMDRawWriter.h:97
 AliFMDRawWriter.h:98
 AliFMDRawWriter.h:99
 AliFMDRawWriter.h:100