Moving the FMD offline trigger to its own class, AliFMDOfflineTrigger
[u/mrichter/AliRoot.git] / FMD / AliFMDSDigit.cxx
CommitLineData
02a27b50 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//====================================================================
71ClassImp(AliFMDSDigit)
2aeec17d 72#if 0
73; // Here to make Emacs happy
74#endif
02a27b50 75//____________________________________________________________________
76AliFMDSDigit::AliFMDSDigit()
77 : fEdep(0),
78 fCount1(0),
79 fCount2(-1),
2aeec17d 80 fCount3(-1),
b2e6f0b0 81 fCount4(-1),
faf80567 82 fNParticles(0),
83 fNPrimaries(0)
84 // , fLabels(0)
02a27b50 85{
86 // cTOR
87}
88
89//____________________________________________________________________
b2e6f0b0 90AliFMDSDigit::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,
8d00dfa3 101 Int_t* refs)
02a27b50 102 : AliFMDBaseDigit(detector, ring, sector, strip),
103 fEdep(edep),
104 fCount1(count1),
105 fCount2(count2),
2aeec17d 106 fCount3(count3),
83ad576a 107 fCount4(count4),
108 fNParticles(npart),
faf80567 109 fNPrimaries(nprim)
110 // , fLabels(refs)
02a27b50 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
8d00dfa3 125 if (!refs) return;
126 for (Int_t i = 0; i < npart; i++) AddTrack(refs[i]);
02a27b50 127}
128
129//____________________________________________________________________
130void
b2e6f0b0 131AliFMDSDigit::Print(Option_t* option) const
02a27b50 132{
133 // Print digit to standard out
134 AliFMDBaseDigit::Print();
faf80567 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
b2e6f0b0 143 TString opt(option);
144 if (opt.Contains("p", TString::kIgnoreCase))
faf80567 145 std::cout << " ["
146 << std::setw(2) << fNPrimaries << "/"
147 << std::setw(2) << fNParticles << "]"
b2e6f0b0 148 << std::flush;
149 if (opt.Contains("l", TString::kIgnoreCase)) {
150 std::cout << " ";
faf80567 151 for (Int_t i = 0; i < GetNTrack(); i++)
152 std::cout << (i == 0 ? "" : ",") << std::setw(5) << fTracks[i];
153#if 0
b2e6f0b0 154 for (Int_t i = 0; i < fLabels.fN; i++)
155 std::cout << (i == 0 ? "" : ",") << fLabels.fArray[i];
faf80567 156#endif
b2e6f0b0 157 }
158 std::cout << std::endl;
02a27b50 159}
160
161//____________________________________________________________________
162//
163// EOF
164//