]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODCluster.cxx
Bug fix - chack the abs values
[u/mrichter/AliRoot.git] / STEER / AliAODCluster.cxx
index c198f9d9e5b3e312ab305fdf5ba7f4c96f6bf7bb..def99eaa0c5f98ef4a0206700b4b3548025ba0da 100644 (file)
@@ -25,7 +25,8 @@
 ClassImp(AliAODCluster)
 
 //______________________________________________________________________________
-AliAODCluster::AliAODCluster() : 
+AliAODCluster::AliAODCluster() :
+  AliVCluster(),
   fEnergy(0),
   fChi2(-999.),
   fID(-999),
@@ -36,8 +37,8 @@ AliAODCluster::AliAODCluster() :
 {
   // default constructor
 
-  SetPosition((Float_t*)NULL);
-  SetPID((Float_t*)NULL);
+  SetPosition(NULL);
+  SetPID(NULL);
 }
 
 //______________________________________________________________________________
@@ -46,9 +47,10 @@ AliAODCluster::AliAODCluster(Int_t id,
                             Int_t *label, 
                             Double_t energy,
                             Double_t x[3],
-                            Double_t pid[9],
+                            Double_t pid[13],
                             Char_t ttype,
                             UInt_t selectInfo) :
+  AliVCluster(),
   fEnergy(energy),
   fChi2(-999.),
   fID(id),
