Implemented Copy() function for all esd objects to allow for assignment of AliESDEven...
[u/mrichter/AliRoot.git] / STEER / AliESDFMD.h
1 #ifndef ALIESDFMD_H
2 #define ALIESDFMD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * See cxx source for full Copyright notice                               
7  */
8 //___________________________________________________________________
9 //
10 // AliESDFMD is the Event Summary Data entry for the FMD.  It contains
11 // a rough estimate of the charged particle multiplicity in each strip
12 // of the FMD.    It also contains the psuedo-rapidity of each strip.
13 // This is important, as it varies from event to event, due to a
14 // finite interaction point probability distribution. 
15 //
16 #ifndef ROOT_TObject
17 # include <TObject.h>
18 #endif
19 #ifndef ALIFMDFLOATMAP_H
20 # include "AliFMDFloatMap.h"
21 #endif
22
23 //___________________________________________________________________
24 /** @class AliESDFMD 
25     @brief Event Summary Data for the Forward Multiplicity Detector. 
26     @ingroup FMD_data
27     This stores the psuedo-multiplicity and -rapidiy for each strip of
28     the FMD. 
29  */
30 class AliESDFMD : public TObject
31 {
32 public:
33   /** Default constructor */
34   AliESDFMD();
35   /** Copy constructor 
36       @param other Object to construct from */
37   AliESDFMD(const AliESDFMD& other);
38   /** Assignment operator 
39       @param other Object to assign from
40       @return  reference to this object */
41   AliESDFMD& operator=(const AliESDFMD& other);
42   /** Destructor - does nothing */
43   virtual ~AliESDFMD() {}
44   virtual void Copy(TObject &obj) const;
45
46
47   void Clear(Option_t *option="");
48   /** Get the pseudo-multiplicity of 
49       @f$ \text{FMD}\langle detector\rangle\lange ring\rangle_{\langle
50       sector\rangle\langle strip\rangle}@f$ 
51       @param detector Detector number (1-3)
52       @param ring     Ring identifier ('I' or 'O')
53       @param sector   Sector number (0-511, or 0-255)
54       @param strip    Strip number (0-19, or 0-39)
55       @return Psuedo multiplicity */
56   Float_t Multiplicity(UShort_t detector, Char_t ring, 
57                        UShort_t sector, UShort_t strip) const;
58   /** Get the pseudo-rapidity of 
59       @f$ \text{FMD}\langle detector\rangle\lange ring\rangle_{\langle
60       sector\rangle\langle strip\rangle}@f$ 
61       @param detector Detector number (1-3)
62       @param ring     Ring identifier ('I' or 'O')
63       @param sector   Sector number (0-511, or 0-255)
64       @param strip    Strip number (0-19, or 0-39)
65       @return Psuedo rapidity */
66   Float_t Eta(UShort_t detector, Char_t ring, 
67               UShort_t sector, UShort_t strip) const;
68   /** Set the pseudo-multiplicity of 
69       @f$ \text{FMD}\langle detector\rangle\lange ring\rangle_{\langle
70       sector\rangle\langle strip\rangle}@f$ 
71       @param detector Detector number (1-3)
72       @param ring     Ring identifier ('I' or 'O')
73       @param sector   Sector number (0-511, or 0-255)
74       @param strip    Strip number (0-19, or 0-39)
75       @param mult     Psuedo multiplicity */
76   void SetMultiplicity(UShort_t detector, Char_t ring, 
77                        UShort_t sector, UShort_t strip, 
78                        Float_t mult);
79   /** Set the pseudo-rapidity of 
80       @f$ \text{FMD}\langle detector\rangle\lange ring\rangle_{\langle
81       sector\rangle\langle strip\rangle}@f$ 
82       @param detector Detector number (1-3)
83       @param ring     Ring identifier ('I' or 'O')
84       @param sector   Sector number (0-511, or 0-255)
85       @param strip    Strip number (0-19, or 0-39)
86       @param eta      Psuedo rapidity */
87   void SetEta(UShort_t detector, Char_t ring, 
88               UShort_t sector, UShort_t strip, 
89               Float_t eta);
90   /** @param f the factor for noise suppression */
91   void SetNoiseFactor(Float_t f) { fNoiseFactor = f; }
92   /** @param done Whether we've done angle correction or not */
93   void SetAngleCorrected(Bool_t done) { fAngleCorrected = done; }
94   /** @return Whether we've done angle correction or not */
95   Bool_t IsAngleCorrected() const { return fAngleCorrected; }
96   /** @return the  factor for noise suppression */
97   Float_t GetNoiseFactor() const { return fNoiseFactor; }
98   /** @return maximum number of detectors */
99   UShort_t MaxDetectors() const { return fMultiplicity.MaxDetectors(); }
100   /** @return maximum number of rings */
101   UShort_t MaxRings()     const { return fMultiplicity.MaxRings(); }
102   /** @return maximum number of sectors */
103   UShort_t MaxSectors()   const { return fMultiplicity.MaxSectors(); }
104   /** @return Maximum number of strips */
105   UShort_t MaxStrips()    const { return fMultiplicity.MaxStrips(); }
106   /** Print this object to standard out. 
107       @param option Options */
108   void Print(Option_t* option="") const;
109   /** Check if we need the @c UShort_t fix 
110       @param file File this object was read from */
111   void CheckNeedUShort(TFile* file);
112   enum {
113     /** Value used for undefined multiplicity */
114     kInvalidMult = 1024
115   };
116   enum {
117     /** Value used for undefined pseudo rapidity */
118     kInvalidEta = 1024
119   };
120   /** @return constant reference to multiplicity map */
121   const AliFMDFloatMap& MultiplicityMap() const { return fMultiplicity; }
122   /** @return constant reference to pseudo-rapidity map */
123   const AliFMDFloatMap& EtaMap() const { return fMultiplicity; }
124 protected:
125   AliFMDFloatMap fMultiplicity;   // Psuedo multplicity per strip
126   AliFMDFloatMap fEta;            // Psuedo-rapidity per strip
127   Float_t        fNoiseFactor;    // Factor used for noise suppresion
128   Bool_t         fAngleCorrected; // Whether we've done angle correction
129   ClassDef(AliESDFMD,3)           // ESD info from FMD
130 };
131 #endif
132 //____________________________________________________________________
133 //
134 // Local Variables:
135 //   mode: C++
136 // End:
137 //
138 // EOF
139 //