]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMDEdepMap.h
Fix
[u/mrichter/AliRoot.git] / FMD / AliFMDEdepMap.h
1 #ifndef ALIFMDEDEPMAP_H
2 #define ALIFMDEDEPMAP_H
3 /* Copyright(c) 1998-2000, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * See cxx source for full Copyright notice                               
7  */
8 /** @file    AliFMDEdepMap.h
9     @author  Christian Holm Christensen <cholm@nbi.dk>
10     @date    Mon Mar 27 12:39:50 2006
11     @brief   Per strip map of energy deposited and number of hits 
12     @ingroup FMD_sim
13 */
14 //
15 // Contains a pair of energy deposited @c fEdep and number of hits @c
16 // fN, @c fEdep is the summed energy deposition, and @c fN is the
17 // number of hits  
18 #ifndef ALIFMDMAP_H
19 # include "AliFMDMap.h"
20 #endif 
21 #ifndef ALIFMDEDEPHITPAIR_H
22 # include <AliFMDEdepHitPair.h>
23 #endif
24
25
26 //____________________________________________________________________
27 /** @brief Map of Energy deposited, hit information per strip.
28     Contains a pair of energy deposited @c fEdep and 
29     number of hits @c fN, @c fEdep is the summed energy deposition,
30     and @c fN is the number of hits 
31     @ingroup FMD_sim
32 */
33 class AliFMDEdepMap : public AliFMDMap
34 {
35 public:
36   /** Copy constructor 
37       @param other Object to copy from. 
38       @return  */
39   AliFMDEdepMap(const AliFMDEdepMap& other);
40   /** Constructor */
41   AliFMDEdepMap();
42   /** Constructor 
43       @param maxDet  Number of detectors (3)
44       @param maxRing Number of rings (2)
45       @param maxSec  Number of sectors (40)
46       @param maxStr  Number of strips (20) */
47   AliFMDEdepMap(UShort_t maxDet, 
48                 UShort_t maxRing= 0, 
49                 UShort_t maxSec = 0, 
50                 UShort_t maxStr = 0);
51   /** DTOR */
52   virtual ~AliFMDEdepMap() { delete [] fData; }
53   AliFMDEdepMap& operator=(const AliFMDEdepMap& other);
54   /** Reset to default */
55   virtual void Reset();
56   /** Reset to value 
57       @param val Value to reset from */
58   virtual void Reset(const AliFMDEdepHitPair& val);
59   /** Access operator 
60       @param detector Detector 
61       @param ring     Ring 
62       @param sector   Sector  
63       @param strip    Strip
64       @return  reference value stored for the strip */
65   virtual AliFMDEdepHitPair& operator()(UShort_t detector, 
66                                         Char_t   ring, 
67                                         UShort_t sector, 
68                                         UShort_t strip);
69   /** Access operator 
70       @param detector Detector 
71       @param ring     Ring 
72       @param sector   Sector  
73       @param strip    Strip
74       @return value stored for the strip */
75   virtual const AliFMDEdepHitPair& operator()(UShort_t detector, 
76                                               Char_t   ring, 
77                                               UShort_t sector, 
78                                               UShort_t strip) const;
79   void*     Ptr() const { return reinterpret_cast<void*>(fData); }
80 protected:
81   Int_t     MaxIndex()            const { return fTotal; }
82   Int_t     AtAsInt(Int_t idx)    const { return fData[idx].fN; }
83   Int_t&    AtAsInt(Int_t idx)          { return AliFMDMap::AtAsInt(idx); }
84   Bool_t    AtAsBool(Int_t idx)   const { return fData[idx].fEdep > 0; }
85   Bool_t&   AtAsBool(Int_t idx)         { return AliFMDMap::AtAsBool(idx); }
86   Float_t   AtAsFloat(Int_t idx)  const { return fData[idx].fEdep; }
87   Float_t&  AtAsFloat(Int_t idx)        { return fData[idx].fEdep; }
88   UShort_t  AtAsUShort(Int_t idx) const { return fData[idx].fN; }
89   UShort_t& AtAsUShort(Int_t idx)       { return fData[idx].fN; }
90   Bool_t    IsUShort()            const { return kTRUE; }  
91   Bool_t    IsFloat()             const { return kTRUE; }  
92   Int_t              fTotal; //  Total number of entries
93   AliFMDEdepHitPair* fData;  //[fTotal] The data 
94   ClassDef(AliFMDEdepMap, 3) // Cache of edep,hit information per strip
95 };
96
97 #endif 
98 //____________________________________________________________________
99 //
100 // Local Variables:
101 //   mode: C++
102 // End:
103 //
104 // EOF
105 //
106
107