]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONTriggerGUIdimap.cxx
Changed default OCDB from 2009 to 2010
[u/mrichter/AliRoot.git] / MUON / AliMUONTriggerGUIdimap.cxx
index 3cec7d56bbe22edf4a33b079ebacb4678c14dc37..257b9e597a53f3cfe425b20b15c3ce8c806986ba 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-//////////////////////////////////////////////////////////////////////////
-//                                                                      //
-// Graphical User Interface utility class for the MUON trigger          //
-// - digits maps of the trigger chambers                                //
-//                                                                      //
-//////////////////////////////////////////////////////////////////////////
+// $Id$
+
+//-----------------------------------------------------------------------------
+/// \class AliMUONTriggerGUIdimap
+///
+/// The digit maps of the four trigger chambers, all boards
+///
+/// \author Bogdan Vulpescu, LPC Clermont-Ferrand
+//-----------------------------------------------------------------------------
 
 #include <TCanvas.h>
-#include <TGFrame.h>
 #include <TGButton.h>
 #include <TGTab.h>
 #include <TRootEmbeddedCanvas.h>
 #include <TBox.h>
-#include <TClonesArray.h>
 #include <TPave.h>
 #include <TPaveText.h>
 #include <TStyle.h>
 #include <TObjArray.h>
 
-#include "AliRun.h"
+#include "AliRunLoader.h"
 
-#include "AliMUON.h"
-#include "AliMUONDigit.h"
+#include "AliMUONVDigit.h"
 #include "AliMpSegmentation.h"
 #include "AliMpVSegmentation.h"
 #include "AliMUONGeometryTransformer.h"
-#include "AliMUONData.h"
+#include "AliMUONMCDataInterface.h"
 
 #include "AliMUONTriggerGUIboard.h"
 #include "AliMUONTriggerGUIdimap.h"
 
+#include "AliMUONDigitStoreV1.h"
+
 /// \cond CLASSIMP
 ClassImp(AliMUONTriggerGUIdimap)
 /// \endcond
 
 //__________________________________________________________________________
-AliMUONTriggerGUIdimap::AliMUONTriggerGUIdimap(AliLoader *loader, TObjArray *boards, const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h)
-  : TObject(),
-    fQObject(),
+AliMUONTriggerGUIdimap::AliMUONTriggerGUIdimap(TObjArray *boards, const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h)
+  : TGFrame(0),
     fMain(0),
     fLoader(0),
-    fMUONData(0),
+    fMCDataInterface(0),
+    fRawDigitStore(0),
     fBoards(0),
     fIsOn(0)
 {
   /// frame constructor
 
-  fLoader = loader;
   fIsOn   = kTRUE;
   fBoards = boards;
 
-  fMUONData = new AliMUONData(loader,"MUON","MUON");
-  fMUONData->SetTreeAddress("D");
   gStyle->SetPadLeftMargin(0.05);
   gStyle->SetPadRightMargin(0.05);
   gStyle->SetPadTopMargin(0.05);
@@ -198,11 +196,6 @@ AliMUONTriggerGUIdimap::AliMUONTriggerGUIdimap(AliLoader *loader, TObjArray *boa
   
   fMain->MapWindow();
 
-  DrawMaps(11);
-  DrawMaps(12);
-  DrawMaps(13);
-  DrawMaps(14);
-
 }
 
 //__________________________________________________________________________
@@ -216,37 +209,26 @@ AliMUONTriggerGUIdimap::~AliMUONTriggerGUIdimap()
     }
   }
 
-  delete fMUONData;
   fMain->DeleteWindow();
 
 }
 
 //__________________________________________________________________________
-AliMUONTriggerGUIdimap::AliMUONTriggerGUIdimap(const AliMUONTriggerGUIdimap& dimap)
-  : TObject(),
-    fQObject(),
-    fMain(0),
-    fLoader(0),
-    fMUONData(0),
-    fBoards(0),
-    fIsOn(0)
-{
-  /// copy constructor
-
-  dimap.Dump();
-  Fatal("AliMUONTriggerGUIdimap","copy constructor not implemented");
-
-}
-
-//__________________________________________________________________________
-AliMUONTriggerGUIdimap & AliMUONTriggerGUIdimap::operator=(const AliMUONTriggerGUIdimap& dimap)
+void AliMUONTriggerGUIdimap::DrawAllMaps()
 {
-  /// asignment operator
+  /// draw maps 
 
-  dimap.Dump();
-  Fatal("AliMUONTriggerGUIdimap","assignment operator not implemented");
+  if (fLoader == 0x0) {
+    //return;
+  }
+  if (fMCDataInterface == 0x0) {
+    //return;
+  }
 
-  return *this;
+  DrawMaps(11);
+  DrawMaps(12);
+  DrawMaps(13);
+  DrawMaps(14);
 
 }
 
