]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TPC/AliTPCclusterMI.cxx
Adding macro to create Pad response function for the GEM readout
[u/mrichter/AliRoot.git] / TPC / 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 //-------------------------------------------------------
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$ */
28
29 #include "AliTPCclusterMI.h"
30 #include "AliTPCclusterInfo.h"
31 #include "AliGeomManager.h"
32 #include "AliLog.h"
33
34 ClassImp(AliTPCclusterMI)
35
36
37 AliTPCclusterMI::AliTPCclusterMI():
38   AliCluster(),
39   fInfo(0),
40   fTimeBin(0),  //time bin coordinate
41   fPad(0),  //pad coordinate
42   fQ(0),       //Q of cluster (in ADC counts)  
43   fMax(0),      //maximal amplitude in cluster
44   fType(0),     //type of the cluster 0 means golden 
45   fUsed(0),     //counter of usage  
46   fDetector(0), //detector  number
47   fRow(0)      //row number number
48 {
49   //
50   // default constructor
51   //
52 }
53
54 AliTPCclusterMI::AliTPCclusterMI(const AliTPCclusterMI & cluster):
55   AliCluster(cluster),
56   fInfo(0),
57   fTimeBin(cluster.fTimeBin),
58   fPad(cluster.fPad),
59   fQ(cluster.fQ),
60   fMax(cluster.fMax),
61   fType(cluster.fType),
62   fUsed(cluster.fUsed),
63   fDetector(cluster.fDetector),
64   fRow(cluster.fRow)
65 {
66   //
67   // copy constructor
68   // 
69   //  AliInfo("Copy constructor\n");
70   if (cluster.fInfo) fInfo = new AliTPCclusterInfo(*(cluster.fInfo));
71 }
72
73 AliTPCclusterMI & AliTPCclusterMI::operator = (const AliTPCclusterMI & cluster)
74 {
75   //
76   // assignment operator
77   // 
78   //  AliInfo("Asignment operator\n");
79   if (this == &cluster) return (*this);
80
81   (AliCluster&)(*this) = (AliCluster&)cluster;
82   fQ    = cluster.fQ;
83   fType = cluster.fType;
84   fMax  = cluster.fMax;
85   fUsed = cluster.fUsed;
86   fDetector = cluster.fDetector;
87   fRow  = cluster.fRow;
88   fTimeBin = cluster.fTimeBin;
89   fPad     = cluster.fPad;
90   delete fInfo;
91   fInfo = 0;
92   if (cluster.fInfo) fInfo = new AliTPCclusterInfo(*(cluster.fInfo));
93   return *this;
94 }
95
96
97
98
99 AliTPCclusterMI::AliTPCclusterMI(Int_t *lab, Float_t *hit) : 
100   AliCluster(0,hit,0.,0.,lab),
101   fInfo(0),
102   fTimeBin(0),  //time bin coordinate
103   fPad(0),  //pad coordinate
104   fQ(0),       //Q of cluster (in ADC counts)  
105   fMax(0),      //maximal amplitude in cluster
106   fType(0),     //type of the cluster 0 means golden 
107   fUsed(0),     //counter of usage  
108   fDetector(0), //detector  number
109   fRow(0)      //row number number
110 {
111   //
112   // constructor
113   //
114   fQ = (UShort_t)hit[4];
115   fInfo = 0;
116 }
117
118 AliTPCclusterMI::~AliTPCclusterMI() {
119   //
120   // destructor
121   //
122   if (fInfo) delete fInfo;
123   fInfo = 0;
124 }
125
126
127
128 Bool_t AliTPCclusterMI::IsSortable() const
129 {
130   //
131   //
132   return kTRUE;
133
134 }
135
136 Int_t AliTPCclusterMI::Compare(const TObject* obj) const
137 {
138   //
139   // compare according y
140   AliTPCclusterMI * o2 = (AliTPCclusterMI*)obj;
141   return (o2->GetY()>GetY())? -1:1; 
142 }
143
144
145 void AliTPCclusterMI::SetDetector(Int_t detector){
146   //
147   // set volume ID 
148   //  
149   fDetector = (UChar_t)(detector%72);
150   AliGeomManager::ELayerID id = (fDetector<36) ? 
151     AliGeomManager::kTPC1 :AliGeomManager::kTPC2 ;
152   Int_t modId = (fDetector<36)?fDetector: fDetector-36;
153   SetVolumeId(AliGeomManager::LayerToVolUID(id,modId));  
154 }
155
156
157 void AliTPCclusterMI::SetInfo(AliTPCclusterInfo * info) {
158   //
159   //
160   //
161   if (fInfo) delete fInfo;
162   fInfo = info;
163 }