]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/TPCbase/AliTPCclusterMI.cxx
doxy: TPC/TPCbase converted
[u/mrichter/AliRoot.git] / TPC / TPCbase / AliTPCclusterMI.cxx
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 /// \class AliTPCclusterMI
17 /// \brief Implementation of the TPC cluser
18 ///
19 /// AliTPC parallel tracker -
20 /// Description of this class together with its intended usage
21 /// will follow shortly
22 ///
23 /// \author Marian Ivanov   Marian.Ivanov@cern.ch
24
25 /* $Id$ */
26
27 #include "AliTPCclusterMI.h"
28 #include "AliTPCclusterInfo.h"
29 #include "AliTrackPointArray.h"
30 #include "AliGeomManager.h"
31 #include "AliLog.h"
32
33 /// \cond CLASSIMP
34 ClassImp(AliTPCclusterMI)
35 /// \endcond
36
37
38 AliTPCclusterMI::AliTPCclusterMI():
39   AliCluster(),
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
49 {
50   //
51   // default constructor
52   //
53 }
54
55 AliTPCclusterMI::AliTPCclusterMI(const AliTPCclusterMI & cluster):
56   AliCluster(cluster),
57   fInfo(0),
58   fTimeBin(cluster.fTimeBin),
59   fPad(cluster.fPad),
60   fQ(cluster.fQ),
61   fMax(cluster.fMax),
62   fType(cluster.fType),
63   fUsed(cluster.fUsed),
64   fDetector(cluster.fDetector),
65   fRow(cluster.fRow)
66 {
67   /// copy constructor
68
69   // AliInfo("Copy constructor\n");
70
71   if (cluster.fInfo) fInfo = new AliTPCclusterInfo(*(cluster.fInfo));
72 }
73
74 AliTPCclusterMI & AliTPCclusterMI::operator = (const AliTPCclusterMI & cluster)
75 {
76   /// assignment operator
77
78   // AliInfo("Asignment operator\n");
79
80   if (this == &cluster) return (*this);
81
82   (AliCluster&)(*this) = (AliCluster&)cluster;
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;
91   delete fInfo;
92   fInfo = 0;
93   if (cluster.fInfo) fInfo = new AliTPCclusterInfo(*(cluster.fInfo));
94   return *this;
95 }
96
97
98
99
100 AliTPCclusterMI::AliTPCclusterMI(Int_t *lab, Float_t *hit) :
101   AliCluster(0,hit,0.,0.,lab),
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
111 {
112   /// constructor
113
114   fQ = (UShort_t)hit[4];
115   fInfo = 0;
116 }
117
118 AliTPCclusterMI::~AliTPCclusterMI() {
119   /// destructor
120
121   if (fInfo) delete fInfo;
122   fInfo = 0;
123 }
124
125
126
127 Bool_t AliTPCclusterMI::IsSortable() const
128 {
129   ///
130
131   return kTRUE;
132
133 }
134
135 Int_t AliTPCclusterMI::Compare(const TObject* obj) const
136 {
137   /// compare according y
138
139   AliTPCclusterMI * o2 = (AliTPCclusterMI*)obj;
140   return (o2->GetY()>GetY())? -1:1;
141 }
142
143
144 void AliTPCclusterMI::SetDetector(Int_t detector){
145   /// set volume ID
146
147   fDetector = (UChar_t)(detector%72);
148   AliGeomManager::ELayerID id = (fDetector<36) ?
149     AliGeomManager::kTPC1 :AliGeomManager::kTPC2 ;
150   Int_t modId = (fDetector<36)?fDetector: fDetector-36;
151   SetVolumeId(AliGeomManager::LayerToVolUID(id,modId));
152 }
153
154
155 void AliTPCclusterMI::SetInfo(AliTPCclusterInfo * info) {
156   ///
157
158   if (fInfo) delete fInfo;
159   fInfo = info;
160 }
161
162
163 AliTPCclusterMI* AliTPCclusterMI::MakeCluster(AliTrackPoint* /*point*/) {
164   /// make AliTPCclusterMI out of AliTrackPoint
165   /// (not yet implemented)
166
167   return NULL;
168 }
169
170
171 AliTrackPoint* AliTPCclusterMI::MakePoint() {
172   /// make AliTrackPoint out of AliTPCclusterMI
173
174   AliTrackPoint* point = new AliTrackPoint();
175   Float_t xyz[3]={0.};
176   Float_t cov[6]={0.};
177   GetGlobalXYZ(xyz);
178   GetGlobalCov(cov);
179   // voluem ID to add later ....
180   point->SetXYZ(xyz);
181   point->SetCov(cov);
182
183   return point;
184 }
185
186 //______________________________________________________________________________
187 void AliTPCclusterMI::SetGlobalTrackPoint( const AliCluster &cl, AliTrackPoint &point )
188 {
189   /// Set global AliTrackPoint
190
191   Float_t xyz[3]={0.};
192   Float_t cov[6]={0.};
193   cl.GetGlobalXYZ(xyz);
194   cl.GetGlobalCov(cov);
195   // voluem ID to add later ....
196   point.SetXYZ(xyz);
197   point.SetCov(cov);
198 }