ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TEvePointSet.h>

#include <AliPID.h>
#include <AliTRDhit.h>
#include <AliTRDarrayADC.h>
#include <AliTRDcluster.h>
#include <AliTRDtrackV1.h>
#include <AliTRDReconstructor.h>
#include <AliTRDrecoParam.h>
#include <AliTRDseedV1.h>
#include <AliEveTRDData.h>
#endif

//
// How to access the basic TRD data structures when a 
// pointer to an Eve opject is available. One can get a 
// valid pointer from the event display by accessing the 
// function ExportToCINT 
// 
// Usage:
// .L trd_analyse.C
// analyseXXX(ptr)
// 
// Author:
// Alex Bercuci (A.Bercuci@gsi.de)
// 

//_______________________________________________________
void analyseHits(AliEveTRDHits *hits = 0x0)
{
// Simple print hits from a detector

  if(!hits) {
    Info("analyseHits", "Invalid hits set.");
    return;
  }

  AliTRDhit *h = 0x0;
  for(Int_t ih=0; ih<hits->GetN(); ih++){
    hits->PointSelected(ih);
  }
}

/* Obsolete code
 * 
 * 
//_______________________________________________________
void analyseDigits(AliEveTRDDigits *digits = 0x0)
{
// Simple print digits from a detector

  if(!digits) {
    Info("analyseDigits", "Invalid digits set.");
    return;
  }

  Int_t adc ;
  AliTRDdataArrayI *data = digits->GetData();
  Int_t nrows = data->GetNrow(),
        ncols = data->GetNcol(),
        ntbs  = data->GetNtime();
  data->Expand();
  printf("nrows[%d] ncols[%d] ntbs[%d]\n", nrows, ncols, ntbs);
  for (Int_t  row = 0;  row <  nrows;  row++)
  for (Int_t  col = 0;  col <  ncols;  col++)
    for (Int_t time = 0; time < ntbs; time++) {
      if((adc = data->GetDataUnchecked(row, col, time)) <= 1) continue;
      printf("r[%d] c[%d] t[%d] ADC[%d]\n", row, col, time, adc);
    }
  data->Compress(1);
}
*/

//_______________________________________________________
void analyseClusters(TEvePointSet *points = 0x0)
{
// print some info about clusters in one detector or 
// attached to tracks.
  if(!points) {
    Info("analyseClusters", "Invalid clusters set.");
    return;
  }

  AliTRDcluster *c = 0x0;
  for(Int_t ic=0; ic<points->Size(); ic++){
    if(!(c = (AliTRDcluster*)points->GetPointId(ic))) continue;
  
    c->Print();
  }
}

//_______________________________________________________
void analyseTracklet(AliEveTRDTracklet *line)
{
// print tracklet information
  if(!line) {
    Info("analyseTracklet", "Invalid tracklet.");
    return;
  }
  
  AliTRDseedV1 *tracklet = 0x0;
  tracklet = (AliTRDseedV1*)line->GetUserData();
  tracklet->Print();
}

//_______________________________________________________
void analyseTrack(AliEveTRDTrack *line)
{
// print tracklet information
  if(!line) {
    Info("analyseTrack", "Invalid track.");
    return;
  }
  
  AliTRDtrackV1 *track = 0x0;
  track = (AliTRDtrackV1*)line->GetUserData();
  
  AliTRDReconstructor *rec = new AliTRDReconstructor();
  rec->SetRecoParam(AliTRDrecoParam::GetLowFluxParam());
  track->SetReconstructor(rec);

  rec->SetOption("!nn");
  track->CookPID();
  printf("PID LQ : "); for(int is=0; is<AliPID::kSPECIES; is++) printf("%s[%5.2f] ", AliPID::ParticleName(is), 1.E2*track->GetPID(is)); printf("\n");

  rec->SetOption("nn");
  track->CookPID();
  printf("PID NN : "); for(int is=0; is<AliPID::kSPECIES; is++) printf("%s[%5.2f] ", AliPID::ParticleName(is), 1.E2*track->GetPID(is)); printf("\n");
}

