Coverity
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTOFSector.cxx
index 7562dfc..763fd35 100644 (file)
@@ -1,23 +1,31 @@
-// $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.                                                 *
  **************************************************************************/
-#include "AliEveTOFSector.h"
 
-#include <TEveManager.h>
+// $Id$
+// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+
+//
+// Class to visualize the TOF digit information
+// in TOF sector frame
+//
+// Author: A. De Caro (email: decaro@sa.infn.t)
+//
+
+#include <TGeoManager.h>
+#include <TClonesArray.h>
+#include <TTree.h>
+
+#include <TEveTrans.h>
 
 #include <AliTOFdigit.h>
 #include <AliTOFGeometry.h>
 
-#include <TStyle.h>
-
-using namespace std;
+#include "AliEveTOFSector.h"
 
-Bool_t       AliEveTOFSector::fgStaticInitDone = kFALSE;
+Bool_t           AliEveTOFSector::fgStaticInitDone    = kFALSE;
 TEveFrameBox*    AliEveTOFSector::fgTOFsectorFrameBox = 0;
 TEveRGBAPalette* AliEveTOFSector::fgTOFsectorPalette  = 0;
 
@@ -34,17 +42,23 @@ AliEveTOFSector::AliEveTOFSector(const Text_t* n, const Text_t* t) :
   fSector(-1),
   fDx(0), fDy(0), fDz(0),
   fAutoTrans (kTRUE),
-  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
-  fThreshold (5), fMaxVal    (80),
+  //fMinTime   (0), fMaxTime (0),
+  fThreshold (5), fMaxVal (80),
   fSectorID  (0),
