* provided "as is" without express or implied warranty. *
**************************************************************************/
-/*
-$Log$
-Revision 1.4 2001/05/07 08:08:05 cblume
-Update of TRD code
+/* $Id$ */
-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];
+ }
}
// ones are stored first;
//
- const Int_t size = 9;
-
- Int_t entries[size][2], i, j, index;
+ const Int_t kSize = 9;
+ Int_t entries[kSize][2];
- Bool_t index_added;
+ Int_t i = 0;
+ Int_t j = 0;
+ Int_t k = 0;
+ Int_t index;
+ Bool_t indexAdded;
- 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;
+
+}