Bug fix
[u/mrichter/AliRoot.git] / FMD / AliFMDHitDigitizer.h
CommitLineData
ef8e8623 1#ifndef ALIFMDHITDIGITIZER_H
2#define ALIFMDHITDIGITIZER_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// Classses to make Hits into digits and summable digits
9//
10// Digits consists of
11// - Detector #
12// - Ring ID
13// - Sector #
14// - Strip #
15// - ADC count in this channel
16//
17/** @file AliFMDHitDigitizer.h
18 @author Christian Holm Christensen <cholm@nbi.dk>
19 @date Mon Mar 27 12:38:26 2006
20 @brief FMD Digitizers declaration
21 @ingroup FMD_sim
22*/
23#ifndef ALIFMDBASEDIGITIZER_H
24# include <AliFMDBaseDigitizer.h>
25#endif
26
27//====================================================================
28class TClonesArray;
29class AliFMD;
30class AliLoader;
31class AliRunLoader;
32class AliFMDDigit;
83ad576a 33class AliStack;
ef8e8623 34
35
36
37//====================================================================
38/** @class AliFMDHitDigitizer
39 @brief Concrete digitizer to make digits from hits. See also
40 AliFMDBaseDigitizer documentation.
41 @ingroup FMD_sim
42 */
43class AliFMDHitDigitizer : public AliFMDBaseDigitizer
44{
45public:
46 enum Output_t {
47 kDigits,
48 kSDigits
49 };
50
51 /** CTOR */
52 AliFMDHitDigitizer()
53 : AliFMDBaseDigitizer(),
83ad576a 54 fOutput(kDigits),
b2e6f0b0 55 fHoldTime(2e-6),
83ad576a 56 fStack(0)
ef8e8623 57 {}
58 /** CTOR
59 @param name Name */
60 AliFMDHitDigitizer(AliFMD* fmd, Output_t output);
61 /** DTOR */
62 virtual ~AliFMDHitDigitizer() {}
63 /** Run over the input events (retrieved via run loader) */
64 void Exec(Option_t* option="");
b2e6f0b0 65 /**
66 * Set the end of integration
67 *
68 * @param holdT Time when integration ends (nominally @f$
69 * 2\mu{}s@f$)
70 */
71 void SetHoldTime(Double_t holdT=2e-6) { fHoldTime = holdT; }
72 Double_t GetHoldTime() const { return fHoldTime; }
ef8e8623 73protected:
74 /** Copy constructor
75 @param o Object to copy from */
76 AliFMDHitDigitizer(const AliFMDHitDigitizer& o)
77 : AliFMDBaseDigitizer(o),
83ad576a 78 fOutput(o.fOutput),
b2e6f0b0 79 fHoldTime(2e-6),
83ad576a 80 fStack(o.fStack)
ef8e8623 81 {}
82 /** Assignment operator
83 @param o Object to assign from
84 @return Reference to this */
85 AliFMDHitDigitizer& operator=(const AliFMDHitDigitizer& o)
86 {
87 AliFMDBaseDigitizer::operator=(o);
b2e6f0b0 88 fHoldTime = o.fHoldTime;
ef8e8623 89 fOutput = o.fOutput;
b2e6f0b0 90 fStack = o.fStack;
ef8e8623 91 return *this;
92 }
93 /** Make the output tree using the passed loader
94 @param loader
95 @return The generated tree. */
96 TTree* MakeOutputTree(AliLoader* loader);
97 /** Sum energy deposited contributions from each hit in a cache
98 @param hitsBranch Branch in input tree */
99 void SumContributions(TBranch* hitsBranch);
100 /** Make a pedestal
101 @param detector Detector #
102 @param ring Ring ID
103 @param sector Sector #
104 @param strip Strip #
105 @return Pedestal value */
106 UShort_t MakePedestal(UShort_t detector,
107 Char_t ring,
108 UShort_t sector,
109 UShort_t strip) const;
110 /** Add a digit to output.
111 @param fmd Pointer to detector object
112 @param detector Detector #
113 @param ring Ring ID
114 @param sector Sector number
115 @param strip Strip number
116 @param edep Energy deposited (not used)
117 @param count1 ADC count 1
118 @param count2 ADC count 2 (-1 if not used)
119 @param count3 ADC count 3 (-1 if not used)
120 @param count4 ADC count 4 (-1 if not used) */
b2e6f0b0 121 void AddDigit(UShort_t detector,
122 Char_t ring,
123 UShort_t sector,
124 UShort_t strip,
125 Float_t edep,
126 UShort_t count1,
127 Short_t count2,
128 Short_t count3,
129 Short_t count4,
130 UShort_t ntot,
131 UShort_t nprim,
132 const TArrayI& trackrefs) const;
ef8e8623 133 /** Check that digit data is consistent
134 @param digit Digit
135 @param nhits Number of hits
136 @param counts ADC counts */
137 void CheckDigit(AliFMDDigit* digit,
138 UShort_t nhits,
139 const TArrayI& counts);
140 /** Store the data using the loader
141 @param loader The loader */
142 void StoreDigits(AliLoader* loader);
143
144
145 Output_t fOutput; // Output mode
b2e6f0b0 146 Double_t fHoldTime; // Stop of integration
83ad576a 147 AliStack* fStack; // Kinematics
ef8e8623 148
149 ClassDef(AliFMDHitDigitizer,1) // Make Digits from Hits
150};
151
152
153#endif
154//____________________________________________________________________
155//
156// Local Variables:
157// mode: C++
158// End:
159//
160//
161// EOF
162//
163