]>
Commit | Line | Data |
---|---|---|
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 | 29 | class TTree; |
4347b38f | 30 | class TClonesArray; |
4347b38f | 31 | class AliFMDDigit; |
32 | class AliRawReader; | |
1a1fdef7 | 33 | class AliRunLoader; |
a3537838 | 34 | class AliESD; |
8f6ee336 | 35 | class 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 | 47 | class AliFMDReconstructor: public AliReconstructor |
48 | { | |
4347b38f | 49 | public: |
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 | |
4347b38f | 97 | protected: |
0e73cae6 | 98 | /** Copy CTOR |
99 | @param other Object to copy from. */ | |
100 | AliFMDReconstructor(const AliFMDReconstructor& other); | |
101 | /** Assignment operator | |
102 | @param other Object to assign from | |
103 | @return reference to this object */ | |
104 | AliFMDReconstructor& operator=(const AliFMDReconstructor& other); | |
9f662337 | 105 | /** Process AliFMDDigit objects in @a digits. For each digit, find |
106 | the psuedo-rapidity @f$ \eta@f$, azimuthal angle @f$ \varphi@f$, | |
107 | energy deposited @f$ E@f$, and psuedo-inclusive multiplicity @f$ | |
108 | M@f$. | |
109 | @param digits Array of digits. */ | |
e802be3e | 110 | virtual void ProcessDigits(TClonesArray* digits) const; |
9f662337 | 111 | /** Substract pedestals from raw ADC in @a digit |
112 | @param digit Digit data | |
113 | @return Pedestal subtracted ADC count. */ | |
4347b38f | 114 | virtual UShort_t SubtractPedestal(AliFMDDigit* digit) const; |
9f662337 | 115 | /** Converts number of ADC counts to energy deposited. This is |
116 | done by | |
117 | @f[ | |
118 | E_i = A_i g_i | |
119 | @f] | |
120 | where @f$ A_i@f$ is the pedestal subtracted ADC counts, and @f$ | |
121 | g_i@f$ is the gain for the @f$ i^{\mbox{th}}@f$ strip. | |
122 | @param digit Raw data | |
123 | @param eta Psuedo-rapidity of digit. | |
124 | @param count Pedestal subtracted ADC counts | |
125 | @return Energy deposited @f$ E_i@f$ */ | |
8f6ee336 | 126 | virtual Float_t Adc2Energy(AliFMDDigit* digit, Float_t eta, |
127 | UShort_t count) const; | |
9f662337 | 128 | /** Converts an energy signal to number of particles. In this |
129 | implementation, it's done by | |
130 | @f[ | |
131 | M_i = E_i / E_{\mbox{MIP}} | |
132 | @f] | |
133 | where @f$ E_i@f$ is the energy deposited, and @f$ | |
134 | E_{\mbox{MIP}}@f$ is the average energy deposited by a minimum | |
135 | ionizing particle | |
136 | @param digit Raw data | |
137 | @param edep Energy deposited @f$ E_i@f$ | |
138 | @return Psuedo-inclusive multiplicity @f$ M@f$ */ | |
8f6ee336 | 139 | virtual Float_t Energy2Multiplicity(AliFMDDigit* digit, Float_t edep) const; |
9f662337 | 140 | /** Calculate the physical coordinates psuedo-rapidity @f$ \eta@f$, |
141 | azimuthal angle @f$ \varphi@f$ of the strip corresponding to | |
142 | the digit @a digit. This is done by using the information | |
143 | obtained, and previously cached by AliFMDGeometry, from the | |
144 | TGeoManager. | |
145 | @param digit Digit. | |
146 | @param eta On return, psuedo-rapidity @f$ \eta@f$ | |
147 | @param phi On return, azimuthal angle @f$ \varphi@f$ */ | |
8f6ee336 | 148 | virtual void PhysicalCoordinates(AliFMDDigit* digit, Float_t& eta, |
149 | Float_t& phi) const; | |
42403906 | 150 | |
8f6ee336 | 151 | mutable TClonesArray* fMult; // Cache of RecPoints |
152 | mutable Int_t fNMult; // Number of entries in fMult | |
153 | mutable TTree* fTreeR; // Output tree | |
e802be3e | 154 | mutable Float_t fCurrentVertex; // Z-coordinate of primary vertex |
8f6ee336 | 155 | mutable AliESDFMD* fESDObj; // ESD output object |
02a27b50 | 156 | AliESD* fESD; // ESD object(?) |
157 | ||
158 | private: | |
159 | /** Hide base classes unused function */ | |
160 | void Reconstruct(AliRawReader*, TTree*) const; | |
161 | /** Hide base classes unused function */ | |
162 | void Reconstruct(AliRunLoader*) const; | |
163 | /** Hide base classes unused function */ | |
164 | void Reconstruct(AliRunLoader*, AliRawReader*) const; | |
165 | /** Hide base classes unused function */ | |
166 | void FillESD(AliRawReader*, TTree*, AliESD*) const; | |
167 | /** Hide base classes unused function */ | |
168 | void FillESD(AliRunLoader*, AliESD*) const; | |
169 | /** Hide base classes unused function */ | |
170 | void FillESD(AliRunLoader*, AliRawReader*, AliESD*) const; | |
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 | // |