]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDcluster.cxx
First V0 MC Analysis from H.Ricaud
[u/mrichter/AliRoot.git] / TRD / AliTRDcluster.cxx
index 252c0b7ed66217184b2bcb6ad55b1043beb3e99d..6a4f1f24c7ea46ca659dcce893ed58cb01c88967 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/*
-$Log$
-Revision 1.4.10.2  2002/07/24 10:09:30  alibrary
-Updating VirtualMC
+/* $Id$ */
 
-Revision 1.6  2002/06/12 09:54:35  cblume
-Update of tracking code provided by Sergei
-
-Revision 1.4  2001/05/07 08:08:05  cblume
-Update of TRD code
-
-Revision 1.3  2000/12/08 16:07:02  cblume
-Update of the tracking by Sergei
-
-Revision 1.2  2000/10/06 16:49:46  cblume
-Made Getters const
-
-Revision 1.1.2.1  2000/09/22 14:47:52  cblume
-Add the tracking code
-
-*/
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+//  TRD cluster                                                              //
+//                                                                           //
+/////////////////////////////////////////////////////////////////////////////// 
 
 #include "AliTRDcluster.h"
-#include "AliTRDgeometry.h"
-#include "AliTRDrecPoint.h"
 
 ClassImp(AliTRDcluster)
 
