]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/alice-macros/its_common_foos.C
Add dead module handling for SDD and SSD.
[u/mrichter/AliRoot.git] / EVE / alice-macros / its_common_foos.C
index 11cfba7110ac6a3149809121c81582ec05dd778f..36e03b93d556263ebdefb9a1da789fc284ee7f15 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: its_raw.C 24929 2008-04-04 13:51:43Z mtadel $
+// $Id$
 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
 /**************************************************************************
 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((Color_t)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((Color_t)2);
-      gEve->AddElement(relSector, l);
-      for (nstave=0; nstave<2; nstave++){
-       sStave  = bsStave;
-       sStave += nstave;
-       TEveElementList* relStave = new TEveElementList(sStave.Data());
-       relStave->SetMainColor((Color_t)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((Color_t)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((Color_t)2);
-      gEve->AddElement(relSector, l);
-      for (nstave=0; nstave<4; nstave++){
-       sStave  = bsStave;
-       sStave += nstave;
-       TEveElementList* relStave = new TEveElementList(sStave.Data());
-       relStave->SetMainColor((Color_t)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((Color_t)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((Color_t)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((Color_t)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((Color_t)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((Color_t)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((Color_t)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((Color_t)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((Color_t)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;
   }