Added macro to lauch TOF QA task with extended functionality via plugin
[u/mrichter/AliRoot.git] / TOF / AliTOFRawMap.cxx
CommitLineData
15ec34b9 1/**************************************************************************
2 * Copyright(c) 1998-1999, 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
16/* $Id$ */
17
18/////////////////////////////////////////////////////////////////////////
19// //
20// AliTOFRawMap class //
21// //
22// It enables fast check if the TDC channel was already engaged //
23// for a measurement. //
24// The index of a AliTOFrawData is saved in the each rawdatamap "cell" //
25// (there is an offset +1, because the index can be zero and //
26// zero means empty cell. //
27// //
28/////////////////////////////////////////////////////////////////////////
29
30#include "TClonesArray.h"
31
32#include "AliLog.h"
33
34#include "AliTOFGeometry.h"
35#include "AliTOFRawMap.h"
36
37ClassImp(AliTOFRawMap)
38
39AliTOFRawMap::AliTOFRawMap():
8a190ba2 40 TObject(),
15ec34b9 41 fNtrm(-1),
42 fNtrmChain(-1),
43 fNtdc(-1),
44 fNtdcChannel(-1),
45 fRawData(0x0),
46 fMaxIndex(-1),
47 fRawMap(0x0)
48{
49//
50// Default ctor
51//
52}
53
54////////////////////////////////////////////////////////////////////////
8a190ba2 55AliTOFRawMap::AliTOFRawMap(TClonesArray *dig)://, AliTOFGeometry *tofGeom:
56 TObject(),
57 fNtrm(AliTOFGeometry::NTRM()+2),
58 fNtrmChain(AliTOFGeometry::NChain()),
59 fNtdc(AliTOFGeometry::NTdc()),
60 fNtdcChannel(AliTOFGeometry::NCh()),
15ec34b9 61 fRawData(dig),
62 fMaxIndex(-1),
63 fRawMap(0x0)
64{
65//
66// ctor
67//
68
69// of course, these constants must not be hardwired
70// change later
71
15ec34b9 72 fMaxIndex = fNtrm*fNtrmChain*fNtdc*fNtdcChannel;
73 fRawMap = new Int_t[fMaxIndex];
74 Clear();
75}
76
77////////////////////////////////////////////////////////////////////////
15ec34b9 78AliTOFRawMap::~AliTOFRawMap()
79{
80//
81// Destructor
82//
8a190ba2 83 if (fRawMap)
84 delete[] fRawMap;
15ec34b9 85
86}
87
88////////////////////////////////////////////////////////////////////////
89void AliTOFRawMap::Clear(const char *)
90{
91//
92// Clear hitmap
93//
94 memset(fRawMap,0,sizeof(int)*fMaxIndex);
95}
96
97////////////////////////////////////////////////////////////////////////
0e74c396 98Int_t AliTOFRawMap::CheckedIndex(const Int_t * const slot) const
15ec34b9 99{
100//
101// Return checked indices for vol
102//
103 Int_t index =
104 slot[0]*fNtrmChain*fNtdc*fNtdcChannel + // TRM
105 slot[1]*fNtdc*fNtdcChannel + // TRM chain
106 slot[2]*fNtdcChannel + // TDC
107 slot[3]; // TDC channel
108
109 if (index >= fMaxIndex) {
110 AliError("CheckedIndex - input outside bounds");
111 return -1;
112 } else {
113 return index;
114 }
115}
116
117////////////////////////////////////////////////////////////////////////
118void AliTOFRawMap::SetHit(Int_t *slot, Int_t idigit)
119{
120//
121// Assign digit to pad vol
122//
123
124// 0 means empty pad, we need to shift indeces by 1
125 fRawMap[CheckedIndex(slot)]=idigit+1;
126}
127
128////////////////////////////////////////////////////////////////////////
129void AliTOFRawMap::SetHit(Int_t *slot)
130{
131//
132// Assign last digit to channel slot
133//
134
135// 0 means empty pad, we need to shift indeces by 1
136 fRawMap[CheckedIndex(slot)]=fRawData->GetLast()+1;
137}
138
139////////////////////////////////////////////////////////////////////////
140Int_t AliTOFRawMap::GetHitIndex(Int_t *slot) const
141{
142//
143// Get contents of channel slot
144//
145
146// 0 means empty pad, we need to shift indeces by 1
147 return fRawMap[CheckedIndex(slot)]-1;
148}
149
150////////////////////////////////////////////////////////////////////////
151TObject* AliTOFRawMap::GetHit(Int_t *slot) const
152{
153//
154// Get pointer to object at alot
155// return 0 if vol out of bounds
156 Int_t index = GetHitIndex(slot);
157 return (index <0) ? 0 : fRawData->UncheckedAt(index);
158}
159
160////////////////////////////////////////////////////////////////////////
161FlagType AliTOFRawMap::TestHit(Int_t *slot) const
162{
163//
164// Check if hit cell is empty, used or unused
165//
166 Int_t inf = fRawMap[CheckedIndex(slot)];
167 if (inf > 0) {
168 return kUsed;
169 } else if (inf == 0) {
170 return kEmpty;
171 } else {
172 return kUnused;
173 }
174}
175