-//_____________________________________________________________________________
-  AliTRDcluster::AliTRDcluster(const AliTRDrecPoint &p):AliCluster()
-{
+//___________________________________________________________________________
+AliTRDcluster::AliTRDcluster() 
+  :AliCluster() 
+  ,fDetector(0)
+  ,fLocalTimeBin(0)
+  ,fQ(0)
+  ,fNPads(0)
+  ,fCenter(0)
+  ,fPadCol(0)
+  ,fPadRow(0)
+  ,fPadTime(0)
+{ 
   //
-  // Constructor from AliTRDrecPoint
+  // Default constructor
   //
 
-  fDetector   = p.GetDetector();
-  fTimeBin    = p.GetLocalTimeBin();
+  for (Int_t i = 0; i < 7; i++) {
+    fSignals[i] = 0;
+  }
 
-  fTracks[0]  = p.GetTrackIndex(0);
-  fTracks[1]  = p.GetTrackIndex(1);
-  fTracks[2]  = p.GetTrackIndex(2);
+}
 
-  fQ          = p.GetEnergy();
+//___________________________________________________________________________
+AliTRDcluster::AliTRDcluster(Int_t det, Float_t q
+                           , Float_t *pos, Float_t *sig
+                           , Int_t *tracks, Char_t npads, Short_t *signals
+                           , UChar_t col, UChar_t row, UChar_t time
+                           , Char_t timebin, Float_t center, UShort_t volid)
+  :AliCluster(volid,pos[0],pos[1],pos[2],sig[0],sig[1],0.0,0x0) 
+  ,fDetector(det)
+  ,fLocalTimeBin(timebin)
+  ,fQ(q)
+  ,fNPads(npads)
+  ,fCenter(center)
+  ,fPadCol(col)
+  ,fPadRow(row)
+  ,fPadTime(time)
+{ 
+  //
+  // Constructor
+  //
 
-  fY          = p.GetY();
-  fZ          = p.GetZ();
-  fSigmaY2    = p.GetSigmaY2();
-  fSigmaZ2    = p.GetSigmaZ2();  
+  for (Int_t i = 0; i < 7; i++) {
+    fSignals[i] = signals[i];
+  }
 
-  fSigmaY2    = 0.2;
-  fSigmaZ2    = 5.;  
+  if (tracks) {
+    AddTrackIndex(tracks);
+  }
 
 }
 
 //_____________________________________________________________________________
-AliTRDcluster::AliTRDcluster(const AliTRDcluster &c):AliCluster()
+AliTRDcluster::AliTRDcluster(const AliTRDcluster &c)
+  :AliCluster(c)
+  ,fDetector(c.fDetector)
+  ,fLocalTimeBin(c.fLocalTimeBin)
+  ,fQ(c.fQ)
+  ,fNPads(c.fNPads)
+  ,fCenter(c.fCenter)
+  ,fPadCol(c.fPadCol)
+  ,fPadRow(c.fPadRow)
+  ,fPadTime(c.fPadTime)
 {
   //
   // Copy constructor 
   //
 
-  fTracks[0]  = c.GetLabel(0);
-  fTracks[1]  = c.GetLabel(1);
-  fTracks[2]  = c.GetLabel(2);
+  SetLabel(c.GetLabel(0),0);
+  SetLabel(c.GetLabel(1),1);
+  SetLabel(c.GetLabel(2),2);
 
-  fY          = c.GetY();
-  fZ          = c.GetZ();
-  fSigmaY2    = c.GetSigmaY2();
-  fSigmaZ2    = c.GetSigmaZ2();  
+  SetY(c.GetY());
+  SetZ(c.GetZ());
+  SetSigmaY2(c.GetSigmaY2());
+  SetSigmaZ2(c.GetSigmaZ2());  
 
-  fDetector   = c.GetDetector();
-  fTimeBin    = c.GetLocalTimeBin();
-  fQ          = c.GetQ();
+  for (Int_t i = 0; i < 7; i++) {
+    fSignals[i] = c.fSignals[i];
+  }
 
 }
 
@@ -102,57 +121,85 @@ void AliTRDcluster::AddTrackIndex(Int_t *track)
   //     ones are stored first;
   //
 
-  const Int_t size = 9;
+  const Int_t kSize = 9;
+  Int_t  entries[kSize][2];
 
-  Int_t entries[size][2], i, j, index;
+  Int_t  i = 0;
+  Int_t  j = 0;
+  Int_t  k = 0;
+  Int_t  index;
+  Bool_t indexAdded;
 
-  Bool_t index_added;
-
-  for (i=0; i<size; i++) {
-    entries[i][0]=-1;
-    entries[i][1]=0;
+  for (i = 0; i < kSize; i++) {
+    entries[i][0] = -1;
+    entries[i][1] =  0;
   }                                 
 
-  for (Int_t k=0; k<size; k++) {
-    index=track[k];
-    index_added=kFALSE; j=0;
+  for (k = 0; k < kSize; k++) {
+
+    index      = track[k];
+    indexAdded = kFALSE; 
+
+    j = 0;
     if (index >= 0) {
-      while ( (!index_added) && ( j < size ) ) {
-        if ((entries[j][0]==index) || (entries[j][1]==0)) {
-          entries[j][0]=index;
-          entries[j][1]=entries[j][1]+1;
-          index_added=kTRUE;
+      while ((!indexAdded) && (j < kSize)) {
+        if ((entries[j][0] == index) || 
+            (entries[j][1] ==     0)) {
+          entries[j][0] = index;
+          entries[j][1] = entries[j][1] + 1;
+          indexAdded    = kTRUE;
         }
         j++;
       }
     }
-  }             
-
-  // sort by number of appearances and index value
-  Int_t swap=1, tmp0, tmp1;
-  while ( swap > 0) {
-    swap=0;
-    for(i=0; i<(size-1); i++) {
-      if ((entries[i][0] >= 0) && (entries[i+1][0] >= 0)) {
+
+  }
+
+  // Sort by number of appearances and index value
+  Int_t swap = 1;
+  Int_t tmp0;
+  Int_t tmp1;
+  while (swap > 0) {
+    swap = 0;
+    for (i = 0; i < (kSize - 1); i++) {
+      if ((entries[i][0]   >= 0) && 
+          (entries[i+1][0] >= 0)) {
         if ((entries[i][1] < entries[i+1][1]) ||
             ((entries[i][1] == entries[i+1][1]) &&
-             (entries[i][0] > entries[i+1][0]))) {
-               tmp0=entries[i][0];
-               tmp1=entries[i][1];
-               entries[i][0]=entries[i+1][0];
-               entries[i][1]=entries[i+1][1];
-               entries[i+1][0]=tmp0;
-               entries[i+1][1]=tmp1;
-               swap++;
+             (entries[i][0] >  entries[i+1][0]))) {
+          tmp0            = entries[i][0];
+          tmp1            = entries[i][1];
+          entries[i][0]   = entries[i+1][0];
+          entries[i][1]   = entries[i+1][1];
+          entries[i+1][0] = tmp0;
+          entries[i+1][1] = tmp1;
+          swap++;
         }
       }
     }
   }               
 
-  // set track indexes
-  for(i=0; i<3; i++) SetLabel(entries[i][0],i);
+  // Set track indexes
+  for (i = 0; i < 3; i++) {
+    SetLabel(entries[i][0],i);
+  }
 
   return;
 
 }          
 
+//_____________________________________________________________________________
+Float_t AliTRDcluster::GetSumS() const
+{
+  //
+  // Returns the total charge from a not unfolded cluster
+  //
+
+  Float_t sum = 0.0;
+  for (Int_t i = 0; i < 7; i++) {
+    sum += fSignals[i];
+  }
+
+  return sum;
+
+}