Line data Source code
1 : /**************************************************************************
2 : * Copyright(c) 2004, ALICE Experiment at CERN, All rights reserved. *
3 : * *
4 : * Author: The ALICE Off-line Project. *
5 : * Contributors are mentioned in the code where appropriate. *
6 : * *
7 : * Permission to use, copy, modify and distribute this software and its *
8 : * documentation strictly for non-commercial purposes is hereby granted *
9 : * without fee, provided that the above copyright notice appears in all *
10 : * copies and that both the copyright notice and this permission notice *
11 : * appear in the supporting documentation. The authors make no claims *
12 : * about the suitability of this software for any purpose. It is *
13 : * provided "as is" without express or implied warranty. *
14 : **************************************************************************/
15 : /* $Id$ */
16 : /** @file AliFMDSDigit.cxx
17 : @author Christian Holm Christensen <cholm@nbi.dk>
18 : @date Mon Mar 27 12:37:41 2006
19 : @brief Digits for the FMD
20 : @ingroup FMD_base
21 : */
22 : //////////////////////////////////////////////////////////////////////
23 : //
24 : // Digits classes for the FMD
25 : //
26 : // Digits consists of
27 : // - Detector #
28 : // - Ring ID
29 : // - Sector #
30 : // - Strip #
31 : // - ADC count in this channel
32 : //
33 : // Digits consists of
34 : // - Detector #
35 : // - Ring ID
36 : // - Sector #
37 : // - Strip #
38 : // - Total energy deposited in the strip
39 : // - ADC count in this channel
40 : //
41 : // As the Digits and SDigits have so much in common, the classes
42 : // AliFMDDigit and AliFMDSDigit are implemented via a base
43 : // class AliFMDBaseDigit.
44 : ///
45 : // +-----------------+
46 : // | AliFMDBaseDigit |
47 : // +-----------------+
48 : // ^
49 : // |
50 : // +------------+
51 : // | |
52 : // +-------------+ +--------------+
53 : // | AliFMDDigit | | AliFMDSDigit |
54 : // +-------------+ +--------------+
55 : //
56 : // (Note, that I'd really would have liked to implement AliFMDHit as a
57 : // derived class from some base class - say AliFMDStrip, and the Digit
58 : // classes would (eventually) have derived from that as well.
59 : // However, ROOT doesn't do well with multiple inheritance, so I chose
60 : // not to anyway).
61 : //
62 : // Latest changes by Christian Holm Christensen
63 : //
64 : //////////////////////////////////////////////////////////////////////
65 :
66 : #include "AliFMDSDigit.h" // ALIFMDDIGIT_H
67 : #include "Riostream.h" // ROOT_Riostream
68 : #include <TString.h>
69 :
70 : //====================================================================
71 12 : ClassImp(AliFMDSDigit)
72 : #if 0
73 : ; // Here to make Emacs happy
74 : #endif
75 : //____________________________________________________________________
76 75 : AliFMDSDigit::AliFMDSDigit()
77 75 : : fEdep(0),
78 75 : fCount1(0),
79 75 : fCount2(-1),
80 75 : fCount3(-1),
81 75 : fCount4(-1),
82 75 : fNParticles(0),
83 75 : fNPrimaries(0)
84 : // , fLabels(0)
85 375 : {
86 : // cTOR
87 150 : }
88 :
89 : //____________________________________________________________________
90 : AliFMDSDigit::AliFMDSDigit(UShort_t detector,
91 : Char_t ring,
92 : UShort_t sector,
93 : UShort_t strip,
94 : Float_t edep,
95 : UShort_t count1,
96 : Short_t count2,
97 : Short_t count3,
98 : Short_t count4,
99 : UShort_t npart,
100 : UShort_t nprim,
101 : const Int_t* refs)
102 106 : : AliFMDBaseDigit(detector, ring, sector, strip),
103 106 : fEdep(edep),
104 106 : fCount1(count1),
105 106 : fCount2(count2),
106 106 : fCount3(count3),
107 106 : fCount4(count4),
108 106 : fNParticles(npart),
109 106 : fNPrimaries(nprim)
110 : // , fLabels(refs)
111 530 : {
112 : //
113 : // Creates a real data digit object
114 : //
115 : // Parameters
116 : //
117 : // detector Detector # (1, 2, or 3)
118 : // ring Ring ID ('I' or 'O')
119 : // sector Sector # (For inner/outer rings: 0-19/0-39)
120 : // strip Strip # (For inner/outer rings: 0-511/0-255)
121 : // edep Total energy deposited
122 : // count1 ADC count (a 10-bit word)
123 : // count2 ADC count (a 10-bit word) -1 if not used
124 : // count3 ADC count (a 10-bit word) -1 if not used
125 106 : if (!refs) return;
126 539 : for (Int_t i = 0; i < npart; i++) AddTrack(refs[i]);
127 212 : }
128 :
129 : //____________________________________________________________________
130 : void
131 : AliFMDSDigit::Print(Option_t* option) const
132 : {
133 : // Print digit to standard out
134 0 : AliFMDBaseDigit::Print();
135 0 : std::cout << "\t"
136 0 : << std::setw(10) << fEdep << " -> "
137 0 : << std::setw(4) << fCount1 << " ("
138 0 : << std::setw(4) << fCount2 << ","
139 0 : << std::setw(4) << fCount3 << ","
140 0 : << std::setw(4) << fCount4 << ") = "
141 0 : << std::setw(4) << Counts() << std::flush;
142 :
143 0 : TString opt(option);
144 0 : if (opt.Contains("p", TString::kIgnoreCase))
145 0 : std::cout << " ["
146 0 : << std::setw(2) << fNPrimaries << "/"
147 0 : << std::setw(2) << fNParticles << "]"
148 0 : << std::flush;
149 0 : if (opt.Contains("l", TString::kIgnoreCase)) {
150 0 : std::cout << " ";
151 0 : for (Int_t i = 0; i < GetNTrack(); i++)
152 0 : std::cout << (i == 0 ? "" : ",") << std::setw(5) << fTracks[i];
153 : #if 0
154 : for (Int_t i = 0; i < fLabels.fN; i++)
155 : std::cout << (i == 0 ? "" : ",") << fLabels.fArray[i];
156 : #endif
157 0 : }
158 0 : std::cout << std::endl;
159 0 : }
160 :
161 : //____________________________________________________________________
162 : //
163 : // EOF
164 : //
|