ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * 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 <TClonesArray.h>
#include <TGeoManager.h>
#include <TMath.h>
#include <TStyle.h>
#include <TTree.h>
#include <TEveManager.h>
#include <TEveElement.h>
#include <TEvePointSet.h>
#include <TEveQuadSet.h>
#include <TEveTrans.h>

#include <AliRunLoader.h>
#include <AliVZEROdigit.h>
#include <AliEveEventManager.h>
#endif


//   fV0CHeight1  =  2.5; // height of cell 1
//   fV0CHeight2  =  4.4; // height of cell 2
//   fV0CHeight3  =  7.4; // height of cell 3
//   fV0CHeight4  = 12.5; // height of cell 4
//   fV0CRMin     =  4.6; // inner radius of box
//
//   fV0AR0       =  4.2; // Radius of hole
//   fV0AR1       =  7.6; // Maximun radius of 1st cell
//   fV0AR2       = 13.8; // Maximun radius of 2nd cell
//   fV0AR3       = 22.7; // Maximun radius of 3rd cell
//   fV0AR4       = 41.3; // Maximun radius of 4th cell

void vzero_digits()
{
  static const Float_t RadC[] = { 4.6, 7.1, 11.5, 18.9, 31.4 };
  static const Float_t RadA[] = { 4.2, 7.6, 13.8, 22.7, 41.4 };
  static const Float_t RadEps = 0.4;
  static const Float_t PhiEps = 0.025;
  static const Float_t PhiStp = TMath::TwoPi()/8.0;

  gStyle->SetPalette(1, 0);

  AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
  rl->LoadDigits("VZERO");

  TTree* dt = rl->GetTreeD("VZERO", false);
  TClonesArray* dca = 0;
  dt->SetBranchAddress("VZERODigit", &dca);
  dt->GetEntry(0);

  Float_t v[12];

  TEveQuadSet* modR = new TEveQuadSet("V0R");
  modR->Reset(TEveQuadSet::kQT_FreeQuad, kFALSE, 32);

  TEveQuadSet* modL = new TEveQuadSet("V0L");
  modL->Reset(TEveQuadSet::kQT_FreeQuad, kFALSE, 32);

  Int_t numEntr = dca->GetEntriesFast();
  for (Int_t entr=0; entr<numEntr; ++entr)
  {
    AliVZEROdigit* d = (AliVZEROdigit*) dca->UncheckedAt(entr);
    Int_t i = d->PMNumber();

    if (i < 32)   // AliEveV0 Right
    {
      TEveQuadSet* module = modR;
      Int_t ri = i / 8;
      Int_t pi = i % 8;
      Float_t minR = RadC[ri]  + RadEps, maxR = RadC[ri+1] - RadEps;
      Float_t minP = pi*PhiStp + PhiEps, maxP = (pi+1)*PhiStp - PhiEps;

      v[ 0] = minR*TMath::Cos(minP); v[ 1] = minR*TMath::Sin(minP); v[ 2] = 0;
      v[ 3] = maxR*TMath::Cos(minP); v[ 4] = maxR*TMath::Sin(minP); v[ 5] = 0;
      v[ 6] = maxR*TMath::Cos(maxP); v[ 7] = maxR*TMath::Sin(maxP); v[ 8] = 0;
      v[ 9] = minR*TMath::Cos(maxP); v[10] = minR*TMath::Sin(maxP); v[11] = 0;

      module->AddQuad(v);
      module->QuadValue(d->ADC());
      module->QuadId(d);
    }
    else          // AliEveV0 Left
    {
      TEveQuadSet* module = modL;
      Int_t ri = (i-32) / 8;
      Int_t pi = i % 8;
      Float_t minR = RadA[ri]  + RadEps, maxR = RadA[ri+1] - RadEps;
      Float_t minP = pi*PhiStp + PhiEps, maxP = (pi+1)*PhiStp - PhiEps;

      v[ 0] = minR*TMath::Cos(minP); v[ 1] = minR*TMath::Sin(minP); v[ 2] = 0;
      v[ 3] = maxR*TMath::Cos(minP); v[ 4] = maxR*TMath::Sin(minP); v[ 5] = 0;
      v[ 6] = maxR*TMath::Cos(maxP); v[ 7] = maxR*TMath::Sin(maxP); v[ 8] = 0;
      v[ 9] = minR*TMath::Cos(maxP); v[10] = minR*TMath::Sin(maxP); v[11] = 0;

      module->AddQuad(v);
      module->QuadValue(d->ADC());
      module->QuadId(d);
    }
  }

  modL->RefMainTrans().SetPos(0, 0, 324);
  modR->RefMainTrans().SetPos(0, 0, -84);

  gEve->AddElement(modL);
  gEve->AddElement(modR);

  gEve->Redraw3D();
}
 vzero_digits.C:1
 vzero_digits.C:2
 vzero_digits.C:3
 vzero_digits.C:4
 vzero_digits.C:5
 vzero_digits.C:6
 vzero_digits.C:7
 vzero_digits.C:8
 vzero_digits.C:9
 vzero_digits.C:10
 vzero_digits.C:11
 vzero_digits.C:12
 vzero_digits.C:13
 vzero_digits.C:14
 vzero_digits.C:15
 vzero_digits.C:16
 vzero_digits.C:17
 vzero_digits.C:18
 vzero_digits.C:19
 vzero_digits.C:20
 vzero_digits.C:21
 vzero_digits.C:22
 vzero_digits.C:23
 vzero_digits.C:24
 vzero_digits.C:25
 vzero_digits.C:26
 vzero_digits.C:27
 vzero_digits.C:28
 vzero_digits.C:29
 vzero_digits.C:30
 vzero_digits.C:31
 vzero_digits.C:32
 vzero_digits.C:33
 vzero_digits.C:34
 vzero_digits.C:35
 vzero_digits.C:36
 vzero_digits.C:37
 vzero_digits.C:38
 vzero_digits.C:39
 vzero_digits.C:40
 vzero_digits.C:41
 vzero_digits.C:42
 vzero_digits.C:43
 vzero_digits.C:44
 vzero_digits.C:45
 vzero_digits.C:46
 vzero_digits.C:47
 vzero_digits.C:48
 vzero_digits.C:49
 vzero_digits.C:50
 vzero_digits.C:51
 vzero_digits.C:52
 vzero_digits.C:53
 vzero_digits.C:54
 vzero_digits.C:55
 vzero_digits.C:56
 vzero_digits.C:57
 vzero_digits.C:58
 vzero_digits.C:59
 vzero_digits.C:60
 vzero_digits.C:61
 vzero_digits.C:62
 vzero_digits.C:63
 vzero_digits.C:64
 vzero_digits.C:65
 vzero_digits.C:66
 vzero_digits.C:67
 vzero_digits.C:68
 vzero_digits.C:69
 vzero_digits.C:70
 vzero_digits.C:71
 vzero_digits.C:72
 vzero_digits.C:73
 vzero_digits.C:74
 vzero_digits.C:75
 vzero_digits.C:76
 vzero_digits.C:77
 vzero_digits.C:78
 vzero_digits.C:79
 vzero_digits.C:80
 vzero_digits.C:81
 vzero_digits.C:82
 vzero_digits.C:83
 vzero_digits.C:84
 vzero_digits.C:85
 vzero_digits.C:86
 vzero_digits.C:87
 vzero_digits.C:88
 vzero_digits.C:89
 vzero_digits.C:90
 vzero_digits.C:91
 vzero_digits.C:92
 vzero_digits.C:93
 vzero_digits.C:94
 vzero_digits.C:95
 vzero_digits.C:96
 vzero_digits.C:97
 vzero_digits.C:98
 vzero_digits.C:99
 vzero_digits.C:100
 vzero_digits.C:101
 vzero_digits.C:102
 vzero_digits.C:103
 vzero_digits.C:104
 vzero_digits.C:105
 vzero_digits.C:106
 vzero_digits.C:107
 vzero_digits.C:108
 vzero_digits.C:109
 vzero_digits.C:110
 vzero_digits.C:111
 vzero_digits.C:112
 vzero_digits.C:113
 vzero_digits.C:114
 vzero_digits.C:115
 vzero_digits.C:116
 vzero_digits.C:117