]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TPC/TPCrec/AliTPCclusterMI.cxx
TPC module
[u/mrichter/AliRoot.git] / TPC / TPCrec / AliTPCclusterMI.cxx
CommitLineData
1c53abe2 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
6d171107 16//-------------------------------------------------------
17// Implementation of the TPC cluser
18//
19// Origin: Marian Ivanov Marian.Ivanov@cern.ch
20//
21// AliTPC parallel tracker -
22// Description of this class together with its intended usage
23// will follow shortly
24//
25//-------------------------------------------------------
26
27/* $Id$ */
1c53abe2 28
29#include "AliTPCclusterMI.h"
03fe1804 30#include "AliTPCclusterInfo.h"
5a10f09e 31#include "AliTrackPointArray.h"
1ac29fc4 32#include "AliGeomManager.h"
03fe1804 33#include "AliLog.h"
1c53abe2 34
35ClassImp(AliTPCclusterMI)
1c53abe2 36
2f32844a 37
d101caf3 38AliTPCclusterMI::AliTPCclusterMI():
2f32844a 39 AliCluster(),
f1c2a4a3 40 fInfo(0),
41 fTimeBin(0), //time bin coordinate
42 fPad(0), //pad coordinate
43 fQ(0), //Q of cluster (in ADC counts)
44 fMax(0), //maximal amplitude in cluster
45 fType(0), //type of the cluster 0 means golden
46 fUsed(0), //counter of usage
47 fDetector(0), //detector number
48 fRow(0) //row number number
2f32844a 49{
50 //
51 // default constructor
52 //
53}
54
03fe1804 55AliTPCclusterMI::AliTPCclusterMI(const AliTPCclusterMI & cluster):
56 AliCluster(cluster),
f1c2a4a3 57 fInfo(0),
58 fTimeBin(cluster.fTimeBin),
59 fPad(cluster.fPad),
03fe1804 60 fQ(cluster.fQ),
03fe1804 61 fMax(cluster.fMax),
f1c2a4a3 62 fType(cluster.fType),
03fe1804 63 fUsed(cluster.fUsed),
64 fDetector(cluster.fDetector),
f1c2a4a3 65 fRow(cluster.fRow)
03fe1804 66{
67 //
68 // copy constructor
69 //
70 // AliInfo("Copy constructor\n");
71 if (cluster.fInfo) fInfo = new AliTPCclusterInfo(*(cluster.fInfo));
72}
73
74AliTPCclusterMI & AliTPCclusterMI::operator = (const AliTPCclusterMI & cluster)
75{
76 //
77 // assignment operator
78 //
79 // AliInfo("Asignment operator\n");
04420071 80 if (this == &cluster) return (*this);
03fe1804 81
82 (AliCluster&)(*this) = (AliCluster&)cluster;
03fe1804 83 fQ = cluster.fQ;
84 fType = cluster.fType;
85 fMax = cluster.fMax;
86 fUsed = cluster.fUsed;
87 fDetector = cluster.fDetector;
88 fRow = cluster.fRow;
89 fTimeBin = cluster.fTimeBin;
90 fPad = cluster.fPad;
a0f67dc8 91 delete fInfo;
03fe1804 92 fInfo = 0;
93 if (cluster.fInfo) fInfo = new AliTPCclusterInfo(*(cluster.fInfo));
a487b3ba 94 return *this;
03fe1804 95}
96
97
98
99
2f32844a 100AliTPCclusterMI::AliTPCclusterMI(Int_t *lab, Float_t *hit) :
75fb37cc 101 AliCluster(0,hit,0.,0.,lab),
f1c2a4a3 102 fInfo(0),
103 fTimeBin(0), //time bin coordinate
104 fPad(0), //pad coordinate
105 fQ(0), //Q of cluster (in ADC counts)
106 fMax(0), //maximal amplitude in cluster
107 fType(0), //type of the cluster 0 means golden
108 fUsed(0), //counter of usage
109 fDetector(0), //detector number
110 fRow(0) //row number number
2f32844a 111{
112 //
113 // constructor
114 //
115 fQ = (UShort_t)hit[4];
03fe1804 116 fInfo = 0;
2f32844a 117}
118
03fe1804 119AliTPCclusterMI::~AliTPCclusterMI() {
120 //
121 // destructor
122 //
123 if (fInfo) delete fInfo;
a0f67dc8 124 fInfo = 0;
03fe1804 125}
126
127
128
1c53abe2 129Bool_t AliTPCclusterMI::IsSortable() const
130{
131 //
132 //
133 return kTRUE;
134
135}
136
137Int_t AliTPCclusterMI::Compare(const TObject* obj) const
138{
139 //
140 // compare according y
141 AliTPCclusterMI * o2 = (AliTPCclusterMI*)obj;
75fb37cc 142 return (o2->GetY()>GetY())? -1:1;
1c53abe2 143}
1ac29fc4 144
145
146void AliTPCclusterMI::SetDetector(Int_t detector){
147 //
148 // set volume ID
149 //
150 fDetector = (UChar_t)(detector%72);
151 AliGeomManager::ELayerID id = (fDetector<36) ?
152 AliGeomManager::kTPC1 :AliGeomManager::kTPC2 ;
153 Int_t modId = (fDetector<36)?fDetector: fDetector-36;
154 SetVolumeId(AliGeomManager::LayerToVolUID(id,modId));
155}
b127a65f 156
157
158void AliTPCclusterMI::SetInfo(AliTPCclusterInfo * info) {
159 //
160 //
161 //
162 if (fInfo) delete fInfo;
163 fInfo = info;
164}
5a10f09e 165
166
32438f4e 167AliTPCclusterMI* AliTPCclusterMI::MakeCluster(AliTrackPoint* /*point*/) {
5a10f09e 168 //
169 // make AliTPCclusterMI out of AliTrackPoint
170 // (not yet implemented)
171
172 return NULL;
173}
174
175
32438f4e 176AliTrackPoint* AliTPCclusterMI::MakePoint() {
5a10f09e 177 //
178 // make AliTrackPoint out of AliTPCclusterMI
179 //
180
d1cf83f5 181 AliTrackPoint* point = new AliTrackPoint();
32438f4e 182 Float_t xyz[3]={0.};
183 Float_t cov[6]={0.};
184 GetGlobalXYZ(xyz);
185 GetGlobalCov(cov);
186 // voluem ID to add later ....
187 point->SetXYZ(xyz);
188 point->SetCov(cov);
189
5a10f09e 190 return point;
191}
05da1b4e 192
e83fd282 193//______________________________________________________________________________
194void AliTPCclusterMI::SetGlobalTrackPoint( const AliCluster &cl, AliTrackPoint &point )
195{
05da1b4e 196 //
e83fd282 197 // Set global AliTrackPoint
05da1b4e 198 //
199
200 Float_t xyz[3]={0.};
201 Float_t cov[6]={0.};
e83fd282 202 cl.GetGlobalXYZ(xyz);
203 cl.GetGlobalCov(cov);
05da1b4e 204 // voluem ID to add later ....
205 point.SetXYZ(xyz);
206 point.SetCov(cov);
207}