]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMDRawReader.h
AliEveEventManager
[u/mrichter/AliRoot.git] / FMD / AliFMDRawReader.h
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  */
10 //____________________________________________________________________
11 // 
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
15 // 
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 */
23 #ifndef ROOT_TTask
24 # include <TTask.h>
25 #endif
26 #include "AliFMDUShortMap.h"
27
28 //____________________________________________________________________
29 class AliRawReader;
30 class TTree;
31 class TClonesArray;
32 class TArrayS;
33 class AliFMDCalibSampleRate;
34 class AliFMDCalibStripRange;
35
36 //____________________________________________________________________
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 */
47 class AliFMDRawReader : public TTask 
48 {
49 public:
50   /** CTOR 
51       @param reader Raw reader
52       @param array  Output tree */
53   AliFMDRawReader(AliRawReader* reader, TTree* array);
54   /** DTOR */
55   virtual ~AliFMDRawReader() {}
56   /** Read in, and store in output tree 
57       @param option Not used */
58   virtual void   Exec(Option_t* option="");
59   /** Read ADC's into a TClonesArray of AliFMDDigit objects. 
60       @param array Array to read into 
61       @return @c true on success */
62   virtual Bool_t ReadAdcs(TClonesArray* array);
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    */  
73   virtual Bool_t ReadSODevent(AliFMDCalibSampleRate* samplerate, 
74                               AliFMDCalibStripRange* striprange, 
75                               TArrayS &pulseSize, 
76                               TArrayS &pulseLength);
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
95 protected:
96   AliFMDRawReader(const AliFMDRawReader& o) 
97     : TTask(o), 
98       fTree(0), 
99       fReader(0), 
100       fSampleRate(0),
101       fData(0),
102       fNbytes(0), 
103       fSeen()
104   {}
105   AliFMDRawReader& operator=(const AliFMDRawReader&) { return *this; }
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);
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; 
114   Bool_t          fZeroSuppress[3];
115   UShort_t        fNoiseFactor[3];
116   AliFMDUShortMap fSeen;
117   
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 //