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 <TString.h>
#include <TEveManager.h>
#include <TEveElement.h>

#include <AliEveITSModule.h>
#include <AliEveITSDigitsInfo.h>
#include <AliEveITSScaledModule.h>
#endif


void its_common_foos()
{}

AliEveITSModule* its_make_module(Int_t i, TEveElement* parent,
                                 AliEveITSDigitsInfo*  di,
                                 AliEveDigitScaleInfo* si,
                                 Bool_t check_empty,
				 Bool_t scaled_modules)
{
  AliEveITSModule* m = 0;

  Int_t det_id = 0;
  if (i > 239 && i < 500) det_id = 1;
  else if (i >= 500)      det_id = 2;

  if (!check_empty || di->HasData(i, det_id) || di->IsDead(i, det_id))
  {
    if (scaled_modules)
      m = new AliEveITSScaledModule(i, di, si);
    else
      m = new AliEveITSModule(i, di);

    // Before 5.26 ROOT did not draw frames of empty quad-sets.
    // Bypass until we move there.
    if (!di->HasData(i, det_id))
    {
      m->AddQuad(0,0,0,0);
      m->RefitPlex();
    }

    if (parent)
      parent->AddElement(m);
  }

  return m;
}

void its_display_raw_digits(AliEveITSDigitsInfo* di, Int_t mode,
                            Bool_t check_empty    = kTRUE,
                            Bool_t scaled_modules = kFALSE)
{
  const TString bsSector = "Sector";
  const TString bsStave  = "Stave";
  const TString bsLadder = "Ladder";
  TString sSector;
  TString sStave;
  TString sLadder;

  Int_t  i=0;
  Long_t nsec, nstave, nlad, nMod;

  gEve->DisableRedraw();

  AliEveDigitScaleInfo* si = 0;
  if (scaled_modules)
  {
    si = new AliEveDigitScaleInfo;
  }

  if (mode & 1)
  {
    TEveElementList* l = new TEveElementList("SPD0");
    l->SetTitle("SPDs' first layer");
    l->SetMainColor(kRed);
    gEve->AddElement(l);

    for (nsec=0; nsec<10; nsec++)
    {
      TEveElementList* relSector = new TEveElementList(bsSector + nsec);
      relSector->SetMainColor(kRed);
      l->AddElement(relSector);

      for (nstave=0; nstave<2; nstave++)
      {
	TEveElementList* relStave = new TEveElementList(bsStave + nstave);
	relStave->SetMainColor(kRed);
	relSector->AddElement(relStave);

	for (nMod=0; nMod<4; ++nMod, ++i)
	{
          its_make_module(i, relStave, di, si, check_empty, scaled_modules);
	}
      }
    }
  }
  else
  {
    i += 10*2*4;
  }

  if (mode & 2)
  {
    TEveElementList* l = new TEveElementList("SPD1");
    l->SetTitle("SPDs' second layer");
    l->SetMainColor(kRed);
    gEve->AddElement(l);

    for (nsec=0; nsec<10; nsec++)
    {
      TEveElementList* relSector = new TEveElementList(bsSector + nsec);
      relSector->SetMainColor(kRed);
      l->AddElement(relSector);

      for (nstave=0; nstave<4; nstave++)
      {
	TEveElementList* relStave = new TEveElementList(bsStave + nstave);
	relStave->SetMainColor(kRed);
	relSector->AddElement(relStave);

	for (nMod=0; nMod<4;  ++nMod, ++i)
	{
          its_make_module(i, relStave, di, si, check_empty, scaled_modules);
	}
      }
    }
  }
  else
  {
    i += 10*4*4;
  }

  if (mode & 4)
  {
    TEveElementList* l = new TEveElementList("SDD2");
    l->SetTitle("SDDs' first layer");
    l->SetMainColor(kBlue);
    gEve->AddElement(l);

    for (nlad=0; nlad<14; nlad++)
    {
      TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
      relLadder->SetMainColor(kBlue);
      l->AddElement(relLadder);
      for (nMod=0; nMod<6; ++nMod, ++i)
      {
        its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
      }
    }
  }
  else
  {
    i += 14*6;
  }

  if (mode & 8)
  {
    TEveElementList* l = new TEveElementList("SDD3");
    l->SetTitle("SDDs' second layer");
    l->SetMainColor(kBlue);
    gEve->AddElement(l);

    for (nlad=0; nlad<22; nlad++)
    {
      TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
      relLadder->SetMainColor(kBlue);
      l->AddElement(relLadder);
      for (nMod=0; nMod<8;  ++nMod, ++i)
      {
        its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
      }
    }
  }
  else
  {
    i += 22*8;
  }

  if (mode & 16)
  {
    TEveElementList* l = new TEveElementList("SSD4");
    l->SetTitle("SSDs' first layer");
    l->SetMainColor(kGreen);
    gEve->AddElement(l);

    for (nlad=0; nlad<34; nlad++)
    {
      TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
      relLadder->SetMainColor(kGreen);
      l->AddElement(relLadder);
      for (nMod=0; nMod<22; ++nMod, ++i)
      {
        its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
      }
    }
  }
  else
  {
    i += 34*22;
  }

  if (mode & 32)
  {
    TEveElementList* l = new TEveElementList("SSD5");
    l->SetTitle("SSDs' second layer");
    l->SetMainColor(kGreen);
    gEve->AddElement(l);

    for (nlad=0; nlad<38; nlad++)
    {
      TEveElementList* relLadder = new TEveElementList(bsLadder + nlad);
      relLadder->SetMainColor(kGreen);
      l->AddElement(relLadder);
      for (nMod=0; nMod<25; ++nMod, ++i)
      {
        its_make_module(i, relLadder, di, si, check_empty, scaled_modules);
      }
    }
  }
  else
  {
    i += 38*25;
  }

  gEve->EnableRedraw();
}
 its_common_foos.C:1
 its_common_foos.C:2
 its_common_foos.C:3
 its_common_foos.C:4
 its_common_foos.C:5
 its_common_foos.C:6
 its_common_foos.C:7
 its_common_foos.C:8
 its_common_foos.C:9
 its_common_foos.C:10
 its_common_foos.C:11
 its_common_foos.C:12
 its_common_foos.C:13
 its_common_foos.C:14
 its_common_foos.C:15
 its_common_foos.C:16
 its_common_foos.C:17
 its_common_foos.C:18
 its_common_foos.C:19
 its_common_foos.C:20
 its_common_foos.C:21
 its_common_foos.C:22
 its_common_foos.C:23
 its_common_foos.C:24
 its_common_foos.C:25
 its_common_foos.C:26
 its_common_foos.C:27
 its_common_foos.C:28
 its_common_foos.C:29
 its_common_foos.C:30
 its_common_foos.C:31
 its_common_foos.C:32
 its_common_foos.C:33
 its_common_foos.C:34
 its_common_foos.C:35
 its_common_foos.C:36
 its_common_foos.C:37
 its_common_foos.C:38
 its_common_foos.C:39
 its_common_foos.C:40
 its_common_foos.C:41
 its_common_foos.C:42
 its_common_foos.C:43
 its_common_foos.C:44
 its_common_foos.C:45
 its_common_foos.C:46
 its_common_foos.C:47
 its_common_foos.C:48
 its_common_foos.C:49
 its_common_foos.C:50
 its_common_foos.C:51
 its_common_foos.C:52
 its_common_foos.C:53
 its_common_foos.C:54
 its_common_foos.C:55
 its_common_foos.C:56
 its_common_foos.C:57
 its_common_foos.C:58
 its_common_foos.C:59
 its_common_foos.C:60
 its_common_foos.C:61
 its_common_foos.C:62
 its_common_foos.C:63
 its_common_foos.C:64
 its_common_foos.C:65
 its_common_foos.C:66
 its_common_foos.C:67
 its_common_foos.C:68
 its_common_foos.C:69
 its_common_foos.C:70
 its_common_foos.C:71
 its_common_foos.C:72
 its_common_foos.C:73
 its_common_foos.C:74
 its_common_foos.C:75
 its_common_foos.C:76
 its_common_foos.C:77
 its_common_foos.C:78
 its_common_foos.C:79
 its_common_foos.C:80
 its_common_foos.C:81
 its_common_foos.C:82
 its_common_foos.C:83
 its_common_foos.C:84
 its_common_foos.C:85
 its_common_foos.C:86
 its_common_foos.C:87
 its_common_foos.C:88
 its_common_foos.C:89
 its_common_foos.C:90
 its_common_foos.C:91
 its_common_foos.C:92
 its_common_foos.C:93
 its_common_foos.C:94
 its_common_foos.C:95
 its_common_foos.C:96
 its_common_foos.C:97
 its_common_foos.C:98
 its_common_foos.C:99
 its_common_foos.C:100
 its_common_foos.C:101
 its_common_foos.C:102
 its_common_foos.C:103
 its_common_foos.C:104
 its_common_foos.C:105
 its_common_foos.C:106
 its_common_foos.C:107
 its_common_foos.C:108
 its_common_foos.C:109
 its_common_foos.C:110
 its_common_foos.C:111
 its_common_foos.C:112
 its_common_foos.C:113
 its_common_foos.C:114
 its_common_foos.C:115
 its_common_foos.C:116
 its_common_foos.C:117
 its_common_foos.C:118
 its_common_foos.C:119
 its_common_foos.C:120
 its_common_foos.C:121
 its_common_foos.C:122
 its_common_foos.C:123
 its_common_foos.C:124
 its_common_foos.C:125
 its_common_foos.C:126
 its_common_foos.C:127
 its_common_foos.C:128
 its_common_foos.C:129
 its_common_foos.C:130
 its_common_foos.C:131
 its_common_foos.C:132
 its_common_foos.C:133
 its_common_foos.C:134
 its_common_foos.C:135
 its_common_foos.C:136
 its_common_foos.C:137
 its_common_foos.C:138
 its_common_foos.C:139
 its_common_foos.C:140
 its_common_foos.C:141
 its_common_foos.C:142
 its_common_foos.C:143
 its_common_foos.C:144
 its_common_foos.C:145
 its_common_foos.C:146
 its_common_foos.C:147
 its_common_foos.C:148
 its_common_foos.C:149
 its_common_foos.C:150
 its_common_foos.C:151
 its_common_foos.C:152
 its_common_foos.C:153
 its_common_foos.C:154
 its_common_foos.C:155
 its_common_foos.C:156
 its_common_foos.C:157
 its_common_foos.C:158
 its_common_foos.C:159
 its_common_foos.C:160
 its_common_foos.C:161
 its_common_foos.C:162
 its_common_foos.C:163
 its_common_foos.C:164
 its_common_foos.C:165
 its_common_foos.C:166
 its_common_foos.C:167
 its_common_foos.C:168
 its_common_foos.C:169
 its_common_foos.C:170
 its_common_foos.C:171
 its_common_foos.C:172
 its_common_foos.C:173
 its_common_foos.C:174
 its_common_foos.C:175
 its_common_foos.C:176
 its_common_foos.C:177
 its_common_foos.C:178
 its_common_foos.C:179
 its_common_foos.C:180
 its_common_foos.C:181
 its_common_foos.C:182
 its_common_foos.C:183
 its_common_foos.C:184
 its_common_foos.C:185
 its_common_foos.C:186
 its_common_foos.C:187
 its_common_foos.C:188
 its_common_foos.C:189
 its_common_foos.C:190
 its_common_foos.C:191
 its_common_foos.C:192
 its_common_foos.C:193
 its_common_foos.C:194
 its_common_foos.C:195
 its_common_foos.C:196
 its_common_foos.C:197
 its_common_foos.C:198
 its_common_foos.C:199
 its_common_foos.C:200
 its_common_foos.C:201
 its_common_foos.C:202
 its_common_foos.C:203
 its_common_foos.C:204
 its_common_foos.C:205
 its_common_foos.C:206
 its_common_foos.C:207
 its_common_foos.C:208
 its_common_foos.C:209
 its_common_foos.C:210
 its_common_foos.C:211
 its_common_foos.C:212
 its_common_foos.C:213
 its_common_foos.C:214
 its_common_foos.C:215
 its_common_foos.C:216
 its_common_foos.C:217
 its_common_foos.C:218
 its_common_foos.C:219
 its_common_foos.C:220
 its_common_foos.C:221
 its_common_foos.C:222
 its_common_foos.C:223
 its_common_foos.C:224
 its_common_foos.C:225
 its_common_foos.C:226
 its_common_foos.C:227
 its_common_foos.C:228
 its_common_foos.C:229
 its_common_foos.C:230
 its_common_foos.C:231
 its_common_foos.C:232
 its_common_foos.C:233
 its_common_foos.C:234
 its_common_foos.C:235
 its_common_foos.C:236