+  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
+  fPlateFlag (0x0),
+  //fFrameColor(4),
+  //fRnrFrame  (kFALSE),
   fGeoManager(0)
 {
 
+  // default ctr
+
   fPlateFlag = new Bool_t[5];
   for (Int_t ii=0; ii<5; ii++) fPlateFlag[ii]=kTRUE;
 
 
-  fGeoManager = (TGeoManager*)gEve->GetGeometry("$REVESYS/alice-data/alice_fullgeo.root");
+  //fGeoManager = AliEveEventManager::AssertGeometry();
   if (!fGeoManager) {
     printf("ERROR: no TGeo\n");
   }
@@ -62,12 +76,18 @@ AliEveTOFSector::AliEveTOFSector(TGeoManager *localGeoManager,
   fSector(nSector),
   fDx(0), fDy(0), fDz(0),
   fAutoTrans (kTRUE),
-  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
-  fThreshold (5), fMaxVal    (80),
+  //fMinTime   (0), fMaxTime (0),
+  fThreshold (5), fMaxVal  (80),
   fSectorID  (nSector),
+  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
+  fPlateFlag (0x0),
+  //fFrameColor(4),
+  //fRnrFrame  (kFALSE),
   fGeoManager(localGeoManager)
 {
 
+  // ctr
+
   fPlateFlag = new Bool_t[5];
   for (Int_t ii=0; ii<5; ii++) fPlateFlag[ii]=kTRUE;
 
@@ -93,12 +113,18 @@ AliEveTOFSector::AliEveTOFSector(TGeoManager *localGeoManager,
   fSector(nSector),
   fDx(0), fDy(0), fDz(0),
   fAutoTrans (kTRUE),
-  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
+  //fMinTime   (0), fMaxTime (0),
   fThreshold (5), fMaxVal    (80),
   fSectorID  (nSector),
+  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
+  fPlateFlag (0x0),
+  //fFrameColor(4),
+  //fRnrFrame  (kFALSE),
   fGeoManager(localGeoManager)
 {
 
+  // ctr
+
   fPlateFlag = new Bool_t[5];
   for (Int_t ii=0; ii<5; ii++) fPlateFlag[ii]=kTRUE;
 
@@ -118,12 +144,18 @@ AliEveTOFSector::AliEveTOFSector(TGeoManager *localGeoManager,
   fSector(nSector),
   fDx(0), fDy(0), fDz(0),
   fAutoTrans (kTRUE),
-  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
+  //fMinTime   (0), fMaxTime (0),
   fThreshold (5), fMaxVal    (80),
   fSectorID  (nSector),
+  //fPlateFlag0(kTRUE), fPlateFlag1(kTRUE), fPlateFlag2(kTRUE), fPlateFlag3(kTRUE), fPlateFlag4(kTRUE),
+  fPlateFlag (0x0),
+  //fFrameColor(4),
+  //fRnrFrame  (kFALSE),
   fGeoManager(localGeoManager)
 {
 
+  // ctr
+
   fPlateFlag = new Bool_t[5];
   for (Int_t ii=0; ii<5; ii++) fPlateFlag[ii]=kTRUE;
 
@@ -134,6 +166,9 @@ AliEveTOFSector::AliEveTOFSector(TGeoManager *localGeoManager,
 
 AliEveTOFSector::~AliEveTOFSector()
 {
+
+  // dtr
+
   /*
   fGeoManager = 0x0;
   delete fGeoManager;
@@ -158,19 +193,27 @@ void AliEveTOFSector::SetDigitsInfo(AliEveTOFDigitsInfo* info)
 /* ************************************************************************ */
 void AliEveTOFSector::InitStatics()
 {
+  //
+  // To initialize statistic variables
+  //
+
   if (fgStaticInitDone) return;
 
   Float_t dx = 124.5;
   Float_t dz =  29.;
   Float_t dy = 370.6*2.;
   fgTOFsectorFrameBox = new TEveFrameBox();
-
   fgTOFsectorFrameBox->SetAABox(-dx*0.5, -dy*0.5, -dz*0.5, dx, dy, dz);
-  fgTOFsectorFrameBox->SetFrameColor((Color_t) 32);//31);
+  fgTOFsectorFrameBox->SetFrameColor(Color_t(32));
+  fgTOFsectorFrameBox->IncRefCount();
 
   //fgTOFsectorPalette  = new TEveRGBAPalette(0, 2048); // TOT
-  fgTOFsectorPalette  = new TEveRGBAPalette(0, 8192/*1024*/); // TDC
-  fgTOFsectorPalette->SetLimits(0, 8192);
+  //fgTOFsectorPalette->SetLimits(0, 2048); 
+  //fgTOFsectorPalette  = new TEveRGBAPalette(0, 8192); // TDC
+  fgTOFsectorPalette  = new TEveRGBAPalette(0, 100000); // TDC
+  fgTOFsectorPalette->SetOverflowAction(2);
+  fgTOFsectorPalette->SetUnderflowAction(2);
+  fgTOFsectorPalette->IncRefCount();
 
   fgStaticInitDone = kTRUE;
 }
@@ -178,6 +221,9 @@ void AliEveTOFSector::InitStatics()
 /* ************************************************************************ */
 void AliEveTOFSector::InitModule()
 {
+  //
+  // To initialize TOF sector frame variables
+  //
 
   fDx = fTOFgeometry->XPad()*fTOFgeometry->NpadX();
   //fDy = fTOFgeometry->XPad()*fTOFgeometry->NpadX();
@@ -199,8 +245,9 @@ void AliEveTOFSector::InitModule()
 /* ************************************************************************ */
 void AliEveTOFSector::LoadQuads()
 {
-
-  Reset(kQT_FreeQuad, kFALSE, 32);
+  //
+  // Load TOF digit as illuminated pad
+  //
 
   //Int_t n_col = gStyle->GetNumberOfColors();
 
@@ -210,8 +257,9 @@ void AliEveTOFSector::LoadQuads()
   Int_t tdc = -1;
   Int_t tot = -1;
 
-  Double_t **coord = new Double_t*[4];
-  for (Int_t ii=0; ii<4; ii++) coord[ii] = new Double_t[3];
+  Double_t coord[4][3];
+
+  Reset(kQT_FreeQuad, kFALSE, 32);
 
   //printf(" fTOFarray->GetEntries() = %4i \n",fTOFarray->GetEntries());
 
@@ -237,8 +285,8 @@ void AliEveTOFSector::LoadQuads()
 
       vol[1] = digs->GetPlate();  // Plate Number (0-4)
       vol[2] = digs->GetStrip();  // Strip Number (0-14/18)
-      vol[3] = digs->GetPadx();   // TEvePad Number in x direction (0-47)
-      vol[4] = digs->GetPadz();   // TEvePad Number in z direction (0-1)
+      vol[3] = digs->GetPadx();   // Pad Number in x direction (0-47)
+      vol[4] = digs->GetPadz();   // Pad Number in z direction (0-1)
 
       informations[0] = digs->GetTdc();
       informations[1] = digs->GetAdc();
@@ -290,6 +338,7 @@ void AliEveTOFSector::LoadQuads()
 
       // In principle could have color based on number of neigbours. We
       // can insert the time-of-flight value for each pad
+
       //QuadValue((Int_t)tot);
       QuadValue((Int_t)tdc);
       QuadId(tofDigit);
@@ -307,7 +356,12 @@ void AliEveTOFSector::LoadQuads()
 /* ************************************************************ */
 void AliEveTOFSector::SetTrans()
 {
-  fHMTrans.UnitTrans();
+  //
+  // Set the translation matrix for TOF sector
+  //
+
+  InitMainTrans();
+  TEveTrans& t = RefMainTrans();
 
   //Int_t det[5] = {fSector, -1, -1, -1, -1};
   Char_t path[100];
@@ -322,17 +376,20 @@ void AliEveTOFSector::SetTrans()
   Double_t *rotMat = global.GetRotationMatrix();
   Double_t *tr = global.GetTranslation();
 
-  fHMTrans.SetBaseVec(1, rotMat[0], rotMat[3], rotMat[6]);
-  fHMTrans.SetBaseVec(2, rotMat[1], rotMat[4], rotMat[7]);
-  fHMTrans.SetBaseVec(3, rotMat[2], rotMat[5], rotMat[8]);
-
-  fHMTrans.SetBaseVec(4, tr);
+  t.SetBaseVec(1, rotMat[0], rotMat[3], rotMat[6]);
+  t.SetBaseVec(2, rotMat[1], rotMat[4], rotMat[7]);
+  t.SetBaseVec(3, rotMat[2], rotMat[5], rotMat[8]);
+  t.SetBaseVec(4, tr);
 }
 
 //-----------------------------------------------------
 
 void AliEveTOFSector::SetSectorID(Int_t id)
 {
+  //
+  // Set TOF sector ID to be visualized
+  //
+
   fSectorID = id;
   fSector   = id;
   if (fAutoTrans)
@@ -345,6 +402,9 @@ void AliEveTOFSector::SetSectorID(Int_t id)
 
 void AliEveTOFSector::SetPlate(Int_t nPlate, Bool_t r)
 {
+  //
+  // Set visualization flag to visualize TOF modules
+  //
 
   fPlateFlag[nPlate] = r;
 
@@ -355,6 +415,10 @@ void AliEveTOFSector::SetPlate(Int_t nPlate, Bool_t r)
 
 void AliEveTOFSector::SetThreshold(Short_t t)
 {
+  //
+  // Set visualization threshold
+  //
+
   fThreshold = TMath::Min(t, (Short_t)(fMaxVal - 1));
   // ClearColorArray();
 }
@@ -363,6 +427,10 @@ void AliEveTOFSector::SetThreshold(Short_t t)
 
 void AliEveTOFSector::SetMaxVal(Int_t mv)
 {
+  //
+  // Set visualization max value
+  //
+
   fMaxVal = TMath::Max(mv, (Int_t)(fThreshold + 1));
   //ClearColorArray();
 }
@@ -371,17 +439,16 @@ void AliEveTOFSector::SetMaxVal(Int_t mv)
 
 void AliEveTOFSector::DigitSelected(Int_t idx)
 {
+  //
   // Override control-click from TEveQuadSet
+  //
 
-  DigitBase_t* qb   = GetDigit(idx);
-  TObject* obj   = qb->fId.GetObject();
+  TObject* obj   = GetId(idx);
   AliTOFdigit* digs = dynamic_cast<AliTOFdigit*>(obj);
   // printf("AliEveTOFSector::QuadSelected "); Print();
-  printf("  idx = %5i, value = %5d, obj = 0x%lx, digit = 0x%lx  ",
-        idx, qb->fValue, (ULong_t)obj, (ULong_t)digs);
   if (digs)
-    printf("-> Sector = %2i  Plate = %1i  Strip = %2i  ToT = %3i  Tof = %5i\n",
-          fSector , digs->GetPlate(), digs->GetStrip(), digs->GetToT(), digs->GetTdc());
+    printf("\n Sector = %2i  Plate = %1i  Strip = %2i  PadZ = %1i PadX = %2i  ToT = %3i  Tof = %5i\n",
+          fSector , digs->GetPlate(), digs->GetStrip(), digs->GetPadz(), digs->GetPadx(), digs->GetToT(), digs->GetTdc());
   else printf("\n");
 
 }