AliRoot Core  edcc906 (edcc906)
AliFMDSDigit.cxx
Go to the documentation of this file.
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$ */
22 //
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.
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 //
65 
66 #include "AliFMDSDigit.h" // ALIFMDDIGIT_H
67 #include "Riostream.h" // ROOT_Riostream
68 #include <TString.h>
69 
70 //====================================================================
71 ClassImp(AliFMDSDigit)
72 #if 0
73 ; // Here to make Emacs happy
74 #endif
75 //____________________________________________________________________
77  : fEdep(0),
78  fCount1(0),
79  fCount2(-1),
80  fCount3(-1),
81  fCount4(-1),
82  fNParticles(0),
83  fNPrimaries(0)
84  // , fLabels(0)
85 {
86  // cTOR
87 }
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  : AliFMDBaseDigit(detector, ring, sector, strip),
103  fEdep(edep),
104  fCount1(count1),
105  fCount2(count2),
106  fCount3(count3),
107  fCount4(count4),
108  fNParticles(npart),
109  fNPrimaries(nprim)
110  // , fLabels(refs)
111 {
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  if (!refs) return;
126  for (Int_t i = 0; i < npart; i++) AddTrack(refs[i]);
127 }
128 
129 //____________________________________________________________________
130 void
131 AliFMDSDigit::Print(Option_t* option) const
132 {
133  // Print digit to standard out
135  std::cout << "\t"
136  << std::setw(10) << fEdep << " -> "
137  << std::setw(4) << fCount1 << " ("
138  << std::setw(4) << fCount2 << ","
139  << std::setw(4) << fCount3 << ","
140  << std::setw(4) << fCount4 << ") = "
141  << std::setw(4) << Counts() << std::flush;
142 
143  TString opt(option);
144  if (opt.Contains("p", TString::kIgnoreCase))
145  std::cout << " ["
146  << std::setw(2) << fNPrimaries << "/"
147  << std::setw(2) << fNParticles << "]"
148  << std::flush;
149  if (opt.Contains("l", TString::kIgnoreCase)) {
150  std::cout << " ";
151  for (Int_t i = 0; i < GetNTrack(); i++)
152  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  }
158  std::cout << std::endl;
159 }
160 
161 //____________________________________________________________________
162 //
163 // EOF
164 //
Short_t fCount4
Definition: AliFMDSDigit.h:124
UShort_t fNPrimaries
Definition: AliFMDSDigit.h:126
Short_t fCount2
Definition: AliFMDSDigit.h:122
UShort_t Counts() const
Definition: AliFMDSDigit.h:134
UShort_t fCount1
Definition: AliFMDSDigit.h:121
base class for digits
Short_t fCount3
Definition: AliFMDSDigit.h:123
void AddTrack(Int_t trackno)
Float_t fEdep
Definition: AliFMDSDigit.h:120
UShort_t fNParticles
Definition: AliFMDSDigit.h:125
Digits for the FMD.
virtual void Print(Option_t *opt="") const
void Print(Option_t *opt="") const
class for summable digits
Definition: AliFMDSDigit.h:27
Int_t fTracks[3]
Definition: AliDigit.h:25
UShort_t GetNTrack() const