Added documentation of each file.
[u/mrichter/AliRoot.git] / FMD / AliFMDReconstructor.h
CommitLineData
8f1cfb0c 1#ifndef ALIFMDRECONSTRUCTOR_H
2#define ALIFMDRECONSTRUCTOR_H
4347b38f 3//
4// Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
5// reserved.
6//
121a60bd 7// See cxx source for full Copyright notice
4347b38f 8//
121a60bd 9// AliFMDReconstructor.h
4347b38f 10// Task Class for making TreeR for FMD
11//
121a60bd 12//-- Authors: Evgeny Karpechev (INR) and Alla Maevskaia (INR)
4347b38f 13// Latest changes by Christian Holm Christensen <cholm@nbi.dk>
121a60bd 14/* $Id$ */
c2fc1258 15/** @file AliFMDReconstructor.h
16 @author Christian Holm Christensen <cholm@nbi.dk>
17 @date Mon Mar 27 12:47:09 2006
18 @brief FMD reconstruction
19*/
8f1cfb0c 20
42403906 21//____________________________________________________________________
0d0e6995 22// Header guards in the header files speeds up the compilation
23// considerably. Please leave them in.
24#ifndef ALIRECONSTRUCTOR_H
25# include <AliReconstructor.h>
26#endif
121a60bd 27
4347b38f 28//____________________________________________________________________
1a1fdef7 29class TTree;
4347b38f 30class TClonesArray;
4347b38f 31class AliFMDDigit;
32class AliRawReader;
1a1fdef7 33class AliRunLoader;
a3537838 34class AliESD;
8f6ee336 35class AliESDFMD;
e802be3e 36
9f662337 37/** @defgroup FMD_rec Reconstruction */
4347b38f 38//____________________________________________________________________
c2fc1258 39/** @brief This is a class that reconstructs AliFMDRecPoint objects from of
40 Digits.
41 This class reads either digits from a TClonesArray or raw data
42 from a DDL file (or similar), and applies calibrations to get
9f662337 43 psuedo-inclusive multiplicities per strip.
c2fc1258 44
9f662337 45 @ingroup FMD_rec
46 */
121a60bd 47class AliFMDReconstructor: public AliReconstructor
48{
4347b38f 49public:
9f662337 50 /** CTOR */
4347b38f 51 AliFMDReconstructor();
9f662337 52 /** DTOR */
56b1929b 53 virtual ~AliFMDReconstructor();
4347b38f 54
9f662337 55 /** Initialize the reconstructor. Here, we initialize the geometry
56 manager, and finds the local to global transformations from the
57 geometry. The calibration parameter manager is also
58 initialized (meaning that the calibration parameters is read
59 from CDB). Next, we try to get some information about the run
60 from the run loader passed.
61 @param runLoader Run loader to use to load and store data.
62 */
1a1fdef7 63 virtual void Init(AliRunLoader* runLoader);
9f662337 64 /** Flag that we can convert raw data into digits.
65 @return always @c true */
1a1fdef7 66 virtual Bool_t HasDigitConversion() const { return kTRUE; }
9f662337 67 /** Convert raw data read from the AliRawReader @a reader into
68 digits. This is done using AliFMDRawReader and
69 AliFMDAltroReader. The digits are put in the passed TTree @a
70 digitsTree.
71 @param reader Raw reader.
72 @param digitsTree Tree to store read digits in. */
1a1fdef7 73 virtual void ConvertDigits(AliRawReader* reader, TTree* digitsTree) const;
9f662337 74 /** Flag that we can do one-event reconstruction.
75 @return always @c true */
1a1fdef7 76 virtual Bool_t HasLocalReconstruction() const { return kTRUE; }
9f662337 77 /** Reconstruct one event from the digits passed in @a digitsTree.
78 The member function creates AliFMDRecPoint objects and stores
79 them on the output tree @a clusterTree. An FMD ESD object is
80 created in parallel.
81 @todo Make sure we get a vertex.
82 @param digitsTree Tree holding the digits of this event
83 @param clusterTree Tree to store AliFMDRecPoint objects in. */
1a1fdef7 84 virtual void Reconstruct(TTree* digitsTree, TTree* clusterTree) const;
9f662337 85 /** Put in the ESD data, the FMD ESD data. The object created by
86 the Reconstruct member function is copied to the ESD object.
87 @param digitsTree Tree of digits for this event - not used
88 @param clusterTree Tree of reconstructed points for this event
89 - not used.
90 @param esd ESD object to store data in.
91 */
1a1fdef7 92 virtual void FillESD(TTree* digitsTree, TTree* clusterTree,
93 AliESD* esd) const;
9f662337 94 /** Not used */
a3537838 95 virtual void SetESD(AliESD* esd) { fESD = esd; }
4347b38f 96
54e415a8 97private:
9f662337 98 /** Hide base classes unused function */
54e415a8 99 void Reconstruct(AliRawReader*, TTree*) const;
9f662337 100 /** Hide base classes unused function */
54e415a8 101 void Reconstruct(AliRunLoader*) const;
9f662337 102 /** Hide base classes unused function */
54e415a8 103 void Reconstruct(AliRunLoader*, AliRawReader*) const;
9f662337 104 /** Hide base classes unused function */
54e415a8 105 void FillESD(AliRawReader*, TTree*, AliESD*) const;
9f662337 106 /** Hide base classes unused function */
54e415a8 107 void FillESD(AliRunLoader*, AliESD*) const;
9f662337 108 /** Hide base classes unused function */
54e415a8 109 void FillESD(AliRunLoader*, AliRawReader*, AliESD*) const;
110
4347b38f 111protected:
0e73cae6 112 /** Copy CTOR
113 @param other Object to copy from. */
114 AliFMDReconstructor(const AliFMDReconstructor& other);
115 /** Assignment operator
116 @param other Object to assign from
117 @return reference to this object */
118 AliFMDReconstructor& operator=(const AliFMDReconstructor& other);
9f662337 119 /** Process AliFMDDigit objects in @a digits. For each digit, find
120 the psuedo-rapidity @f$ \eta@f$, azimuthal angle @f$ \varphi@f$,
121 energy deposited @f$ E@f$, and psuedo-inclusive multiplicity @f$
122 M@f$.
123 @param digits Array of digits. */
e802be3e 124 virtual void ProcessDigits(TClonesArray* digits) const;
9f662337 125 /** Substract pedestals from raw ADC in @a digit
126 @param digit Digit data
127 @return Pedestal subtracted ADC count. */
4347b38f 128 virtual UShort_t SubtractPedestal(AliFMDDigit* digit) const;
9f662337 129 /** Converts number of ADC counts to energy deposited. This is
130 done by
131 @f[
132 E_i = A_i g_i
133 @f]
134 where @f$ A_i@f$ is the pedestal subtracted ADC counts, and @f$
135 g_i@f$ is the gain for the @f$ i^{\mbox{th}}@f$ strip.
136 @param digit Raw data
137 @param eta Psuedo-rapidity of digit.
138 @param count Pedestal subtracted ADC counts
139 @return Energy deposited @f$ E_i@f$ */
8f6ee336 140 virtual Float_t Adc2Energy(AliFMDDigit* digit, Float_t eta,
141 UShort_t count) const;
9f662337 142 /** Converts an energy signal to number of particles. In this
143 implementation, it's done by
144 @f[
145 M_i = E_i / E_{\mbox{MIP}}
146 @f]
147 where @f$ E_i@f$ is the energy deposited, and @f$
148 E_{\mbox{MIP}}@f$ is the average energy deposited by a minimum
149 ionizing particle
150 @param digit Raw data
151 @param edep Energy deposited @f$ E_i@f$
152 @return Psuedo-inclusive multiplicity @f$ M@f$ */
8f6ee336 153 virtual Float_t Energy2Multiplicity(AliFMDDigit* digit, Float_t edep) const;
9f662337 154 /** Calculate the physical coordinates psuedo-rapidity @f$ \eta@f$,
155 azimuthal angle @f$ \varphi@f$ of the strip corresponding to
156 the digit @a digit. This is done by using the information
157 obtained, and previously cached by AliFMDGeometry, from the
158 TGeoManager.
159 @param digit Digit.
160 @param eta On return, psuedo-rapidity @f$ \eta@f$
161 @param phi On return, azimuthal angle @f$ \varphi@f$ */
8f6ee336 162 virtual void PhysicalCoordinates(AliFMDDigit* digit, Float_t& eta,
163 Float_t& phi) const;
42403906 164
8f6ee336 165 mutable TClonesArray* fMult; // Cache of RecPoints
166 mutable Int_t fNMult; // Number of entries in fMult
167 mutable TTree* fTreeR; // Output tree
e802be3e 168 mutable Float_t fCurrentVertex; // Z-coordinate of primary vertex
8f6ee336 169 mutable AliESDFMD* fESDObj; // ESD output object
a3537838 170 AliESD* fESD;
42403906 171
121a60bd 172 ClassDef(AliFMDReconstructor, 0) // class for the FMD reconstruction
121a60bd 173};
174#endif
4347b38f 175//____________________________________________________________________
176//
0d0e6995 177// Local Variables:
178// mode: C++
179// End:
180//
4347b38f 181// EOF
182//