]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCclusterMI.cxx
Coverity
[u/mrichter/AliRoot.git] / TPC / AliTPCclusterMI.cxx
index 49d8ba62f34448ced9ece8819a9d89e32d6f9f14..17f0438c86c795e29bcca9c8f0c4c0b9f3135c9b 100644 (file)
 
 #include "AliTPCclusterMI.h"
 #include "AliTPCclusterInfo.h"
+#include "AliGeomManager.h"
 #include "AliLog.h"
 
 ClassImp(AliTPCclusterMI)
 
 
-AliTPCclusterMI::AliTPCclusterMI(Bool_t withInfo):
+AliTPCclusterMI::AliTPCclusterMI():
   AliCluster(),
-  fQ(0),
-  fType(0),
-  fMax(0),
-  fUsed(0),
-  fDetector(0),
-  fRow(0),
-  fTimeBin(0),
-  fPad(0),
-  fInfo(0)
+  fInfo(0),
+  fTimeBin(0),  //time bin coordinate
+  fPad(0),  //pad coordinate
+  fQ(0),       //Q of cluster (in ADC counts)  
+  fMax(0),      //maximal amplitude in cluster
+  fType(0),     //type of the cluster 0 means golden 
+  fUsed(0),     //counter of usage  
+  fDetector(0), //detector  number
+  fRow(0)      //row number number
 {
   //
   // default constructor
   //
-  if (withInfo) fInfo = new AliTPCclusterInfo;
 }
 
 AliTPCclusterMI::AliTPCclusterMI(const AliTPCclusterMI & cluster):
   AliCluster(cluster),
+  fInfo(0),
+  fTimeBin(cluster.fTimeBin),
+  fPad(cluster.fPad),
   fQ(cluster.fQ),
-  fType(cluster.fType),
   fMax(cluster.fMax),
+  fType(cluster.fType),
   fUsed(cluster.fUsed),
   fDetector(cluster.fDetector),
-  fRow(cluster.fRow),
-  fTimeBin(cluster.fTimeBin),
-  fPad(cluster.fPad),
-  fInfo(0)
+  fRow(cluster.fRow)
 {
   //
   // copy constructor
@@ -76,6 +76,7 @@ AliTPCclusterMI & AliTPCclusterMI::operator = (const AliTPCclusterMI & cluster)
   // assignment operator
   // 
   //  AliInfo("Asignment operator\n");
+  if (this == &cluster) return (*this);
 
   (AliCluster&)(*this) = (AliCluster&)cluster;
   fQ    = cluster.fQ;
@@ -86,6 +87,7 @@ AliTPCclusterMI & AliTPCclusterMI::operator = (const AliTPCclusterMI & cluster)
   fRow  = cluster.fRow;
   fTimeBin = cluster.fTimeBin;
   fPad     = cluster.fPad;
+  delete fInfo;
   fInfo = 0;
   if (cluster.fInfo) fInfo = new AliTPCclusterInfo(*(cluster.fInfo));
   return *this;
@@ -96,13 +98,15 @@ AliTPCclusterMI & AliTPCclusterMI::operator = (const AliTPCclusterMI & cluster)
 
 AliTPCclusterMI::AliTPCclusterMI(Int_t *lab, Float_t *hit) : 
   AliCluster(0,hit,0.,0.,lab),
-  fQ(0),
-  fType(0),
-  fMax(0),
-  fUsed(0),
-  fDetector(0),
-  fRow(0),
-  fInfo(0)
+  fInfo(0),
+  fTimeBin(0),  //time bin coordinate
+  fPad(0),  //pad coordinate
+  fQ(0),       //Q of cluster (in ADC counts)  
+  fMax(0),      //maximal amplitude in cluster
+  fType(0),     //type of the cluster 0 means golden 
+  fUsed(0),     //counter of usage  
+  fDetector(0), //detector  number
+  fRow(0)      //row number number
 {
   //
   // constructor
@@ -116,6 +120,7 @@ AliTPCclusterMI::~AliTPCclusterMI() {
   // destructor
   //
   if (fInfo) delete fInfo;
+  fInfo = 0;
 }
 
 
@@ -135,3 +140,24 @@ Int_t AliTPCclusterMI::Compare(const TObject* obj) const
   AliTPCclusterMI * o2 = (AliTPCclusterMI*)obj;
   return (o2->GetY()>GetY())? -1:1; 
 }
+
+
+void AliTPCclusterMI::SetDetector(Int_t detector){
+  //
+  // set volume ID 
+  //  
+  fDetector = (UChar_t)(detector%72);
+  AliGeomManager::ELayerID id = (fDetector<36) ? 
+    AliGeomManager::kTPC1 :AliGeomManager::kTPC2 ;
+  Int_t modId = (fDetector<36)?fDetector: fDetector-36;
+  SetVolumeId(AliGeomManager::LayerToVolUID(id,modId));  
+}
+
+
+void AliTPCclusterMI::SetInfo(AliTPCclusterInfo * info) {
+  //
+  //
+  //
+  if (fInfo) delete fInfo;
+  fInfo = info;
+}