@@ -58,9 +60,11 @@ AliAODCluster::AliAODCluster(Int_t id,
   fType(ttype)
 {
   // constructor
+  for (Int_t i = 0; i <  3; i++) fPosition[i] = 0.;
+  for (Int_t i = 0; i < 13; i++) fPID[i]      = 0;
  
-  SetPosition(x);
-  SetPID(pid);
+  if(x)   {for (Int_t i = 0; i < 3  ; i++) SetPositionAt(x[i]  ,i);}
+  if(pid) {for (Int_t i = 0; i < 13 ; i++) SetPIDAt     (pid[i],i);}
   SetLabel(label, nLabel);
 }
 
@@ -70,9 +74,10 @@ AliAODCluster::AliAODCluster(Int_t id,
                             Int_t *label, 
                             Float_t energy,
                             Float_t x[3],
-                            Float_t pid[9],
+                            Float_t pid[13],
                             Char_t ttype,
                             UInt_t selectInfo) :
+  AliVCluster(),
   fEnergy(energy),
   fChi2(-999.),
   fID(id),
@@ -82,9 +87,11 @@ AliAODCluster::AliAODCluster(Int_t id,
   fType(ttype)
 {
   // constructor
-  SetPosition(x);
-  SetPID(pid);
+  for (Int_t i = 0; i <  3; i++) fPosition[i] = 0.;
+  for (Int_t i = 0; i < 13; i++) fPID[i]      = 0;
+
+  if(x)   {for (Int_t i = 0; i < 3  ; i++) SetPositionAt(x[i]  ,i);}
+  if(pid) {for (Int_t i = 0; i < 13 ; i++) SetPIDAt     (pid[i],i);}
   SetLabel(label, nLabel);
 }
 
@@ -97,10 +104,18 @@ AliAODCluster::~AliAODCluster()
   RemoveLabel();
 }
 
+//______________________________________________________________________________
+void AliAODCluster::Clear(const Option_t*) 
+{
+  // Clear
+  
+  RemoveLabel();
+}
+
 
 //______________________________________________________________________________
 AliAODCluster::AliAODCluster(const AliAODCluster& clus) :
-  TObject(clus),
+  AliVCluster(clus),
   fEnergy(clus.fEnergy),
   fChi2(clus.fChi2),
   fID(clus.fID),
@@ -111,8 +126,9 @@ AliAODCluster::AliAODCluster(const AliAODCluster& clus) :
 {
   // Copy constructor
 
-  clus.GetPosition(fPosition);
-  SetPID(clus.fPID);
+  for(Int_t i = 0; i < 3  ; i++) fPosition[i]  = clus.fPosition[i];
+  for(Int_t i = 0; i < 13 ; i++)  fPID[i]      = clus.fPID[i];
+
   SetLabel(clus.fLabel, clus.fNLabel);
 }
 
@@ -121,10 +137,10 @@ AliAODCluster& AliAODCluster::operator=(const AliAODCluster& clus)
 {
   // Assignment operator
   if(this!=&clus) {
-
-    clus.GetPosition(fPosition);
-    clus.GetPID(fPID);
-
+    
+       for(Int_t i = 0; i < 3 ;  i++) fPosition[i] = clus.fPosition[i];
+       for(Int_t i = 0; i < 13 ; i++) fPID[i]      = clus.fPID[i];
+    
     fEnergy = clus.fEnergy;
     fChi2 = clus.fChi2;
 
@@ -139,16 +155,15 @@ AliAODCluster& AliAODCluster::operator=(const AliAODCluster& clus)
 }
 
 //______________________________________________________________________________
-template <class T> void AliAODCluster::SetPosition(const T *x) 
+void AliAODCluster::SetPosition(Float_t *x) 
 {
   // set the position
-
+  
   if (x) {
-      fPosition[0] = x[0];
-      fPosition[1] = x[1];
-      fPosition[2] = x[2];
+    fPosition[0] = x[0];
+    fPosition[1] = x[1];
+    fPosition[2] = x[2];
   } else {
-
     fPosition[0] = -999.;
     fPosition[1] = -999.;
     fPosition[2] = -999.;
@@ -156,32 +171,29 @@ template <class T> void AliAODCluster::SetPosition(const T *x)
 }
 
 //______________________________________________________________________________
-AliAODCluster::AODCluPID_t AliAODCluster::GetMostProbablePID() const 
+UShort_t AliAODCluster::GetMostProbablePID() const 
 {
   // Returns the most probable PID array element.
   
-  Int_t nPID = 9;
-  if (fPID) {
-    AODCluPID_t loc = kUnknown;
-    Double_t max = 0.;
-    Bool_t allTheSame = kTRUE;
-    
-    for (Int_t iPID = 0; iPID < nPID; iPID++) {
-      if (fPID[iPID] >= max) {
-       if (fPID[iPID] > max) {
-         allTheSame = kFALSE;
-         max = fPID[iPID];
-         loc = (AODCluPID_t)iPID;
-       } else {
-         allTheSame = kTRUE;
-       }
+  Int_t nPID = 13;
+  UShort_t unknown = AliVCluster::kUnknown;
+  
+  UShort_t loc = unknown;
+  Double_t max = 0.;
+  Bool_t allTheSame = kTRUE;
+  
+  for (Int_t iPID = 0; iPID < nPID; iPID++) {
+    if (fPID[iPID] >= max) {
+      if (fPID[iPID] > max) {
+       allTheSame = kFALSE;
+       max = fPID[iPID];
+       loc = (UShort_t)iPID;
+      } else {
+       allTheSame = kTRUE;
       }
     }
-    
-    return allTheSame ? kUnknown : loc;
-  } else {
-    return kUnknown;
   }
+  return allTheSame ? unknown : loc;
 }
 
 //______________________________________________________________________________
@@ -205,7 +217,7 @@ void AliAODCluster::SetLabel(Int_t *label, UInt_t size)
 }
 
 //______________________________________________________________________________
-Int_t AliAODCluster::GetLabel(UInt_t i) const
+Int_t AliAODCluster::GetLabelAt(UInt_t i) const
 {
   if (fLabel && i < (UInt_t)fNLabel) {
     return fLabel[i];
@@ -232,5 +244,10 @@ void AliAODCluster::Print(Option_t* /* option */) const
   printf("Cluster type: %d\n", GetType()); 
   printf("     energy = %f\n", E());
   printf("       chi2 = %f\n", Chi2());
-  printf("  PID object: %p\n", PID());
+  const Double_t *pid = GetPID();
+  printf("PID weights: photon %0.2f, pi0 %0.2f, electron %0.2f, conversion electron %0.2f\n, hadrons: pion %0.2f, kaon %0.2f, proton %0.2f , neutron %0.2f, kaon %0.2f \n",
+        pid[AliVCluster::kPhoton],   pid[AliVCluster::kPi0],
+        pid[AliVCluster::kElectron], pid[AliVCluster::kEleCon],
+        pid[AliVCluster::kPion],     pid[AliVCluster::kKaon],   pid[AliVCluster::kProton],
+        pid[AliVCluster::kNeutron],  pid[AliVCluster::kKaon0]);
 }