ROOT logo
//_____________________________________________________________________________
Int_t AliTRDdisplayDigits3D(Int_t event = 0, Int_t thresh = 4
                          , Bool_t sdigits = kFALSE) 
{
  //  
  //  TRD digits display
  //
  //  Input parameter:
  //    <event>   : Event number 
  //    <thresh>  : Threshold to suppress the noise
  //    <sdigits> : If kTRUE it will display summable digits, normal digits otherwise.
  //                The signal event is displayed in yellow.
  //

  Char_t *inputFile = "galice.root";

  // Define the objects
  AliTRDv1       *trd;
  AliTRDgeometry *geo;

  TString       evfoldname = AliConfig::GetDefaultEventFolderName();
  AliRunLoader *runLoader  = AliRunLoader::GetRunLoader(evfoldname);
  if (!runLoader) {
    runLoader = AliRunLoader::Open(inputFile
                                  ,AliConfig::GetDefaultEventFolderName()
                                  ,"UPDATE");
  }
  if (!runLoader) {
    printf("Can not open session for file %s.",inputFile);
    return kFALSE;
  }
   
  if (!runLoader->GetAliRun()) {
    runLoader->LoadgAlice();
  }
  gAlice = runLoader->GetAliRun();  
  if (!gAlice) {
    printf("Could not find AliRun object.\n");
    return kFALSE;
  }

  runLoader->GetEvent(event);
  
  AliLoader *loader = runLoader->GetLoader("TRDLoader");
  if (!loader) {
    printf("Can not get TRD loader from Run Loader");
  }
  loader->LoadDigits();
  
  // Get the pointer to the detector object
  trd = (AliTRDv1*) gAlice->GetDetector("TRD");

  // Get the pointer to the geometry object
  if (trd) {
    geo = trd->GetGeometry();
  }
  else {
    printf("Cannot find the geometry\n");
    return 1;
  }

  AliCDBManager *cdbManager  = AliCDBManager::Instance();
  cdbManager->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  AliTRDcalibDB *calibration = AliTRDcalibDB::Instance();
  calibration->SetRun(0);

  TCanvas *c1 = new TCanvas("digits","TRD digits display",0,0,700,730);
  TView   *v  = new TView(1);
  v->SetRange(-430,-560,-430,430,560,1710);
  v->SetParallel();
  c1->Clear();
  c1->SetFillColor(1);
  c1->SetTheta(90.0);
  c1->SetPhi(0.0);

  Int_t markerColorSignal = 2;
  Int_t markerColorBgnd   = 7;
  Int_t markerColorMerged = 5;
  Int_t mask              = 10000000;

  // Create the digits manager
  AliTRDdigitsManager *digitsManager = new AliTRDdigitsManager();
  digitsManager->SetSDigits(sdigits);

  // Read the digits from the file
  if (sdigits) {
    digitsManager->ReadDigits(loader->TreeS());
  }
  else {
    if (!loader->TreeD()) {
      printf("mist\n");
      return kFALSE;
    }
    digitsManager->ReadDigits(loader->TreeD());
  }

  Int_t totalsignal = 0;
  Int_t totalbgnd   = 0;
  Int_t totalmerged = 0;
  Int_t timeMax     = calibration->GetNumberOfTimeBins();

  // Loop through all detectors
  for (Int_t idet = 0; idet < geo->Ndet(); idet++) {

    printf("<AliTRDdisplayDigits3D> Loading detector %d\n",idet);
    AliTRDdataArrayI *digits  = digitsManager->GetDigits(idet);
    digits->Expand();

    Int_t isec    = geo->GetSector(idet);
    Int_t icha    = geo->GetChamber(idet);
    Int_t ipla    = geo->GetPlane(idet);
    AliTRDpadPlane *padPlane = new AliTRDpadPlane(ipla,icha);
    Int_t  rowMax = padPlane->GetNrows();
    Int_t  colMax = padPlane->GetNcols();

    Int_t ndigits = digits->GetOverThreshold(thresh);

    if (ndigits > 0) {

      TPolyMarker3D *pmSignal = new TPolyMarker3D(ndigits);
      Int_t isignal = 0;

      for (Int_t time = 0; time < timeMax; time++) {
        for (Int_t  col = 0;  col <  colMax;  col++) {
          for (Int_t  row = 0;  row <  rowMax;  row++) {

            Int_t amp = digits->GetDataUnchecked(row,col,time);

            if (amp > thresh) {
          
              Double_t glb[3];
              Double_t loc[3];

              loc[0] = row;
              loc[1] = col;
              loc[2] = time;
              geo->Local2Global(idet,loc,glb);
              Double_t x = glb[0];
              Double_t y = glb[1];
              Double_t z = glb[2];

              pmSignal->SetPoint(isignal,x,y,z);
              isignal++;
              totalsignal++;

	    }

	  }
        }
      }

      digits->Compress(1,0);

      pmSignal->SetMarkerSize(1); 
      pmSignal->SetMarkerColor(markerColorSignal);
      pmSignal->SetMarkerStyle(1);
      pmSignal->Draw();
   
    }

  }

  delete padPlane;

  TGeometry *geoAlice = gAlice->GetGeometry();
  TNode     *main     = (TNode *) ((geoAlice->GetListOfNodes())->First());
  TIter      next(main->GetListOfNodes());
  TNode     *module   = 0;
  while ((module = (TNode *) next())) {
    Char_t ch[100];
    sprintf(ch,"%s\n",module->GetTitle());
    if ((ch[0] == 'T') && ((ch[1] == 'R') || (ch[1] == 'P'))) {
      module->SetVisibility( 3);
    }
    else {
      module->SetVisibility(-1);
    }
  }
      
  geoAlice->Draw("same");

  c1->Modified(); 
  c1->Update(); 

  return 0;

}

 AliTRDdisplayDigits3D.C:1
 AliTRDdisplayDigits3D.C:2
 AliTRDdisplayDigits3D.C:3
 AliTRDdisplayDigits3D.C:4
 AliTRDdisplayDigits3D.C:5
 AliTRDdisplayDigits3D.C:6
 AliTRDdisplayDigits3D.C:7
 AliTRDdisplayDigits3D.C:8
 AliTRDdisplayDigits3D.C:9
 AliTRDdisplayDigits3D.C:10
 AliTRDdisplayDigits3D.C:11
 AliTRDdisplayDigits3D.C:12
 AliTRDdisplayDigits3D.C:13
 AliTRDdisplayDigits3D.C:14
 AliTRDdisplayDigits3D.C:15
 AliTRDdisplayDigits3D.C:16
 AliTRDdisplayDigits3D.C:17
 AliTRDdisplayDigits3D.C:18
 AliTRDdisplayDigits3D.C:19
 AliTRDdisplayDigits3D.C:20
 AliTRDdisplayDigits3D.C:21
 AliTRDdisplayDigits3D.C:22
 AliTRDdisplayDigits3D.C:23
 AliTRDdisplayDigits3D.C:24
 AliTRDdisplayDigits3D.C:25
 AliTRDdisplayDigits3D.C:26
 AliTRDdisplayDigits3D.C:27
 AliTRDdisplayDigits3D.C:28
 AliTRDdisplayDigits3D.C:29
 AliTRDdisplayDigits3D.C:30
 AliTRDdisplayDigits3D.C:31
 AliTRDdisplayDigits3D.C:32
 AliTRDdisplayDigits3D.C:33
 AliTRDdisplayDigits3D.C:34
 AliTRDdisplayDigits3D.C:35
 AliTRDdisplayDigits3D.C:36
 AliTRDdisplayDigits3D.C:37
 AliTRDdisplayDigits3D.C:38
 AliTRDdisplayDigits3D.C:39
 AliTRDdisplayDigits3D.C:40
 AliTRDdisplayDigits3D.C:41
 AliTRDdisplayDigits3D.C:42
 AliTRDdisplayDigits3D.C:43
 AliTRDdisplayDigits3D.C:44
 AliTRDdisplayDigits3D.C:45
 AliTRDdisplayDigits3D.C:46
 AliTRDdisplayDigits3D.C:47
 AliTRDdisplayDigits3D.C:48
 AliTRDdisplayDigits3D.C:49
 AliTRDdisplayDigits3D.C:50
 AliTRDdisplayDigits3D.C:51
 AliTRDdisplayDigits3D.C:52
 AliTRDdisplayDigits3D.C:53
 AliTRDdisplayDigits3D.C:54
 AliTRDdisplayDigits3D.C:55
 AliTRDdisplayDigits3D.C:56
 AliTRDdisplayDigits3D.C:57
 AliTRDdisplayDigits3D.C:58
 AliTRDdisplayDigits3D.C:59
 AliTRDdisplayDigits3D.C:60
 AliTRDdisplayDigits3D.C:61
 AliTRDdisplayDigits3D.C:62
 AliTRDdisplayDigits3D.C:63
 AliTRDdisplayDigits3D.C:64
 AliTRDdisplayDigits3D.C:65
 AliTRDdisplayDigits3D.C:66
 AliTRDdisplayDigits3D.C:67
 AliTRDdisplayDigits3D.C:68
 AliTRDdisplayDigits3D.C:69
 AliTRDdisplayDigits3D.C:70
 AliTRDdisplayDigits3D.C:71
 AliTRDdisplayDigits3D.C:72
 AliTRDdisplayDigits3D.C:73
 AliTRDdisplayDigits3D.C:74
 AliTRDdisplayDigits3D.C:75
 AliTRDdisplayDigits3D.C:76
 AliTRDdisplayDigits3D.C:77
 AliTRDdisplayDigits3D.C:78
 AliTRDdisplayDigits3D.C:79
 AliTRDdisplayDigits3D.C:80
 AliTRDdisplayDigits3D.C:81
 AliTRDdisplayDigits3D.C:82
 AliTRDdisplayDigits3D.C:83
 AliTRDdisplayDigits3D.C:84
 AliTRDdisplayDigits3D.C:85
 AliTRDdisplayDigits3D.C:86
 AliTRDdisplayDigits3D.C:87
 AliTRDdisplayDigits3D.C:88
 AliTRDdisplayDigits3D.C:89
 AliTRDdisplayDigits3D.C:90
 AliTRDdisplayDigits3D.C:91
 AliTRDdisplayDigits3D.C:92
 AliTRDdisplayDigits3D.C:93
 AliTRDdisplayDigits3D.C:94
 AliTRDdisplayDigits3D.C:95
 AliTRDdisplayDigits3D.C:96
 AliTRDdisplayDigits3D.C:97
 AliTRDdisplayDigits3D.C:98
 AliTRDdisplayDigits3D.C:99
 AliTRDdisplayDigits3D.C:100
 AliTRDdisplayDigits3D.C:101
 AliTRDdisplayDigits3D.C:102
 AliTRDdisplayDigits3D.C:103
 AliTRDdisplayDigits3D.C:104
 AliTRDdisplayDigits3D.C:105
 AliTRDdisplayDigits3D.C:106
 AliTRDdisplayDigits3D.C:107
 AliTRDdisplayDigits3D.C:108
 AliTRDdisplayDigits3D.C:109
 AliTRDdisplayDigits3D.C:110
 AliTRDdisplayDigits3D.C:111
 AliTRDdisplayDigits3D.C:112
 AliTRDdisplayDigits3D.C:113
 AliTRDdisplayDigits3D.C:114
 AliTRDdisplayDigits3D.C:115
 AliTRDdisplayDigits3D.C:116
 AliTRDdisplayDigits3D.C:117
 AliTRDdisplayDigits3D.C:118
 AliTRDdisplayDigits3D.C:119
 AliTRDdisplayDigits3D.C:120
 AliTRDdisplayDigits3D.C:121
 AliTRDdisplayDigits3D.C:122
 AliTRDdisplayDigits3D.C:123
 AliTRDdisplayDigits3D.C:124
 AliTRDdisplayDigits3D.C:125
 AliTRDdisplayDigits3D.C:126
 AliTRDdisplayDigits3D.C:127
 AliTRDdisplayDigits3D.C:128
 AliTRDdisplayDigits3D.C:129
 AliTRDdisplayDigits3D.C:130
 AliTRDdisplayDigits3D.C:131
 AliTRDdisplayDigits3D.C:132
 AliTRDdisplayDigits3D.C:133
 AliTRDdisplayDigits3D.C:134
 AliTRDdisplayDigits3D.C:135
 AliTRDdisplayDigits3D.C:136
 AliTRDdisplayDigits3D.C:137
 AliTRDdisplayDigits3D.C:138
 AliTRDdisplayDigits3D.C:139
 AliTRDdisplayDigits3D.C:140
 AliTRDdisplayDigits3D.C:141
 AliTRDdisplayDigits3D.C:142
 AliTRDdisplayDigits3D.C:143
 AliTRDdisplayDigits3D.C:144
 AliTRDdisplayDigits3D.C:145
 AliTRDdisplayDigits3D.C:146
 AliTRDdisplayDigits3D.C:147
 AliTRDdisplayDigits3D.C:148
 AliTRDdisplayDigits3D.C:149
 AliTRDdisplayDigits3D.C:150
 AliTRDdisplayDigits3D.C:151
 AliTRDdisplayDigits3D.C:152
 AliTRDdisplayDigits3D.C:153
 AliTRDdisplayDigits3D.C:154
 AliTRDdisplayDigits3D.C:155
 AliTRDdisplayDigits3D.C:156
 AliTRDdisplayDigits3D.C:157
 AliTRDdisplayDigits3D.C:158
 AliTRDdisplayDigits3D.C:159
 AliTRDdisplayDigits3D.C:160
 AliTRDdisplayDigits3D.C:161
 AliTRDdisplayDigits3D.C:162
 AliTRDdisplayDigits3D.C:163
 AliTRDdisplayDigits3D.C:164
 AliTRDdisplayDigits3D.C:165
 AliTRDdisplayDigits3D.C:166
 AliTRDdisplayDigits3D.C:167
 AliTRDdisplayDigits3D.C:168
 AliTRDdisplayDigits3D.C:169
 AliTRDdisplayDigits3D.C:170
 AliTRDdisplayDigits3D.C:171
 AliTRDdisplayDigits3D.C:172
 AliTRDdisplayDigits3D.C:173
 AliTRDdisplayDigits3D.C:174
 AliTRDdisplayDigits3D.C:175
 AliTRDdisplayDigits3D.C:176
 AliTRDdisplayDigits3D.C:177
 AliTRDdisplayDigits3D.C:178
 AliTRDdisplayDigits3D.C:179
 AliTRDdisplayDigits3D.C:180
 AliTRDdisplayDigits3D.C:181
 AliTRDdisplayDigits3D.C:182
 AliTRDdisplayDigits3D.C:183
 AliTRDdisplayDigits3D.C:184
 AliTRDdisplayDigits3D.C:185
 AliTRDdisplayDigits3D.C:186
 AliTRDdisplayDigits3D.C:187
 AliTRDdisplayDigits3D.C:188
 AliTRDdisplayDigits3D.C:189