bug fix
[u/mrichter/AliRoot.git] / FMD / AliFMDDigit.cxx
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    AliFMDDigit.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 */
21 //////////////////////////////////////////////////////////////////////
22 //
23 //  Digits classes for the FMD                
24 //
25 //  Digits consists of
26 //   - Detector #
27 //   - Ring ID                                             
28 //   - Sector #     
29 //   - Strip #
30 //   - ADC count in this channel                                  
31 //
32 //  Digits consists of
33 //   - Detector #
34 //   - Ring ID                                             
35 //   - Sector #     
36 //   - Strip #
37 //   - Total energy deposited in the strip
38 //   - ADC count in this channel                                  
39 //
40 // As the Digits and SDigits have so much in common, the classes
41 // AliFMDDigit and AliFMDSDigit are implemented via a base
42 // class AliFMDBaseDigit.
43 ///
44 //              +-----------------+
45 //              | AliFMDBaseDigit |
46 //              +-----------------+
47 //                      ^
48 //                      |
49 //                +------------+
50 //                |            |
51 //      +-------------+ +--------------+
52 //      | AliFMDDigit | | AliFMDSDigit |
53 //      +-------------+ +--------------+
54 //
55 // (Note, that I'd really would have liked to implement AliFMDHit as a
56 // derived class from some base class - say AliFMDStrip, and the Digit
57 // classes would (eventually) have derived from that as well.
58 // However, ROOT doesn't do well with multiple inheritance, so I chose
59 // not to anyway).
60 //
61 // Latest changes by Christian Holm Christensen
62 //
63 //////////////////////////////////////////////////////////////////////
64
65 #include "AliFMDDigit.h"        // ALIFMDDIGIT_H
66 #include "Riostream.h"          // ROOT_Riostream
67 #include <TString.h>
68
69 //====================================================================
70 ClassImp(AliFMDDigit)
71 #if 0
72 ; // Here to make Emacs happy
73 #endif
74
75 //____________________________________________________________________
76 AliFMDDigit::AliFMDDigit()
77   : fCount1(0),
78     fCount2(-1),
79     fCount3(-1),
80     fCount4(-1)
81 {
82   // CTOR
83 }
84
85 //____________________________________________________________________
86 AliFMDDigit::AliFMDDigit(UShort_t       detector, 
87                          Char_t         ring, 
88                          UShort_t       sector, 
89                          UShort_t       strip, 
90                          UShort_t       count1,
91                          Short_t        count2, 
92                          Short_t        count3,
93                          Short_t        count4, 
94                          UShort_t       nrefs,
95                          Int_t*         refs)
96   : AliFMDBaseDigit(detector, ring, sector, strip), 
97     fCount1(count1),
98     fCount2(count2),
99     fCount3(count3), 
100     fCount4(count4)
101 {
102   //
103   // Creates a real data digit object
104   //
105   // Parameters 
106   //
107   //    detector  Detector # (1, 2, or 3)                      
108   //    ring      Ring ID ('I' or 'O')
109   //    sector    Sector # (For inner/outer rings: 0-19/0-39)
110   //    strip     Strip # (For inner/outer rings: 0-511/0-255)
111   //    count1    ADC count (a 10-bit word)
112   //    count2    ADC count (a 10-bit word) -1 if not used
113   //    count3    ADC count (a 10-bit word) -1 if not used
114   if (!refs) return;
115   for (Int_t i = 0; i < nrefs; i++) AddTrack(refs[i]);
116 }
117
118 //____________________________________________________________________
119 const char*
120 AliFMDDigit::GetTitle() const 
121
122   // Get the title 
123   static TString t;
124   t = Form("ADC: %d", Counts());
125   return t.Data();
126 }
127
128 //____________________________________________________________________
129 void
130 AliFMDDigit::Print(Option_t* option) const 
131 {
132   // Print digit to standard out 
133   AliFMDBaseDigit::Print();
134   std::cout << "\t" 
135             << std::setw(4) << fCount1 << " (" 
136             << std::setw(4) << fCount2 << "," 
137             << std::setw(4) << fCount3 << "," 
138             << std::setw(4) << fCount4 << ") = " 
139             << std::setw(4) << Counts() << std::flush;
140   TString opt(option);
141   if (opt.Contains("l", TString::kIgnoreCase)) {
142     std::cout << " ";
143     for (Int_t i = 0; i < 3; i++) 
144       std::cout << (i == 0 ? "" : ",") << std::setw(5) << fTracks[i];
145   }
146   std::cout << std::endl;
147 }
148
149 //____________________________________________________________________
150 //
151 // EOF
152 //