]>
Commit | Line | Data |
---|---|---|
e802be3e | 1 | #ifndef ALIFMDRAWREADER_H |
2 | #define ALIFMDRAWREADER_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 | */ | |
e802be3e | 10 | //____________________________________________________________________ |
11 | // | |
12 | // Class to read ADC values from a AliRawReader object. | |
088f8e79 | 13 | // Note, that it uses an ALTRO reader, which is wrong. |
14 | // Perhaps we need to implement it our selves | |
e802be3e | 15 | // |
02a27b50 | 16 | /* $Id$ */ |
17 | /** @file AliFMDRawReader.h | |
18 | @author Christian Holm Christensen <cholm@nbi.dk> | |
19 | @date Mon Mar 27 12:45:23 2006 | |
20 | @brief Class to read raw data | |
21 | @ingroup FMD_rec | |
22 | */ | |
e802be3e | 23 | #ifndef ROOT_TTask |
24 | # include <TTask.h> | |
25 | #endif | |
f38b1653 | 26 | #include "AliFMDUShortMap.h" |
e802be3e | 27 | |
28 | //____________________________________________________________________ | |
29 | class AliRawReader; | |
1a1fdef7 | 30 | class TTree; |
d760ea03 | 31 | class TClonesArray; |
3effc6e7 | 32 | class TArrayS; |
33 | class AliFMDCalibSampleRate; | |
34 | class AliFMDCalibStripRange; | |
e802be3e | 35 | |
36 | //____________________________________________________________________ | |
9f662337 | 37 | /** @brief Class to read ALTRO formated raw data from an AliRawReader |
38 | object. | |
39 | @code | |
40 | AliRawReader* reader = new AliRawReaderFile(0); | |
41 | AliFMDRawReader* fmdReader = new AliFMDRawReader(reader); | |
42 | TClonesArray* array = new TClonesArray("AliFMDDigit"); | |
43 | fmdReader->ReadAdcs(array); | |
44 | @endcode | |
45 | @ingroup FMD_rec | |
46 | */ | |
e802be3e | 47 | class AliFMDRawReader : public TTask |
48 | { | |
49 | public: | |
9f662337 | 50 | /** CTOR |
51 | @param reader Raw reader | |
52 | @param array Output tree */ | |
1a1fdef7 | 53 | AliFMDRawReader(AliRawReader* reader, TTree* array); |
9f662337 | 54 | /** DTOR */ |
088f8e79 | 55 | virtual ~AliFMDRawReader() {} |
9f662337 | 56 | /** Read in, and store in output tree |
57 | @param option Not used */ | |
d760ea03 | 58 | virtual void Exec(Option_t* option=""); |
9f662337 | 59 | /** Read ADC's into a TClonesArray of AliFMDDigit objects. |
60 | @param array Array to read into | |
61 | @return @c true on success */ | |
d760ea03 | 62 | virtual Bool_t ReadAdcs(TClonesArray* array); |
5cf05dbb | 63 | /** |
64 | * Read SOD event into passed objects. | |
65 | * | |
66 | * @param samplerate The sample rate object to fill | |
67 | * @param striprange The strip range object to fill | |
68 | * @param pulseSize The pulse size object to fill | |
69 | * @param pulseLength The pulse length (in events) object to fill | |
70 | * | |
71 | * @return @c true on success | |
72 | */ | |
3effc6e7 | 73 | virtual Bool_t ReadSODevent(AliFMDCalibSampleRate* samplerate, |
74 | AliFMDCalibStripRange* striprange, | |
75 | TArrayS &pulseSize, | |
76 | TArrayS &pulseLength); | |
5cf05dbb | 77 | /** |
78 | * Check of the data from DDL @a ddl is zero-suppressed | |
79 | * | |
80 | * @param ddl DDL number (0-2) | |
81 | * | |
82 | * @return @c true if the data from this DDL is zero-suppressed. | |
83 | */ | |
84 | Bool_t IsZeroSuppressed(UShort_t ddl) const { return fZeroSuppress[ddl]; } | |
85 | /** | |
86 | * The factor used to multiply the noise when making on-line | |
87 | * pedestal subtraction. | |
88 | * | |
89 | * @param ddl DDL number (0-2) | |
90 | * | |
91 | * @return The factor used. | |
92 | */ | |
93 | UShort_t NoiseFactor(UShort_t ddl) const { return fNoiseFactor[ddl]; } | |
94 | ||
b5014544 | 95 | Bool_t NextSignal(UShort_t& det, Char_t& rng, |
96 | UShort_t& sec, UShort_t& str, | |
97 | Short_t& adc, Bool_t& zs, | |
98 | UShort_t& fac); | |
e802be3e | 99 | protected: |
b5ee4425 | 100 | AliFMDRawReader(const AliFMDRawReader& o) |
101 | : TTask(o), | |
102 | fTree(0), | |
103 | fReader(0), | |
3effc6e7 | 104 | fSampleRate(0), |
105 | fData(0), | |
f38b1653 | 106 | fNbytes(0), |
107 | fSeen() | |
b5ee4425 | 108 | {} |
02a27b50 | 109 | AliFMDRawReader& operator=(const AliFMDRawReader&) { return *this; } |
3effc6e7 | 110 | ULong_t GetNwords() const {return fNbytes / 4;} |
111 | UInt_t Get32bitWord(Int_t idx); | |
112 | Int_t GetHalfringIndex(UShort_t det, Char_t ring, UShort_t board); | |
f38b1653 | 113 | TTree* fTree; //! Pointer to tree to read into |
114 | AliRawReader* fReader; //! Pointer to raw reader | |
115 | UShort_t fSampleRate; // The sample rate (if 0, inferred from data) | |
116 | UChar_t* fData; | |
117 | ULong_t fNbytes; | |
5cf05dbb | 118 | Bool_t fZeroSuppress[3]; |
119 | UShort_t fNoiseFactor[3]; | |
f38b1653 | 120 | AliFMDUShortMap fSeen; |
3effc6e7 | 121 | |
e802be3e | 122 | ClassDef(AliFMDRawReader, 0) // Read FMD raw data into a cache |
123 | }; | |
124 | ||
125 | #endif | |
126 | //____________________________________________________________________ | |
127 | // | |
128 | // Local Variables: | |
129 | // mode: C++ | |
130 | // End: | |
131 | // | |
132 | // EOF | |
133 | // |