ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TRD/AliTRDcluster.h>
#include <TRD/AliTRDseedV1.h>
#include <TRD/AliTRDtrackV1.h>
#endif

void chargeDistr(const AliTRDtrackV1* track, Double_t* results, Int_t& nResults)
{
  if (!track){
    Error("chargeDistr()", "Missing track.");
    return;
  }
  Int_t Nt = track->GetNumberOfTracklets();
  AliTRDcluster* cls(NULL);
  AliTRDseedV1 *tracklet(NULL);

  // Count clusters
  Int_t nCls = 0;
  for (Int_t ily = 0; ily < 6; ily++) {
    if(!(tracklet = track->GetTracklet(ily))){
      //Warning("chargeDistr()", "Missing tracklet in ly[%d]", ily);
      continue;
    }
    if(!tracklet->IsOK()){
      //Warning("chargeDistr()", "Bad tracklet in ly[%d]", ily);
      continue;
    }
    for (Int_t icl = 0; icl < AliTRDseedV1::kNclusters; icl++) {
      if(!(cls = tracklet->GetClusters(icl))){
        //Warning("chargeDistr()", "Missing cls[%2d] tracklet in ly[%d]", icl, ily);
        continue;
      }
      nCls++;
    }
  }
  
  // Nothing to do?
  if(!nCls){
    Warning("chargeDistr()", "Missing clusters.");
    return;
  }
  //Info("chargeDistr()", "Found %3d clusters.", nCls);

  // Allocate memory for the results (AliEveTRDAnalyseObjectList will clean this memory automatically)
  //results = new Double_t[nResults];
  nResults = 2;
  for (Int_t i = 0; i < nResults; i++)  results[i] = 0.;
  Int_t currentIndex = 0;

  for (Int_t trackletInd = 0; trackletInd < Nt && currentIndex < nResults; trackletInd++){
    if(!(tracklet = track->GetTracklet(trackletInd))) continue;
    if(!tracklet->IsOK()) continue;
    for (Int_t clusterInd = 0; clusterInd < AliTRDseedV1::kNclusters; clusterInd++){
      if(!(cls = tracklet->GetClusters(clusterInd))) continue;
      results[1] += cls->GetQ();
    }
  }
  results[0] =nCls;
  results[1]/=nCls;
}
 chargeDistr.C:1
 chargeDistr.C:2
 chargeDistr.C:3
 chargeDistr.C:4
 chargeDistr.C:5
 chargeDistr.C:6
 chargeDistr.C:7
 chargeDistr.C:8
 chargeDistr.C:9
 chargeDistr.C:10
 chargeDistr.C:11
 chargeDistr.C:12
 chargeDistr.C:13
 chargeDistr.C:14
 chargeDistr.C:15
 chargeDistr.C:16
 chargeDistr.C:17
 chargeDistr.C:18
 chargeDistr.C:19
 chargeDistr.C:20
 chargeDistr.C:21
 chargeDistr.C:22
 chargeDistr.C:23
 chargeDistr.C:24
 chargeDistr.C:25
 chargeDistr.C:26
 chargeDistr.C:27
 chargeDistr.C:28
 chargeDistr.C:29
 chargeDistr.C:30
 chargeDistr.C:31
 chargeDistr.C:32
 chargeDistr.C:33
 chargeDistr.C:34
 chargeDistr.C:35
 chargeDistr.C:36
 chargeDistr.C:37
 chargeDistr.C:38
 chargeDistr.C:39
 chargeDistr.C:40
 chargeDistr.C:41
 chargeDistr.C:42
 chargeDistr.C:43
 chargeDistr.C:44
 chargeDistr.C:45
 chargeDistr.C:46
 chargeDistr.C:47
 chargeDistr.C:48
 chargeDistr.C:49
 chargeDistr.C:50
 chargeDistr.C:51
 chargeDistr.C:52
 chargeDistr.C:53
 chargeDistr.C:54
 chargeDistr.C:55
 chargeDistr.C:56
 chargeDistr.C:57
 chargeDistr.C:58
 chargeDistr.C:59
 chargeDistr.C:60
 chargeDistr.C:61