]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/AliFMDRawReader.h
Added the class AliFMDESDRevertexer for recalculating the
[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
e802be3e 95protected:
b5ee4425 96 AliFMDRawReader(const AliFMDRawReader& o)
97 : TTask(o),
98 fTree(0),
99 fReader(0),
3effc6e7 100 fSampleRate(0),
101 fData(0),
f38b1653 102 fNbytes(0),
103 fSeen()
b5ee4425 104 {}
02a27b50 105 AliFMDRawReader& operator=(const AliFMDRawReader&) { return *this; }
3effc6e7 106 ULong_t GetNwords() const {return fNbytes / 4;}
107 UInt_t Get32bitWord(Int_t idx);
108 Int_t GetHalfringIndex(UShort_t det, Char_t ring, UShort_t board);
f38b1653 109 TTree* fTree; //! Pointer to tree to read into
110 AliRawReader* fReader; //! Pointer to raw reader
111 UShort_t fSampleRate; // The sample rate (if 0, inferred from data)
112 UChar_t* fData;
113 ULong_t fNbytes;
5cf05dbb 114 Bool_t fZeroSuppress[3];
115 UShort_t fNoiseFactor[3];
f38b1653 116 AliFMDUShortMap fSeen;
3effc6e7 117
e802be3e 118 ClassDef(AliFMDRawReader, 0) // Read FMD raw data into a cache
119};
120
121#endif
122//____________________________________________________________________
123//
124// Local Variables:
125// mode: C++
126// End:
127//
128// EOF
129//