@@ -255,35 +237,28 @@ void AliMUONTriggerGUIdimap::DrawMaps(Int_t chamber)
 {
   /// draw the digits map for chamber-
 
-  TString mapspath = gSystem->Getenv("ALICE_ROOT");
-  mapspath.Append("/MUON/data");
+  Bool_t drawDigits = kTRUE;
+  Bool_t drawDigitsRaw = kTRUE;
+  if (fLoader == 0x0) {
+    drawDigits = kFALSE;
+  }
+  if (fRawDigitStore == 0x0) {
+    drawDigitsRaw = kFALSE;
+  }
+  
+  AliMUONTriggerGUIboard *board;
 
   TCanvas *canvas = fEc[chamber-11]->GetCanvas();
   canvas->cd();
   canvas->Clear();
 
-  AliMUONDigit *mdig;
-  AliMpPad      mpad;
-  
-  AliRunLoader *runLoader = fLoader->GetRunLoader();
-  gAlice = runLoader->GetAliRun();
-  AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
-  const AliMUONGeometryTransformer* kGeomTransformer = pMUON->GetGeometryTransformer();
-  
-  TClonesArray *muonDigits = fMUONData->Digits(chamber-1);
-  if (muonDigits == 0) { printf("No muonDigits \n"); return; }
-  gAlice->ResetDigits();
-  fMUONData->GetDigits();
-  Int_t nDigits = muonDigits->GetEntriesFast(); 
-  
   TPaveText *label;
   TBox *boxd;
 
-  Char_t fntxt[6], name[8], cln[2];
+  Char_t cln[2];
   Int_t detElemId, cathode, ix, iy, charge, color;
-  Int_t side, col, line, nbx;
   Int_t holdS, holdL, holdC;
-  Float_t xCenter, yCenter, zCenter, xWidth, yWidth, holdXC, holdYC;
+  Float_t xCenter, yCenter, xWidth, yWidth, holdXC, holdYC;
   Float_t xMin, xMax, yMin, yMax;
   Float_t ptx1, ptx2, pty1, pty2;
   Float_t xpmin, xpmax, ypmin, ypmax;
@@ -319,21 +294,18 @@ void AliMUONTriggerGUIdimap::DrawMaps(Int_t chamber)
 
   // draw the boards
   
-  sprintf(fntxt,"%s/guimapp%2d.txt",mapspath.Data(),chamber);
-  FILE *ftxt = fopen(fntxt,"r");
-  
   for (Int_t ib = 0; ib < kNBoards; ib++) {
     
-    fscanf(ftxt,"%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",
-          &side,&col,&line,&nbx,
-          &xCenter,&yCenter,&xWidth,&yWidth,&zCenter,
-          &name[0]);
+    board = (AliMUONTriggerGUIboard*)fBoards->At(ib);
 
-    //printf("%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",side,col,line,nbx,xCenter,yCenter,xWidth,yWidth,zCenter,name);
+    holdS = board->GetSide();
+    holdC = board->GetCol();
+    holdL = board->GetLine();
 
-    holdS = side;
-    holdC = col;
-    holdL = line;
+    xCenter = board->GetXCenter(chamber-11);
+    yCenter = board->GetYCenter(chamber-11);
+    xWidth  = board->GetXWidth(chamber-11);
+    yWidth  = board->GetYWidth(chamber-11);
 
     holdXC = xCenter;
     holdYC = yCenter;
@@ -413,11 +385,8 @@ void AliMUONTriggerGUIdimap::DrawMaps(Int_t chamber)
     
   }
 
-  fclose(ftxt);
-
   // draw digits set from the board GUI
 
-  AliMUONTriggerGUIboard *board;
   Int_t imt = chamber -11;
   Int_t nStripX, nStripY;
   TBox *box;
@@ -473,55 +442,71 @@ void AliMUONTriggerGUIdimap::DrawMaps(Int_t chamber)
 
   }
   
-  // draw the digits
+  // draw the digits from galice
 
