Added ITS Alignment interface to MillePede2 and related supermodule class
[u/mrichter/AliRoot.git] / FMD / AliFMDRawReader.h
CommitLineData
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//____________________________________________________________________
29class AliRawReader;
1a1fdef7 30class TTree;
d760ea03 31class TClonesArray;
3effc6e7 32class TArrayS;
33class AliFMDCalibSampleRate;
34class 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 47class AliFMDRawReader : public TTask
48{
49public:
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 99protected:
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//