Line data Source code
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 102414 : 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 0 : void* Ptr() const { return reinterpret_cast<void*>(fData); }
80 : protected:
81 0 : Int_t MaxIndex() const { return fTotal; }
82 0 : Int_t AtAsInt(Int_t idx) const { return fData[idx].fN; }
83 0 : Int_t& AtAsInt(Int_t idx) { return AliFMDMap::AtAsInt(idx); }
84 0 : Bool_t AtAsBool(Int_t idx) const { return fData[idx].fEdep > 0; }
85 0 : Bool_t& AtAsBool(Int_t idx) { return AliFMDMap::AtAsBool(idx); }
86 0 : Float_t AtAsFloat(Int_t idx) const { return fData[idx].fEdep; }
87 0 : Float_t& AtAsFloat(Int_t idx) { return fData[idx].fEdep; }
88 0 : UShort_t AtAsUShort(Int_t idx) const { return fData[idx].fN; }
89 0 : UShort_t& AtAsUShort(Int_t idx) { return fData[idx].fN; }
90 0 : Bool_t IsUShort() const { return kTRUE; }
91 0 : Bool_t IsFloat() const { return kTRUE; }
92 : Int_t fTotal; // Total number of entries
93 : AliFMDEdepHitPair* fData; //[fTotal] The data
94 12 : 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 :
|