-  for (Int_t id = 0; id < nDigits; id++) {
-    
-    mdig  = (AliMUONDigit*)muonDigits->UncheckedAt(id);
-    
-    cathode = mdig->Cathode()+1;
-    
-    ix=mdig->PadX();
-    iy=mdig->PadY();
-    detElemId=mdig->DetElemId();      
-    charge = (Int_t)mdig->Signal();
-    color  = 261+5*(charge-1);
-    if (color > 282) color = 282;
+  if (drawDigits || drawDigitsRaw) {
+
+    AliMUONGeometryTransformer transformer;
+    transformer.LoadGeometryData("transform.dat");
     
-    const AliMpVSegmentation* seg2 = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode-1));
+    AliMUONVDigitStore *digitStore = 0x0;
     
-    mpad = seg2->PadByIndices(AliMpIntPair(ix,iy),kTRUE);
+    if (drawDigits) {
+      AliRunLoader *runLoader = fLoader->GetRunLoader();
+      digitStore = fMCDataInterface->DigitStore(runLoader->GetEventNumber());
+    }
+    if (drawDigitsRaw) {
+      digitStore = fRawDigitStore;
+    }
     
-    // get the pad position and dimensions
-    Float_t xlocal1 = mpad.Position().X();
-    Float_t ylocal1 = mpad.Position().Y();
-    Float_t xlocal2 = mpad.Dimensions().X();
-    Float_t ylocal2 = mpad.Dimensions().Y();
+    TIter next(digitStore->CreateIterator());
+    AliMUONVDigit* mdig;
     
-    kGeomTransformer->Local2Global(detElemId, xlocal1, ylocal1, 0, xg1, yg1, zg1);
-    // (no transformation for pad dimensions)
-    xg2 = xlocal2;
-    yg2 = ylocal2;
-
-    // transform in the monitor coordinate system
-    //xpmin = -(xg1+xg2);
-    //xpmax = -(xg1-xg2);
-    //ypmin = -(yg2-yg1);
-    //ypmax = +(yg2+yg1);
-    // ALICE SC
-    xpmin = +(xg1-xg2);
-    xpmax = +(xg1+xg2);
-    ypmin = -(yg2-yg1);
-    ypmax = +(yg2+yg1);
-             
-    boxd = new TBox(xpmin,ypmin,xpmax,ypmax);
-    boxd->SetBit(kCannotPick);
-    boxd->SetFillStyle(1001);
-    boxd->SetFillColor(2);
-    boxd->Draw();
+    while ( ( mdig = static_cast<AliMUONVDigit*>(next()) ) ) {
+
+      cathode = mdig->Cathode()+1;
+      
+      ix=mdig->PadX();
+      iy=mdig->PadY();
+      detElemId=mdig->DetElemId();      
+      charge = (Int_t)mdig->Charge();
+      color  = 261+5*(charge-1);
+      if (color > 282) color = 282;
+      
+      if (detElemId/100 != chamber) continue;
+      
+      const AliMpVSegmentation* seg2 = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode-1));
+      
+      AliMpPad mpad = seg2->PadByIndices(ix,iy,kTRUE);
+      
+      // get the pad position and dimensions
+      Float_t xlocal1 = mpad.GetPositionX();
+      Float_t ylocal1 = mpad.GetPositionY();
+      Float_t xlocal2 = mpad.GetDimensionX();
+      Float_t ylocal2 = mpad.GetDimensionY();
+      
+      transformer.Local2Global(detElemId, xlocal1, ylocal1, 0, xg1, yg1, zg1);
+      // (no transformation for pad dimensions)
+      xg2 = xlocal2;
+      yg2 = ylocal2;
+      
+      // transform in the monitor coordinate system
+      // ALICE SC
+      xpmin = +(xg1-xg2);
+      xpmax = +(xg1+xg2);
+      ypmin = -(yg2-yg1);
+      ypmax = +(yg2+yg1);
+      
+      boxd = new TBox(xpmin,ypmin,xpmax,ypmax);
+      boxd->SetBit(kCannotPick);
+      boxd->SetFillStyle(1001);
+      boxd->SetFillColor(2);
+      boxd->Draw();
+      
+    }  // end digits loop
     
-  }  // end digits loop
-
+  }  // end draw digits
+  
   canvas->Modified();
   canvas->Update();
 
@@ -562,10 +547,6 @@ void AliMUONTriggerGUIdimap::DoUpdate()
 {
   /// update maps for another run/event
 
-  //fMUONData->SetLoader(fLoader);
-  fMUONData = new AliMUONData(fLoader,"MUON","MUON");
-  fMUONData->SetTreeAddress("D");
-
   for (Int_t it = 0; it < kNMT; it++) {
     for (Int_t ib = 0; ib < kNBoards; ib++) {
       delete fPaveBoard[it][ib];