-// $Id: its_raw.C 24929 2008-04-04 13:51:43Z mtadel $
+// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
/**************************************************************************
* 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()
{}
-void its_display_raw_digits(AliEveITSDigitsInfo* di, Int_t mode)
+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 bsSector="Sector";
TString sStave;
- TString bsStave="Stave";
TString sLadder;
- TString bsLadder="Ladder";
- Int_t i=0;
- Int_t nsec, nstave, nlad, nMod;
+ Int_t i=0;
+ Long_t nsec, nstave, nlad, nMod;
gEve->DisableRedraw();
- if (mode & 1) {
+ AliEveDigitScaleInfo* si = 0;
+ if (scaled_modules)
+ {
+ si = new AliEveDigitScaleInfo;
+ }
+
+ if (mode & 1)
+ {
TEveElementList* l = new TEveElementList("SPD0");
l->SetTitle("SPDs' first layer");
- l->SetMainColor(2);
+ l->SetMainColor(kRed);
gEve->AddElement(l);
- for (nsec=0; nsec<10; nsec++) {
- sSector = bsSector;
- sSector += nsec;
- TEveElementList* relSector = new TEveElementList(sSector.Data());
- relSector->SetMainColor(2);
- gEve->AddElement(relSector, l);
- for (nstave=0; nstave<2; nstave++){
- sStave = bsStave;
- sStave += nstave;
- TEveElementList* relStave = new TEveElementList(sStave.Data());
- relStave->SetMainColor(2);
- gEve->AddElement(relStave, relSector);
- for (nMod=0; nMod<4; nMod++)
+
+ 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)
{
- if (di->GetDigits(i, 0) && di->GetDigits(i, 0)->GetEntriesFast() > 0)
- {
- AliEveITSModule* m = new AliEveITSModule(i, di);
- gEve->AddElement(m, relStave);
- }
- ++i;
+ its_make_module(i, relStave, di, si, check_empty, scaled_modules);
}
}
}
- } else {
+ }
+ else
+ {
i += 10*2*4;
}
- if (mode & 2) {
+ if (mode & 2)
+ {
TEveElementList* l = new TEveElementList("SPD1");
l->SetTitle("SPDs' second layer");
- l->SetMainColor(2);
+ l->SetMainColor(kRed);
gEve->AddElement(l);
- for (nsec=0; nsec<10; nsec++) {
- sSector = bsSector;
- sSector += nsec;
- TEveElementList* relSector = new TEveElementList(sSector.Data());
- relSector->SetMainColor(2);
- gEve->AddElement(relSector, l);
- for (nstave=0; nstave<4; nstave++){
- sStave = bsStave;
- sStave += nstave;
- TEveElementList* relStave = new TEveElementList(sStave.Data());
- relStave->SetMainColor(2);
- gEve->AddElement(relStave, relSector);
- for (nMod=0; nMod<4; nMod++)
+ 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)
{
- if (di->GetDigits(i, 0) && di->GetDigits(i, 0)->GetEntriesFast() > 0)
- {
- AliEveITSModule* m = new AliEveITSModule(i, di);
- gEve->AddElement(m, relStave);
- }
- ++i;
+ its_make_module(i, relStave, di, si, check_empty, scaled_modules);
}
}
}
- } else {
+ }
+ else
+ {
i += 10*4*4;
}
- if (mode & 4) {
+ if (mode & 4)
+ {
TEveElementList* l = new TEveElementList("SDD2");
l->SetTitle("SDDs' first layer");
- l->SetMainColor(3);
+ l->SetMainColor(kBlue);
gEve->AddElement(l);
- for (nlad=0; nlad<14; nlad++) {
- sLadder = bsLadder;
- sLadder += nlad;
- TEveElementList* relLadder = new TEveElementList(sLadder.Data());
- relLadder->SetMainColor(3);
- gEve->AddElement(relLadder, l);
- for (nMod=0; nMod<6; nMod++) {
- AliEveITSModule* m = new AliEveITSModule(i++, di);
- gEve->AddElement(m, relLadder);
+ 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 {
+ }
+ else
+ {
i += 14*6;
}
- if (mode & 8) {
+ if (mode & 8)
+ {
TEveElementList* l = new TEveElementList("SDD3");
l->SetTitle("SDDs' second layer");
- l->SetMainColor(3);
+ l->SetMainColor(kBlue);
gEve->AddElement(l);
- for (nlad=0; nlad<22; nlad++) {
- sLadder = bsLadder;
- sLadder += nlad;
- TEveElementList* relLadder = new TEveElementList(sLadder.Data());
- relLadder->SetMainColor(3);
- gEve->AddElement(relLadder, l);
- for (nMod=0; nMod<8; nMod++) {
- AliEveITSModule* m = new AliEveITSModule(i++, di);
- gEve->AddElement(m, relLadder);
+
+ 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 {
+ }
+ else
+ {
i += 22*8;
}
- if (mode & 16) {
+ if (mode & 16)
+ {
TEveElementList* l = new TEveElementList("SSD4");
l->SetTitle("SSDs' first layer");
- l->SetMainColor(4);
+ l->SetMainColor(kGreen);
gEve->AddElement(l);
- for (nlad=0; nlad<34; nlad++) {
- sLadder = bsLadder;
- sLadder += nlad;
- TEveElementList* relLadder = new TEveElementList(sLadder.Data());
- relLadder->SetMainColor(4);
- gEve->AddElement(relLadder, l);
- for (nMod=0; nMod<22; nMod++) {
- AliEveITSModule* m = new AliEveITSModule(i++, di);
- gEve->AddElement(m, relLadder);
+
+ 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 {
+ }
+ else
+ {
i += 34*22;
}
- if (mode & 32) {
+ if (mode & 32)
+ {
TEveElementList* l = new TEveElementList("SSD5");
l->SetTitle("SSDs' second layer");
- l->SetMainColor(4);
+ l->SetMainColor(kGreen);
gEve->AddElement(l);
- for (nlad=0; nlad<38; nlad++) {
- sLadder = bsLadder;
- sLadder += nlad;
- TEveElementList* relLadder = new TEveElementList(sLadder.Data());
- relLadder->SetMainColor(4);
- gEve->AddElement(relLadder, l);
- for (nMod=0; nMod<25; nMod++) {
- AliEveITSModule* m = new AliEveITSModule(i++, di);
- gEve->AddElement(m, relLadder);
+
+ 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 {
+ }
+ else
+ {
i += 38*25;
}