Line data Source code
1 : #ifndef ALIFMDRAWWRITER_H
2 : #define ALIFMDRAWWRITER_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4 : * reserved.
5 : *
6 : * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7 : *
8 : * See cxx source for full Copyright notice
9 : */
10 : /* $Id$ */
11 : /** @file AliFMDRawWriter.h
12 : @author Christian Holm Christensen <cholm@nbi.dk>
13 : @date Mon Mar 27 12:45:56 2006
14 : @brief Class to write raw data
15 : */
16 : //____________________________________________________________________
17 : //
18 : // Class to writer ADC values to a Raw File
19 : // Uses general ALTRO class - which is wrong
20 : // Should make it right!
21 : //
22 : #ifndef ROOT_TTask
23 : # include <TTask.h>
24 : #endif
25 :
26 : //____________________________________________________________________
27 : class AliFMD;
28 : class AliAltroBuffer;
29 : class AliAltroBufferV3;
30 : class TArrayI;
31 : class TArrayF;
32 : class TClonesArray;
33 :
34 : //____________________________________________________________________
35 : /** @class AliFMDRawWriter
36 : @brief Class to write ALTRO formated raw data from an array of
37 : AliFMDDigit objects.
38 : @code
39 : AliFMDRawWriter* fmdWriter = new AliFMDRawWriter(0);
40 : TClonesArray* array = fmd->DigitArray();
41 : fmdWriter->WriteDigits(array);
42 : @endcode
43 : @ingroup FMD_sim
44 : */
45 : class AliFMDRawWriter : public TTask
46 : {
47 : public:
48 : /** Constructor
49 : @param fmd Pointer to detector object. */
50 : AliFMDRawWriter(AliFMD* fmd);
51 : /** Destructor */
52 16 : virtual ~AliFMDRawWriter() {}
53 :
54 : /** Write the output from AliFMD object.
55 : @param option Not used */
56 : virtual void Exec(Option_t* option="");
57 : /** Write an array of AliFMDDigit objects as raw ALTRO data.
58 : @param digits Array of AliFMDDigit objects to convert to raw
59 : ALTRO data. */
60 : virtual Long_t WriteDigits(TClonesArray* digits);
61 : /** Do zero-suppression of channel data.
62 : @param data Contain @a nWords of valid data. On input, it
63 : contains the full channel data. On output it
64 : will contain the zero-suppresed data.
65 : @param peds Contain @a nWords pedestals
66 : @param noise Contain @a nWords pedestal widths
67 : @param threshold Zero suppression threshold. */
68 : void ZeroSuppress(Int_t*& data, Int_t nWords, const Float_t* peds,
69 : const Float_t* noise, UShort_t threshold) const;
70 : protected:
71 : AliFMDRawWriter(const AliFMDRawWriter& o)
72 : : TTask(o),
73 : fFMD(o.fFMD),
74 : fSampleRate(o.fSampleRate),
75 : fChannelsPerAltro(o.fChannelsPerAltro),
76 : fThreshold(o.fThreshold)
77 : {}
78 : AliFMDRawWriter& operator=(const AliFMDRawWriter&) { return *this; }
79 : void WriteRCUTrailer(AliAltroBufferV3* altro,
80 : UInt_t ddl,
81 : Bool_t zs,
82 : UShort_t factor,
83 : UShort_t rate) const;
84 : AliFMD* fFMD; //! Pointer to detector description
85 : UShort_t fSampleRate; // The sample rate (0 -> inferred from data)
86 : UShort_t fChannelsPerAltro; // Number of pre-amp. channels/adc channel
87 : UShort_t fThreshold; // Threshold for zero-suppression
88 :
89 4102556 : ClassDef(AliFMDRawWriter, 0) // Write FMD raw data to a DDL file
90 : };
91 :
92 : #endif
93 : //____________________________________________________________________
94 : //
95 : // Local Variables:
96 : // mode: C++
97 : // End:
98 : //
99 : // EOF
100 : //
|