//_______________________________________________________
void trd_analyse()
{
  Info("trd_analyse", "******************************");
  Info("trd_analyse", "Example function which shows how to analyse TRD data exported from the EVE display.");
  Info("trd_analyse", "Usage : Load the macro. Select a TRD data object (digits, clusters, tracklet, track) and call the function \"ExportToCINT()\". Afterwards call the appropiate function (analyseXXX()) on the pointer.");
  Info("trd_analyse", "E.g. If \"tracklet\" is a pointer to a TRD track than one can call :"); 
  Info("trd_analyse", "analyseTrack(track)");

  //gROOT->LoadMacro("$ALICE_ROOT/EVE/alice-macros/trd_analyse.C");
  return;
}
 trd_analyse.C:1
 trd_analyse.C:2
 trd_analyse.C:3
 trd_analyse.C:4
 trd_analyse.C:5
 trd_analyse.C:6
 trd_analyse.C:7
 trd_analyse.C:8
 trd_analyse.C:9
 trd_analyse.C:10
 trd_analyse.C:11
 trd_analyse.C:12
 trd_analyse.C:13
 trd_analyse.C:14
 trd_analyse.C:15
 trd_analyse.C:16
 trd_analyse.C:17
 trd_analyse.C:18
 trd_analyse.C:19
 trd_analyse.C:20
 trd_analyse.C:21
 trd_analyse.C:22
 trd_analyse.C:23
 trd_analyse.C:24
 trd_analyse.C:25
 trd_analyse.C:26
 trd_analyse.C:27
 trd_analyse.C:28
 trd_analyse.C:29
 trd_analyse.C:30
 trd_analyse.C:31
 trd_analyse.C:32
 trd_analyse.C:33
 trd_analyse.C:34
 trd_analyse.C:35
 trd_analyse.C:36
 trd_analyse.C:37
 trd_analyse.C:38
 trd_analyse.C:39
 trd_analyse.C:40
 trd_analyse.C:41
 trd_analyse.C:42
 trd_analyse.C:43
 trd_analyse.C:44
 trd_analyse.C:45
 trd_analyse.C:46
 trd_analyse.C:47
 trd_analyse.C:48
 trd_analyse.C:49
 trd_analyse.C:50
 trd_analyse.C:51
 trd_analyse.C:52
 trd_analyse.C:53
 trd_analyse.C:54
 trd_analyse.C:55
 trd_analyse.C:56
 trd_analyse.C:57
 trd_analyse.C:58
 trd_analyse.C:59
 trd_analyse.C:60
 trd_analyse.C:61
 trd_analyse.C:62
 trd_analyse.C:63
 trd_analyse.C:64
 trd_analyse.C:65
 trd_analyse.C:66
 trd_analyse.C:67
 trd_analyse.C:68
 trd_analyse.C:69
 trd_analyse.C:70
 trd_analyse.C:71
 trd_analyse.C:72
 trd_analyse.C:73
 trd_analyse.C:74
 trd_analyse.C:75
 trd_analyse.C:76
 trd_analyse.C:77
 trd_analyse.C:78
 trd_analyse.C:79
 trd_analyse.C:80
 trd_analyse.C:81
 trd_analyse.C:82
 trd_analyse.C:83
 trd_analyse.C:84
 trd_analyse.C:85
 trd_analyse.C:86
 trd_analyse.C:87
 trd_analyse.C:88
 trd_analyse.C:89
 trd_analyse.C:90
 trd_analyse.C:91
 trd_analyse.C:92
 trd_analyse.C:93
 trd_analyse.C:94
 trd_analyse.C:95
 trd_analyse.C:96
 trd_analyse.C:97
 trd_analyse.C:98
 trd_analyse.C:99
 trd_analyse.C:100
 trd_analyse.C:101
 trd_analyse.C:102
 trd_analyse.C:103
 trd_analyse.C:104
 trd_analyse.C:105
 trd_analyse.C:106
 trd_analyse.C:107
 trd_analyse.C:108
 trd_analyse.C:109
 trd_analyse.C:110
 trd_analyse.C:111
 trd_analyse.C:112
 trd_analyse.C:113
 trd_analyse.C:114
 trd_analyse.C:115
 trd_analyse.C:116
 trd_analyse.C:117
 trd_analyse.C:118
 trd_analyse.C:119
 trd_analyse.C:120
 trd_analyse.C:121
 trd_analyse.C:122
 trd_analyse.C:123
 trd_analyse.C:124
 trd_analyse.C:125
 trd_analyse.C:126
 trd_analyse.C:127
 trd_analyse.C:128
 trd_analyse.C:129
 trd_analyse.C:130
 trd_analyse.C:131
 trd_analyse.C:132
 trd_analyse.C:133
 trd_analyse.C:134
 trd_analyse.C:135
 trd_analyse.C:136
 trd_analyse.C:137
 trd_analyse.C:138
 trd_analyse.C:139
 trd_analyse.C:140
 trd_analyse.C:141
 trd_analyse.C:142
 trd_analyse.C:143
 trd_analyse.C:144
 trd_analyse.C:145
 trd_analyse.C:146
 trd_analyse.C:147
 trd_analyse.C:148
 trd_analyse.C:149
 trd_analyse.C:150