1 #ifndef ALIFMDRAWREADER_H
2 #define ALIFMDRAWREADER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
8 * See cxx source for full Copyright notice
10 //____________________________________________________________________
12 // Class to read ADC values from a AliRawReader object.
13 // Note, that it uses an ALTRO reader, which is wrong.
14 // Perhaps we need to implement it our selves
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
26 #include "AliFMDUShortMap.h"
28 //____________________________________________________________________
33 class AliFMDCalibSampleRate;
34 class AliFMDCalibStripRange;
36 //____________________________________________________________________
37 /** @brief Class to read ALTRO formated raw data from an AliRawReader
40 AliRawReader* reader = new AliRawReaderFile(0);
41 AliFMDRawReader* fmdReader = new AliFMDRawReader(reader);
42 TClonesArray* array = new TClonesArray("AliFMDDigit");
43 fmdReader->ReadAdcs(array);
47 class AliFMDRawReader : public TTask
53 * @param reader Raw reader
54 * @param array Output tree
56 AliFMDRawReader(AliRawReader* reader, TTree* array);
60 virtual ~AliFMDRawReader() {}
62 * Read in, and store in output tree
64 * @param option Not used
66 virtual void Exec(Option_t* option="");
68 * Read ADC's into a TClonesArray of AliFMDDigit objects.
70 * @param array Array to read into
71 * @param summable Create SDigits rather than digits
72 * @param pedSub Whether to do pedestal subtraction.
73 * @param noiseFactor If we do pedestal subtraction, then this is
74 * the number we use to suppress remenants of the noise.
76 * @return @c true on success
78 virtual Bool_t ReadAdcs(TClonesArray* array);
80 * Read SOD event into passed objects.
82 * @param samplerate The sample rate object to fill
83 * @param striprange The strip range object to fill
84 * @param pulseSize The pulse size object to fill
85 * @param pulseLength The pulse length (in events) object to fill
87 * @return @c true on success
89 virtual Bool_t ReadSODevent(AliFMDCalibSampleRate* samplerate,
90 AliFMDCalibStripRange* striprange,
95 * Check of the data from DDL @a ddl is zero-suppressed
97 * @param ddl DDL number (0-2)
99 * @return @c true if the data from this DDL is zero-suppressed.
101 Bool_t IsZeroSuppressed(UShort_t ddl) const { return fZeroSuppress[ddl]; }
103 * The factor used to multiply the noise when making on-line
104 * pedestal subtraction.
106 * @param ddl DDL number (0-2)
108 * @return The factor used.
110 UShort_t NoiseFactor(UShort_t ddl) const { return fNoiseFactor[ddl]; }
113 * Get the next signal
115 * @param det On return, the detector
116 * @param rng On return, the ring
117 * @param sec On return, the sector
118 * @param str On return, the strip
119 * @param sam On return, the sample
120 * @param rat On return, the sample rate
121 * @param adc On return, the ADC value
122 * @param zs On return, whether zero-supp. is enabled
123 * @param fac On return, the usd noise factor
125 * @return true if valid data is returned
127 Bool_t NextSample(UShort_t& det, Char_t& rng, UShort_t& sec, UShort_t& str,
128 UShort_t& sam, UShort_t& rat, Short_t& adc,
129 Bool_t& zs, UShort_t& fac);
131 * Get the next signal
133 * @param det On return, the detector
134 * @param rng On return, the ring
135 * @param sec On return, the sector
136 * @param str On return, the strip
137 * @param adc On return, the ADC value
138 * @param zs On return, whether zero-supp. is enabled
139 * @param fac On return, the usd noise factor
141 * @return true if valid data is returned
143 Bool_t NextSignal(UShort_t& det, Char_t& rng,
144 UShort_t& sec, UShort_t& str,
145 Short_t& adc, Bool_t& zs,
148 * Whether to keep a sample based on the rate used.
150 * @param samp Sample number
151 * @param rate Over sampling rate
153 * @return Whether to keep the sample or not
155 static Bool_t SelectSample(UShort_t samp, UShort_t rate);
157 AliFMDRawReader(const AliFMDRawReader& o)
165 AliFMDRawReader& operator=(const AliFMDRawReader&) { return *this; }
166 ULong_t GetNwords() const {return fNbytes / 4;}
167 UInt_t Get32bitWord(Int_t idx);
168 Int_t GetHalfringIndex(UShort_t det, Char_t ring, UShort_t board);
169 TTree* fTree; //! Pointer to tree to read into
170 AliRawReader* fReader; //! Pointer to raw reader
171 UShort_t fSampleRate[3]; // The sample rate (if 0, inferred from data)
174 Bool_t fZeroSuppress[3];
175 UShort_t fNoiseFactor[3];
176 AliFMDUShortMap fSeen;
178 ClassDef(AliFMDRawReader, 0) // Read FMD raw data into a cache
182 //____________________________________________________________________