Remove the last print statements
[u/mrichter/AliRoot.git] / TRD / AliTRDtimeBin.cxx
... / ...
CommitLineData
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/* $Id$ */
17
18////////////////////////////////////////////////////////////////////////////
19// //
20// Hit compression class //
21// Adapted from AliTPCTimeBin by Marian //
22// //
23////////////////////////////////////////////////////////////////////////////
24
25#include "AliTRDcluster.h"
26#include "AliTRDtimeBin.h"
27
28ClassImp(AliTRDtimeBin)
29
30//_____________________________________________________________________________
31AliTRDtimeBin::AliTRDtimeBin()
32 :TObject()
33 ,fN(0)
34{
35 //
36 // Default constructor
37 //
38
39 for (UInt_t i = 0; i < kMaxClusterPerTimeBin; i++) {
40 fClusters[i] = 0;
41 }
42
43}
44
45//_____________________________________________________________________________
46void AliTRDtimeBin::InsertCluster(AliTRDcluster* c, UInt_t index)
47{
48 //
49 // Insert cluster in TimeBin cluster array.
50 // Clusters are sorted according to Y coordinate.
51 //
52
53 if (fN == kMaxClusterPerTimeBin) {
54 AliError("Too many clusters!\n");
55 return;
56 }
57
58 if (fN == 0) {
59 fIndex[0] = index;
60 fClusters[fN++] = c;
61 return;
62 }
63
64 Int_t i = Find(c->GetY());
65
66 memmove(fClusters+i+1,fClusters+i,(fN-i)*sizeof(AliTRDcluster*));
67 memmove(fIndex +i+1,fIndex +i,(fN-i)*sizeof(UInt_t));
68
69 fIndex[i] = index;
70 fClusters[i] = c;
71 fN++;
72
73}
74
75//_____________________________________________________________________________
76Int_t AliTRDtimeBin::Find(Double_t y) const
77{
78 //
79 // Returns index of the cluster nearest in Y
80 //
81
82 if (y <= fClusters[ 0]->GetY()) {
83 return 0;
84 }
85 if (y > fClusters[fN-1]->GetY()) {
86 return fN;
87 }
88
89 Int_t b = 0;
90 Int_t e = fN - 1;
91 Int_t m = (b + e) / 2;
92
93 for ( ; b < e; m = (b+e)/2) {
94 if (y > fClusters[m]->GetY()) {
95 b = m + 1;
96 }
97 else {
98 e = m;
99 }
100 }
101
102 return m;
103
104}
105
106//_____________________________________________________________________________
107AliTRDcluster *AliTRDtimeBin::operator[](Int_t i)
108{
109 //
110 // Index operator
111 //
112
113 return fClusters[i];
114
115}