New files for trigger GUI (Bogdan)
authorpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Jun 2007 15:20:14 +0000 (15:20 +0000)
committerpcrochet <pcrochet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 5 Jun 2007 15:20:14 +0000 (15:20 +0000)
16 files changed:
MUON/AliMUONTriggerGUI.cxx [new file with mode: 0644]
MUON/AliMUONTriggerGUI.h [new file with mode: 0644]
MUON/AliMUONTriggerGUIbdmap.cxx [new file with mode: 0644]
MUON/AliMUONTriggerGUIbdmap.h [new file with mode: 0644]
MUON/AliMUONTriggerGUIboard.cxx [new file with mode: 0644]
MUON/AliMUONTriggerGUIboard.h [new file with mode: 0644]
MUON/AliMUONTriggerGUIdimap.cxx [new file with mode: 0644]
MUON/AliMUONTriggerGUIdimap.h [new file with mode: 0644]
MUON/READMETriggerGUI [new file with mode: 0644]
MUON/data/guimap.gif [new file with mode: 0644]
MUON/data/guimapix11.txt [new file with mode: 0644]
MUON/data/guimapiy11.txt [new file with mode: 0644]
MUON/data/guimapp11.txt [new file with mode: 0644]
MUON/data/guimapp12.txt [new file with mode: 0644]
MUON/data/guimapp13.txt [new file with mode: 0644]
MUON/data/guimapp14.txt [new file with mode: 0644]

diff --git a/MUON/AliMUONTriggerGUI.cxx b/MUON/AliMUONTriggerGUI.cxx
new file mode 100644 (file)
index 0000000..b35d020
--- /dev/null
@@ -0,0 +1,1497 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#include "AliMUONTriggerGUI.h"
+#include "AliMUONTriggerGUIboard.h"
+#include "AliMUONTriggerGUIdimap.h"
+#include "AliMUONTriggerGUIbdmap.h"
+
+#include "AliMpSegmentation.h"
+#include "AliMpVSegmentation.h"
+#include "AliMpPad.h"
+#include "AliMpIntPair.h"
+#include "AliMUON.h"
+#include "AliMUONData.h"
+#include "AliMpDEIterator.h"
+#include "AliMUONGeometryTransformer.h"
+#include "AliMUONTriggerCrateStore.h"
+#include "AliMUONLocalTriggerBoard.h"
+#include "AliMUONTriggerElectronics.h"
+#include "AliMUONCalibrationData.h"
+
+#include "AliRun.h"
+#include "AliRunLoader.h"
+#include "AliCDBManager.h"
+
+#include <TSystem.h>
+#include <TGLabel.h>
+#include <TGFrame.h>
+#include <TApplication.h>
+#include <TGDimension.h>
+#include <TString.h>
+#include <TGMenu.h>
+#include <TGTextEntry.h>
+#include <TGButton.h>
+#include <TFile.h>
+#include <TGImageMap.h>
+#include <TGTextBuffer.h>
+
+/// \cond CLASSIMP
+ClassImp(AliMUONTriggerGUI)
+/// \endcond
+
+//__________________________________________________________________________
+AliMUONTriggerGUI::AliMUONTriggerGUI()
+  : TObject(),
+    fMain(0),
+    fImageMap(0),
+    fTxtBuffer1(0),
+    fTxtBuffer2(0),
+    fTxtCircuit(0),
+    fRunInput(0),
+    fError(0),
+    fControl(0),
+    fCircuit(0),
+    fSkipToEventTxt(0),
+    fFileName(0),
+    fPath(0),
+    fEvString(0),
+    fChamber(0),
+    fEvent(0),
+    fEventsPerRun(0),
+    fLoader(0),
+    fRunLoader(0),
+    fCDBManager(0),
+    fCalibrationData(0),
+    fBoardsInit(0),
+    fDiMap(0),
+    fTriggerProcessor(0),
+    fMUONData(0),
+    fBoards(0)
+{
+  /// main GUI frame of the trigger monitor
+
+  fChamber = 0;
+  fEvent   = 0;
+  fEventsPerRun = 0;
+  fRunLoader = 0;
+  fDiMap = 0;
+
+  fBoards = 0;
+  fFileName = new TString("");
+  fEvString = new TString("");
+  fPath = new TString("");
+
+  fTriggerProcessor = 0;
+
+  fCDBManager = AliCDBManager::Instance();
+  fCDBManager->SetDefaultStorage("local://$ALICE_ROOT");
+  fCalibrationData = new AliMUONCalibrationData(0);  // runnumber zero
+  
+  // Main frame
+
+  fMain = new TGMainFrame(gClient->GetRoot(), 750, 420);
+  fMain->Connect("CloseWindow()", "AliMUONTriggerGUI", this, "CloseWindow()");
+
+  // Menu bar
+  
+  TGMenuBar *menuBar = new TGMenuBar(fMain);
+  
+  // File menu
+
+  TGPopupMenu *menuFile = new TGPopupMenu(gClient->GetRoot());
+  //menuFile->AddLabel("");
+
+  menuFile->AddEntry("Run",     kMFILERUN);
+  menuFile->AddEntry("Control", kMFILECNTRL);
+  menuFile->AddEntry("Exit",    kMFILEEXIT);
+
+  menuFile->Connect("Activated(Int_t)", "AliMUONTriggerGUI", this, "HandleMenu(Int_t)");
+
+  // Circuit menu
+
+  TGPopupMenu *menuCircuit = new TGPopupMenu(gClient->GetRoot());
+  //menuCircuit->AddLabel("");
+
+  menuCircuit->AddEntry("Open",     kMCIRCUITOPEN);
+
+  menuCircuit->Connect("Activated(Int_t)", "AliMUONTriggerGUI", this, "HandleMenu(Int_t)");
+
+  // Digits map menu
+
+  TGPopupMenu *menuMap = new TGPopupMenu(gClient->GetRoot());
+  //menuMap->AddLabel("");
+
+  menuMap->AddEntry("Digits map",   kMMAPDIGITS);
+  menuMap->AddEntry("Reset digits", kMRESETDIGITS);
+
+  menuMap->Connect("Activated(Int_t)", "AliMUONTriggerGUI", this,
+                   "HandleMenu(Int_t)");
+
+  // Trigger menu
+
+  TGPopupMenu *menuTrigger = new TGPopupMenu(gClient->GetRoot());
+  //menuTrigger->AddLabel("");
+
+  menuTrigger->AddEntry("Trigger DSET",     kMTRIGGERDSET);
+
+  menuTrigger->Connect("Activated(Int_t)", "AliMUONTriggerGUI", this, "HandleMenu(Int_t)");
+
+  // Add menus to the menu bar
+
+  menuBar->AddPopup("File", menuFile, 
+                   new TGLayoutHints(kLHintsTop | kLHintsLeft, 5,5,2,2)
+                   );
+
+  menuBar->AddPopup("Maps", menuMap, 
+                   new TGLayoutHints(kLHintsTop | kLHintsLeft, 5,5,2,2)
+                   );
+
+  menuBar->AddPopup("Circuit", menuCircuit, 
+                   new TGLayoutHints(kLHintsTop | kLHintsLeft, 5,5,2,2)
+                   );
+
+  menuBar->AddPopup("Trigger", menuTrigger, 
+                   new TGLayoutHints(kLHintsTop | kLHintsLeft, 5,5,2,2)
+                   );
+
+  // Add menu bar to the main frame
+
+  fMain->AddFrame(menuBar,
+                 new TGLayoutHints(kLHintsTop | 
+                                   kLHintsLeft | 
+                                   kLHintsExpandX, 
+                                   0, 0, 1, 1)
+                 );
+  // The image map
+
+  fImageMap = new TGImageMap(fMain,"$ALICE_ROOT/MUON/data/guimap.gif");
+  
+  fImageMap->Connect("RegionClicked(Int_t)", "AliMUONTriggerGUI", this, "OpenBoard(Int_t)");
+
+  fImageMap->SetToolTipText("Map of the local boards as seen from the I.P.");
+
+  // Add image map to the main frame
+
+  fMain->AddFrame(fImageMap);
+  fMain->SetWindowName("Map of the local boards as seen from the I.P.");
+
+  // Resize the main frame
+  
+  TGDimension size = fMain->GetDefaultSize();
+  fMain->Resize(size);
+
+  fMain->MapSubwindows();
+
+  fMain->MapWindow();
+
+  fBoardsInit = kFALSE;
+
+  //HandleMenu(kMFILERUN);  // temporary
+
+  //InitBoards();
+  //Init();
+  
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUI::AliMUONTriggerGUI(const AliMUONTriggerGUI& gui)
+  : TObject(),
+    fMain(0),
+    fImageMap(0),
+    fTxtBuffer1(0),
+    fTxtBuffer2(0),
+    fTxtCircuit(0),
+    fRunInput(0),
+    fError(0),
+    fControl(0),
+    fCircuit(0),
+    fSkipToEventTxt(0),
+    fFileName(0),
+    fPath(0),
+    fEvString(0),
+    fChamber(0),
+    fEvent(0),
+    fEventsPerRun(0),
+    fLoader(0),
+    fRunLoader(0),
+    fCDBManager(0),
+    fCalibrationData(0),
+    fBoardsInit(0),
+    fDiMap(0),
+    fTriggerProcessor(0),
+    fMUONData(0),
+    fBoards(0)
+{
+  /// copy constructor
+
+  gui.Dump();
+  Fatal("AliMUONTriggerGUI","copy constructor not implemented");
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUI & AliMUONTriggerGUI::operator=(const AliMUONTriggerGUI& gui)
+{
+  /// asignment operator
+
+  gui.Dump();
+  Fatal("AliMUONTriggerGUI","assignment operator not implemented");
+
+  return *this;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::HandleMenu(Int_t id)
+{
+  /// handles entry numbers in the available menus (EMenuIdentifiers)
+
+  TGCompositeFrame *runInput1, *runInput2, *runInput3;
+  TGCompositeFrame *control1, *control2, *circuit1, *circuit2;
+  TGLabel *runL1, *runL2, *circuitL1;
+  TGTextEntry *runText1, *runText2, *circuitText1;
+  TGTextButton *runApply, *runCancel; 
+  TGTextButton *controlClose, *nextEvent, *previousEvent, *skipToEvent;
+  TGTextButton *circuitCancel, *circuitOpen;
+
+  Int_t trigInfo[kNBoards*6] = {-1};
+  Int_t nLocalTrigger = 0;
+
+  TString error = TString("");
+  if (id != kMFILEEXIT && id != kMFILERUN && fRunLoader == 0) {
+    error.Append("Run not initialized (Menu: File/Run)");
+    DoErrorGUI(error.Data());
+    return;
+  }
+
+  switch (id) {
+
+  case kMFILEEXIT:
+
+    printf("\nBye. \n");
+    CloseWindow();
+    break;
+    
+  case kMFILERUN:
+    
+    // input main frame
+
+    fRunInput = new TGTransientFrame(gClient->GetRoot(), fMain, 400, 200);
+    fRunInput->Connect("CloseWindow()", "AliMUONTriggerGUI", this, "CloseRunInput()");
+    fRunInput->DontCallClose(); // to avoid double deletions.
+
+    // use hierarchical cleaning
+    fRunInput->SetCleanup(kDeepCleanup);
+
+    fRunInput->SetWindowName("Input file and event number");
+
+    // input galice and event number frames
+
+    runInput1 = new TGCompositeFrame(fRunInput, 400, 200, kHorizontalFrame);
+    runInput2 = new TGCompositeFrame(fRunInput, 400, 200, kHorizontalFrame);
+
+    // .. with labels
+
+    runL1 = new TGLabel(runInput1, new TGString("Path to gAlice:"));
+    runL2 = new TGLabel(runInput2, new TGString("Event number:"));
+
+    // galice text entry
+
+    runText1 = new TGTextEntry(runInput1, fTxtBuffer1 = new TGTextBuffer(100));
+
+    //fPath->Append("dset");                 // temporary
+    //fTxtBuffer1->AddText(0,fPath->Data());  // temporary
+
+    runText1->SetToolTipText("Enter the path to galice.root");
+    runText1->Resize(300, runText1->GetDefaultHeight());
+
+    // event number text entry
+
+    runText2 = new TGTextEntry(runInput2, fTxtBuffer2 = new TGTextBuffer(5));
+
+    fEvString->Form("%d",0);               
+    fTxtBuffer2->AddText(0,fEvString->Data());
+
+    runText2->SetToolTipText("Enter the first event number to start with");
+    runText2->Resize(300, runText2->GetDefaultHeight());
+
+    // add to galice frame
+
+    runInput1->AddFrame(runL1,
+                        new TGLayoutHints(kLHintsLeft | 
+                                          kLHintsCenterY, 
+                                          3, 5, 0, 0)
+                       );
+
+    runInput1->AddFrame(runText1, 
+                       new TGLayoutHints(kLHintsRight | 
+                                         kLHintsCenterY, 
+                                         0, 2, 0, 0)
+                       );
+
+    // add to event number frame
+
+    runInput2->AddFrame(runL2,
+                        new TGLayoutHints(kLHintsLeft | 
+                                          kLHintsCenterY, 
+                                          3, 5, 0, 0)
+                       );
+
+    runInput2->AddFrame(runText2, 
+                       new TGLayoutHints(kLHintsRight | 
+                                         kLHintsCenterY, 
+                                         0, 2, 0, 0)
+                       );
+
+    // add input frames to main input frame
+
+    fRunInput->AddFrame(runInput1, 
+                       new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 3, 0));
+    
+    fRunInput->AddFrame(runInput2, 
+                       new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 3, 0));
+    
+    // frame with buttons
+
+    runInput3 = new TGCompositeFrame(fRunInput, 400, 200, kHorizontalFrame);
+
+    // buttons
+
+    runApply = new TGTextButton(runInput3, "Apply", 1);
+    runApply->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoRunApply()");
+    runApply->SetToolTipText("Apply changes");
+
+    runCancel = new TGTextButton(runInput3, "Cancel", 2);
+    runCancel->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoRunCancel()");    runCancel->SetToolTipText("Cancel changes");
+
+    // add buttons
+
+    runInput3->AddFrame(runApply, 
+                        new TGLayoutHints(kLHintsTop | 
+                                          kLHintsLeft, 
+                                          3, 3, 2, 2)
+                       );
+    
+    runInput3->AddFrame(runCancel, 
+                        new TGLayoutHints(kLHintsTop | 
+                                          kLHintsLeft, 
+                                          3, 3, 2, 2)
+                       );
+    
+    // add to the main input frame
+
+    fRunInput->AddFrame(runInput3, 
+                       new TGLayoutHints(kLHintsTop | 
+                                         kLHintsExpandX, 
+                                         2, 2, 3, 0)
+                       );
+    
+    fRunInput->MapSubwindows();
+    fRunInput->Resize();
+    fRunInput->MapWindow();
+
+    //DoRunApply();   // temporary
+
+    break;
+    
+  case kMFILECNTRL:
+
+    // control main frame
+
+    fControl = new TGTransientFrame(gClient->GetRoot(), fMain, 50, 50);
+    fControl->Connect("CloseWindow()", "AliMUONTriggerGUI", this, "CloseControl()");
+    fControl->DontCallClose(); // to avoid double deletions.
+  
+    // use hierarchical cleaning
+    fControl->SetCleanup(kDeepCleanup);
+  
+    fControl->SetWindowName("Run controls");
+
+    // frame to hold buttons
+
+    control1 = new TGCompositeFrame(fControl, 50, 50, kVerticalFrame);
+  
+    // buttons
+
+    controlClose = new TGTextButton(control1, "Close", 1);
+    controlClose->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoControlClose()");
+    //controlClose->Resize(300, controlClose->GetDefaultHeight());  
+
+    nextEvent = new TGTextButton(control1, "Next event", 2);
+    nextEvent->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoNextEvent()");
+
+    previousEvent = new TGTextButton(control1, "Previous event", 3);
+    previousEvent->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoPreviousEvent()");
+  
+    // frame to hold event skip
+
+    control2 = new TGCompositeFrame(fControl, 50, 50, kHorizontalFrame);
+  
+    // skip to event text field
+
+    fSkipToEventTxt = new TGTextEntry(control2, fTxtBuffer2 = new TGTextBuffer(5));
+
+    fTxtBuffer2->AddText(0,fEvString->Data());
+
+    // skip to event button
+
+    skipToEvent = new TGTextButton(control2, "Skip to event", 1);
+    skipToEvent->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoSkipToEvent()");
+
+    // add to event skip frame
+
+    control2->AddFrame(fSkipToEventTxt, 
+                      new TGLayoutHints(kLHintsTop | 
+                                        kLHintsRight, 
+                                        10, 10, 5, 5)
+                      );
+  
+    control2->AddFrame(skipToEvent, 
+                      new TGLayoutHints(kLHintsTop | 
+                                        kLHintsRight, 
+                                        10, 10, 5, 5)
+                      );
+  
+    // add buttons
+  
+    control1->AddFrame(controlClose, 
+                new TGLayoutHints(kLHintsBottom | 
+                                  kLHintsExpandX, 
+                                  10, 10, 5, 5)
+                );
+  
+    control1->AddFrame(nextEvent, 
+                new TGLayoutHints(kLHintsBottom | 
+                                  kLHintsExpandX, 
+                                  10, 10, 5, 5)
+                );
+  
+    control1->AddFrame(previousEvent, 
+                new TGLayoutHints(kLHintsBottom | 
+                                  kLHintsExpandX, 
+                                  10, 10, 5, 5)
+                );
+  
+    // add to the main frame
+
+    fControl->AddFrame(control1,
+                      new TGLayoutHints(kLHintsBottom |
+                                        kLHintsLeft | 
+                                        kLHintsCenterY, 
+                                        3, 5, 0, 0)
+                      );
+    
+    fControl->AddFrame(control2,
+                      new TGLayoutHints(kLHintsTop | 
+                                        kLHintsCenterX, 
+                                        3, 5, 0, 0)
+                      );
+    
+    fControl->MapSubwindows();
+    fControl->Resize();
+    fControl->MapWindow();
+   
+    break;
+
+  case kMMAPDIGITS:
+    
+    if (fDiMap == 0) {
+      fDiMap = new AliMUONTriggerGUIdimap(fLoader,fBoards,gClient->GetRoot(), fMain, 400, 200);
+    } else if (!fDiMap->IsOn()) {
+      fDiMap = new AliMUONTriggerGUIdimap(fLoader,fBoards,gClient->GetRoot(), fMain, 400, 200);
+    }
+
+    break;
+    
+  case kMRESETDIGITS:
+    
+    Int_t number, over, pos;
+    for (Int_t ib = 0; ib < kNBoards; ib++) {
+      AliMUONTriggerGUIboard *board = GetBoard(ib);
+      board->ClearXDigits();
+      board->ClearYDigits();
+      // extended y-strips
+      number = board->GetNumber();
+      pos    = board->GetPosition();
+      over   = board->GetYOver();
+      for (Int_t io = 1; io <= over; io++) {
+       if (io == pos) continue;
+       board = GetBoard(number+io-pos);
+       board->ClearYDigits();
+      }
+    }
+
+    break;
+    
+  case kMCIRCUITOPEN:
+
+    fCircuit = new TGTransientFrame(gClient->GetRoot(), fMain, 50, 50);
+    fCircuit->Connect("CloseWindow()", "AliMUONTriggerGUI", this, "CloseCircuit()");
+    fCircuit->DontCallClose(); // to avoid double deletions.
+  
+    // use hierarchical cleaning
+    fCircuit->SetCleanup(kDeepCleanup);
+  
+    fCircuit->SetWindowName("Board circuit");
+
+    // sub-frames
+
+    circuit1 = new TGCompositeFrame(fCircuit, 400, 200, kHorizontalFrame);
+    circuit2 = new TGCompositeFrame(fCircuit, 400, 200, kHorizontalFrame);
+
+    // labels
+
+    circuitL1 = new TGLabel(circuit1, new TGString("Circuit number:"));
+    
+    // text entry
+    
+    circuitText1 = new TGTextEntry(circuit1, fTxtCircuit = new TGTextBuffer(10));
+    // buttons
+
+    circuitCancel = new TGTextButton(circuit2, "Cancel", 1);
+    circuitCancel->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoCircuitCancel()");
+    //circuitCancel->Resize(100, circuitCancel->GetDefaultHeight());  
+
+    circuitOpen = new TGTextButton(circuit2, "Open", 2);
+    circuitOpen->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoCircuitOpen()");
+    //circuitOpen->Resize(100, circuitOpen->GetDefaultHeight());  
+
+    // adding
+
+    circuit1->AddFrame(circuitL1,
+                      new TGLayoutHints(kLHintsLeft | 
+                                        kLHintsCenterY, 
+                                        5, 5, 2, 2)
+                      );
+    
+    circuit1->AddFrame(circuitText1, 
+                      new TGLayoutHints(kLHintsRight | 
+                                        kLHintsCenterY, 
+                                        0, 2, 2, 2)
+                      );
+    
+    circuit2->AddFrame(circuitCancel, 
+                new TGLayoutHints(kLHintsBottom | 
+                                  kLHintsCenterY, 
+                                  5, 5, 2, 2)
+                );
+  
+    circuit2->AddFrame(circuitOpen, 
+                new TGLayoutHints(kLHintsBottom | 
+                                  kLHintsCenterY, 
+                                  5, 5, 2, 2)
+                );
+  
+    fCircuit->AddFrame(circuit1, 
+                      new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 3, 0));
+    
+    fCircuit->AddFrame(circuit2, 
+                      new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 3, 0));
+    
+    fCircuit->MapSubwindows();
+    fCircuit->Resize();
+    fCircuit->MapWindow();
+
+    break;
+
+  case kMTRIGGERDSET:
+
+    //cout << "Trigger with fMUONData digits....." << endl;
+    /*
+    fMUONData->SetTreeAddress("D");
+    fMUONData->GetDigits();
+    fTriggerProcessor = new AliMUONTriggerElectronics(fMUONData,fCalibrationData);
+    fTriggerProcessor->FeedM();
+    */
+    cout << "Trigger with boards digits....." << endl;
+    fTriggerProcessor->FeedBoardsGUI(Boards());
+
+    nLocalTrigger = fTriggerProcessor->TriggerGUI(trigInfo,kTRUE);
+
+    cout << "Trigger done with " << nLocalTrigger << " local decisions !" << endl;
+
+    for (Int_t ilo = 0; ilo < nLocalTrigger; ilo++) {
+
+      cout << "Local decision " << ilo << endl;
+      cout << "Circuit = "  << trigInfo[6*ilo+0] << endl;
+      cout << "LoStripX = " << trigInfo[6*ilo+1] << endl;
+      cout << "LoStripY = " << trigInfo[6*ilo+2] << endl;
+      cout << "LoDev = "    << trigInfo[6*ilo+3] << endl;
+      cout << "LoLpt = "    << trigInfo[6*ilo+4] << endl;
+      cout << "LoHpt = "    << trigInfo[6*ilo+5] << endl;
+      cout                                       << endl;
+    }
+      
+    break;
+
+  default:
+    printf("Menu item %d selected\n", id);
+    break;
+    
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::CloseRunInput() const
+{
+  /// close the run input frame
+
+  delete fRunInput;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::CloseError() const
+{
+  /// close the error frame
+
+  delete fError;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::CloseControl() const
+{
+  /// close the event control frame
+
+  delete fControl;
+
+  //gSystem->Exec("cd $PWD/mtrun; aliroot -b -q mtsim.C");
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::CloseCircuit() const
+{
+  /// close the circuit frame
+
+  delete fCircuit;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::CloseWindow() 
+{
+  /// close the main frame and exit aplication
+
+  delete fRunLoader;
+  printf("\n"); 
+  gApplication->Terminate(); 
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoRunApply()
+{
+  /// apply changes in the run control frame
+
+  printf("Input 1 = %s \n",fTxtBuffer1->GetString());
+
+  TString es = TString(fTxtBuffer2->GetString());
+  fEvent = es.Atoi();
+
+  printf("Input 2 = %s event = %d \n",fTxtBuffer2->GetString(),fEvent);
+
+  TString error = TString("");;
+
+  fPath->Form("%s",fTxtBuffer1->GetString());
+  fFileName->Form("%s",fTxtBuffer1->GetString());
+  printf("File location: %s \n",fFileName->Data());
+
+  if (gSystem->AccessPathName(fFileName->Data()) || !fFileName->EndsWith(".root")) {
+
+    error.Append("No galice file: ");
+    error.Append(fFileName->Data());
+    DoErrorGUI(error.Data());
+
+  } else {
+
+    TFile *ftest = new TFile(fFileName->Data(),"READ");
+    AliRun *galice = (AliRun*)ftest->Get("gAlice");
+    if (galice == 0) {
+
+      ftest->Close();
+      delete ftest;
+      
+      error.Append("No gAlice in file: ");
+      error.Append(fFileName->Data());
+      DoErrorGUI(error.Data());
+
+      return;
+
+    } else {
+      ftest->Close();
+      delete ftest;
+    }
+
+    if (fRunLoader) delete fRunLoader;
+
+    fRunLoader = AliRunLoader::Open(fFileName->Data(),"MUONFolder","READ");
+
+    if (fRunLoader == 0x0) {
+
+      DoErrorGUI("No run loader !");
+
+    } else {
+      
+      fRunLoader->LoadgAlice();
+      gAlice = fRunLoader->GetAliRun();
+      fEventsPerRun = gAlice->GetEventsPerRun();
+      
+      fLoader = fRunLoader->GetLoader("MUONLoader");
+      fLoader->LoadDigits("READ");
+      fRunLoader->GetEvent(fEvent);
+           
+      fRunInput->SendCloseMessage();
+      
+      if (!fBoardsInit) {
+       InitBoards();
+      }
+      
+      if (fDiMap) {
+       if (fDiMap->IsOn()) {
+         fDiMap->SetLoader(fLoader);
+       }
+      }
+      
+      fMUONData = new AliMUONData(fLoader,"MUON","MUON");
+      fMUONData->SetTreeAddress("D,GLT");
+
+      fTriggerProcessor = new AliMUONTriggerElectronics(0,fCalibrationData);
+      /*
+      fRunLoader->LoadKinematics();
+
+      AliStack* stack = gAlice->Stack();
+      Int_t nParticles = stack->GetNtrack();
+      Int_t nPrimaries = stack->GetNprimary();
+
+      TParticle *part;
+      Int_t nMuons = 0;
+      Int_t pdgCode;
+      Double_t px, py, pz, theta, phi;
+      for (Int_t i = 0; i < nPrimaries; i++) {
+       part = stack->Particle(i);
+       if (!part) continue;
+       if (TMath::Abs(part->GetPdgCode()) == 13) {
+         nMuons++;
+         pdgCode = part->GetPdgCode();
+         px = part->Px();
+         py = part->Py();
+         pz = part->Pz();
+         theta = part->Theta();
+         phi = part->Phi();
+         printf("Kine %d px %f py %f pz %f th %f ph %f \n",pdgCode,px,py,pz,theta,phi); 
+       }
+      }
+      */
+    }
+
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoRunCancel()
+{
+  /// cancel the changes in the run control frame
+
+  printf("Input 1 = %s \n",fTxtBuffer1->GetString());
+
+  TString es = TString(fTxtBuffer2->GetString());
+  fEvent = es.Atoi();
+
+  printf("Input 2 = %s event = %d \n",fTxtBuffer2->GetString(),fEvent);
+
+  fRunInput->SendCloseMessage();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoErrorGUI(const Char_t *wt)
+{
+  /// show an error message in a new frame
+
+  fError = new TGTransientFrame(gClient->GetRoot(), fMain, 50, 50);
+  fError->Connect("CloseWindow()", "AliMUONTriggerGUI", this, "CloseError()");
+  fError->DontCallClose(); // to avoid double deletions.
+  
+  // use hierarchical cleaning
+  fError->SetCleanup(kDeepCleanup);
+  
+  fError->SetWindowName("Error !");
+
+  TGCompositeFrame *fW = new TGCompositeFrame(fError, 50, 50, kVerticalFrame);
+  
+  TGTextButton *fErrorOK = new TGTextButton(fW, "&Ok", 1);
+  fErrorOK->Connect("Clicked()", "AliMUONTriggerGUI", this, "DoErrorOK()");
+  
+  fW->AddFrame(fErrorOK, 
+              new TGLayoutHints(kLHintsBottom | 
+                                kLHintsCenterX, 
+                                5, 5, 5, 5)
+              );
+  
+  TGLabel *fWL = new TGLabel(fW, new TGString(wt));
+  
+  fW->AddFrame(fWL,
+              new TGLayoutHints(kLHintsTop | 
+                                kLHintsCenterX, 
+                                5, 5, 5, 5)
+              );
+  
+  fError->AddFrame(fW,
+                  new TGLayoutHints(kLHintsLeft | 
+                                    kLHintsCenterY, 
+                                    5, 5, 5, 5)
+                  );
+  
+  fError->MapSubwindows();
+  fError->Resize();
+  fError->MapWindow();
+   
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoNextEvent()
+{
+  /// load next event from the file
+
+  TString error = TString("");
+
+  if (fEvent < (fEventsPerRun-1)) {
+    fEvent++;
+    fRunLoader->GetEvent(fEvent);
+
+    fEvString->Form("%d",fEvent);               
+    fTxtBuffer2->RemoveText(0,5);
+    fTxtBuffer2->AddText(0,fEvString->Data());
+    fSkipToEventTxt->SetFocus();
+
+  } else {
+    error.Form("Only %d event(s) in the run !",fEventsPerRun);
+    DoErrorGUI(error.Data());
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoPreviousEvent()
+{
+  /// load previous event from the input file
+
+  TString error = TString("");
+
+  if (fEvent > 0) {
+    fEvent--;
+    fRunLoader->GetEvent(fEvent);
+
+    fEvString->Form("%d",fEvent);               
+    fTxtBuffer2->RemoveText(0,5);
+    fTxtBuffer2->AddText(0,fEvString->Data());
+    fSkipToEventTxt->SetFocus();
+
+  } else {
+    error.Form("Already at event 0 !");
+    DoErrorGUI(error.Data());
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoSkipToEvent()
+{
+  /// skip to event -input- from the input file
+
+  TString error = TString("");
+
+  TString es = TString(fTxtBuffer2->GetString());
+  fEvent = es.Atoi();
+
+  if (fEvent < 0 || fEvent > (fEventsPerRun-1)) {
+    error.Form("Event number out of range !");
+    DoErrorGUI(error.Data());
+  } else {
+    fRunLoader->GetEvent(fEvent);
+    /*
+    fRunLoader->LoadKinematics();
+
+    AliStack* stack = gAlice->Stack();
+    Int_t nParticles = stack->GetNtrack();
+    Int_t nPrimaries = stack->GetNprimary();
+    
+    TParticle *part;
+    Int_t nMuons = 0;
+    Int_t pdgCode;
+    Double_t px, py, pz, theta, phi;
+    for (Int_t i = 0; i < nPrimaries; i++) {
+      part = stack->Particle(i);
+      if (!part) continue;
+      if (TMath::Abs(part->GetPdgCode()) == 13) {
+       nMuons++;
+       pdgCode = part->GetPdgCode();
+       px = part->Px();
+       py = part->Py();
+       pz = part->Pz();
+       theta = part->Theta();
+       phi = part->Phi();
+       printf("Kine %d px %f py %f pz %f th %f ph %f \n",pdgCode,px,py,pz,theta,phi); 
+      }
+    }
+    */    
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoErrorOK()
+{
+  /// close the error frame
+
+  fError->SendCloseMessage();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoControlClose()
+{
+  /// close the event control frame
+
+  fControl->SendCloseMessage();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoCircuitCancel()
+{
+  /// close the circuit frame
+
+  fCircuit->SendCloseMessage();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::DoCircuitOpen()
+{
+  /// open a circuit
+
+  TString cs = TString(fTxtCircuit->GetString());
+  Int_t icirc = cs.Atoi();
+
+  AliMUONTriggerGUIboard *board;
+
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+
+    board = GetBoard(ib);
+
+    if (board->GetIdCircuit() == icirc) {
+
+      OpenBoard(ib);
+
+      if (fDiMap) {
+       if (fDiMap->IsOn()) {
+         fDiMap->SelectBoard(ib);
+       }
+      }
+      
+      fCircuit->SendCloseMessage();
+      return;
+    }
+
+  }
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIboard* AliMUONTriggerGUI::GetBoard(Int_t id) const
+{
+  /// return board with "id"
+
+  if (fBoards == 0) return 0;
+  void * b = fBoards->UncheckedAt(id);
+  if (b == 0) return 0;
+
+  return (AliMUONTriggerGUIboard*)b;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::OpenBoard(Int_t id)
+{
+  /// open board with "id" in a new frame
+   
+  AliMUONTriggerGUIboard *board = GetBoard(id);
+  UShort_t status = board->GetStatus();
+  board->SetOpen(kTRUE);
+
+  AliMUONTriggerGUIbdmap *bf;
+  Char_t text[200];
+
+  bf = new AliMUONTriggerGUIbdmap(gClient->GetRoot(), fMain, 400, 200);
+
+  if (status & kGood) {
+    sprintf(text,"%s (Circuit %4d) status : working",
+           board->GetBoardName(),board->GetIdCircuit());
+  }
+
+  if (status & kWithProblems) {
+    sprintf(text,"%s (Circuit %4d)  status : has problems...",
+           board->GetBoardName(),board->GetIdCircuit());
+  }
+
+  if (status & kNotWorking) {
+    sprintf(text,"%s (Circuit %4d)  status : not working",
+           board->GetBoardName(),board->GetIdCircuit());
+  }
+
+  if (status & kUnknown) {
+    sprintf(text,"%s (Circuit %4d)  status : unknown",
+           board->GetBoardName(),board->GetIdCircuit());
+  }
+
+  bf->SetName(text);
+  bf->SetBoard(Boards(),id);
+  bf->SetLoader(fLoader);
+  bf->Init();
+
+  bf->Show();
+
+  if (fDiMap) {
+    if (fDiMap->IsOn()) {
+      fDiMap->SelectBoard(id);
+    }
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::Init()
+{
+  /// initialize the main GUI frame
+  
+  if (!fBoardsInit) {
+    InitBoards();
+  }
+
+  /*
+  AliMUONTriggerGUIboard *board;
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+    board = GetBoard(ib);
+    board->Dump();
+  }
+  */
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::InitBoards()
+{
+  /// create board objects and define the sensitive regions in the image map
+  
+  fBoardsInit = kTRUE;
+
+  AliMUONTriggerCrateStore* crateManager = new AliMUONTriggerCrateStore();
+  crateManager->ReadFromFile();
+
+  Int_t nPixelX = 700;
+  Int_t nPixelY = 676;
+
+  Int_t nPixelBorderX = 40;  // to guess...
+  Int_t nPixelBorderY = 40;  // to guess...
+
+  Float_t boardsX = 2*257.00;  // cm
+  Float_t boardsY = 2*306.61;  // cm
+
+  FILE *fmap;
+
+  Int_t side, col, line, nbx, detElemId = 0;
+  UShort_t status = 1;
+  Float_t xCenter, yCenter, zCenter, xWidth, yWidth;
+  Float_t xc, yc;
+  Char_t name[8], text[200];
+  Int_t x, y;
+  UInt_t w, h;
+  Int_t xp[5];
+  Int_t yp[5];
+  TString mapspath = gSystem->Getenv("ALICE_ROOT");
+  mapspath.Append("/MUON/data");
+
+  TGRegion *reg;
+  AliMUONTriggerGUIboard *board;
+
+  // regions for the image map
+
+  sprintf(text,"%s/guimapp11.txt",mapspath.Data());
+  fmap = fopen(text,"r");
+
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+
+    fscanf(fmap,"%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",&side,&col,&line,&nbx,&xCenter,&yCenter,&xWidth,&yWidth,&zCenter,&name[0]);
+
+    //printf("%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",side,col,line,nbx,xCenter,yCenter,xWidth,yWidth,zCenter,name);
+
+    board = new AliMUONTriggerGUIboard(ib,name);
+
+    status = 1;
+    board->SetStatus(status);
+
+    // calculate detElemId%100
+    // side=0 left
+    // side=1 right
+    // ALICE SC
+    if (side == 0)              detElemId = 14 - line;
+    if (side == 1 && line <  5) detElemId = 13 + line;
+    if (side == 1 && line >= 5) detElemId = line - 5;
+    
+    board->SetDetElemId(detElemId);
+
+    Boards()->Add(board);
+
+    xc = xCenter;
+    yc = yCenter;
+
+    x = (Int_t)(nPixelX/2 + xc * (nPixelX - 2*nPixelBorderX)/boardsX);
+    y = (Int_t)(nPixelY/2 - yc * (nPixelY - 2*nPixelBorderY)/boardsY);
+
+    if (x < 0) x = 0;
+    if (y < 0) y = 0;
+
+    w = (UInt_t)(xWidth*(nPixelX-2*nPixelBorderX)/boardsX);
+    h = (UInt_t)(yWidth*(nPixelY-2*nPixelBorderY)/boardsY);
+    
+    xp[0] = x-w/2;
+    xp[1] = x+w/2;
+    xp[2] = x+w/2;
+    xp[3] = x-w/2;
+    xp[4] = x-w/2;
+    
+    yp[0] = y-h/2;
+    yp[1] = y-h/2;
+    yp[2] = y+h/2;
+    yp[3] = y+h/2;
+    yp[4] = y-h/2;
+
+    reg = new TGRegion(5,xp,yp);
+    fImageMap->AddRegion(*reg, ib);
+
+    if (status & kGood) {
+      sprintf(text,"%s working",name);
+    }
+    if (status & kWithProblems) {
+      sprintf(text,"%s has problems...",name);
+    }
+    if (status & kNotWorking) {
+      sprintf(text,"%s not working",name);
+    }
+    if (status & kUnknown) {
+      sprintf(text,"%s status unknown",name);
+    }
+    
+    //fImageMap->SetToolTipText(ib, text);
+    
+  }
+
+  fclose(fmap);
+  
+  // MT position and dimension in board
+  
+  for (Int_t imt = 0; imt < kNMT; imt++) {
+
+    sprintf(text,"%s/guimapp%2d.txt",mapspath.Data(),11+imt);
+
+    fmap = fopen(text,"r");
+
+    for (Int_t ib = 0; ib < kNBoards; ib++) {
+
+      fscanf(fmap,"%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",&side,&col,&line,&nbx,&xCenter,&yCenter,&xWidth,&yWidth,&zCenter,&name[0]);
+
+      board = GetBoard(ib);
+      board->SetDimensions(imt,xCenter,yCenter,zCenter,xWidth,yWidth);
+
+    }
+
+    fclose(fmap);
+
+  }
+
+  // MT x-strips indices and circuit number
+  Int_t ix, iy1, iy2, sIx, sIy1, cathode, icirc;
+  sprintf(text,"%s/guimapix11.txt",mapspath.Data());
+
+  fmap = fopen(text,"r");
+  
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+    
+    fscanf(fmap,"%d   %d   %d   %d   %d   %d   %d   %s   \n",&side,&col,&line,&nbx,&ix,&iy1,&iy2,&name[0]);
+    
+    board = GetBoard(ib);
+    board->SetXSindex(ix,iy1,iy2);
+
+    // set the circuit number
+    detElemId = board->GetDetElemId();
+    detElemId += 100 * 11;
+    cathode = 0;
+    sIx  = board->GetXSix();
+    sIy1 = board->GetXSiy1();
+    const AliMpVSegmentation* seg = 
+      AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode));
+    
+    AliMpPad pad = seg->PadByIndices(AliMpIntPair(sIx,sIy1),kTRUE);
+    AliMpIntPair location = pad.GetLocation(0);
+
+    Int_t nboard = location.GetFirst();
+    AliMUONLocalTriggerBoard* b = crateManager->LocalBoard(nboard);
+    icirc = b->GetNumber();
+    board->SetBoardName((Char_t*)b->GetName());
+    board->SetIdCircuit(icirc);
+
+    TString crateName = b->GetCrate();
+    
+    sprintf(text,"%s (crate %s circuit %3d, number %3d)",board->GetBoardName(),crateName.Data(),icirc,ib);
+    fImageMap->SetToolTipText(ib, text);
+        
+  }
+  
+  fclose(fmap);
+
+  // MT y-strips indices
+  Int_t ix1, ix2, iy;
+
+  sprintf(text,"%s/guimapiy11.txt",mapspath.Data());
+  
+  fmap = fopen(text,"r");
+  
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+    
+    fscanf(fmap,"%d   %d   %d   %d   %d   %d   %d   %s   \n",&side,&col,&line,&nbx,&ix1,&ix2,&iy,&name[0]);
+    
+    board = GetBoard(ib);
+    board->SetYSindex(ix1,ix2,iy);
+    
+  }
+  
+  fclose(fmap);
+
+  // Extended y-strips over neighbouring boards
+
+  sprintf(text,"%s/guimapp11.txt",mapspath.Data());
+  
+  fmap = fopen(text,"r");
+  
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+    
+    fscanf(fmap,"%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",&side,&col,&line,&nbx,&xCenter,&yCenter,&xWidth,&yWidth,&zCenter,&name[0]);
+    
+    board = GetBoard(ib);
+
+    board->SetPosition(nbx);
+    
+    if ((col == 2 || col == 3) && (line >= 4 && line <= 6)) {
+      board->SetYOver(4);
+    } else
+      
+    if (col == 1 && (line == 4 || line == 6)) {
+      board->SetYOver(3);
+    } else
+       
+    if (col == 7 || line == 1 || line == 9) {
+      board->SetYOver(1);
+    } else
+         
+    {
+      board->SetYOver(2);
+    }
+    
+  }
+  
+  fclose(fmap);
+
+  // Set coordinates of strips boxes
+
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+    
+    board = GetBoard(ib);
+    SetStripBoxes(board);
+
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUI::SetStripBoxes(AliMUONTriggerGUIboard *board) 
+{
+  /// set coordinates of strip boxes
+
+  gAlice = fRunLoader->GetAliRun();
+  AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
+  const AliMUONGeometryTransformer* kGeomTransformer = pMUON->GetGeometryTransformer();
+
+  const AliMpVSegmentation* seg;
+  AliMpPad pad;
+  AliMpDEIterator it;
+
+  Int_t chamber, detElemId, maxX, maxY, ic;
+  Float_t xpmin, xpmax, ypmin, ypmax;
+  Float_t xg1, xg2, yg1, yg2, zg1;
+  Float_t xlocal1, xlocal2, ylocal1, ylocal2;
+  Float_t xCenter, yCenter, xWidth, yWidth;
+
+  for (Int_t i = 0; i < kNMT; i++) {
+
+    chamber = 11+i;
+
+    xCenter = board->GetXCenter(i);
+    yCenter = board->GetYCenter(i);
+    xWidth  = board->GetXWidth(i);
+    yWidth  = board->GetYWidth(i);
+
+    for ( it.First(chamber-1); ! it.IsDone(); it.Next() ) {
+    
+      detElemId = it.CurrentDEId();
+    
+      if (detElemId%100 != board->GetDetElemId()) continue;
+
+      /*---------- y-pads ic = 2 ----------*/
+      ic = 2;
+      
+      seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId, AliMp::GetCathodType(ic-1));
+
+      maxX = seg->MaxPadIndexX();
+      maxY = seg->MaxPadIndexY();
+      
+      for (Int_t ix = 0; ix <= maxX; ix++) {
+       for (Int_t iy = 0; iy <= maxY; iy++) {
+         
+         pad = seg->PadByIndices(AliMpIntPair(ix,iy),kFALSE);
+         
+         if (!pad.IsValid()) continue;
+         
+         // get the pad position and dimensions
+         xlocal1 = pad.Position().X();
+         ylocal1 = pad.Position().Y();
+         xlocal2 = pad.Dimensions().X();
+         ylocal2 = pad.Dimensions().Y();
+         
+         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);
+         
+         xpmin -= xCenter;
+         xpmax -= xCenter;
+         ypmin -= yCenter;
+         ypmax -= yCenter;
+         
+         Int_t iX1, iX2, iY, ixDig;
+         iX1 = board->GetYSix1();
+         iX2 = board->GetYSix2();
+         iY  = board->GetYSiy();
+         if (ix >= iX1 && ix <= iX2 && iy == iY) {
+           
+           ypmin = -0.5*yWidth;
+           ypmax = +0.5*yWidth;
+
+           ixDig = ix - iX1;
+
+           board->SetYDigBox(i,ixDig,(Double_t)xpmin,(Double_t)ypmin,
+                                     (Double_t)xpmax,(Double_t)ypmax);
+
+         }
+
+       }  // end maxY
+      }  // end maxX
+
+      /*---------- x-pads ic = 1 ----------*/
+      ic = 1;
+      
+      seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId, AliMp::GetCathodType(ic-1));
+
+      maxX = seg->MaxPadIndexX();
+      maxY = seg->MaxPadIndexY();
+            
+      for (Int_t ix = 0; ix <= maxX; ix++) {
+       for (Int_t iy = 0; iy <= maxY; iy++) {
+         
+         pad = seg->PadByIndices(AliMpIntPair(ix,iy),kFALSE);
+         
+         if (!pad.IsValid()) continue;
+         
+         // get the pad position and dimensions
+         xlocal1 = pad.Position().X();
+         ylocal1 = pad.Position().Y();
+         xlocal2 = pad.Dimensions().X();
+         ylocal2 = pad.Dimensions().Y();
+         
+         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);
+         
+         xpmin -= xCenter;
+         xpmax -= xCenter;
+         ypmin -= yCenter;
+         ypmax -= yCenter;
+
+         Int_t iX, iY1, iY2, iyDig;
+         iX  = board->GetXSix();
+         iY1 = board->GetXSiy1();
+         iY2 = board->GetXSiy2();
+         if (ix == iX && iy >= iY1 && iy <= iY2) {
+
+           iyDig = iy - iY1;
+
+           board->SetXDigBox(i,iyDig,(Double_t)xpmin,(Double_t)ypmin,
+                                     (Double_t)xpmax,(Double_t)ypmax);
+
+         }
+
+       }  // end maxY
+      }  // end maxX
+
+    }  // end detElemId
+
+  }  // end kNMT loop
+       
+}
+
diff --git a/MUON/AliMUONTriggerGUI.h b/MUON/AliMUONTriggerGUI.h
new file mode 100644 (file)
index 0000000..b22917d
--- /dev/null
@@ -0,0 +1,149 @@
+#ifndef ALIMUONTRIGGERGUI_H
+#define ALIMUONTRIGGERGUI_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/// \ingroup evaluation
+/// \class AliMUONTriggerGUI
+/// \brief Trigger GUI utility class
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#include <TObject.h>
+#include <TObjArray.h>
+
+class TString;
+class TGMainFrame;
+class TGTransientFrame;
+class TGImageMap;
+class TGTextEntry;
+class TGTextBuffer;
+class TRootEmbeddedCanvas;
+class TParticle;
+class TGTableLayout;
+
+class AliStack;
+class AliLoader;
+class AliRunLoader;
+class AliCDBManager;
+class AliMUONCalibrationData;
+class AliMUONTriggerGUIboard;
+class AliMUONTriggerGUIdimap;
+class AliMUONData;
+class AliMUONTriggerElectronics;
+
+class AliMUONTriggerGUI : public TObject
+{
+
+public:
+
+  AliMUONTriggerGUI();
+  virtual ~AliMUONTriggerGUI() { 
+    /// main gui destructor 
+  };
+  
+  AliMUONTriggerGUI (const AliMUONTriggerGUI& board);
+  AliMUONTriggerGUI& operator=(const AliMUONTriggerGUI& board);
+
+  void OpenBoard(Int_t id);
+  void HandleMenu(Int_t id);
+
+  /* Do functions */
+
+  void DoRunApply();
+  void DoRunCancel();
+  void DoControlClose();
+  void DoCircuitCancel();
+  void DoCircuitOpen();
+  void DoErrorOK();
+  void DoNextEvent();
+  void DoPreviousEvent();
+  void DoSkipToEvent();
+  void DoErrorGUI(const Char_t *wt);
+
+  /* Close functions */
+
+  void CloseWindow();
+  void CloseRunInput() const;
+  void CloseError() const;
+  void CloseControl() const;
+  void CloseCircuit() const;
+
+private:
+  
+  enum { kNBoards = 234, kNMT = 4 };    ///< nr of boards, nr of chambers
+
+  enum EMenuIdentifiers {
+    
+    kMFILEEXIT,
+    kMFILERUN,
+    kMFILECNTRL,
+    
+    kMMAPDIGITS,
+    kMRESETDIGITS,
+
+    kMCIRCUITOPEN,
+
+    kMTRIGGERDSET
+
+  };                                    ///< gui menu identifiers
+
+  enum {
+    kGood = 0x0001, kWithProblems = 0x0002, kNotWorking = 0x0004, kUnknown = 0x0008
+  };                                ///< working status flags
+
+  TGMainFrame      *fMain;          ///< The main frame
+  TGImageMap       *fImageMap;      ///< The image map of the main frame
+  TGTextBuffer     *fTxtBuffer1;    ///< Path to the data (galice.root)
+  TGTextBuffer     *fTxtBuffer2;    ///< Current event number
+  TGTextBuffer     *fTxtCircuit;    ///< Circuit to open
+
+  TGTransientFrame *fRunInput;      ///< Run input window
+  TGTransientFrame *fError;         ///< Error window
+  TGTransientFrame *fControl;       ///< Run control window
+  TGTransientFrame *fCircuit;       ///< Circuit window
+
+  TGTextEntry      *fSkipToEventTxt;///< Control field shows current event number
+
+  TString          *fFileName;      ///< Full galice file name
+  TString          *fPath;          ///< Path string to galice
+  TString          *fEvString;      ///< Event number string
+
+  Int_t             fChamber;       ///< Current MT chamber
+  Int_t             fEvent;         ///< Current event number
+  Int_t             fEventsPerRun;  ///< Number of events per file (run)
+
+  AliLoader        *fLoader;        ///< The MUON loader
+  AliRunLoader     *fRunLoader;     ///< The run loader
+
+  AliCDBManager    *fCDBManager;    ///< Calibration DB manager
+  AliMUONCalibrationData *fCalibrationData;   ///< Calibration data for MUON
+
+  Bool_t            fBoardsInit;    ///< Control the InitBoards only once
+
+  AliMUONTriggerGUIdimap *fDiMap;   ///< Digits map
+
+  AliMUONTriggerElectronics *fTriggerProcessor;   ///< The GUI trigger processor
+  AliMUONData      *fMUONData;      ///< The MUON data manager
+
+  TObjArray *fBoards;               ///< The array of trigger boards
+  TObjArray *Boards() {
+    if(!fBoards) fBoards = new TObjArray(kNBoards); return fBoards;
+  };                                ///< Access the array of trigger boards
+  AliMUONTriggerGUIboard *GetBoard(Int_t id) const;
+
+  virtual void Init();
+  virtual void InitBoards();
+
+  void  SetStripBoxes(AliMUONTriggerGUIboard *board);
+
+  ClassDef(AliMUONTriggerGUI,1)      // Main GUI class for the MUON trigger
+
+};
+
+#endif
diff --git a/MUON/AliMUONTriggerGUIbdmap.cxx b/MUON/AliMUONTriggerGUIbdmap.cxx
new file mode 100644 (file)
index 0000000..3f6c314
--- /dev/null
@@ -0,0 +1,1501 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+// - single board map of the strips/digits                              //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#include <TPolyLine.h>
+#include <TStyle.h>
+#include <TGFrame.h>
+#include <TGButton.h>
+#include <TRootEmbeddedCanvas.h>
+#include <TBox.h>
+#include <TPaveText.h>
+#include <TGTextEdit.h>
+#include <TGText.h>
+#include <TTimer.h>
+#include <TObjArray.h>
+#include <TCanvas.h>
+
+#include "AliRun.h"
+#include "AliMUON.h"
+#include "AliMUONData.h"
+#include "AliMUONDigit.h"
+#include "AliMpVSegmentation.h"
+#include "AliMpSegmentation.h"
+#include "AliMUONGeometryTransformer.h"
+#include "AliMpDEIterator.h"
+#include "AliMUONLocalTrigger.h"
+#include "AliMUONLocalTriggerBoard.h"
+#include "AliMUONTriggerCrateStore.h"
+
+#include "AliMUONTriggerGUIboard.h"
+#include "AliMUONTriggerGUIbdmap.h"
+
+/// \cond CLASSIMP
+ClassImp(AliMUONTriggerGUIbdmap)
+/// \endcond
+
+//__________________________________________________________________________
+AliMUONTriggerGUIbdmap::AliMUONTriggerGUIbdmap(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h)
+  : TObject(),
+    fQObject(),
+    fMain(0),
+    fLocTrigE(0),
+    fBoard(0),
+    fLoader(0),
+    fMUONData(0),
+    fXStrips(0),
+    fYStrips(0),
+    fEditStrips(0),
+    fXOn(0),
+    fYOn(0),
+    fLabelX(0),
+    fLabelY(0),
+    fIsEditable(0),
+    fCanvasSize(0),
+    fNStripX(0),
+    fNStripY(0),
+    fBoards(0)
+{
+  /// frame constructor
+
+  gStyle->SetPadLeftMargin(0.05);
+  gStyle->SetPadRightMargin(0.05);
+  gStyle->SetPadTopMargin(0.05);
+  gStyle->SetPadBottomMargin(0.05);
+
+  fMain = new TGTransientFrame(p, main, w, h, kVerticalFrame);
+  fMain->Connect("CloseWindow()", "AliMUONTriggerGUIbdmap", this, "CloseWindow()");
+  fMain->DontCallClose(); // to avoid double deletions.
+  
+  // use hierarchical cleaning
+  fMain->SetCleanup(kDeepCleanup);
+
+  fMain->ChangeOptions((fMain->GetOptions() & ~kVerticalFrame) | kHorizontalFrame);
+
+  // strips/digits canvases
+  
+  fCanvasSize = 200;
+
+  TRootEmbeddedCanvas *recanvas[4];
+  Char_t ecname[1];
+  for (Int_t i = 0; i < kNMT; i++) {
+
+    sprintf(ecname,"%1d",i+1);
+    recanvas[i] = new TRootEmbeddedCanvas(ecname,fMain,fCanvasSize,fCanvasSize);
+    
+    fCanvas[i] = recanvas[i]->GetCanvas();
+    
+    fCanvas[i]->SetBorderMode(0);
+    fCanvas[i]->SetBit(kNoContextMenu);
+    
+    fCanvas[i]->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)",
+                       "AliMUONTriggerGUIbdmap",this,
+                       "EditStrips(Int_t,Int_t,Int_t,TObject*)");
+
+    fMain->AddFrame(recanvas[i],
+                   /*
+                   new TGTableLayoutHints(2,5,2,6,
+                                          kLHintsExpandX|kLHintsExpandY |
+                                          kLHintsShrinkX|kLHintsShrinkY |
+                                          kLHintsFillX|kLHintsFillY)
+                   */
+                   new TGLayoutHints(kLHintsTop | 
+                                     kLHintsLeft, 
+                                     2, 2, 2, 2)
+                   );
+
+  }
+
+  //TGDimension size = fMain->GetDefaultSize();
+  //fMain->Resize(size);
+    
+  // the other frames
+
+  TGCompositeFrame *cf0 = new TGCompositeFrame(fMain, 60, 20, kVerticalFrame);
+
+  TGCompositeFrame *cf1 = new TGCompositeFrame(cf0, 60, 20, kVerticalFrame | kFixedWidth);
+
+  cf1->AddFrame(fXStrips = new TGCheckButton(cf1, "Draw X strips and digits", 1),
+               new TGLayoutHints(kLHintsTop | 
+                                 kLHintsLeft, 
+                                 2, 2, 2, 2)
+               );
+
+  cf1->Resize(fXStrips->GetDefaultWidth()+10, fMain->GetDefaultHeight());
+
+  cf1->AddFrame(fYStrips = new TGCheckButton(cf1, "Draw Y strips and digits", 2),
+               new TGLayoutHints(kLHintsTop | 
+                                 kLHintsLeft, 
+                                 2, 2, 2, 2)          
+               );
+
+  cf1->Resize(fYStrips->GetDefaultWidth()+10, fMain->GetDefaultHeight());
+
+  cf1->AddFrame(fEditStrips = new TGCheckButton(cf1, "Set/unset strips", 3),
+               new TGLayoutHints(kLHintsTop | 
+                                 kLHintsLeft, 
+                                 2, 2, 2, 2)          
+               );
+
+  fXStrips->Connect("Clicked()", "AliMUONTriggerGUIbdmap", this, "HandleButtons()");
+  fYStrips->Connect("Clicked()", "AliMUONTriggerGUIbdmap", this, "HandleButtons()");
+  fEditStrips->Connect("Clicked()", "AliMUONTriggerGUIbdmap", this, "HandleEditButton()");
+
+  cf0->AddFrame(cf1, 
+               new TGLayoutHints(kLHintsTop | 
+                                 kLHintsExpandX, 
+                                 2, 2, 2, 2)          
+               );
+  
+  TGCompositeFrame *cf2 = new TGCompositeFrame(cf0, 60, 20, kHorizontalFrame | kFixedWidth);
+
+  TGTextButton *digitsButton = new TGTextButton(cf2, "Digits", 4);
+  digitsButton->Connect("Clicked()", "AliMUONTriggerGUIbdmap", this, "DoDigits()");
+
+  //cf2->Resize(digitsButton->GetDefaultWidth()+40, fMain->GetDefaultHeight());
+
+  cf2->AddFrame(digitsButton, 
+               new TGLayoutHints(kLHintsTop | 
+                                 kLHintsLeft |
+                                 kLHintsExpandX, 
+                                 2, 2, 5, 5)          
+               );
+
+  TGTextButton *dresetButton = new TGTextButton(cf2, "Reset", 5);
+  dresetButton->Connect("Clicked()", "AliMUONTriggerGUIbdmap", this, "ResetDigits()");
+
+  //cf2->Resize(dresetButton->GetDefaultWidth()+40, fMain->GetDefaultHeight());
+
+  cf2->AddFrame(dresetButton, 
+               new TGLayoutHints(kLHintsTop | 
+                                 kLHintsLeft |
+                                 kLHintsExpandX, 
+                                 2, 2, 5, 5)          
+               );
+
+  TGTextButton *closeButton = new TGTextButton(cf2, "Close", 6);
+  closeButton->Connect("Clicked()", "AliMUONTriggerGUIbdmap", this, "DoClose()");
+
+  //cf2->Resize(closeButton->GetDefaultWidth()+40, fMain->GetDefaultHeight());
+
+  cf2->AddFrame(closeButton, 
+               new TGLayoutHints(kLHintsTop | 
+                                 kLHintsLeft |
+                                 kLHintsExpandX, 
+                                 2, 2, 5, 5)          
+               );
+
+  cf0->AddFrame(cf2, 
+                 new TGLayoutHints(kLHintsTop | 
+                                   kLHintsExpandX, 
+                                   2, 2, 2, 2)        
+                 );
+  
+  // editor window for the local trigger
+
+  TGCompositeFrame *cf3 = new TGCompositeFrame(cf0, 60, 20, kVerticalFrame | kFixedWidth);
+
+  fLocTrigE = new TGTextEdit(cf3, 100, 100, kSunkenFrame | kDoubleBorder);
+  cf3->AddFrame(fLocTrigE, 
+               new TGLayoutHints(kLHintsExpandX | 
+                                 kLHintsExpandY, 
+                                 3, 3, 3, 3)
+               );
+
+  cf0->AddFrame(cf3, 
+                 new TGLayoutHints(kLHintsTop | 
+                                   kLHintsExpandX, 
+                                   2, 2, 2, 2)        
+                 );
+  
+  fMain->AddFrame(cf0, 
+                 new TGLayoutHints(kLHintsTop | 
+                                   kLHintsExpandX, 
+                                   2, 2, 2, 2)        
+                 );
+  
+  fIsEditable = kFALSE;
+  fLabelX = kFALSE;
+  fLabelY = kFALSE;
+
+  fMain->MapSubwindows();
+  fMain->Resize();
+  
+  fMain->CenterOnParent();
+
+  //fMain->MapWindow();
+  //gClient->WaitFor(fMain);
+  
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIbdmap::~AliMUONTriggerGUIbdmap()
+{
+  /// frame destructor
+
+  fMain->DeleteWindow();
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIbdmap::AliMUONTriggerGUIbdmap(const AliMUONTriggerGUIbdmap& bdmap)
+  : TObject(),
+    fQObject(),
+    fMain(0),
+    fLocTrigE(0),
+    fBoard(0),
+    fLoader(0),
+    fMUONData(0),
+    fXStrips(0),
+    fYStrips(0),
+    fEditStrips(0),
+    fXOn(0),
+    fYOn(0),
+    fLabelX(0),
+    fLabelY(0),
+    fIsEditable(0),
+    fCanvasSize(0),
+    fNStripX(0),
+    fNStripY(0),
+    fBoards(0)
+{
+  /// copy constructor
+
+  bdmap.Dump();
+  Fatal("AliMUONTriggerGUIbdmap","copy constructor not implemented");
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIbdmap & AliMUONTriggerGUIbdmap::operator=(const AliMUONTriggerGUIbdmap& bdmap)
+{
+  /// asignment operator
+
+  bdmap.Dump();
+  Fatal("AliMUONTriggerGUIbdmap","assignment operator not implemented");
+
+  return *this;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::Show()
+{
+  /// map the main frame
+
+  fMain->MapWindow();
+  LocalTriggerInfo();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::LocalTriggerInfo()
+{
+  /// print the local trigger
+  
+  AliMUONTriggerCrateStore* crateManager = new AliMUONTriggerCrateStore();
+  crateManager->ReadFromFile();
+
+  TGText txt;
+  Char_t buffer[20];
+
+  sprintf(buffer,"Local trigger info\n");
+  fLocTrigE->LoadBuffer(buffer);
+
+  AliRunLoader *runLoader = fLoader->GetRunLoader();
+  gAlice = runLoader->GetAliRun();
+
+  fMUONData->SetTreeAddress("GLT");
+  fMUONData->GetTriggerD();
+
+  Int_t circuitNumber = fBoard->GetIdCircuit();
+
+  TClonesArray *localTrigger = fMUONData->LocalTrigger();
+  if (localTrigger == 0) return;
+
+  Int_t nLocalTrigger = localTrigger->GetEntriesFast(); 
+
+  UShort_t x2m, x2u, x2d;
+
+  Int_t loStripX, loStripY, loDev, loCircuit, iStripX, iStripY, loLpt, loHpt;
+  AliMUONLocalTrigger *mlt;
+  
+  for (Int_t ilt = 0; ilt < nLocalTrigger; ilt++) {
+    mlt = (AliMUONLocalTrigger*)localTrigger->UncheckedAt(ilt);
+    
+    loCircuit = mlt->LoCircuit();
+
+    if (loCircuit == circuitNumber) {
+
+      AliMUONLocalTriggerBoard* ltb = crateManager->LocalBoard(loCircuit);
+      x2d = ltb->GetSwitch(0);
+      x2m = ltb->GetSwitch(1);
+      x2u = ltb->GetSwitch(2);
+
+      loStripX = mlt->LoStripX();
+      loStripY = mlt->LoStripY();
+      loDev    = mlt->LoDev();
+      loLpt    = mlt->LoLpt();
+      loHpt    = mlt->LoHpt();
+
+      iStripX = loStripX/2;
+      if ((x2u == 1 || x2m == 1 || x2d == 1) && x2m == 1) {
+       iStripY = loStripY/2;
+      } else {
+       iStripY = loStripY;
+      }
+
+      sprintf(buffer,"Circuit = %03d",loCircuit);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"LoStripX = %2d",loStripX);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"LoStripY = %2d",loStripY);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"LoDev = %2d",loDev);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"--------------------");
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"X-strip = %2d ( %2d )",iStripX,(loStripX+loDev+1)/2);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"Y-strip = %2d",iStripY);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"--------------------");
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"LoLpt = %2d",loLpt);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      sprintf(buffer,"LoHpt = %2d",loHpt);
+      txt.LoadBuffer(buffer);
+      fLocTrigE->AddText(&txt);
+
+      break;
+
+    }
+
+  }
+  
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::Init()
+{
+  /// initialize the boards in the four MT
+
+  TString mapspath = gSystem->Getenv("ALICE_ROOT");
+  mapspath.Append("/MUON/data");
+
+  fMUONData = new AliMUONData(fLoader,"MUON","MUON");
+  fMUONData->SetTreeAddress("D");
+
+  TString mapName[kNMT];
+  mapName[0] = TString(mapspath.Data());
+  mapName[1] = TString(mapspath.Data());
+  mapName[2] = TString(mapspath.Data());
+  mapName[3] = TString(mapspath.Data());
+  mapName[0].Append("/guimapp11.txt");
+  mapName[1].Append("/guimapp12.txt");
+  mapName[2].Append("/guimapp13.txt");
+  mapName[3].Append("/guimapp14.txt");
+
+  Int_t side, col, line, nbx;
+  Float_t xCenter, yCenter, zCenter, xWidth, yWidth;
+  Char_t name[8];
+
+  FILE *fmap;
+  for (Int_t i = 0; i < kNMT; i++) {
+
+    fmap = fopen(mapName[i].Data(),"r");
+
+    for (Int_t ib = 0; ib < kNBoards; ib++) {
+
+      fscanf(fmap,"%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",&side,&col,&line,&nbx,&xCenter,&yCenter,&xWidth,&yWidth,&zCenter,&name[0]);
+
+      if (side == 0) {
+       sprintf(name,"LC%1dL%1dB%1d%1d",col,line,2*nbx-1,2*nbx);
+      }
+      if (side == 1) {
+       sprintf(name,"RC%1dL%1dB%1d%1d",col,line,2*nbx-1,2*nbx);
+      }
+
+      if (strncmp(name,fBoard->GetBoardName(),7) == 0) {
+       fXWidth[i]  = xWidth;
+       fYWidth[i]  = yWidth; 
+       fXCenter[i] = xCenter;
+       fYCenter[i] = yCenter; 
+
+       fclose(fmap);
+
+       break;
+      }
+
+    }
+
+  }
+
+  Float_t xw, yw;
+  for (Int_t i = 0; i < kNMT; i++) {
+    xw = 1.20*fXWidth[i];
+    yw = 1.20*fYWidth[i];
+    fCanvas[i]->Range(-xw/2,-yw/2,+xw/2,+yw/2);
+    for (Int_t is = 0; is < kNS; is++) {
+
+      fXDigPL[i][is] = new TPolyLine(5);
+      fYDigPL[i][is] = new TPolyLine(5);
+      fXDigPL[i][is]->SetBit(kCannotPick);
+      fYDigPL[i][is]->SetBit(kCannotPick);
+      fXDigPL[i][is]->SetLineColor(4);
+      fYDigPL[i][is]->SetLineColor(4);
+
+      fXDigBox[i][is] = new TBox(0,0,0,0);
+      fYDigBox[i][is] = new TBox(0,0,0,0);
+      fXDigBox[i][is]->SetBit(kCannotPick);
+      fYDigBox[i][is]->SetBit(kCannotPick);
+      fXDigBox[i][is]->SetFillStyle(0);
+      fYDigBox[i][is]->SetFillStyle(0);
+      fXDigBox[i][is]->SetLineColor(4);
+      fYDigBox[i][is]->SetLineColor(4);
+
+      fXLabelL[i][is] = 0;
+      fXLabelR[i][is] = 0;
+      fYLabelL[i][is] = 0;
+      fYLabelR[i][is] = 0;
+
+    }
+  }
+
+
+  fXOn = kFALSE;
+  fYOn = kFALSE;
+
+  fNStripX = fBoard->GetXSiy2() - fBoard->GetXSiy1() + 1;
+  fNStripY = fBoard->GetYSix2() - fBoard->GetYSix1() + 1;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::HandleEditButton()
+{
+  /// handle the editable check button
+
+  if (((fXOn && !fYOn) || (!fXOn && fYOn)) && 
+      (fEditStrips->GetState() == kButtonDown)) {
+    fIsEditable = kTRUE;
+  } else {
+    fIsEditable = kFALSE;
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::EditStrips(Int_t event, Int_t x, Int_t y, TObject *sel)
+{
+  /// set/unset strips
+
+  TString cs;
+  Int_t iMT;
+  Double_t *px, *py;
+  Double_t xf1, yf1, xf2, yf2;
+  Int_t np = 5;
+  Double_t xMin, xMax, yMin, yMax;
+  Float_t xd, yd, fxDim, fyDim, cDim;
+  Char_t cln[2];
+
+  cDim = (Float_t)fCanvasSize;
+  
+  // the (x,y) event does not really go up to the canvas size...
+  cDim = 196.0;
+
+  if (fIsEditable) {
+
+    if (event == kButton1Down) {
+      
+      cs = TString(sel->GetName());
+      iMT = cs.Atoi()-1;
+
+      fCanvas[iMT]->cd();
+
+      fCanvas[iMT]->GetRange(xf1,yf1,xf2,yf2);      
+      fxDim = (Float_t)xf2;
+      fyDim = (Float_t)yf2;
+
+      //xd = fxDim*(+2.0*(Float_t)(x)/cDim - 1.0);
+      //yd = fyDim*(-2.0*(Float_t)(y)/cDim + 1.0);
+
+      xd = +(2.0*fxDim*(Float_t)(x))/cDim - fxDim;
+      yd = -(2.0*fyDim*(Float_t)(y))/cDim + fyDim;
+
+      if (fXOn) {
+
+       for (Int_t ix = 0; ix < fNStripX; ix++) {
+         
+         px = fXDigPL[iMT][ix]->GetX();
+         py = fXDigPL[iMT][ix]->GetY();
+
+         xMin = +9999.;
+         xMax = -9999.;
+         yMin = +9999.;
+         yMax = -9999.;
+         for (Int_t ip = 0; ip < np; ip++) {
+           xMin = TMath::Min(xMin,px[ip]);
+           xMax = TMath::Max(xMax,px[ip]);
+           yMin = TMath::Min(yMin,py[ip]);
+           yMax = TMath::Max(yMax,py[ip]);
+         }
+           
+         if (yd > (Float_t)yMin && yd < (Float_t)yMax) {
+
+           if (fXDigBox[iMT][ix]->GetFillStyle() == 0) {
+
+             fXDigBox[iMT][ix]->SetFillStyle(1001);
+             fXDigBox[iMT][ix]->SetFillColor(2);
+
+             sprintf(cln,"%2d",ix);
+
+             fXLabelL[iMT][ix]->Clear();
+             fXLabelL[iMT][ix]->AddText(cln);
+             fXLabelL[iMT][ix]->Draw();
+
+             fXLabelR[iMT][ix]->Clear();
+             fXLabelR[iMT][ix]->AddText(cln);
+             fXLabelR[iMT][ix]->Draw();
+
+             fXDigBox[iMT][ix]->SetX1(xMin);
+             fXDigBox[iMT][ix]->SetY1(yMin);
+             fXDigBox[iMT][ix]->SetX2(xMax);
+             fXDigBox[iMT][ix]->SetY2(yMax);
+
+             fXDigBox[iMT][ix]->Draw();
+
+           } else if (fXDigBox[iMT][ix]->GetFillStyle() == 1001) {
+
+             fXDigBox[iMT][ix]->SetFillStyle(0);
+
+             fXLabelL[iMT][ix]->Clear();
+             fXLabelL[iMT][ix]->Draw();
+
+             fXLabelR[iMT][ix]->Clear();
+             fXLabelR[iMT][ix]->Draw();
+
+             fXDigBox[iMT][ix]->SetX1(-fBoard->GetXCenter(iMT));
+             fXDigBox[iMT][ix]->SetY1(-fBoard->GetYCenter(iMT));
+             fXDigBox[iMT][ix]->SetX2(-fBoard->GetXCenter(iMT));
+             fXDigBox[iMT][ix]->SetY2(-fBoard->GetYCenter(iMT));
+
+             fXDigBox[iMT][ix]->Draw();
+
+           }
+
+           if (!fXDigBox[iMT][ix]->TestBit(kObjInCanvas))
+             fXDigBox[iMT][ix]->Draw();
+
+           fCanvas[iMT]->Modified();
+           fCanvas[iMT]->Update();
+
+           break;
+           
+         } 
+       }
+
+      }
+
+      if (fYOn) {
+
+       for (Int_t iy = 0; iy < fNStripY; iy++) {
+
+         px = fYDigPL[iMT][iy]->GetX();
+         py = fYDigPL[iMT][iy]->GetY();
+
+         xMin = +9999.;
+         xMax = -9999.;
+         yMin = +9999.;
+         yMax = -9999.;
+         for (Int_t ip = 0; ip < np; ip++) {
+           xMin = TMath::Min(xMin,px[ip]);
+           xMax = TMath::Max(xMax,px[ip]);
+           yMin = TMath::Min(yMin,py[ip]);
+           yMax = TMath::Max(yMax,py[ip]);
+         }
+
+         if (xd > (Float_t)xMin && xd < (Float_t)xMax) {
+
+           if (fYDigBox[iMT][iy]->GetFillStyle() == 0) {
+
+             fYDigBox[iMT][iy]->SetFillStyle(1001);
+             fYDigBox[iMT][iy]->SetFillColor(2);
+
+             sprintf(cln,"%2d",iy);
+
+             fYLabelL[iMT][iy]->Clear();
+             fYLabelL[iMT][iy]->AddText(cln);
+             fYLabelL[iMT][iy]->Draw();
+
+             fYLabelR[iMT][iy]->Clear();
+             fYLabelR[iMT][iy]->AddText(cln);
+             fYLabelR[iMT][iy]->Draw();
+
+             fYDigBox[iMT][iy]->SetX1(xMin);
+             fYDigBox[iMT][iy]->SetY1(yMin);
+             fYDigBox[iMT][iy]->SetX2(xMax);
+             fYDigBox[iMT][iy]->SetY2(yMax);
+             
+             //fYDigBox[iMT][iy]->Draw();
+
+           } else if (fYDigBox[iMT][iy]->GetFillStyle() == 1001) {
+
+             fYDigBox[iMT][iy]->SetFillStyle(0);
+
+             fYLabelL[iMT][iy]->Clear();
+             fYLabelL[iMT][iy]->Draw();
+
+             fYLabelR[iMT][iy]->Clear();
+             fYLabelR[iMT][iy]->Draw();
+
+             fYDigBox[iMT][iy]->SetX1(-fBoard->GetXCenter(iMT));
+             fYDigBox[iMT][iy]->SetY1(-fBoard->GetYCenter(iMT));
+             fYDigBox[iMT][iy]->SetX2(-fBoard->GetXCenter(iMT));
+             fYDigBox[iMT][iy]->SetY2(-fBoard->GetYCenter(iMT));
+
+             //fYDigBox[iMT][iy]->Draw();
+
+           }
+
+           if (!fYDigBox[iMT][iy]->TestBit(kObjInCanvas))
+             fYDigBox[iMT][iy]->Draw();
+
+           fCanvas[iMT]->Modified();
+           fCanvas[iMT]->Update();
+
+           break;
+           
+         } 
+       }
+
+      }
+
+    }  // end button event
+
+  }  // end IsEditable
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::DoDigits()
+{
+  /// set the board digits from GUI input (set/unset)
+
+  Int_t amp = 0;
+  Int_t number = fBoard->GetNumber();
+  Int_t pos, over;
+  pos  = fBoard->GetPosition();
+  over = fBoard->GetYOver();
+  AliMUONTriggerGUIboard *board;
+
+  for (Int_t imt = 0; imt < kNMT; imt++) {
+
+    for (Int_t ix = 0; ix < fNStripX; ix++) {
+      if (fXDigBox[imt][ix]->GetFillStyle() ==    0) {
+       amp = 0;
+      }
+      if (fXDigBox[imt][ix]->GetFillStyle() == 1001) {
+       amp = 1;
+      }
+      fBoard->SetDigitX(imt,ix,amp);
+    }
+
+    for (Int_t iy = 0; iy < fNStripY; iy++) {
+      if (fYDigBox[imt][iy]->GetFillStyle() ==    0) {
+       amp = 0;
+      }
+      if (fYDigBox[imt][iy]->GetFillStyle() == 1001) {
+       amp = 1;
+      }
+      fBoard->SetDigitY(imt,iy,amp);
+
+      // extended y-strips
+      for (Int_t io = 1; io <= over; io++) {
+       if (io == pos) continue;
+       board = (AliMUONTriggerGUIboard*)fBoards->UncheckedAt(number+io-pos);
+       board->SetDigitY(imt,iy,amp);
+      }
+
+    }
+
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::ResetDigits()
+{
+  /// set the board digits from GUI input (set/unset)
+
+  Int_t amp = 0;
+  Int_t number = fBoard->GetNumber();
+  AliMUONTriggerGUIboard *board;
+  Int_t pos, over;
+  pos  = fBoard->GetPosition();
+  over = fBoard->GetYOver();
+
+  for (Int_t imt = 0; imt < kNMT; imt++) {
+    for (Int_t ix = 0; ix < fNStripX; ix++) {
+      fXDigBox[imt][ix]->SetFillStyle(0);
+      fXDigBox[imt][ix]->SetX1(-fBoard->GetXCenter(imt));
+      fXDigBox[imt][ix]->SetY1(-fBoard->GetYCenter(imt));
+      fXDigBox[imt][ix]->SetX2(-fBoard->GetXCenter(imt));
+      fXDigBox[imt][ix]->SetY2(-fBoard->GetYCenter(imt));
+
+      fBoard->SetDigitX(imt,ix,amp);
+    }
+    for (Int_t iy = 0; iy < fNStripY; iy++) {
+      fYDigBox[imt][iy]->SetFillStyle(0);
+      fYDigBox[imt][iy]->SetX1(-fBoard->GetXCenter(imt));
+      fYDigBox[imt][iy]->SetY1(-fBoard->GetYCenter(imt));
+      fYDigBox[imt][iy]->SetX2(-fBoard->GetXCenter(imt));
+      fYDigBox[imt][iy]->SetY2(-fBoard->GetYCenter(imt));
+
+      fBoard->SetDigitY(imt,iy,amp);
+
+      // extended y-strips
+      for (Int_t io = 1; io <= over; io++) {
+       if (io == pos) continue;
+       board = (AliMUONTriggerGUIboard*)fBoards->UncheckedAt(number+io-pos);
+
+       board->SetDigitY(imt,iy,amp);
+
+      }
+
+    }
+  }
+
+  fBoard->ClearXDigits();
+  fBoard->ClearYDigits();
+
+  // extended y-strips
+  for (Int_t io = 1; io <= over; io++) {
+    if (io == pos) continue;
+    board = (AliMUONTriggerGUIboard*)fBoards->UncheckedAt(number+io-pos);
+    board->ClearYDigits();
+  }
+  
+  fXStrips->SetState(kButtonUp);
+  fYStrips->SetState(kButtonUp);
+  fEditStrips->SetState(kButtonUp);
+  fIsEditable = kFALSE;
+                     
+  DrawClear();
+  fXOn = kFALSE;
+  fYOn = kFALSE;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::HandleButtons(Int_t id)
+{
+  /// handle the check buttons
+
+  if (id == -1) {
+    TGButton *btn = (TGButton *) gTQSender;
+    id = btn->WidgetId();
+  }
+
+  // draw x and y 
+  if(fXStrips->GetState() == kButtonDown && 
+     fYStrips->GetState() == kButtonDown    ) {
+    
+    DrawClear();
+    DrawStrips(kTRUE,kTRUE);
+    DrawDigits(kTRUE,kTRUE);
+    fXOn = kTRUE;
+    fYOn = kTRUE;
+
+  }
+
+  // draw only x
+  if(fXStrips->GetState() == kButtonDown && 
+     fYStrips->GetState() == kButtonUp      ) {
+    
+    DrawClear();
+    DrawStrips(kTRUE,kFALSE);
+    DrawDigits(kTRUE,kFALSE);
+    fXOn = kTRUE;
+    fYOn = kFALSE;
+
+  }
+
+  // draw only y
+  if(fXStrips->GetState() == kButtonUp   && 
+     fYStrips->GetState() == kButtonDown    ) {
+    
+    DrawClear();
+    DrawStrips(kFALSE,kTRUE);
+    DrawDigits(kFALSE,kTRUE);
+    fXOn = kFALSE;
+    fYOn = kTRUE;
+
+  }
+
+  // clear
+  if(fXStrips->GetState() == kButtonUp   && 
+     fYStrips->GetState() == kButtonUp      ) {
+    
+    DrawClear();
+    fXOn = kFALSE;
+    fYOn = kFALSE;
+
+  }
+
+  HandleEditButton();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::DrawClear()
+{
+  /// draw the frame of the board image in the canvas
+  
+  for (Int_t i = 0; i < kNMT; i++) {
+
+    fCanvas[i]->cd();
+    fCanvas[i]->Clear();
+
+    fCanvas[i]->Modified();
+    fCanvas[i]->Update();
+
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::DrawDigits(Bool_t bx, Bool_t by)
+{
+  /// draw the digits in "x" or/and "y"
+
+  AliRunLoader *runLoader = fLoader->GetRunLoader();
+  gAlice = runLoader->GetAliRun();
+  AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
+  const AliMUONGeometryTransformer* kGeomTransformer = pMUON->GetGeometryTransformer();
+  
+  AliMUONTriggerGUIboard *board;
+  TClonesArray *muonDigits;
+  Int_t nDigits, over, pos, number;
+  const AliMpVSegmentation* seg;
+  AliMUONDigit *mdig;
+  AliMpPad pad;
+  Int_t cathode, detElemId, ix, iy, charge;
+  Int_t chamber, np = 5;
+  AliMpDEIterator it;
+  Float_t xpmin, xpmax, ypmin, ypmax;
+  Float_t xg1, xg2, yg1, yg2, zg1;
+  Float_t xdw, ydw, xcw, ycw;
+  Double_t xc1, xc2, yc1, yc2;
+  Char_t cln[2];
+  TBox *boxd;
+  Double_t xMin, xMax, yMin, yMax;
+  Double_t *px, *py;
+
+  number = fBoard->GetNumber();
+  pos    = fBoard->GetPosition();
+  over   = fBoard->GetYOver();
+
+  for (Int_t i = 0; i < kNMT; i++) {
+
+    fCanvas[i]->cd();
+    
+    fCanvas[i]->GetRange(xc1,yc1,xc2,yc2);
+    xcw = (Float_t)(0.5*(xc2-xc1));
+    ycw = (Float_t)(0.5*(yc2-yc1));
+
+    chamber = 11+i;
+
+    muonDigits = fMUONData->Digits(chamber-1);
+    if (muonDigits == 0) { printf("No muonDigits \n"); return; }
+    gAlice->ResetDigits();
+    fMUONData->GetDigits();
+    nDigits = muonDigits->GetEntriesFast(); 
+
+    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();
+
+      Bool_t triggerBgn = kFALSE;
+      Int_t schg = (Int_t)(charge + 0.5);
+      // APPLY CONDITION ON SOFT BACKGROUND    
+      Int_t tchg = schg - (Int_t(schg/10))*10; 
+      if (schg<=10 || tchg>0) {
+       triggerBgn = kFALSE;
+      } else {
+       triggerBgn = kTRUE;
+      }
+
+      if (detElemId%100 != fBoard->GetDetElemId()) continue;
+      
+      seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId, AliMp::GetCathodType(cathode-1));  
+      
+      pad = seg->PadByIndices(AliMpIntPair(ix,iy),kTRUE);
+      
+      //if (cathode == 1) printf("GUI x:  ix %d iy %d \n",ix,iy);
+      //if (cathode == 2) printf("GUI y:  ix %d iy %d \n",ix,iy);
+
+      // get the pad position and dimensions
+      Float_t xlocal1 = pad.Position().X();
+      Float_t ylocal1 = pad.Position().Y();
+      Float_t xlocal2 = pad.Dimensions().X();
+      Float_t ylocal2 = pad.Dimensions().Y();
+      
+      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);
+       
+      xpmin -= fXCenter[i];
+      xpmax -= fXCenter[i];
+      ypmin -= fYCenter[i];
+      ypmax -= fYCenter[i];
+
+      xdw = xpmax-xpmin;
+      ydw = ypmax-ypmin;
+
+      // x-strips
+      if ((xdw > ydw) && bx) {
+
+       //printf("X strips mdig->Cathode() = %1d \n",mdig->Cathode());
+
+       Int_t iX, iY1, iY2;
+       iX  = fBoard->GetXSix();
+       iY1 = fBoard->GetXSiy1();
+       iY2 = fBoard->GetXSiy2();
+       if (ix == iX && iy >= iY1 && iy <= iY2) {
+         //printf("Digit indices (x-strip) ix = %3d iy = %3d board = %s %d chamber = %2d \n",ix,iy,fBoard->GetBoardName(),fBoard->GetNumber(),chamber); 
+         /*
+         xpmin += 0.01*fXWidth[i];
+         xpmax -= 0.01*fXWidth[i];
+         ypmin += 0.1*ydw;
+         ypmax -= 0.1*ydw;
+         */
+         boxd = new TBox(xpmin,ypmin,xpmax,ypmax);
+         boxd->SetFillStyle(1001);
+         if (triggerBgn) boxd->SetFillColor(6);
+         else boxd->SetFillColor(5);
+         boxd->SetBit(kCannotPick);
+         boxd->Draw();
+         
+         fXDigBox[i][iy-iY1]->SetFillStyle(1001);
+         fXDigBox[i][iy-iY1]->SetFillColor(2);
+         fXDigBox[i][iy-iY1]->SetX1(xpmin);
+         fXDigBox[i][iy-iY1]->SetY1(ypmin);
+         fXDigBox[i][iy-iY1]->SetX2(xpmax);
+         fXDigBox[i][iy-iY1]->SetY2(ypmax);
+         fXDigBox[i][iy-iY1]->Draw();
+
+         sprintf(cln,"%2d",(iy-iY1));
+         fXLabelL[i][iy-iY1]->Clear();
+         fXLabelL[i][iy-iY1]->AddText(cln);
+         fXLabelL[i][iy-iY1]->Draw();
+         fXLabelR[i][iy-iY1]->Clear();
+         fXLabelR[i][iy-iY1]->AddText(cln);
+         fXLabelR[i][iy-iY1]->Draw();
+
+         fBoard->SetDigitX(i,iy-iY1,charge);
+
+       }
+
+      }
+
+      // y-strips
+      if ((xdw < ydw) && by) {
+
+       //printf("Y strips mdig->Cathode() = %1d \n",mdig->Cathode());
+
+       Int_t iX1, iX2, iY;
+       iX1 = fBoard->GetYSix1();
+       iX2 = fBoard->GetYSix2();
+       iY  = fBoard->GetYSiy();
+       if (ix >= iX1 && ix <= iX2 && iy == iY) {
+         //printf("Digit indices (y-strip) ix = %3d iy = %3d board = %s chamber = %2d \n",ix,iy,fBoard->GetBoardName(),chamber); 
+         ypmin = -0.5*fYWidth[i];
+         ypmax = +0.5*fYWidth[i];
+         /*
+         ypmin = -0.5*fYWidth[i];
+         ypmax = +0.5*fYWidth[i];
+         ypmin += 0.01*fYWidth[i];
+         ypmax -= 0.01*fYWidth[i];       
+         xpmin += 0.1*xdw;
+         xpmax -= 0.1*xdw;
+         */
+         boxd = new TBox(xpmin,ypmin,xpmax,ypmax);
+         boxd->SetFillStyle(1001);
+         if (triggerBgn) boxd->SetFillColor(6);
+         else boxd->SetFillColor(5);
+         boxd->SetBit(kCannotPick);
+         boxd->Draw();
+
+         fYDigBox[i][ix-iX1]->SetFillStyle(1001);
+         fYDigBox[i][ix-iX1]->SetFillColor(2);
+         fYDigBox[i][ix-iX1]->SetX1(xpmin);
+         fYDigBox[i][ix-iX1]->SetY1(ypmin);
+         fYDigBox[i][ix-iX1]->SetX2(xpmax);
+         fYDigBox[i][ix-iX1]->SetY2(ypmax);
+         fYDigBox[i][ix-iX1]->Draw();
+
+         sprintf(cln,"%2d",(ix-iX1));
+         fYLabelL[i][ix-iX1]->Clear();
+         fYLabelL[i][ix-iX1]->AddText(cln);
+         fYLabelL[i][ix-iX1]->Draw();
+         fYLabelR[i][ix-iX1]->Clear();
+         fYLabelR[i][ix-iX1]->AddText(cln);
+         fYLabelR[i][ix-iX1]->Draw();
+
+         fBoard->SetDigitY(i,ix-iX1,charge);
+
+         // extended y-strips
+         for (Int_t io = 1; io <= over; io++) {
+           if (io == pos) continue;
+           board = (AliMUONTriggerGUIboard*)fBoards->UncheckedAt(number+io-pos);
+           board->SetDigitY(i,ix-iX1,charge);
+         }
+
+       }
+      }
+      
+    }  // end digits loop
+    
+    // x-strips DSET
+    if (bx) {
+      
+      for (Int_t ix = 0; ix < fNStripX; ix++) {
+       //if (fBoard->GetXDig(i,ix) > 0) {
+       if (fXDigBox[i][ix]->GetFillStyle() == 1001 || 
+           fBoard->GetXDig(i,ix) > 0) {
+         
+         px = fXDigPL[i][ix]->GetX();
+         py = fXDigPL[i][ix]->GetY();
+         
+         xMin = +9999.;
+         xMax = -9999.;
+         yMin = +9999.;
+         yMax = -9999.;
+         for (Int_t ip = 0; ip < np; ip++) {
+           xMin = TMath::Min(xMin,px[ip]);
+           xMax = TMath::Max(xMax,px[ip]);
+           yMin = TMath::Min(yMin,py[ip]);
+           yMax = TMath::Max(yMax,py[ip]);
+         }
+         
+         if (fXDigBox[i][ix]->GetFillStyle() == 0) {
+           fXDigBox[i][ix]->SetFillStyle(1001);
+           fXDigBox[i][ix]->SetFillColor(2);
+           fXDigBox[i][ix]->SetX1(xMin);
+           fXDigBox[i][ix]->SetY1(yMin);
+           fXDigBox[i][ix]->SetX2(xMax);
+           fXDigBox[i][ix]->SetY2(yMax);
+         }
+         
+         sprintf(cln,"%2d",ix);
+         
+         fXLabelL[i][ix]->Clear();
+         fXLabelL[i][ix]->AddText(cln);
+         fXLabelL[i][ix]->Draw();
+         
+         fXLabelR[i][ix]->Clear();
+         fXLabelR[i][ix]->AddText(cln);
+         fXLabelR[i][ix]->Draw();
+         
+         fXDigBox[i][ix]->Draw();
+         
+       }
+       
+      }
+
+    }
+      
+    // y-strips DSET
+    if (by) {
+      
+      for (Int_t iy = 0; iy < fNStripY; iy++) {
+       //if (fBoard->GetYDig(i,iy) > 0) {
+       if (fYDigBox[i][iy]->GetFillStyle() == 1001 || 
+           fBoard->GetYDig(i,iy) > 0) {
+         
+         px = fYDigPL[i][iy]->GetX();
+         py = fYDigPL[i][iy]->GetY();
+         
+         xMin = +9999.;
+         xMax = -9999.;
+         yMin = +9999.;
+         yMax = -9999.;
+         for (Int_t ip = 0; ip < np; ip++) {
+           xMin = TMath::Min(xMin,px[ip]);
+           xMax = TMath::Max(xMax,px[ip]);
+           yMin = TMath::Min(yMin,py[ip]);
+           yMax = TMath::Max(yMax,py[ip]);
+         }
+         
+         if (fYDigBox[i][iy]->GetFillStyle() == 0) {
+           fYDigBox[i][iy]->SetFillStyle(1001);
+           fYDigBox[i][iy]->SetFillColor(2);
+           fYDigBox[i][iy]->SetX1(xMin);
+           fYDigBox[i][iy]->SetY1(yMin);
+           fYDigBox[i][iy]->SetX2(xMax);
+           fYDigBox[i][iy]->SetY2(yMax);
+         }
+         
+         sprintf(cln,"%2d",iy);
+         
+         fYLabelL[i][iy]->Clear();
+         fYLabelL[i][iy]->AddText(cln);
+         fYLabelL[i][iy]->Draw();
+         
+         fYLabelR[i][iy]->Clear();
+         fYLabelR[i][iy]->AddText(cln);
+         fYLabelR[i][iy]->Draw();
+         
+         
+         fYDigBox[i][iy]->Draw();
+         
+       }
+       
+      }
+
+    }
+      
+    fCanvas[i]->Modified();
+    fCanvas[i]->Update();
+      
+  }  // end canvas loop
+
+  fMain->MapWindow();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::DrawStrips(Bool_t bx, Bool_t by)
+{
+  /// draw the "x" or/and "y" strips
+
+  AliRunLoader *runLoader = fLoader->GetRunLoader();
+  gAlice = runLoader->GetAliRun();
+  AliMUON *pMUON = (AliMUON*)gAlice->GetModule("MUON");
+  const AliMUONGeometryTransformer* kGeomTransformer = pMUON->GetGeometryTransformer();
+
+  const AliMpVSegmentation* seg;
+  AliMpPad pad;
+  AliMpDEIterator it;
+  Int_t chamber;
+  Float_t xg1, xg2, yg1, yg2, zg1;
+  Float_t xlocal1, xlocal2, ylocal1, ylocal2;
+  Int_t detElemId, ic, maxX, maxY;
+  Float_t xdw, ydw, xpmin, xpmax, ypmin, ypmax;
+  Float_t ptx1, ptx2, pty1, pty2;
+  Char_t cln[2];
+  Double_t xc1, xc2, yc1, yc2;
+  Float_t xcw, ycw;
+
+  Bool_t makeLabelsX = kFALSE;
+  Bool_t makeLabelsY = kFALSE;
+
+  if (bx && !fLabelX) {
+    makeLabelsX = kTRUE;
+    fLabelX = kTRUE;
+  }
+
+  if (by && !fLabelY) {
+    makeLabelsY = kTRUE;
+    fLabelY = kTRUE;
+  }
+
+  for (Int_t i = 0; i < kNMT; i++) {
+
+    fCanvas[i]->cd();
+    
+    fCanvas[i]->GetRange(xc1,yc1,xc2,yc2);
+    xcw = (Float_t)(0.5*(xc2-xc1));
+    ycw = (Float_t)(0.5*(yc2-yc1));
+
+    chamber = 11+i;
+
+    for ( it.First(chamber-1); ! it.IsDone(); it.Next() ) {
+    
+      detElemId = it.CurrentDEId();
+    
+      if (detElemId%100 != fBoard->GetDetElemId()) continue;
+
+      /*---------- y-pads ic = 2 ----------*/
+      ic = 2;
+      
+      seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId, AliMp::GetCathodType(ic-1));  
+
+      maxX = seg->MaxPadIndexX();
+      maxY = seg->MaxPadIndexY();
+      
+      for (Int_t ix = 0; ix <= maxX; ix++) {
+       for (Int_t iy = 0; iy <= maxY; iy++) {
+         
+         pad = seg->PadByIndices(AliMpIntPair(ix,iy),kFALSE);
+         
+         if (!pad.IsValid()) continue;
+         
+         // get the pad position and dimensions
+         xlocal1 = pad.Position().X();
+         ylocal1 = pad.Position().Y();
+         xlocal2 = pad.Dimensions().X();
+         ylocal2 = pad.Dimensions().Y();
+         
+         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);
+         
+         xpmin -= fXCenter[i];
+         xpmax -= fXCenter[i];
+         ypmin -= fYCenter[i];
+         ypmax -= fYCenter[i];
+         
+         xdw = xpmax-xpmin;
+         ydw = ypmax-ypmin;
+         
+         // y-strips
+         if (by) {
+           
+           Int_t iX1, iX2, iY, ixDig;
+           iX1 = fBoard->GetYSix1();
+           iX2 = fBoard->GetYSix2();
+           iY  = fBoard->GetYSiy();
+           if (ix >= iX1 && ix <= iX2 && iy == iY) {
+             
+             ypmin = -0.5*fYWidth[i];
+             ypmax = +0.5*fYWidth[i];
+             /*
+             ypmin += 0.01*fYWidth[i];
+             ypmax -= 0.01*fYWidth[i];
+             xpmin += 0.1*xdw;
+             xpmax -= 0.1*xdw;
+             */
+             ixDig = ix - iX1;
+             fYDigPL[i][ixDig]->SetPoint(0,xpmin,ypmin);
+             fYDigPL[i][ixDig]->SetPoint(1,xpmax,ypmin);
+             fYDigPL[i][ixDig]->SetPoint(2,xpmax,ypmax);
+             fYDigPL[i][ixDig]->SetPoint(3,xpmin,ypmax);
+             fYDigPL[i][ixDig]->SetPoint(4,xpmin,ypmin);
+             fYDigPL[i][ixDig]->Draw();
+             /*
+             fYDigBox[i][ixDig]->SetFillStyle(1001);
+             fYDigBox[i][ixDig]->SetFillColor(5);
+             fYDigBox[i][ixDig]->DrawBox(xpmin,ypmin,xpmax,ypmax);
+             */
+             if (makeLabelsY) {
+               sprintf(cln,"%2d",(ix-iX1));
+               ptx1 = xpmin;
+               ptx2 = xpmax;
+               
+               pty1 = 1.065*ypmin - 0.04*ycw;
+               pty2 = 1.065*ypmin + 0.04*ycw;
+               fYLabelL[i][ix-iX1] = new TPaveText(ptx1,pty1,ptx2,pty2);
+               fYLabelL[i][ix-iX1]->SetBorderSize(0);
+               fYLabelL[i][ix-iX1]->SetBit(kCannotPick);
+               
+               pty1 = 1.065*ypmax - 0.04*ycw;
+               pty2 = 1.065*ypmax + 0.04*ycw;
+               fYLabelR[i][ix-iX1] = new TPaveText(ptx1,pty1,ptx2,pty2);
+               fYLabelR[i][ix-iX1]->SetBorderSize(0);
+               fYLabelR[i][ix-iX1]->SetBit(kCannotPick);
+             }
+
+           }
+           
+         }
+         
+       }  // end maxY
+       
+      }  // end maxX
+      
+      /*---------- x-pads ic = 1 ----------*/
+      ic = 1;
+      
+      seg = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId, AliMp::GetCathodType(ic-1)); 
+
+      maxX = seg->MaxPadIndexX();
+      maxY = seg->MaxPadIndexY();
+      
+      for (Int_t ix = 0; ix <= maxX; ix++) {
+       for (Int_t iy = 0; iy <= maxY; iy++) {
+         
+         pad = seg->PadByIndices(AliMpIntPair(ix,iy),kFALSE);
+         
+         if (!pad.IsValid()) continue;
+         
+         // get the pad position and dimensions
+         xlocal1 = pad.Position().X();
+         ylocal1 = pad.Position().Y();
+         xlocal2 = pad.Dimensions().X();
+         ylocal2 = pad.Dimensions().Y();
+         
+         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);
+         
+         xpmin -= fXCenter[i];
+         xpmax -= fXCenter[i];
+         ypmin -= fYCenter[i];
+         ypmax -= fYCenter[i];
+         xdw = xpmax-xpmin;
+         ydw = ypmax-ypmin;
+         
+         // x-strips
+         if (bx) {
+           
+           Int_t iX, iY1, iY2, iyDig;
+           iX  = fBoard->GetXSix();
+           iY1 = fBoard->GetXSiy1();
+           iY2 = fBoard->GetXSiy2();
+           if (ix == iX && iy >= iY1 && iy <= iY2) {
+             /*                  
+             xpmin += 0.01*fXWidth[i];
+             xpmax -= 0.01*fXWidth[i];
+             ypmin += 0.1*ydw;
+             ypmax -= 0.1*ydw;
+             */
+             iyDig = iy - iY1;
+             fXDigPL[i][iyDig]->SetPoint(0,xpmin,ypmin);
+             fXDigPL[i][iyDig]->SetPoint(1,xpmax,ypmin);
+             fXDigPL[i][iyDig]->SetPoint(2,xpmax,ypmax);
+             fXDigPL[i][iyDig]->SetPoint(3,xpmin,ypmax);
+             fXDigPL[i][iyDig]->SetPoint(4,xpmin,ypmin);
+             fXDigPL[i][iyDig]->Draw();
+             /*              
+             fXDigBox[i][iyDig]->SetFillStyle(1001);
+             fXDigBox[i][iyDig]->SetFillColor(5);
+             fXDigBox[i][iyDig]->DrawBox(xpmin,ypmin,xpmax,ypmax);
+             */
+             if (makeLabelsX) {
+               sprintf(cln,"%2d",(iy-iY1));
+               pty1 = ypmin;
+               pty2 = ypmax;
+               
+               ptx1 = 1.065*xpmin - 0.04*xcw;
+               ptx2 = 1.065*xpmin + 0.04*xcw;
+               fXLabelL[i][iy-iY1] = new TPaveText(ptx1,pty1,ptx2,pty2);
+               fXLabelL[i][iy-iY1]->SetBorderSize(0);
+               fXLabelL[i][iy-iY1]->SetBit(kCannotPick);
+               
+               ptx1 = 1.065*xpmax - 0.04*xcw;
+               ptx2 = 1.065*xpmax + 0.04*xcw;
+               fXLabelR[i][iy-iY1] = new TPaveText(ptx1,pty1,ptx2,pty2);
+               fXLabelR[i][iy-iY1]->SetBorderSize(0);
+               fXLabelR[i][iy-iY1]->SetBit(kCannotPick);
+             }
+
+           }
+           
+         }
+         
+       }  // end maxY
+       
+      }  // end maxX
+      
+    }  // end DEIterator
+    
+    fCanvas[i]->Modified();
+    fCanvas[i]->Update();
+
+  }
+
+  fMain->MapWindow();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::CloseWindow()
+{
+  /// close dialog in response to window manager close.
+
+  delete this;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIbdmap::DoClose()
+{
+  /// handle Close button.
+
+  fBoard->SetOpen(kFALSE);
+  TTimer::SingleShot(150,"AliMUONTriggerGUIbdmap",this,"CloseWindow()");
+
+}
+
+
diff --git a/MUON/AliMUONTriggerGUIbdmap.h b/MUON/AliMUONTriggerGUIbdmap.h
new file mode 100644 (file)
index 0000000..f4b636b
--- /dev/null
@@ -0,0 +1,126 @@
+#ifndef ALIMUONTRIGGERGUIBDMAP_H
+#define ALIMUONTRIGGERGUIBDMAP_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/// \ingroup evaluation
+/// \class AliMUONTriggerGUIbdmap
+/// \brief Trigger GUI utility class: single board map of the strips/digits
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+// - single board map of the strips/digits                              //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#include <TObject.h>
+#include <RQ_OBJECT.h>
+#include <TGFrame.h>
+
+class TCanvas;
+class TGCheckButton;
+class TGTextEdit;
+class TPolyLine;
+class TBox;
+class TPaveText;
+class TObjArray;
+class TH1F;
+class TLatex;
+class TGTableLayout;
+class TGLabel;
+
+class AliMUONTriggerGUIboard;
+class AliMUONTriggerGUI;
+class AliMUONTriggerCircuit;
+class AliLoader;
+class AliMUONData;
+
+class AliMUONTriggerGUIbdmap : public TObject
+{
+
+RQ_OBJECT("AliMUONTriggerGUIbdmap")
+    
+public:
+
+  AliMUONTriggerGUIbdmap(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h);
+  virtual ~AliMUONTriggerGUIbdmap();
+  
+  AliMUONTriggerGUIbdmap (const AliMUONTriggerGUIbdmap& bdmap);
+  AliMUONTriggerGUIbdmap& operator=(const AliMUONTriggerGUIbdmap& bdmap);
+
+  /// set the name of the board gui window
+  void SetName(Char_t *name)               { fMain->SetWindowName(name); };
+  /// set the board associated to this instance
+  void SetBoard(AliMUONTriggerGUIboard *b) { fBoard = b; };  
+  /// set the board associated to this instance, from boards array and id
+  void SetBoard(TObjArray *boards, Int_t id) { 
+    fBoards = boards;
+    fBoard  = (AliMUONTriggerGUIboard*)boards->UncheckedAt(id); }
+  /// set the current muon loader
+  void SetLoader(AliLoader *loader)        { fLoader = loader; };
+
+  void Show();
+
+  void DrawStrips(Bool_t bx, Bool_t by);
+  void DrawDigits(Bool_t bx, Bool_t by);
+  void DrawClear();
+  void EditStrips(Int_t event, Int_t x, Int_t y, TObject *sel);
+
+  void Init();
+  void HandleButtons(Int_t id = -1);
+  void HandleEditButton();
+  void CloseWindow();
+  void DoClose();
+  void DoDigits();
+  void ResetDigits();
+  void LocalTriggerInfo();
+
+private:
+
+  enum { kNBoards = 234, kNMT = 4, kNS = 16 };  ///< constants
+
+  TGTransientFrame     *fMain;             ///< Main board frame
+  TCanvas              *fCanvas[kNMT];     ///< MT canvases
+  TGTextEdit           *fLocTrigE;         ///< Window local trigger info
+
+  AliMUONTriggerGUIboard  *fBoard;         ///< Current board object
+  AliLoader               *fLoader;        ///< The MUON loader
+  AliMUONData             *fMUONData;      ///< MUON data manager
+
+  TGCheckButton        *fXStrips;          ///< Draw x-strips and digits
+  TGCheckButton        *fYStrips;          ///< Draw y-strips and digits
+  TGCheckButton        *fEditStrips;       ///< Set/unset the strips
+
+  TPolyLine            *fXDigPL[kNMT][kNS];     ///< X-strip polyline 
+  TPolyLine            *fYDigPL[kNMT][kNS];     ///< Y-strip polyline
+  TBox                 *fXDigBox[kNMT][kNS];    ///< X-digit box
+  TBox                 *fYDigBox[kNMT][kNS];    ///< Y-digit box
+  TPaveText            *fXLabelL[kNMT][kNS];    ///< X-strip labels left
+  TPaveText            *fXLabelR[kNMT][kNS];    ///< X-strip labels right
+  TPaveText            *fYLabelL[kNMT][kNS];    ///< Y-strip labels left
+  TPaveText            *fYLabelR[kNMT][kNS];    ///< Y-strip labels right
+
+  Float_t               fXWidth[kNMT];     ///< Board x-width
+  Float_t               fYWidth[kNMT];     ///< Board y-width
+  Float_t               fXCenter[kNMT];    ///< Board x-center
+  Float_t               fYCenter[kNMT];    ///< Board y-center
+  
+  Bool_t                fXOn;              ///< x-strips/digits on canvas ?
+  Bool_t                fYOn;              ///< y-strips/digits on canvas ?
+  Bool_t                fLabelX;           ///< x-labels exist
+  Bool_t                fLabelY;           ///< y-labels exist
+  Bool_t                fIsEditable;       ///< allows set/unset the strips
+
+  UInt_t                fCanvasSize;       ///< Size of the canvas
+  Int_t                 fNStripX;          ///< Number of x-strips on board
+  Int_t                 fNStripY;          ///< Number of y-strips on board
+
+  TObjArray            *fBoards;           ///< Array with all boards
+
+  ClassDef(AliMUONTriggerGUIbdmap,1)       // board gui class
+
+};
+
+#endif
diff --git a/MUON/AliMUONTriggerGUIboard.cxx b/MUON/AliMUONTriggerGUIboard.cxx
new file mode 100644 (file)
index 0000000..abd356e
--- /dev/null
@@ -0,0 +1,191 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+// - single board object                                                //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#include <TBox.h>
+
+#include "AliMUONTriggerGUIboard.h"
+
+/// \cond CLASSIMP
+ClassImp(AliMUONTriggerGUIboard)
+/// \endcond
+
+//__________________________________________________________________________
+AliMUONTriggerGUIboard::AliMUONTriggerGUIboard(Int_t id, Char_t *name) 
+  : TObject(),
+    fName(0),
+    fID(-1),
+    fStatus(0),
+    fPosition(0),
+    fYOver(0),
+    fXSix(0),
+    fXSiy1(0),
+    fXSiy2(0),
+    fYSix1(0),
+    fYSix2(0),
+    fYSiy(0),
+    fDetElemId(0),
+    fIdCircuit(-1),
+    fIsOpen(0)
+{
+  /// board main constructor
+
+  fName = new TString(name);
+  fID   = id;
+
+  for (Int_t i = 0; i < kNMT; i++) {
+    fXCenter[i] = 0.;
+    fYCenter[i] = 0.;
+    fZCenter[i] = 0.;
+    fXWidth[i]  = 0.;
+    fYWidth[i]  = 0.;
+    for (Int_t is = 0; is < kNS; is++) {
+      fXDig[i][is] = 0;
+      fYDig[i][is] = 0;
+      fXDigBox[i][is] = new TBox(0,0,0,0);
+      fYDigBox[i][is] = new TBox(0,0,0,0);
+      fXDigBox[i][is]->SetBit(kCannotPick);
+      fYDigBox[i][is]->SetBit(kCannotPick);
+      fXDigBox[i][is]->SetFillStyle(1001);
+      fYDigBox[i][is]->SetFillStyle(1001);
+      fXDigBox[i][is]->SetFillColor(4);
+      fYDigBox[i][is]->SetFillColor(4);
+    }
+  }
+
+  fXSix  = -1;
+  fXSiy1 = -1;
+  fXSiy2 = -1;
+
+  fYSix1 = -1;
+  fYSix2 = -1;
+  fYSiy  = -1;
+
+  fDetElemId = -1;
+  fIdCircuit = -1;
+
+  fIsOpen = kFALSE;
+
+  fYOver    = 0;
+  fPosition = 0;
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIboard::~AliMUONTriggerGUIboard() 
+{
+  /// board destructor
+
+  delete fName;
+
+  for (Int_t imt = 0; imt < kNMT; imt++) {
+    for (Int_t is = 0; is < kNS; is++) {
+      delete fXDigBox[imt][is];
+      delete fYDigBox[imt][is];
+    }
+  }
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIboard::AliMUONTriggerGUIboard(const AliMUONTriggerGUIboard& board)
+  : TObject(board),
+    fName(0),
+    fID(-1),
+    fStatus(0),
+    fPosition(0),
+    fYOver(0),
+    fXSix(0),
+    fXSiy1(0),
+    fXSiy2(0),
+    fYSix1(0),
+    fYSix2(0),
+    fYSiy(0),
+    fDetElemId(0),
+    fIdCircuit(-1),
+    fIsOpen(0)
+{
+  /// copy constructor
+
+  Fatal("AliMUONTriggerGUIboard","copy constructor not implemented");
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIboard & AliMUONTriggerGUIboard::operator=(const AliMUONTriggerGUIboard& board)
+{
+  /// asignment operator
+
+  Fatal("AliMUONTriggerGUIboard","assignment operator not implemented");
+
+  return *this;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIboard::SetXDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
+{
+  /// set coordinates of "is" x-strip box in chamber "imt"
+
+  fXDigBox[imt][is]->SetX1(x1);
+  fXDigBox[imt][is]->SetY1(y1);
+  fXDigBox[imt][is]->SetX2(x2);
+  fXDigBox[imt][is]->SetY2(y2);
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIboard::SetYDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
+{
+  /// set coordinates of "is" y-strip box in chamber "imt"
+
+  fYDigBox[imt][is]->SetX1(x1);
+  fYDigBox[imt][is]->SetY1(y1);
+  fYDigBox[imt][is]->SetX2(x2);
+  fYDigBox[imt][is]->SetY2(y2);
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIboard::ClearXDigits()
+{
+  /// delete the set x-digits
+
+  for (Int_t imt = 0; imt < kNMT; imt++) {
+    for (Int_t is = 0; is < kNS; is++) {
+      fXDig[imt][is] = 0;
+    }
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIboard::ClearYDigits()
+{
+  /// delete the set y-digits
+
+  for (Int_t imt = 0; imt < kNMT; imt++) {
+    for (Int_t is = 0; is < kNS; is++) {
+      fYDig[imt][is] = 0;
+    }
+  }
+
+}
diff --git a/MUON/AliMUONTriggerGUIboard.h b/MUON/AliMUONTriggerGUIboard.h
new file mode 100644 (file)
index 0000000..d5a0d9f
--- /dev/null
@@ -0,0 +1,177 @@
+#ifndef ALIMUONTRIGGERGUIBOARD_H
+#define ALIMUONTRIGGERGUIBOARD_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/// \ingroup evaluation
+/// \class AliMUONTriggerGUIboard
+/// \brief Trigger GUI utility class: single board object
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+// - single board object                                                //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#include <TString.h>
+#include <TObject.h>
+
+class TObjArray;
+class TBox;
+
+class AliMUONTriggerGUIboard : public TObject
+{
+
+public:
+
+  AliMUONTriggerGUIboard(Int_t id, Char_t *name);
+  virtual ~AliMUONTriggerGUIboard();
+
+  AliMUONTriggerGUIboard (const AliMUONTriggerGUIboard& board);
+  AliMUONTriggerGUIboard& operator=(const AliMUONTriggerGUIboard& board);
+
+  /// returns the standard name of this board
+  Char_t  *GetBoardName()   const { return (Char_t*)(fName->Data()); };
+  /// returns the working status of this board
+  UShort_t GetStatus() const { return fStatus; };
+  /// returns the number of this board
+  Int_t    GetNumber() const { return fID; };
+
+  /// initialize the board
+  void Init() {};
+  /// set the working status of this board
+  void SetStatus(UShort_t s) { fStatus = s; };
+  /// set the standard name of this board
+  void SetBoardName(Char_t *name) { fName = new TString(name); };
+  /// set the geometrical location and dimensions of this board
+  void SetDimensions(Int_t imt, 
+                    Float_t xc, Float_t yc, Float_t zc,
+                    Float_t xw, Float_t yw) { 
+    fXCenter[imt] = xc; fYCenter[imt] = yc; fZCenter[imt] = zc;
+    fXWidth[imt]  = xw; fYWidth[imt]  = yw; 
+  };
+  /// set the index range for the x strips
+  void SetXSindex(Int_t ix, Int_t iy1, Int_t iy2) {
+    fXSix  = ix;
+    fXSiy1 = iy1;
+    fXSiy2 = iy2;
+  };
+  /// set the index range for the y strips
+  void SetYSindex(Int_t ix1, Int_t ix2, Int_t iy) {
+    fYSix1 = ix1;
+    fYSix2 = ix2;
+    fYSiy  = iy;
+  };
+  /// set the number of the detector element containing this board
+  void SetDetElemId(Int_t id) { fDetElemId = id; };
+  /// set the number of this board 
+  void SetIdCircuit(Int_t id) { fIdCircuit = id; };
+  /// set an x-strip digit in a chamber with amplitude = amp
+  void SetDigitX(Int_t imt, Int_t is, Int_t amp) { 
+    fXDig[imt][is] = (UChar_t)amp; }; 
+  /// set a  y-strip digit in a chamber with amplitude = amp
+  void SetDigitY(Int_t imt, Int_t is, Int_t amp) { 
+    fYDig[imt][is] = (UChar_t)amp; }; 
+  /// set neighbouring boards with common y strips
+  void SetYOver(Int_t over) { fYOver = (UChar_t)over; };
+  /// get neighbouring boards with common y strips
+  UChar_t GetYOver() const  { return fYOver; };
+  /// set the board position inside the detector element in y direction
+  void SetPosition(Int_t pos) { fPosition = (UChar_t)pos; };
+  /// get the board position inside the detector element in y direction
+  UChar_t GetPosition() const { return fPosition; };
+  /// get the digit amplitude for an x-strip in a given chamber
+  Int_t GetXDig(Int_t imt, Int_t is) const { return fXDig[imt][is]; };
+  /// get the digit amplitude for a  y-strip in a given chamber
+  Int_t GetYDig(Int_t imt, Int_t is) const { return fYDig[imt][is]; };
+
+  void SetXDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2);
+  void SetYDigBox(Int_t imt, Int_t is, Double_t x1, Double_t y1, Double_t x2, Double_t y2);
+  /// get the graphical box of an x-trip
+  TBox *GetXDigBox(Int_t imt, Int_t is) const { return fXDigBox[imt][is]; };
+  /// get the graphical box of a  y-trip
+  TBox *GetYDigBox(Int_t imt, Int_t is) const { return fYDigBox[imt][is]; };
+
+  /// get x-center of the board in chamber imt
+  Float_t GetXCenter(Int_t imt) const { return fXCenter[imt]; };
+  /// get y-center of the board in chamber imt
+  Float_t GetYCenter(Int_t imt) const { return fYCenter[imt]; };
+  /// get z-center of the board in chamber imt
+  Float_t GetZCenter(Int_t imt) const { return fZCenter[imt]; };
+  /// get x-width of the board in chamber imt
+  Float_t GetXWidth(Int_t imt)  const { return fXWidth[imt]; };
+  /// get y-width of the board in chamber imt
+  Float_t GetYWidth(Int_t imt)  const { return fYWidth[imt]; };
+
+  /// get x-index in detector element for an x-strip
+  Int_t GetXSix()  const { return fXSix;  };
+  /// get first y-index in detector element for an x-strip
+  Int_t GetXSiy1() const { return fXSiy1; };
+  /// get last  y-index in detector element for an x-strip
+  Int_t GetXSiy2() const { return fXSiy2; };
+  /// get first x-index in detector element for a  y-strip
+  Int_t GetYSix1() const { return fYSix1; };
+  /// get last  x-index in detector element for a  y-strip
+  Int_t GetYSix2() const { return fYSix2; };
+  /// get y-index in detector element for a y-strip
+  Int_t GetYSiy()  const { return fYSiy;  };
+  /// get number of x strips
+  Int_t GetNStripX() const { return GetXSiy2() - GetXSiy1() + 1; };
+  /// get number of y strips
+  Int_t GetNStripY() const { return GetYSix2() - GetYSix1() + 1; };
+  /// get the id of the detector element
+  Int_t GetDetElemId() const { return fDetElemId; };
+  /// get the id of the circuit
+  Int_t GetIdCircuit() const { return fIdCircuit; };
+
+  /// set true if this board has a gui active
+  void   SetOpen(Bool_t open) { fIsOpen = open; };
+  /// true if this board has a gui active
+  Bool_t IsOpen() const       { return fIsOpen; };
+
+  void  ClearXDigits();
+  void  ClearYDigits();
+
+private:
+
+  enum { kNMT = 4, kNS = 16 };     ///< constants
+
+  TString       *fName;            ///< Board name LCxLxBx or RCxLxBx
+  Int_t          fID;              ///< Board serial number
+  UShort_t       fStatus;          ///< Board status
+  UChar_t        fPosition;        ///< Y-boards position
+  UChar_t        fYOver;           ///< Y-boards with common y-strips
+
+  Float_t        fXCenter[kNMT];   ///< X-center of the board
+  Float_t        fYCenter[kNMT];   ///< Y-center of the board
+  Float_t        fZCenter[kNMT];   ///< Z-center of the board
+  Float_t        fXWidth[kNMT];    ///< X-width  of the board
+  Float_t        fYWidth[kNMT];    ///< Y-width  of the board
+
+  Int_t          fXSix;            ///< X-strips ix index in the board
+  Int_t          fXSiy1;           ///< X-strips first iy index in the board
+  Int_t          fXSiy2;           ///< X-strips last  iy index in the board
+
+  Int_t          fYSix1;           ///< Y-strips first ix index in the board
+  Int_t          fYSix2;           ///< Y-strips last  ix index in the board
+  Int_t          fYSiy;            ///< Y-strips iy index in the board
+
+  Int_t          fDetElemId;       ///< Detector element ID (modulo 100)
+
+  Int_t          fIdCircuit;       ///< Circuit number
+
+  UChar_t        fXDig[kNMT][kNS]; ///< X-digits amplitude, set by GUI
+  UChar_t        fYDig[kNMT][kNS]; ///< Y-digits amplitude, set by GUI
+
+  TBox          *fXDigBox[kNMT][kNS]; ///< X-digits boxes
+  TBox          *fYDigBox[kNMT][kNS]; ///< Y-digits boxes
+
+  Bool_t         fIsOpen;          ///< Selection flag for the digits map
+
+  ClassDef(AliMUONTriggerGUIboard,1)
+
+};
+
+#endif
diff --git a/MUON/AliMUONTriggerGUIdimap.cxx b/MUON/AliMUONTriggerGUIdimap.cxx
new file mode 100644 (file)
index 0000000..3cec7d5
--- /dev/null
@@ -0,0 +1,638 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+// - digits maps of the trigger chambers                                //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#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 "AliMUON.h"
+#include "AliMUONDigit.h"
+#include "AliMpSegmentation.h"
+#include "AliMpVSegmentation.h"
+#include "AliMUONGeometryTransformer.h"
+#include "AliMUONData.h"
+
+#include "AliMUONTriggerGUIboard.h"
+#include "AliMUONTriggerGUIdimap.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(),
+    fMain(0),
+    fLoader(0),
+    fMUONData(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);
+  gStyle->SetPadBottomMargin(0.05);
+
+  gStyle->SetOptDate(0);
+  gStyle->SetOptTitle(0);
+  gStyle->SetOptStat(0);
+
+  fMain = new TGTransientFrame(p, main, w, h, kVerticalFrame);
+  fMain->Connect("CloseWindow()", "AliMUONTriggerGUIdimap", this, "DoClose()");
+  fMain->DontCallClose(); // to avoid double deletions.
+  
+  // use hierarchical cleaning
+  fMain->SetCleanup(kDeepCleanup);
+
+  TGHorizontalFrame *hframe = new TGHorizontalFrame(fMain, 60, 20, kFixedWidth);
+
+  TGTextButton *closeButton = new TGTextButton(hframe, "Close", 1);
+  closeButton->Connect("Clicked()", "AliMUONTriggerGUIdimap", this, "DoClose()");
+
+  hframe->AddFrame(closeButton, 
+                  new TGLayoutHints(kLHintsTop | 
+                                    kLHintsLeft,
+                                    2, 2, 2, 2)
+                  );
+
+  hframe->Resize(150, closeButton->GetDefaultHeight());
+
+  TGTextButton *updateButton = new TGTextButton(hframe, "Update", 2);
+  updateButton->Connect("Clicked()", "AliMUONTriggerGUIdimap", this, "DoUpdate()");
+  updateButton->SetToolTipText("Read the digits for the current event");
+
+  hframe->AddFrame(updateButton, 
+                  new TGLayoutHints(kLHintsTop | 
+                                    kLHintsLeft,
+                                    2, 2, 2, 2)
+                  );
+
+  hframe->Resize(150, updateButton->GetDefaultHeight());
+  /*
+  TGTextButton *resetButton = new TGTextButton(hframe, "Reset", 3);
+  resetButton->Connect("Clicked()", "AliMUONTriggerGUIdimap", this, "DoReset()");
+  resetButton->SetToolTipText("Redraw unselected boards");
+
+  hframe->AddFrame(resetButton, 
+                  new TGLayoutHints(kLHintsTop | 
+                                    kLHintsLeft,
+                                    2, 2, 2, 2)
+                  );
+
+  hframe->Resize(150, resetButton->GetDefaultHeight());
+  */
+  fMain->AddFrame(hframe, 
+                 new TGLayoutHints(kLHintsBottom | 
+                                   kLHintsLeft, 
+                                   2, 2, 2, 2)
+                 );
+  
+  TGTab *tab = new TGTab(fMain, 300, 300);
+  //tab->Connect("Selected(Int_t)", "AliMUONTriggerGUIdimap", this, "DoTab(Int_t)");
+
+  // Tabs for MT11, MT12, MT21, MT22
+  TGLayoutHints *lot = new TGLayoutHints(kLHintsTop | 
+                                        kLHintsLeft | 
+                                        kLHintsExpandX |
+                                        kLHintsExpandY, 
+                                        5, 5, 5, 5);
+  
+  TGCompositeFrame *tf = 0;
+
+  // Tab for MT11
+  tf = tab->AddTab("MT11");
+
+  TGCompositeFrame *cf1 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame);
+  fEc[0] = new TRootEmbeddedCanvas("ec1", cf1, 500, 500);
+  cf1->AddFrame(fEc[0], lot);
+
+  tf->AddFrame(cf1, lot);
+  fEc[0]->GetCanvas()->SetBorderMode(0);
+  fEc[0]->GetCanvas()->SetBit(kNoContextMenu);
+  
+  // Tab for MT12
+  tf = tab->AddTab("MT12");
+
+  TGCompositeFrame *cf2 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame);
+  fEc[1] = new TRootEmbeddedCanvas("ec2", cf2, 500, 500);
+  cf2->AddFrame(fEc[1], lot);
+
+  tf->AddFrame(cf2, lot);
+  fEc[1]->GetCanvas()->SetBorderMode(0);
+  fEc[1]->GetCanvas()->SetBit(kNoContextMenu);
+  
+  // Tab for MT21
+  tf = tab->AddTab("MT21");
+
+  TGCompositeFrame *cf3 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame);
+  fEc[2] = new TRootEmbeddedCanvas("ec3", cf3, 500, 500);
+  cf3->AddFrame(fEc[2], lot);
+
+  tf->AddFrame(cf3, lot);
+  fEc[2]->GetCanvas()->SetBorderMode(0);
+  fEc[2]->GetCanvas()->SetBit(kNoContextMenu);
+  
+  // Tab for MT22
+  tf = tab->AddTab("MT22");
+
+  TGCompositeFrame *cf4 = new TGCompositeFrame(tf, 60, 60, kHorizontalFrame);
+  fEc[3] = new TRootEmbeddedCanvas("ec4", cf4, 500, 500);
+  cf4->AddFrame(fEc[3], lot);
+
+  tf->AddFrame(cf4, lot);
+  fEc[3]->GetCanvas()->SetBorderMode(0);
+  fEc[3]->GetCanvas()->SetBit(kNoContextMenu);
+  
+  fMain->AddFrame(tab, 
+                 new TGLayoutHints(kLHintsBottom | 
+                                   kLHintsExpandX |
+                                   kLHintsExpandY, 
+                                   2, 2, 2, 2)
+                 );
+  
+  fMain->MapSubwindows();
+  fMain->Resize();
+  
+  fMain->CenterOnParent();
+  
+  fMain->SetWindowName("Chambers digit maps");
+  
+  fMain->MapWindow();
+
+  DrawMaps(11);
+  DrawMaps(12);
+  DrawMaps(13);
+  DrawMaps(14);
+
+}
+
+//__________________________________________________________________________
+AliMUONTriggerGUIdimap::~AliMUONTriggerGUIdimap()
+{
+  /// destructor
+
+  for (Int_t it = 0; it < kNMT; it++) {
+    for (Int_t ib = 0; ib < kNBoards; ib++) {
+      delete fPaveBoard[it][ib];
+    }
+  }
+
+  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)
+{
+  /// asignment operator
+
+  dimap.Dump();
+  Fatal("AliMUONTriggerGUIdimap","assignment operator not implemented");
+
+  return *this;
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIdimap::DrawMaps(Int_t chamber)
+{
+  /// draw the digits map for chamber-
+
+  TString mapspath = gSystem->Getenv("ALICE_ROOT");
+  mapspath.Append("/MUON/data");
+
+  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];
+  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 xMin, xMax, yMin, yMax;
+  Float_t ptx1, ptx2, pty1, pty2;
+  Float_t xpmin, xpmax, ypmin, ypmax;
+  Float_t xg1, xg2, yg1, yg2, zg1;
+    
+  Float_t frameXmax = 0., frameYmax = 0.;
+
+  switch(chamber) {
+  case 11:
+    frameXmax = 257.0;
+    frameYmax = 306.6;
+    break;
+  case 12:
+    frameXmax = 259.7;
+    frameYmax = 309.9;
+    break;
+  case 13:
+    frameXmax = 273.0;
+    frameYmax = 325.7;
+    break;
+  case 14:
+    frameXmax = 275.7;
+    frameYmax = 329.0;
+    break;
+  }
+
+  canvas->Range(
+               -(1.15*frameXmax),
+               -(1.15*frameYmax),
+               +(1.15*frameXmax),
+               +(1.15*frameYmax)
+               );
+
+  // 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]);
+
+    //printf("%d   %d   %d   %d   %f   %f   %f   %f   %f   %s   \n",side,col,line,nbx,xCenter,yCenter,xWidth,yWidth,zCenter,name);
+
+    holdS = side;
+    holdC = col;
+    holdL = line;
+
+    holdXC = xCenter;
+    holdYC = yCenter;
+
+    xMin = xCenter - xWidth/2;
+    xMax = xCenter + xWidth/2;
+    yMin = yCenter - yWidth/2;
+    yMax = yCenter + yWidth/2;
+    
+    fPaveBoard[chamber-11][ib] = new TPave(xMin,yMin,xMax,yMax,1);
+    fPaveBoard[chamber-11][ib]->SetBit(kCannotPick);
+    fPaveBoard[chamber-11][ib]->SetFillStyle(0);
+    fPaveBoard[chamber-11][ib]->Draw();
+
+    Float_t lWidth = 12.0;
+
+    if (holdL == 9) {
+
+      sprintf(cln,"C%1d",holdC);
+
+      ptx1 = holdXC - lWidth;
+      ptx2 = holdXC + lWidth;
+      pty1 = +1.065*frameYmax - lWidth;
+      pty2 = +1.065*frameYmax + lWidth;
+
+      label = new TPaveText(ptx1,pty1,ptx2,pty2,cln);
+      label->AddText(cln);
+      label->SetBorderSize(0);
+      label->SetBit(kCannotPick);
+      label->Draw();
+    }
+    if (holdL == 1) {
+
+      sprintf(cln,"C%1d",holdC);
+
+      ptx1 = holdXC - lWidth;
+      ptx2 = holdXC + lWidth;
+      pty1 = -1.065*frameYmax - lWidth;
+      pty2 = -1.065*frameYmax + lWidth;
+
+      label = new TPaveText(ptx1,pty1,ptx2,pty2,cln);
+      label->AddText(cln);
+      label->SetBorderSize(0);
+      label->SetBit(kCannotPick);
+      label->Draw();
+    }
+    if (holdS == 0 && holdC == 7) {
+
+      sprintf(cln,"L%1d",holdL);
+
+      ptx1 = -1.07*frameXmax - lWidth;
+      ptx2 = -1.07*frameXmax + lWidth;
+      pty1 = holdYC - lWidth;
+      pty2 = holdYC + lWidth;
+
+      label = new TPaveText(ptx1,pty1,ptx2,pty2,cln);
+      label->AddText(cln);
+      label->SetBorderSize(0);
+      label->SetBit(kCannotPick);
+      label->Draw();
+    }
+    if (holdS == 1 && holdC == 7) {
+
+      sprintf(cln,"L%1d",holdL);
+
+      ptx1 = +1.07*frameXmax - lWidth;
+      ptx2 = +1.07*frameXmax + lWidth;
+      pty1 = holdYC - lWidth;
+      pty2 = holdYC + lWidth;
+
+      label = new TPaveText(ptx1,pty1,ptx2,pty2,cln);
+      label->AddText(cln);
+      label->SetBorderSize(0);
+      label->SetBit(kCannotPick);
+      label->Draw();
+   }
+    
+  }
+
+  fclose(ftxt);
+
+  // draw digits set from the board GUI
+
+  AliMUONTriggerGUIboard *board;
+  Int_t imt = chamber -11;
+  Int_t nStripX, nStripY;
+  TBox *box;
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+
+    board = (AliMUONTriggerGUIboard*)fBoards->At(ib);
+
+    xCenter = board->GetXCenter(imt);
+    yCenter = board->GetYCenter(imt);
+
+    nStripX = board->GetXSiy2() - board->GetXSiy1() + 1;
+    nStripY = board->GetYSix2() - board->GetYSix1() + 1 ;
+
+    for (Int_t is = 0; is < nStripX; is++) {
+
+      if (board->GetXDig(imt,is) == 0) continue;
+
+      box = board->GetXDigBox(imt,is);
+
+      xpmin = box->GetX1();
+      xpmax = box->GetX2();
+      ypmin = box->GetY1();
+      ypmax = box->GetY2();
+
+      xpmin += xCenter;
+      xpmax += xCenter;
+      ypmin += yCenter;
+      ypmax += yCenter;
+
+      box->DrawBox(xpmin,ypmin,xpmax,ypmax);
+
+    }
+
+    for (Int_t is = 0; is < nStripY; is++) {
+
+      if (board->GetYDig(imt,is) == 0) continue;
+
+      box = board->GetYDigBox(imt,is);
+
+      xpmin = box->GetX1();
+      xpmax = box->GetX2();
+      ypmin = box->GetY1();
+      ypmax = box->GetY2();
+
+      xpmin += xCenter;
+      xpmax += xCenter;
+      ypmin += yCenter;
+      ypmax += yCenter;
+
+      box->DrawBox(xpmin,ypmin,xpmax,ypmax);
+
+    }
+
+  }
+  
+  // draw the digits
+
+  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;
+    
+    const AliMpVSegmentation* seg2 = AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode-1));
+    
+    mpad = seg2->PadByIndices(AliMpIntPair(ix,iy),kTRUE);
+    
+    // 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();
+    
+    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();
+    
+  }  // end digits loop
+
+  canvas->Modified();
+  canvas->Update();
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIdimap::DoTab(Int_t id) const
+{
+  /// some action when chamber tab is selected...
+
+  switch (id) {
+  case 0:
+    break;
+  case 1:
+    break;
+  case 2:
+    break;
+  case 3:
+    break;
+  default:
+    break;
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIdimap::DoClose()
+{
+  /// close the main frame
+
+  fIsOn = kFALSE;
+  CloseWindow();
+
+}
+
+//__________________________________________________________________________
+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];
+    }
+  }
+
+  DrawMaps(11);
+  DrawMaps(12);
+  DrawMaps(13);
+  DrawMaps(14);
+
+  AliMUONTriggerGUIboard *board;
+  for (Int_t ib = 0; ib < kNBoards; ib++) {
+    board = (AliMUONTriggerGUIboard*)fBoards->At(ib);
+    if (board->IsOpen()) SelectBoard(ib);
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIdimap::DoReset()
+{
+  /// draw unselected boards
+
+  for (Int_t it = 0; it < kNMT; it++) {
+
+    TCanvas *canvas = fEc[it]->GetCanvas();
+    canvas->cd();
+    
+    for (Int_t ib = 0; ib < kNBoards; ib++) { 
+      fPaveBoard[it][ib]->SetFillStyle(0);
+    }
+
+    canvas->Modified();
+    canvas->Update();
+
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIdimap::SelectBoard(Int_t id)
+{
+  /// highlight on the map the open board
+
+  for (Int_t it = 0; it < kNMT; it++) {
+
+    TCanvas *canvas = fEc[it]->GetCanvas();
+    canvas->cd();
+    
+    fPaveBoard[it][id]->SetFillStyle(4020);
+    fPaveBoard[it][id]->SetFillColor(7);
+
+    canvas->Modified();
+    canvas->Update();
+
+  }
+
+}
+
+//__________________________________________________________________________
+void AliMUONTriggerGUIdimap::CloseWindow()
+{
+  /// called when window is closed via the window manager.
+
+  fMain->CloseWindow();
+
+}
+
+
diff --git a/MUON/AliMUONTriggerGUIdimap.h b/MUON/AliMUONTriggerGUIdimap.h
new file mode 100644 (file)
index 0000000..54595aa
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef ALIMUONTRIGGERGUIDIMAP_H
+#define ALIMUONTRIGGERGUIDIMAP_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/// \ingroup evaluation
+/// \class AliMUONTriggerGUIdimap
+/// \brief Trigger GUI utility class: digits maps of the trigger chambers
+
+//////////////////////////////////////////////////////////////////////////
+//                                                                      //
+// Graphical User Interface utility class for the MUON trigger          //
+// - digits maps of the trigger chambers                                //
+//                                                                      //
+//////////////////////////////////////////////////////////////////////////
+
+#include <TObject.h>
+#include <RQ_OBJECT.h>
+
+class AliLoader;
+class AliMUONData;
+class TGTransientFrame;
+class TObjArray;
+class TRootEmbeddedCanvas;
+class TPave;
+class TH1F;
+class TGWindow;
+class TPad;
+
+class AliMUONTriggerGUIdimap : public TObject
+{
+
+RQ_OBJECT("AliMUONTriggerGUIdimap")
+    
+public:
+
+ AliMUONTriggerGUIdimap(AliLoader *loader,
+                       TObjArray *boards, 
+                       const TGWindow *p, const TGWindow *main, 
+                       UInt_t w, UInt_t h);
+ virtual ~AliMUONTriggerGUIdimap();
+ AliMUONTriggerGUIdimap (const AliMUONTriggerGUIdimap& dimap);
+ AliMUONTriggerGUIdimap& operator=(const AliMUONTriggerGUIdimap& dimap);
+
+ /// set the current muon loader
+ void SetLoader(AliLoader *loader) { fLoader = loader; };
+ /// true if the gui is active
+ Bool_t IsOn() const { return fIsOn; };
+
+ void DoClose();
+ void DoUpdate();
+ void DoTab(Int_t id) const;
+ void DoReset();
+ void CloseWindow();
+ void DrawMaps(Int_t chamber);
+ void SelectBoard(Int_t ib);
+
+private:
+
+  enum { kNBoards = 234 };        ///< number of boards
+  enum { kGood = 0x0001, kWithProblems = 0x0002, kNotWorking = 0x0004, kUnknown = 0x0008 };                      ///< working status flags
+  enum { kNSide = 2, kNCol = 7, kNLine = 9, kNMT = 4, kNBoardType = 3 }; ///< other constants
+  
+  TGTransientFrame    *fMain;     ///< Main frame
+
+  AliLoader   *fLoader;           ///< The MUON loader
+  AliMUONData *fMUONData;         ///< MUON data manager
+
+  TRootEmbeddedCanvas *fEc[kNMT]; ///< Canvases for drawing the digits
+
+  TPave *fPaveBoard[kNMT][kNBoards];    ///< Drawing of the board
+  TObjArray   *fBoards;           ///< Array of boards
+
+  Bool_t fIsOn;                   ///< True if the map is open
+
+  ClassDef(AliMUONTriggerGUIdimap,1)
+   
+};
+
+#endif
diff --git a/MUON/READMETriggerGUI b/MUON/READMETriggerGUI
new file mode 100644 (file)
index 0000000..c59f701
--- /dev/null
@@ -0,0 +1,77 @@
+
+OFFLINE trigger GUI data quality and debugging tool
+
+- read digits and local trigger decision from simulated/real data
+- display
+- reprocess trigger decision inside AliRoot
+- set x/y strips interactively on boards and transfer them to the AliRoot
+  TriggerElectronics, execute trigger algorithm and recover the local trigger
+  decision
+
+Classes: *TriggerGUI* 
+
+Library: evaluation
+
+Run
+---
+
+aliroot
+new AliMUONTriggerGUI()
+
+Main window
+-----------
+
+"Map of the local boards as seen from the I.P."
+
+the main window is position sensitive (after file initialization) and it is 
+possible to open a GUI for a circuit.
+
+By menus:
+
+File
+----
+
+Run     - open a file and start with a given event number
+          takes the full path <path>/galice.root
+
+Control - navigate in the tree with events
+
+Exit    - exit the main application
+
+Maps
+----
+
+Digits map   - graphical map with digits in the four chambers, MT11 ... MT22
+
+Chambers digit maps window
+--------------------------
+
+Update - update the map after:
+             - loading of another event
+             - changing interactively the strip signals in boards GUI
+
+Circuit
+-------
+
+Open   - open a board GUI by circuit number
+
+Trigger
+-------
+
+Trigger DSET  - (re)run the trigger algorithm
+
+Circuit GUI window
+------------------
+
+- visualize x/y strips
+- "Set/unset" x (or) y strips
+- "Digits" create board digits from the actual configuration created in the GUI
+- "Reset" reset modification on strips done interactively
+
+
+
+Bogdan Vulpescu
+vulpescu@clermont.in2p3.fr
+
+1 June 2007
+
diff --git a/MUON/data/guimap.gif b/MUON/data/guimap.gif
new file mode 100644 (file)
index 0000000..b15e649
Binary files /dev/null and b/MUON/data/guimap.gif differ
diff --git a/MUON/data/guimapix11.txt b/MUON/data/guimapix11.txt
new file mode 100644 (file)
index 0000000..b0dfbbc
--- /dev/null
@@ -0,0 +1,234 @@
+1   2   5   1     0     0    15   RC2L5B12   
+1   2   5   2     0    16    31   RC2L5B34   
+1   2   5   3     0    32    47   RC2L5B56   
+1   2   5   4     0    48    63   RC2L5B78   
+1   3   5   1     1     0    15   RC3L5B12   
+1   3   5   2     1    16    31   RC3L5B34   
+1   3   5   3     1    32    47   RC3L5B56   
+1   3   5   4     1    48    63   RC3L5B78   
+1   4   5   1     2     0    15   RC4L5B12   
+1   4   5   2     2    16    31   RC4L5B34   
+1   5   5   1     3     0    15   RC5L5B12   
+1   5   5   2     3    16    31   RC5L5B34   
+1   6   5   1     4     0    15   RC6L5B12   
+1   6   5   2     4    16    31   RC6L5B34   
+1   7   5   1     5     0    15   RC7L5B12   
+1   1   6   1     0    16    31   RC1L6B12   
+1   1   6   2     0    32    47   RC1L6B34   
+1   1   6   3     0    48    63   RC1L6B56   
+1   2   6   1     1     0    15   RC2L6B12   
+1   2   6   2     1    16    31   RC2L6B34   
+1   2   6   3     1    32    47   RC2L6B56   
+1   2   6   4     1    48    63   RC2L6B78   
+1   3   6   1     2     0    15   RC3L6B12   
+1   3   6   2     2    16    31   RC3L6B34   
+1   3   6   3     2    32    47   RC3L6B56   
+1   3   6   4     2    48    63   RC3L6B78   
+1   4   6   1     3     0    15   RC4L6B12   
+1   4   6   2     3    16    31   RC4L6B34   
+1   5   6   1     4     0    15   RC5L6B12   
+1   5   6   2     4    16    31   RC5L6B34   
+1   6   6   1     5     0    15   RC6L6B12   
+1   6   6   2     5    16    31   RC6L6B34   
+1   7   6   1     6     0    15   RC7L6B12   
+1   1   7   1     0     0    15   RC1L7B12   
+1   1   7   2     0    16    31   RC1L7B34   
+1   2   7   1     1     0    15   RC2L7B12   
+1   2   7   2     1    16    31   RC2L7B34   
+1   3   7   1     2     0    15   RC3L7B12   
+1   3   7   2     2    16    31   RC3L7B34   
+1   4   7   1     3     0    15   RC4L7B12   
+1   4   7   2     3    16    31   RC4L7B34   
+1   5   7   1     4     0    15   RC5L7B12   
+1   5   7   2     4    16    31   RC5L7B34   
+1   6   7   1     5     0    15   RC6L7B12   
+1   6   7   2     5    16    31   RC6L7B34   
+1   7   7   1     6     0    15   RC7L7B12   
+1   1   8   1     0     0    15   RC1L8B12   
+1   1   8   2     0    16    31   RC1L8B34   
+1   2   8   1     1     0    15   RC2L8B12   
+1   2   8   2     1    16    31   RC2L8B34   
+1   3   8   1     2     0    15   RC3L8B12   
+1   3   8   2     2    16    31   RC3L8B34   
+1   4   8   1     3     0    15   RC4L8B12   
+1   4   8   2     3    16    31   RC4L8B34   
+1   5   8   1     4     0    15   RC5L8B12   
+1   5   8   2     4    16    31   RC5L8B34   
+1   6   8   1     5     0    15   RC6L8B12   
+1   6   8   2     5    16    31   RC6L8B34   
+1   7   8   1     6     0    15   RC7L8B12   
+1   1   9   1     0     0    15   RC1L9B12   
+1   2   9   1     1     0    15   RC2L9B12   
+1   3   9   1     2     0    15   RC3L9B12   
+1   4   9   1     3     0    15   RC4L9B12   
+1   5   9   1     4     0    15   RC5L9B12   
+1   6   9   1     5     0    15   RC6L9B12   
+1   7   9   1     6     0    15   RC7L9B12   
+0   1   9   1     0     0    15   LC1L9B12   
+0   2   9   1     1     0    15   LC2L9B12   
+0   3   9   1     2     0    15   LC3L9B12   
+0   4   9   1     3     0    15   LC4L9B12   
+0   5   9   1     4     0    15   LC5L9B12   
+0   6   9   1     5     0    15   LC6L9B12   
+0   7   9   1     6     0    15   LC7L9B12   
+0   1   8   1     0     0    15   LC1L8B12   
+0   1   8   2     0    16    31   LC1L8B34   
+0   2   8   1     1     0    15   LC2L8B12   
+0   2   8   2     1    16    31   LC2L8B34   
+0   3   8   1     2     0    15   LC3L8B12   
+0   3   8   2     2    16    31   LC3L8B34   
+0   4   8   1     3     0    15   LC4L8B12   
+0   4   8   2     3    16    31   LC4L8B34   
+0   5   8   1     4     0    15   LC5L8B12   
+0   5   8   2     4    16    31   LC5L8B34   
+0   6   8   1     5     0    15   LC6L8B12   
+0   6   8   2     5    16    31   LC6L8B34   
+0   7   8   1     6     0    15   LC7L8B12   
+0   1   7   1     0     0    15   LC1L7B12   
+0   1   7   2     0    16    31   LC1L7B34   
+0   2   7   1     1     0    15   LC2L7B12   
+0   2   7   2     1    16    31   LC2L7B34   
+0   3   7   1     2     0    15   LC3L7B12   
+0   3   7   2     2    16    31   LC3L7B34   
+0   4   7   1     3     0    15   LC4L7B12   
+0   4   7   2     3    16    31   LC4L7B34   
+0   5   7   1     4     0    15   LC5L7B12   
+0   5   7   2     4    16    31   LC5L7B34   
+0   6   7   1     5     0    15   LC6L7B12   
+0   6   7   2     5    16    31   LC6L7B34   
+0   7   7   1     6     0    15   LC7L7B12   
+0   1   6   1     0    16    31   LC1L6B12   
+0   1   6   2     0    32    47   LC1L6B34   
+0   1   6   3     0    48    63   LC1L6B56   
+0   2   6   1     1     0    15   LC2L6B12   
+0   2   6   2     1    16    31   LC2L6B34   
+0   2   6   3     1    32    47   LC2L6B56   
+0   2   6   4     1    48    63   LC2L6B78   
+0   3   6   1     2     0    15   LC3L6B12   
+0   3   6   2     2    16    31   LC3L6B34   
+0   3   6   3     2    32    47   LC3L6B56   
+0   3   6   4     2    48    63   LC3L6B78   
+0   4   6   1     3     0    15   LC4L6B12   
+0   4   6   2     3    16    31   LC4L6B34   
+0   5   6   1     4     0    15   LC5L6B12   
+0   5   6   2     4    16    31   LC5L6B34   
+0   6   6   1     5     0    15   LC6L6B12   
+0   6   6   2     5    16    31   LC6L6B34   
+0   7   6   1     6     0    15   LC7L6B12   
+0   2   5   1     0     0    15   LC2L5B12   
+0   2   5   2     0    16    31   LC2L5B34   
+0   2   5   3     0    32    47   LC2L5B56   
+0   2   5   4     0    48    63   LC2L5B78   
+0   3   5   1     1     0    15   LC3L5B12   
+0   3   5   2     1    16    31   LC3L5B34   
+0   3   5   3     1    32    47   LC3L5B56   
+0   3   5   4     1    48    63   LC3L5B78   
+0   4   5   1     2     0    15   LC4L5B12   
+0   4   5   2     2    16    31   LC4L5B34   
+0   5   5   1     3     0    15   LC5L5B12   
+0   5   5   2     3    16    31   LC5L5B34   
+0   6   5   1     4     0    15   LC6L5B12   
+0   6   5   2     4    16    31   LC6L5B34   
+0   7   5   1     5     0    15   LC7L5B12   
+0   1   4   1     0     0    15   LC1L4B12   
+0   1   4   2     0    16    31   LC1L4B34   
+0   1   4   3     0    32    47   LC1L4B56   
+0   2   4   1     1     0    15   LC2L4B12   
+0   2   4   2     1    16    31   LC2L4B34   
+0   2   4   3     1    32    47   LC2L4B56   
+0   2   4   4     1    48    63   LC2L4B78   
+0   3   4   1     2     0    15   LC3L4B12   
+0   3   4   2     2    16    31   LC3L4B34   
+0   3   4   3     2    32    47   LC3L4B56   
+0   3   4   4     2    48    63   LC3L4B78   
+0   4   4   1     3     0    15   LC4L4B12   
+0   4   4   2     3    16    31   LC4L4B34   
+0   5   4   1     4     0    15   LC5L4B12   
+0   5   4   2     4    16    31   LC5L4B34   
+0   6   4   1     5     0    15   LC6L4B12   
+0   6   4   2     5    16    31   LC6L4B34   
+0   7   4   1     6     0    15   LC7L4B12   
+0   1   3   1     0     0    15   LC1L3B12   
+0   1   3   2     0    16    31   LC1L3B34   
+0   2   3   1     1     0    15   LC2L3B12   
+0   2   3   2     1    16    31   LC2L3B34   
+0   3   3   1     2     0    15   LC3L3B12   
+0   3   3   2     2    16    31   LC3L3B34   
+0   4   3   1     3     0    15   LC4L3B12   
+0   4   3   2     3    16    31   LC4L3B34   
+0   5   3   1     4     0    15   LC5L3B12   
+0   5   3   2     4    16    31   LC5L3B34   
+0   6   3   1     5     0    15   LC6L3B12   
+0   6   3   2     5    16    31   LC6L3B34   
+0   7   3   1     6     0    15   LC7L3B12   
+0   1   2   1     0     0    15   LC1L2B12   
+0   1   2   2     0    16    31   LC1L2B34   
+0   2   2   1     1     0    15   LC2L2B12   
+0   2   2   2     1    16    31   LC2L2B34   
+0   3   2   1     2     0    15   LC3L2B12   
+0   3   2   2     2    16    31   LC3L2B34   
+0   4   2   1     3     0    15   LC4L2B12   
+0   4   2   2     3    16    31   LC4L2B34   
+0   5   2   1     4     0    15   LC5L2B12   
+0   5   2   2     4    16    31   LC5L2B34   
+0   6   2   1     5     0    15   LC6L2B12   
+0   6   2   2     5    16    31   LC6L2B34   
+0   7   2   1     6     0    15   LC7L2B12   
+0   1   1   1     0     0    15   LC1L1B12   
+0   2   1   1     1     0    15   LC2L1B12   
+0   3   1   1     2     0    15   LC3L1B12   
+0   4   1   1     3     0    15   LC4L1B12   
+0   5   1   1     4     0    15   LC5L1B12   
+0   6   1   1     5     0    15   LC6L1B12   
+0   7   1   1     6     0    15   LC7L1B12   
+1   1   1   1     0     0    15   RC1L1B12   
+1   2   1   1     1     0    15   RC2L1B12   
+1   3   1   1     2     0    15   RC3L1B12   
+1   4   1   1     3     0    15   RC4L1B12   
+1   5   1   1     4     0    15   RC5L1B12   
+1   6   1   1     5     0    15   RC6L1B12   
+1   7   1   1     6     0    15   RC7L1B12   
+1   1   2   1     0     0    15   RC1L2B12   
+1   1   2   2     0    16    31   RC1L2B34   
+1   2   2   1     1     0    15   RC2L2B12   
+1   2   2   2     1    16    31   RC2L2B34   
+1   3   2   1     2     0    15   RC3L2B12   
+1   3   2   2     2    16    31   RC3L2B34   
+1   4   2   1     3     0    15   RC4L2B12   
+1   4   2   2     3    16    31   RC4L2B34   
+1   5   2   1     4     0    15   RC5L2B12   
+1   5   2   2     4    16    31   RC5L2B34   
+1   6   2   1     5     0    15   RC6L2B12   
+1   6   2   2     5    16    31   RC6L2B34   
+1   7   2   1     6     0    15   RC7L2B12   
+1   1   3   1     0     0    15   RC1L3B12   
+1   1   3   2     0    16    31   RC1L3B34   
+1   2   3   1     1     0    15   RC2L3B12   
+1   2   3   2     1    16    31   RC2L3B34   
+1   3   3   1     2     0    15   RC3L3B12   
+1   3   3   2     2    16    31   RC3L3B34   
+1   4   3   1     3     0    15   RC4L3B12   
+1   4   3   2     3    16    31   RC4L3B34   
+1   5   3   1     4     0    15   RC5L3B12   
+1   5   3   2     4    16    31   RC5L3B34   
+1   6   3   1     5     0    15   RC6L3B12   
+1   6   3   2     5    16    31   RC6L3B34   
+1   7   3   1     6     0    15   RC7L3B12   
+1   1   4   1     0     0    15   RC1L4B12   
+1   1   4   2     0    16    31   RC1L4B34   
+1   1   4   3     0    32    47   RC1L4B56   
+1   2   4   1     1     0    15   RC2L4B12   
+1   2   4   2     1    16    31   RC2L4B34   
+1   2   4   3     1    32    47   RC2L4B56   
+1   2   4   4     1    48    63   RC2L4B78   
+1   3   4   1     2     0    15   RC3L4B12   
+1   3   4   2     2    16    31   RC3L4B34   
+1   3   4   3     2    32    47   RC3L4B56   
+1   3   4   4     2    48    63   RC3L4B78   
+1   4   4   1     3     0    15   RC4L4B12   
+1   4   4   2     3    16    31   RC4L4B34   
+1   5   4   1     4     0    15   RC5L4B12   
+1   5   4   2     4    16    31   RC5L4B34   
+1   6   4   1     5     0    15   RC6L4B12   
+1   6   4   2     5    16    31   RC6L4B34   
+1   7   4   1     6     0    15   RC7L4B12   
diff --git a/MUON/data/guimapiy11.txt b/MUON/data/guimapiy11.txt
new file mode 100644 (file)
index 0000000..d588aeb
--- /dev/null
@@ -0,0 +1,234 @@
+1   2   5   1     0     7     0   RC2L5B12   
+1   2   5   2     0     7     0   RC2L5B34   
+1   2   5   3     0     7     0   RC2L5B56   
+1   2   5   4     0     7     0   RC2L5B78   
+1   3   5   1     8    23     0   RC3L5B12   
+1   3   5   2     8    23     0   RC3L5B34   
+1   3   5   3     8    23     0   RC3L5B56   
+1   3   5   4     8    23     0   RC3L5B78   
+1   4   5   1    24    39     0   RC4L5B12   
+1   4   5   2    24    39     0   RC4L5B34   
+1   5   5   1    40    55     0   RC5L5B12   
+1   5   5   2    40    55     0   RC5L5B34   
+1   6   5   1    56    63     0   RC6L5B12   
+1   6   5   2    56    63     0   RC6L5B34   
+1   7   5   1    64    79     0   RC7L5B12   
+1   1   6   1     0    15     0   RC1L6B12   
+1   1   6   2     0    15     0   RC1L6B34   
+1   1   6   3     0    15     0   RC1L6B56   
+1   2   6   1    16    31     0   RC2L6B12   
+1   2   6   2    16    31     0   RC2L6B34   
+1   2   6   3    16    31     0   RC2L6B56   
+1   2   6   4    16    31     0   RC2L6B78   
+1   3   6   1    32    47     0   RC3L6B12   
+1   3   6   2    32    47     0   RC3L6B34   
+1   3   6   3    32    47     0   RC3L6B56   
+1   3   6   4    32    47     0   RC3L6B78   
+1   4   6   1    48    63     0   RC4L6B12   
+1   4   6   2    48    63     0   RC4L6B34   
+1   5   6   1    64    79     0   RC5L6B12   
+1   5   6   2    64    79     0   RC5L6B34   
+1   6   6   1    80    87     0   RC6L6B12   
+1   6   6   2    80    87     0   RC6L6B34   
+1   7   6   1    88   103     0   RC7L6B12   
+1   1   7   1     0    15     0   RC1L7B12   
+1   1   7   2     0    15     0   RC1L7B34   
+1   2   7   1    16    31     0   RC2L7B12   
+1   2   7   2    16    31     0   RC2L7B34   
+1   3   7   1    32    47     0   RC3L7B12   
+1   3   7   2    32    47     0   RC3L7B34   
+1   4   7   1    48    63     0   RC4L7B12   
+1   4   7   2    48    63     0   RC4L7B34   
+1   5   7   1    64    79     0   RC5L7B12   
+1   5   7   2    64    79     0   RC5L7B34   
+1   6   7   1    80    87     0   RC6L7B12   
+1   6   7   2    80    87     0   RC6L7B34   
+1   7   7   1    88   103     0   RC7L7B12   
+1   1   8   1     0     7     0   RC1L8B12   
+1   1   8   2     0     7     0   RC1L8B34   
+1   2   8   1     8    15     0   RC2L8B12   
+1   2   8   2     8    15     0   RC2L8B34   
+1   3   8   1    16    23     0   RC3L8B12   
+1   3   8   2    16    23     0   RC3L8B34   
+1   4   8   1    24    31     0   RC4L8B12   
+1   4   8   2    24    31     0   RC4L8B34   
+1   5   8   1    32    39     0   RC5L8B12   
+1   5   8   2    32    39     0   RC5L8B34   
+1   6   8   1    40    47     0   RC6L8B12   
+1   6   8   2    40    47     0   RC6L8B34   
+1   7   8   1    48    63     0   RC7L8B12   
+1   1   9   1     0     7     0   RC1L9B12   
+1   2   9   1     8    15     0   RC2L9B12   
+1   3   9   1    16    23     0   RC3L9B12   
+1   4   9   1    24    31     0   RC4L9B12   
+1   5   9   1    32    39     0   RC5L9B12   
+1   6   9   1    40    47     0   RC6L9B12   
+1   7   9   1    48    63     0   RC7L9B12   
+0   1   9   1     0     7     0   LC1L9B12   
+0   2   9   1     8    15     0   LC2L9B12   
+0   3   9   1    16    23     0   LC3L9B12   
+0   4   9   1    24    31     0   LC4L9B12   
+0   5   9   1    32    39     0   LC5L9B12   
+0   6   9   1    40    47     0   LC6L9B12   
+0   7   9   1    48    63     0   LC7L9B12   
+0   1   8   1     0     7     0   LC1L8B12   
+0   1   8   2     0     7     0   LC1L8B34   
+0   2   8   1     8    15     0   LC2L8B12   
+0   2   8   2     8    15     0   LC2L8B34   
+0   3   8   1    16    23     0   LC3L8B12   
+0   3   8   2    16    23     0   LC3L8B34   
+0   4   8   1    24    31     0   LC4L8B12   
+0   4   8   2    24    31     0   LC4L8B34   
+0   5   8   1    32    39     0   LC5L8B12   
+0   5   8   2    32    39     0   LC5L8B34   
+0   6   8   1    40    47     0   LC6L8B12   
+0   6   8   2    40    47     0   LC6L8B34   
+0   7   8   1    48    63     0   LC7L8B12   
+0   1   7   1     0    15     0   LC1L7B12   
+0   1   7   2     0    15     0   LC1L7B34   
+0   2   7   1    16    31     0   LC2L7B12   
+0   2   7   2    16    31     0   LC2L7B34   
+0   3   7   1    32    47     0   LC3L7B12   
+0   3   7   2    32    47     0   LC3L7B34   
+0   4   7   1    48    63     0   LC4L7B12   
+0   4   7   2    48    63     0   LC4L7B34   
+0   5   7   1    64    79     0   LC5L7B12   
+0   5   7   2    64    79     0   LC5L7B34   
+0   6   7   1    80    87     0   LC6L7B12   
+0   6   7   2    80    87     0   LC6L7B34   
+0   7   7   1    88   103     0   LC7L7B12   
+0   1   6   1     0    15     0   LC1L6B12   
+0   1   6   2     0    15     0   LC1L6B34   
+0   1   6   3     0    15     0   LC1L6B56   
+0   2   6   1    16    31     0   LC2L6B12   
+0   2   6   2    16    31     0   LC2L6B34   
+0   2   6   3    16    31     0   LC2L6B56   
+0   2   6   4    16    31     0   LC2L6B78   
+0   3   6   1    32    47     0   LC3L6B12   
+0   3   6   2    32    47     0   LC3L6B34   
+0   3   6   3    32    47     0   LC3L6B56   
+0   3   6   4    32    47     0   LC3L6B78   
+0   4   6   1    48    63     0   LC4L6B12   
+0   4   6   2    48    63     0   LC4L6B34   
+0   5   6   1    64    79     0   LC5L6B12   
+0   5   6   2    64    79     0   LC5L6B34   
+0   6   6   1    80    87     0   LC6L6B12   
+0   6   6   2    80    87     0   LC6L6B34   
+0   7   6   1    88   103     0   LC7L6B12   
+0   2   5   1     0     7     0   LC2L5B12   
+0   2   5   2     0     7     0   LC2L5B34   
+0   2   5   3     0     7     0   LC2L5B56   
+0   2   5   4     0     7     0   LC2L5B78   
+0   3   5   1     8    23     0   LC3L5B12   
+0   3   5   2     8    23     0   LC3L5B34   
+0   3   5   3     8    23     0   LC3L5B56   
+0   3   5   4     8    23     0   LC3L5B78   
+0   4   5   1    24    39     0   LC4L5B12   
+0   4   5   2    24    39     0   LC4L5B34   
+0   5   5   1    40    55     0   LC5L5B12   
+0   5   5   2    40    55     0   LC5L5B34   
+0   6   5   1    56    63     0   LC6L5B12   
+0   6   5   2    56    63     0   LC6L5B34   
+0   7   5   1    64    79     0   LC7L5B12   
+0   1   4   1     0    15     0   LC1L4B12   
+0   1   4   2     0    15     0   LC1L4B34   
+0   1   4   3     0    15     0   LC1L4B56   
+0   2   4   1    16    31     0   LC2L4B12   
+0   2   4   2    16    31     0   LC2L4B34   
+0   2   4   3    16    31     0   LC2L4B56   
+0   2   4   4    16    31     0   LC2L4B78   
+0   3   4   1    32    47     0   LC3L4B12   
+0   3   4   2    32    47     0   LC3L4B34   
+0   3   4   3    32    47     0   LC3L4B56   
+0   3   4   4    32    47     0   LC3L4B78   
+0   4   4   1    48    63     0   LC4L4B12   
+0   4   4   2    48    63     0   LC4L4B34   
+0   5   4   1    64    79     0   LC5L4B12   
+0   5   4   2    64    79     0   LC5L4B34   
+0   6   4   1    80    87     0   LC6L4B12   
+0   6   4   2    80    87     0   LC6L4B34   
+0   7   4   1    88   103     0   LC7L4B12   
+0   1   3   1     0    15     0   LC1L3B12   
+0   1   3   2     0    15     0   LC1L3B34   
+0   2   3   1    16    31     0   LC2L3B12   
+0   2   3   2    16    31     0   LC2L3B34   
+0   3   3   1    32    47     0   LC3L3B12   
+0   3   3   2    32    47     0   LC3L3B34   
+0   4   3   1    48    63     0   LC4L3B12   
+0   4   3   2    48    63     0   LC4L3B34   
+0   5   3   1    64    79     0   LC5L3B12   
+0   5   3   2    64    79     0   LC5L3B34   
+0   6   3   1    80    87     0   LC6L3B12   
+0   6   3   2    80    87     0   LC6L3B34   
+0   7   3   1    88   103     0   LC7L3B12   
+0   1   2   1     0     7     0   LC1L2B12   
+0   1   2   2     0     7     0   LC1L2B34   
+0   2   2   1     8    15     0   LC2L2B12   
+0   2   2   2     8    15     0   LC2L2B34   
+0   3   2   1    16    23     0   LC3L2B12   
+0   3   2   2    16    23     0   LC3L2B34   
+0   4   2   1    24    31     0   LC4L2B12   
+0   4   2   2    24    31     0   LC4L2B34   
+0   5   2   1    32    39     0   LC5L2B12   
+0   5   2   2    32    39     0   LC5L2B34   
+0   6   2   1    40    47     0   LC6L2B12   
+0   6   2   2    40    47     0   LC6L2B34   
+0   7   2   1    48    63     0   LC7L2B12   
+0   1   1   1     0     7     0   LC1L1B12   
+0   2   1   1     8    15     0   LC2L1B12   
+0   3   1   1    16    23     0   LC3L1B12   
+0   4   1   1    24    31     0   LC4L1B12   
+0   5   1   1    32    39     0   LC5L1B12   
+0   6   1   1    40    47     0   LC6L1B12   
+0   7   1   1    48    63     0   LC7L1B12   
+1   1   1   1     0     7     0   RC1L1B12   
+1   2   1   1     8    15     0   RC2L1B12   
+1   3   1   1    16    23     0   RC3L1B12   
+1   4   1   1    24    31     0   RC4L1B12   
+1   5   1   1    32    39     0   RC5L1B12   
+1   6   1   1    40    47     0   RC6L1B12   
+1   7   1   1    48    63     0   RC7L1B12   
+1   1   2   1     0     7     0   RC1L2B12   
+1   1   2   2     0     7     0   RC1L2B34   
+1   2   2   1     8    15     0   RC2L2B12   
+1   2   2   2     8    15     0   RC2L2B34   
+1   3   2   1    16    23     0   RC3L2B12   
+1   3   2   2    16    23     0   RC3L2B34   
+1   4   2   1    24    31     0   RC4L2B12   
+1   4   2   2    24    31     0   RC4L2B34   
+1   5   2   1    32    39     0   RC5L2B12   
+1   5   2   2    32    39     0   RC5L2B34   
+1   6   2   1    40    47     0   RC6L2B12   
+1   6   2   2    40    47     0   RC6L2B34   
+1   7   2   1    48    63     0   RC7L2B12   
+1   1   3   1     0    15     0   RC1L3B12   
+1   1   3   2     0    15     0   RC1L3B34   
+1   2   3   1    16    31     0   RC2L3B12   
+1   2   3   2    16    31     0   RC2L3B34   
+1   3   3   1    32    47     0   RC3L3B12   
+1   3   3   2    32    47     0   RC3L3B34   
+1   4   3   1    48    63     0   RC4L3B12   
+1   4   3   2    48    63     0   RC4L3B34   
+1   5   3   1    64    79     0   RC5L3B12   
+1   5   3   2    64    79     0   RC5L3B34   
+1   6   3   1    80    87     0   RC6L3B12   
+1   6   3   2    80    87     0   RC6L3B34   
+1   7   3   1    88   103     0   RC7L3B12   
+1   1   4   1     0    15     0   RC1L4B12   
+1   1   4   2     0    15     0   RC1L4B34   
+1   1   4   3     0    15     0   RC1L4B56   
+1   2   4   1    16    31     0   RC2L4B12   
+1   2   4   2    16    31     0   RC2L4B34   
+1   2   4   3    16    31     0   RC2L4B56   
+1   2   4   4    16    31     0   RC2L4B78   
+1   3   4   1    32    47     0   RC3L4B12   
+1   3   4   2    32    47     0   RC3L4B34   
+1   3   4   3    32    47     0   RC3L4B56   
+1   3   4   4    32    47     0   RC3L4B78   
+1   4   4   1    48    63     0   RC4L4B12   
+1   4   4   2    48    63     0   RC4L4B34   
+1   5   4   1    64    79     0   RC5L4B12   
+1   5   4   2    64    79     0   RC5L4B34   
+1   6   4   1    80    87     0   RC6L4B12   
+1   6   4   2    80    87     0   RC6L4B34   
+1   7   4   1    88   103     0   RC7L4B12   
diff --git a/MUON/data/guimapp11.txt b/MUON/data/guimapp11.txt
new file mode 100644 (file)
index 0000000..5567deb
--- /dev/null
@@ -0,0 +1,234 @@
+1   2   5   1     61.50    -25.50     17.00     17.00   -1599.90   RC2L5B12   
+1   2   5   2     61.50     -8.50     17.00     17.00   -1599.90   RC2L5B34   
+1   2   5   3     61.50      8.50     17.00     17.00   -1599.90   RC2L5B56   
+1   2   5   4     61.50     25.50     17.00     17.00   -1599.90   RC2L5B78   
+1   3   5   1     87.00    -25.50     34.00     17.00   -1599.90   RC3L5B12   
+1   3   5   2     87.00     -8.50     34.00     17.00   -1599.90   RC3L5B34   
+1   3   5   3     87.00      8.50     34.00     17.00   -1599.90   RC3L5B56   
+1   3   5   4     87.00     25.50     34.00     17.00   -1599.90   RC3L5B78   
+1   4   5   1    121.00    -17.00     34.00     34.00   -1599.90   RC4L5B12   
+1   4   5   2    121.00     17.00     34.00     34.00   -1599.90   RC4L5B34   
+1   5   5   1    155.00    -17.00     34.00     34.00   -1599.90   RC5L5B12   
+1   5   5   2    155.00     17.00     34.00     34.00   -1599.90   RC5L5B34   
+1   6   5   1    189.00    -17.00     34.00     34.00   -1599.90   RC6L5B12   
+1   6   5   2    189.00     17.00     34.00     34.00   -1599.90   RC6L5B34   
+1   7   5   1    231.50      0.00     51.00     68.00   -1599.90   RC7L5B12   
+1   1   6   1     19.00     59.65     34.00     17.00   -1607.10   RC1L6B12   
+1   1   6   2     19.00     76.65     34.00     17.00   -1607.10   RC1L6B34   
+1   1   6   3     19.00     93.65     34.00     17.00   -1607.10   RC1L6B56   
+1   2   6   1     53.00     42.65     34.00     17.00   -1607.10   RC2L6B12   
+1   2   6   2     53.00     59.65     34.00     17.00   -1607.10   RC2L6B34   
+1   2   6   3     53.00     76.65     34.00     17.00   -1607.10   RC2L6B56   
+1   2   6   4     53.00     93.65     34.00     17.00   -1607.10   RC2L6B78   
+1   3   6   1     87.00     42.65     34.00     17.00   -1607.10   RC3L6B12   
+1   3   6   2     87.00     59.65     34.00     17.00   -1607.10   RC3L6B34   
+1   3   6   3     87.00     76.65     34.00     17.00   -1607.10   RC3L6B56   
+1   3   6   4     87.00     93.65     34.00     17.00   -1607.10   RC3L6B78   
+1   4   6   1    121.00     51.15     34.00     34.00   -1607.10   RC4L6B12   
+1   4   6   2    121.00     85.15     34.00     34.00   -1607.10   RC4L6B34   
+1   5   6   1    155.00     51.15     34.00     34.00   -1607.10   RC5L6B12   
+1   5   6   2    155.00     85.15     34.00     34.00   -1607.10   RC5L6B34   
+1   6   6   1    189.00     51.15     34.00     34.00   -1607.10   RC6L6B12   
+1   6   6   2    189.00     85.15     34.00     34.00   -1607.10   RC6L6B34   
+1   7   6   1    231.50     68.15     51.00     68.00   -1607.10   RC7L6B12   
+1   1   7   1     19.00    118.70     34.00     34.00   -1599.90   RC1L7B12   
+1   1   7   2     19.00    152.70     34.00     34.00   -1599.90   RC1L7B34   
+1   2   7   1     53.00    118.70     34.00     34.00   -1599.90   RC2L7B12   
+1   2   7   2     53.00    152.70     34.00     34.00   -1599.90   RC2L7B34   
+1   3   7   1     87.00    118.70     34.00     34.00   -1599.90   RC3L7B12   
+1   3   7   2     87.00    152.70     34.00     34.00   -1599.90   RC3L7B34   
+1   4   7   1    121.00    118.70     34.00     34.00   -1599.90   RC4L7B12   
+1   4   7   2    121.00    152.70     34.00     34.00   -1599.90   RC4L7B34   
+1   5   7   1    155.00    118.70     34.00     34.00   -1599.90   RC5L7B12   
+1   5   7   2    155.00    152.70     34.00     34.00   -1599.90   RC5L7B34   
+1   6   7   1    189.00    118.70     34.00     34.00   -1599.90   RC6L7B12   
+1   6   7   2    189.00    152.70     34.00     34.00   -1599.90   RC6L7B34   
+1   7   7   1    231.50    135.70     51.00     68.00   -1599.90   RC7L7B12   
+1   1   8   1     19.00    187.46     34.00     34.00   -1607.10   RC1L8B12   
+1   1   8   2     19.00    221.46     34.00     34.00   -1607.10   RC1L8B34   
+1   2   8   1     53.00    187.46     34.00     34.00   -1607.10   RC2L8B12   
+1   2   8   2     53.00    221.46     34.00     34.00   -1607.10   RC2L8B34   
+1   3   8   1     87.00    187.46     34.00     34.00   -1607.10   RC3L8B12   
+1   3   8   2     87.00    221.46     34.00     34.00   -1607.10   RC3L8B34   
+1   4   8   1    121.00    187.46     34.00     34.00   -1607.10   RC4L8B12   
+1   4   8   2    121.00    221.46     34.00     34.00   -1607.10   RC4L8B34   
+1   5   8   1    155.00    187.46     34.00     34.00   -1607.10   RC5L8B12   
+1   5   8   2    155.00    221.46     34.00     34.00   -1607.10   RC5L8B34   
+1   6   8   1    189.00    187.46     34.00     34.00   -1607.10   RC6L8B12   
+1   6   8   2    189.00    221.46     34.00     34.00   -1607.10   RC6L8B34   
+1   7   8   1    231.50    204.46     51.00     68.00   -1607.10   RC7L8B12   
+1   1   9   1     19.00    271.39     34.00     68.00   -1599.90   RC1L9B12   
+1   2   9   1     53.00    271.39     34.00     68.00   -1599.90   RC2L9B12   
+1   3   9   1     87.00    271.39     34.00     68.00   -1599.90   RC3L9B12   
+1   4   9   1    121.00    271.39     34.00     68.00   -1599.90   RC4L9B12   
+1   5   9   1    155.00    271.39     34.00     68.00   -1599.90   RC5L9B12   
+1   6   9   1    189.00    271.39     34.00     68.00   -1599.90   RC6L9B12   
+1   7   9   1    231.50    271.39     51.00     68.00   -1599.90   RC7L9B12   
+0   1   9   1    -19.00    272.61     34.00     68.00   -1607.10   LC1L9B12   
+0   2   9   1    -53.00    272.61     34.00     68.00   -1607.10   LC2L9B12   
+0   3   9   1    -87.00    272.61     34.00     68.00   -1607.10   LC3L9B12   
+0   4   9   1   -121.00    272.61     34.00     68.00   -1607.10   LC4L9B12   
+0   5   9   1   -155.00    272.61     34.00     68.00   -1607.10   LC5L9B12   
+0   6   9   1   -189.00    272.61     34.00     68.00   -1607.10   LC6L9B12   
+0   7   9   1   -231.50    272.61     51.00     68.00   -1607.10   LC7L9B12   
+0   1   8   1    -19.00    186.54     34.00     34.00   -1599.90   LC1L8B12   
+0   1   8   2    -19.00    220.54     34.00     34.00   -1599.90   LC1L8B34   
+0   2   8   1    -53.00    186.54     34.00     34.00   -1599.90   LC2L8B12   
+0   2   8   2    -53.00    220.54     34.00     34.00   -1599.90   LC2L8B34   
+0   3   8   1    -87.00    186.54     34.00     34.00   -1599.90   LC3L8B12   
+0   3   8   2    -87.00    220.54     34.00     34.00   -1599.90   LC3L8B34   
+0   4   8   1   -121.00    186.54     34.00     34.00   -1599.90   LC4L8B12   
+0   4   8   2   -121.00    220.54     34.00     34.00   -1599.90   LC4L8B34   
+0   5   8   1   -155.00    186.54     34.00     34.00   -1599.90   LC5L8B12   
+0   5   8   2   -155.00    220.54     34.00     34.00   -1599.90   LC5L8B34   
+0   6   8   1   -189.00    186.54     34.00     34.00   -1599.90   LC6L8B12   
+0   6   8   2   -189.00    220.54     34.00     34.00   -1599.90   LC6L8B34   
+0   7   8   1   -231.50    203.54     51.00     68.00   -1599.90   LC7L8B12   
+0   1   7   1    -19.00    119.31     34.00     34.00   -1607.10   LC1L7B12   
+0   1   7   2    -19.00    153.31     34.00     34.00   -1607.10   LC1L7B34   
+0   2   7   1    -53.00    119.31     34.00     34.00   -1607.10   LC2L7B12   
+0   2   7   2    -53.00    153.31     34.00     34.00   -1607.10   LC2L7B34   
+0   3   7   1    -87.00    119.31     34.00     34.00   -1607.10   LC3L7B12   
+0   3   7   2    -87.00    153.31     34.00     34.00   -1607.10   LC3L7B34   
+0   4   7   1   -121.00    119.31     34.00     34.00   -1607.10   LC4L7B12   
+0   4   7   2   -121.00    153.31     34.00     34.00   -1607.10   LC4L7B34   
+0   5   7   1   -155.00    119.31     34.00     34.00   -1607.10   LC5L7B12   
+0   5   7   2   -155.00    153.31     34.00     34.00   -1607.10   LC5L7B34   
+0   6   7   1   -189.00    119.31     34.00     34.00   -1607.10   LC6L7B12   
+0   6   7   2   -189.00    153.31     34.00     34.00   -1607.10   LC6L7B34   
+0   7   7   1   -231.50    136.31     51.00     68.00   -1607.10   LC7L7B12   
+0   1   6   1    -19.00     59.35     34.00     17.00   -1599.90   LC1L6B12   
+0   1   6   2    -19.00     76.35     34.00     17.00   -1599.90   LC1L6B34   
+0   1   6   3    -19.00     93.35     34.00     17.00   -1599.90   LC1L6B56   
+0   2   6   1    -53.00     42.35     34.00     17.00   -1599.90   LC2L6B12   
+0   2   6   2    -53.00     59.35     34.00     17.00   -1599.90   LC2L6B34   
+0   2   6   3    -53.00     76.35     34.00     17.00   -1599.90   LC2L6B56   
+0   2   6   4    -53.00     93.35     34.00     17.00   -1599.90   LC2L6B78   
+0   3   6   1    -87.00     42.35     34.00     17.00   -1599.90   LC3L6B12   
+0   3   6   2    -87.00     59.35     34.00     17.00   -1599.90   LC3L6B34   
+0   3   6   3    -87.00     76.35     34.00     17.00   -1599.90   LC3L6B56   
+0   3   6   4    -87.00     93.35     34.00     17.00   -1599.90   LC3L6B78   
+0   4   6   1   -121.00     50.85     34.00     34.00   -1599.90   LC4L6B12   
+0   4   6   2   -121.00     84.85     34.00     34.00   -1599.90   LC4L6B34   
+0   5   6   1   -155.00     50.85     34.00     34.00   -1599.90   LC5L6B12   
+0   5   6   2   -155.00     84.85     34.00     34.00   -1599.90   LC5L6B34   
+0   6   6   1   -189.00     50.85     34.00     34.00   -1599.90   LC6L6B12   
+0   6   6   2   -189.00     84.85     34.00     34.00   -1599.90   LC6L6B34   
+0   7   6   1   -231.50     67.85     51.00     68.00   -1599.90   LC7L6B12   
+0   2   5   1    -61.50    -25.50     17.00     17.00   -1607.10   LC2L5B12   
+0   2   5   2    -61.50     -8.50     17.00     17.00   -1607.10   LC2L5B34   
+0   2   5   3    -61.50      8.50     17.00     17.00   -1607.10   LC2L5B56   
+0   2   5   4    -61.50     25.50     17.00     17.00   -1607.10   LC2L5B78   
+0   3   5   1    -87.00    -25.50     34.00     17.00   -1607.10   LC3L5B12   
+0   3   5   2    -87.00     -8.50     34.00     17.00   -1607.10   LC3L5B34   
+0   3   5   3    -87.00      8.50     34.00     17.00   -1607.10   LC3L5B56   
+0   3   5   4    -87.00     25.50     34.00     17.00   -1607.10   LC3L5B78   
+0   4   5   1   -121.00    -17.00     34.00     34.00   -1607.10   LC4L5B12   
+0   4   5   2   -121.00     17.00     34.00     34.00   -1607.10   LC4L5B34   
+0   5   5   1   -155.00    -17.00     34.00     34.00   -1607.10   LC5L5B12   
+0   5   5   2   -155.00     17.00     34.00     34.00   -1607.10   LC5L5B34   
+0   6   5   1   -189.00    -17.00     34.00     34.00   -1607.10   LC6L5B12   
+0   6   5   2   -189.00     17.00     34.00     34.00   -1607.10   LC6L5B34   
+0   7   5   1   -231.50      0.00     51.00     68.00   -1607.10   LC7L5B12   
+0   1   4   1    -19.00    -93.35     34.00     17.00   -1599.90   LC1L4B12   
+0   1   4   2    -19.00    -76.35     34.00     17.00   -1599.90   LC1L4B34   
+0   1   4   3    -19.00    -59.35     34.00     17.00   -1599.90   LC1L4B56   
+0   2   4   1    -53.00    -93.35     34.00     17.00   -1599.90   LC2L4B12   
+0   2   4   2    -53.00    -76.35     34.00     17.00   -1599.90   LC2L4B34   
+0   2   4   3    -53.00    -59.35     34.00     17.00   -1599.90   LC2L4B56   
+0   2   4   4    -53.00    -42.35     34.00     17.00   -1599.90   LC2L4B78   
+0   3   4   1    -87.00    -93.35     34.00     17.00   -1599.90   LC3L4B12   
+0   3   4   2    -87.00    -76.35     34.00     17.00   -1599.90   LC3L4B34   
+0   3   4   3    -87.00    -59.35     34.00     17.00   -1599.90   LC3L4B56   
+0   3   4   4    -87.00    -42.35     34.00     17.00   -1599.90   LC3L4B78   
+0   4   4   1   -121.00    -84.85     34.00     34.00   -1599.90   LC4L4B12   
+0   4   4   2   -121.00    -50.85     34.00     34.00   -1599.90   LC4L4B34   
+0   5   4   1   -155.00    -84.85     34.00     34.00   -1599.90   LC5L4B12   
+0   5   4   2   -155.00    -50.85     34.00     34.00   -1599.90   LC5L4B34   
+0   6   4   1   -189.00    -84.85     34.00     34.00   -1599.90   LC6L4B12   
+0   6   4   2   -189.00    -50.85     34.00     34.00   -1599.90   LC6L4B34   
+0   7   4   1   -231.50    -67.85     51.00     68.00   -1599.90   LC7L4B12   
+0   1   3   1    -19.00   -153.31     34.00     34.00   -1607.10   LC1L3B12   
+0   1   3   2    -19.00   -119.31     34.00     34.00   -1607.10   LC1L3B34   
+0   2   3   1    -53.00   -153.31     34.00     34.00   -1607.10   LC2L3B12   
+0   2   3   2    -53.00   -119.31     34.00     34.00   -1607.10   LC2L3B34   
+0   3   3   1    -87.00   -153.31     34.00     34.00   -1607.10   LC3L3B12   
+0   3   3   2    -87.00   -119.31     34.00     34.00   -1607.10   LC3L3B34   
+0   4   3   1   -121.00   -153.31     34.00     34.00   -1607.10   LC4L3B12   
+0   4   3   2   -121.00   -119.31     34.00     34.00   -1607.10   LC4L3B34   
+0   5   3   1   -155.00   -153.31     34.00     34.00   -1607.10   LC5L3B12   
+0   5   3   2   -155.00   -119.31     34.00     34.00   -1607.10   LC5L3B34   
+0   6   3   1   -189.00   -153.31     34.00     34.00   -1607.10   LC6L3B12   
+0   6   3   2   -189.00   -119.31     34.00     34.00   -1607.10   LC6L3B34   
+0   7   3   1   -231.50   -136.31     51.00     68.00   -1607.10   LC7L3B12   
+0   1   2   1    -19.00   -220.54     34.00     34.00   -1599.90   LC1L2B12   
+0   1   2   2    -19.00   -186.54     34.00     34.00   -1599.90   LC1L2B34   
+0   2   2   1    -53.00   -220.54     34.00     34.00   -1599.90   LC2L2B12   
+0   2   2   2    -53.00   -186.54     34.00     34.00   -1599.90   LC2L2B34   
+0   3   2   1    -87.00   -220.54     34.00     34.00   -1599.90   LC3L2B12   
+0   3   2   2    -87.00   -186.54     34.00     34.00   -1599.90   LC3L2B34   
+0   4   2   1   -121.00   -220.54     34.00     34.00   -1599.90   LC4L2B12   
+0   4   2   2   -121.00   -186.54     34.00     34.00   -1599.90   LC4L2B34   
+0   5   2   1   -155.00   -220.54     34.00     34.00   -1599.90   LC5L2B12   
+0   5   2   2   -155.00   -186.54     34.00     34.00   -1599.90   LC5L2B34   
+0   6   2   1   -189.00   -220.54     34.00     34.00   -1599.90   LC6L2B12   
+0   6   2   2   -189.00   -186.54     34.00     34.00   -1599.90   LC6L2B34   
+0   7   2   1   -231.50   -203.54     51.00     68.00   -1599.90   LC7L2B12   
+0   1   1   1    -19.00   -272.61     34.00     68.00   -1607.10   LC1L1B12   
+0   2   1   1    -53.00   -272.61     34.00     68.00   -1607.10   LC2L1B12   
+0   3   1   1    -87.00   -272.61     34.00     68.00   -1607.10   LC3L1B12   
+0   4   1   1   -121.00   -272.61     34.00     68.00   -1607.10   LC4L1B12   
+0   5   1   1   -155.00   -272.61     34.00     68.00   -1607.10   LC5L1B12   
+0   6   1   1   -189.00   -272.61     34.00     68.00   -1607.10   LC6L1B12   
+0   7   1   1   -231.50   -272.61     51.00     68.00   -1607.10   LC7L1B12   
+1   1   1   1     19.00   -271.39     34.00     68.00   -1599.90   RC1L1B12   
+1   2   1   1     53.00   -271.39     34.00     68.00   -1599.90   RC2L1B12   
+1   3   1   1     87.00   -271.39     34.00     68.00   -1599.90   RC3L1B12   
+1   4   1   1    121.00   -271.39     34.00     68.00   -1599.90   RC4L1B12   
+1   5   1   1    155.00   -271.39     34.00     68.00   -1599.90   RC5L1B12   
+1   6   1   1    189.00   -271.39     34.00     68.00   -1599.90   RC6L1B12   
+1   7   1   1    231.50   -271.39     51.00     68.00   -1599.90   RC7L1B12   
+1   1   2   1     19.00   -221.46     34.00     34.00   -1607.10   RC1L2B12   
+1   1   2   2     19.00   -187.46     34.00     34.00   -1607.10   RC1L2B34   
+1   2   2   1     53.00   -221.46     34.00     34.00   -1607.10   RC2L2B12   
+1   2   2   2     53.00   -187.46     34.00     34.00   -1607.10   RC2L2B34   
+1   3   2   1     87.00   -221.46     34.00     34.00   -1607.10   RC3L2B12   
+1   3   2   2     87.00   -187.46     34.00     34.00   -1607.10   RC3L2B34   
+1   4   2   1    121.00   -221.46     34.00     34.00   -1607.10   RC4L2B12   
+1   4   2   2    121.00   -187.46     34.00     34.00   -1607.10   RC4L2B34   
+1   5   2   1    155.00   -221.46     34.00     34.00   -1607.10   RC5L2B12   
+1   5   2   2    155.00   -187.46     34.00     34.00   -1607.10   RC5L2B34   
+1   6   2   1    189.00   -221.46     34.00     34.00   -1607.10   RC6L2B12   
+1   6   2   2    189.00   -187.46     34.00     34.00   -1607.10   RC6L2B34   
+1   7   2   1    231.50   -204.46     51.00     68.00   -1607.10   RC7L2B12   
+1   1   3   1     19.00   -152.70     34.00     34.00   -1599.90   RC1L3B12   
+1   1   3   2     19.00   -118.70     34.00     34.00   -1599.90   RC1L3B34   
+1   2   3   1     53.00   -152.70     34.00     34.00   -1599.90   RC2L3B12   
+1   2   3   2     53.00   -118.70     34.00     34.00   -1599.90   RC2L3B34   
+1   3   3   1     87.00   -152.70     34.00     34.00   -1599.90   RC3L3B12   
+1   3   3   2     87.00   -118.70     34.00     34.00   -1599.90   RC3L3B34   
+1   4   3   1    121.00   -152.70     34.00     34.00   -1599.90   RC4L3B12   
+1   4   3   2    121.00   -118.70     34.00     34.00   -1599.90   RC4L3B34   
+1   5   3   1    155.00   -152.70     34.00     34.00   -1599.90   RC5L3B12   
+1   5   3   2    155.00   -118.70     34.00     34.00   -1599.90   RC5L3B34   
+1   6   3   1    189.00   -152.70     34.00     34.00   -1599.90   RC6L3B12   
+1   6   3   2    189.00   -118.70     34.00     34.00   -1599.90   RC6L3B34   
+1   7   3   1    231.50   -135.70     51.00     68.00   -1599.90   RC7L3B12   
+1   1   4   1     19.00    -93.65     34.00     17.00   -1607.10   RC1L4B12   
+1   1   4   2     19.00    -76.65     34.00     17.00   -1607.10   RC1L4B34   
+1   1   4   3     19.00    -59.65     34.00     17.00   -1607.10   RC1L4B56   
+1   2   4   1     53.00    -93.65     34.00     17.00   -1607.10   RC2L4B12   
+1   2   4   2     53.00    -76.65     34.00     17.00   -1607.10   RC2L4B34   
+1   2   4   3     53.00    -59.65     34.00     17.00   -1607.10   RC2L4B56   
+1   2   4   4     53.00    -42.65     34.00     17.00   -1607.10   RC2L4B78   
+1   3   4   1     87.00    -93.65     34.00     17.00   -1607.10   RC3L4B12   
+1   3   4   2     87.00    -76.65     34.00     17.00   -1607.10   RC3L4B34   
+1   3   4   3     87.00    -59.65     34.00     17.00   -1607.10   RC3L4B56   
+1   3   4   4     87.00    -42.65     34.00     17.00   -1607.10   RC3L4B78   
+1   4   4   1    121.00    -85.15     34.00     34.00   -1607.10   RC4L4B12   
+1   4   4   2    121.00    -51.15     34.00     34.00   -1607.10   RC4L4B34   
+1   5   4   1    155.00    -85.15     34.00     34.00   -1607.10   RC5L4B12   
+1   5   4   2    155.00    -51.15     34.00     34.00   -1607.10   RC5L4B34   
+1   6   4   1    189.00    -85.15     34.00     34.00   -1607.10   RC6L4B12   
+1   6   4   2    189.00    -51.15     34.00     34.00   -1607.10   RC6L4B34   
+1   7   4   1    231.50    -68.15     51.00     68.00   -1607.10   RC7L4B12   
diff --git a/MUON/data/guimapp12.txt b/MUON/data/guimapp12.txt
new file mode 100644 (file)
index 0000000..9f575bf
--- /dev/null
@@ -0,0 +1,234 @@
+1   2   5   1     62.15    -25.77     17.18     17.18   -1616.90   RC2L5B12   
+1   2   5   2     62.15     -8.59     17.18     17.18   -1616.90   RC2L5B34   
+1   2   5   3     62.15      8.59     17.18     17.18   -1616.90   RC2L5B56   
+1   2   5   4     62.15     25.77     17.18     17.18   -1616.90   RC2L5B78   
+1   3   5   1     87.92    -25.77     34.36     17.18   -1616.90   RC3L5B12   
+1   3   5   2     87.92     -8.59     34.36     17.18   -1616.90   RC3L5B34   
+1   3   5   3     87.92      8.59     34.36     17.18   -1616.90   RC3L5B56   
+1   3   5   4     87.92     25.77     34.36     17.18   -1616.90   RC3L5B78   
+1   4   5   1    122.28    -17.18     34.36     34.36   -1616.90   RC4L5B12   
+1   4   5   2    122.28     17.18     34.36     34.36   -1616.90   RC4L5B34   
+1   5   5   1    156.64    -17.18     34.36     34.36   -1616.90   RC5L5B12   
+1   5   5   2    156.64     17.18     34.36     34.36   -1616.90   RC5L5B34   
+1   6   5   1    191.00    -17.18     34.36     34.36   -1616.90   RC6L5B12   
+1   6   5   2    191.00     17.18     34.36     34.36   -1616.90   RC6L5B34   
+1   7   5   1    233.95      0.00     51.54     68.72   -1616.90   RC7L5B12   
+1   1   6   1     19.20     60.29     34.36     17.18   -1624.10   RC1L6B12   
+1   1   6   2     19.20     77.47     34.36     17.18   -1624.10   RC1L6B34   
+1   1   6   3     19.20     94.65     34.36     17.18   -1624.10   RC1L6B56   
+1   2   6   1     53.56     43.11     34.36     17.18   -1624.10   RC2L6B12   
+1   2   6   2     53.56     60.29     34.36     17.18   -1624.10   RC2L6B34   
+1   2   6   3     53.56     77.47     34.36     17.18   -1624.10   RC2L6B56   
+1   2   6   4     53.56     94.65     34.36     17.18   -1624.10   RC2L6B78   
+1   3   6   1     87.92     43.11     34.36     17.18   -1624.10   RC3L6B12   
+1   3   6   2     87.92     60.29     34.36     17.18   -1624.10   RC3L6B34   
+1   3   6   3     87.92     77.47     34.36     17.18   -1624.10   RC3L6B56   
+1   3   6   4     87.92     94.65     34.36     17.18   -1624.10   RC3L6B78   
+1   4   6   1    122.28     51.70     34.36     34.36   -1624.10   RC4L6B12   
+1   4   6   2    122.28     86.06     34.36     34.36   -1624.10   RC4L6B34   
+1   5   6   1    156.64     51.70     34.36     34.36   -1624.10   RC5L6B12   
+1   5   6   2    156.64     86.06     34.36     34.36   -1624.10   RC5L6B34   
+1   6   6   1    191.00     51.70     34.36     34.36   -1624.10   RC6L6B12   
+1   6   6   2    191.00     86.06     34.36     34.36   -1624.10   RC6L6B34   
+1   7   6   1    233.95     68.88     51.54     68.72   -1624.10   RC7L6B12   
+1   1   7   1     19.20    119.95     34.36     34.36   -1616.90   RC1L7B12   
+1   1   7   2     19.20    154.31     34.36     34.36   -1616.90   RC1L7B34   
+1   2   7   1     53.56    119.95     34.36     34.36   -1616.90   RC2L7B12   
+1   2   7   2     53.56    154.31     34.36     34.36   -1616.90   RC2L7B34   
+1   3   7   1     87.92    119.95     34.36     34.36   -1616.90   RC3L7B12   
+1   3   7   2     87.92    154.31     34.36     34.36   -1616.90   RC3L7B34   
+1   4   7   1    122.28    119.95     34.36     34.36   -1616.90   RC4L7B12   
+1   4   7   2    122.28    154.31     34.36     34.36   -1616.90   RC4L7B34   
+1   5   7   1    156.64    119.95     34.36     34.36   -1616.90   RC5L7B12   
+1   5   7   2    156.64    154.31     34.36     34.36   -1616.90   RC5L7B34   
+1   6   7   1    191.00    119.95     34.36     34.36   -1616.90   RC6L7B12   
+1   6   7   2    191.00    154.31     34.36     34.36   -1616.90   RC6L7B34   
+1   7   7   1    233.95    137.13     51.54     68.72   -1616.90   RC7L7B12   
+1   1   8   1     19.20    189.45     34.36     34.36   -1624.10   RC1L8B12   
+1   1   8   2     19.20    223.81     34.36     34.36   -1624.10   RC1L8B34   
+1   2   8   1     53.56    189.45     34.36     34.36   -1624.10   RC2L8B12   
+1   2   8   2     53.56    223.81     34.36     34.36   -1624.10   RC2L8B34   
+1   3   8   1     87.92    189.45     34.36     34.36   -1624.10   RC3L8B12   
+1   3   8   2     87.92    223.81     34.36     34.36   -1624.10   RC3L8B34   
+1   4   8   1    122.28    189.45     34.36     34.36   -1624.10   RC4L8B12   
+1   4   8   2    122.28    223.81     34.36     34.36   -1624.10   RC4L8B34   
+1   5   8   1    156.64    189.45     34.36     34.36   -1624.10   RC5L8B12   
+1   5   8   2    156.64    223.81     34.36     34.36   -1624.10   RC5L8B34   
+1   6   8   1    191.00    189.45     34.36     34.36   -1624.10   RC6L8B12   
+1   6   8   2    191.00    223.81     34.36     34.36   -1624.10   RC6L8B34   
+1   7   8   1    233.95    206.63     51.54     68.72   -1624.10   RC7L8B12   
+1   1   9   1     19.20    274.27     34.36     68.72   -1616.90   RC1L9B12   
+1   2   9   1     53.56    274.27     34.36     68.72   -1616.90   RC2L9B12   
+1   3   9   1     87.92    274.27     34.36     68.72   -1616.90   RC3L9B12   
+1   4   9   1    122.28    274.27     34.36     68.72   -1616.90   RC4L9B12   
+1   5   9   1    156.64    274.27     34.36     68.72   -1616.90   RC5L9B12   
+1   6   9   1    191.00    274.27     34.36     68.72   -1616.90   RC6L9B12   
+1   7   9   1    233.95    274.27     51.54     68.72   -1616.90   RC7L9B12   
+0   1   9   1    -19.20    275.50     34.36     68.72   -1624.10   LC1L9B12   
+0   2   9   1    -53.56    275.50     34.36     68.72   -1624.10   LC2L9B12   
+0   3   9   1    -87.92    275.50     34.36     68.72   -1624.10   LC3L9B12   
+0   4   9   1   -122.28    275.50     34.36     68.72   -1624.10   LC4L9B12   
+0   5   9   1   -156.64    275.50     34.36     68.72   -1624.10   LC5L9B12   
+0   6   9   1   -191.00    275.50     34.36     68.72   -1624.10   LC6L9B12   
+0   7   9   1   -233.95    275.50     51.54     68.72   -1624.10   LC7L9B12   
+0   1   8   1    -19.20    188.52     34.36     34.36   -1616.90   LC1L8B12   
+0   1   8   2    -19.20    222.88     34.36     34.36   -1616.90   LC1L8B34   
+0   2   8   1    -53.56    188.52     34.36     34.36   -1616.90   LC2L8B12   
+0   2   8   2    -53.56    222.88     34.36     34.36   -1616.90   LC2L8B34   
+0   3   8   1    -87.92    188.52     34.36     34.36   -1616.90   LC3L8B12   
+0   3   8   2    -87.92    222.88     34.36     34.36   -1616.90   LC3L8B34   
+0   4   8   1   -122.28    188.52     34.36     34.36   -1616.90   LC4L8B12   
+0   4   8   2   -122.28    222.88     34.36     34.36   -1616.90   LC4L8B34   
+0   5   8   1   -156.64    188.52     34.36     34.36   -1616.90   LC5L8B12   
+0   5   8   2   -156.64    222.88     34.36     34.36   -1616.90   LC5L8B34   
+0   6   8   1   -191.00    188.52     34.36     34.36   -1616.90   LC6L8B12   
+0   6   8   2   -191.00    222.88     34.36     34.36   -1616.90   LC6L8B34   
+0   7   8   1   -233.95    205.70     51.54     68.72   -1616.90   LC7L8B12   
+0   1   7   1    -19.20    120.57     34.36     34.36   -1624.10   LC1L7B12   
+0   1   7   2    -19.20    154.93     34.36     34.36   -1624.10   LC1L7B34   
+0   2   7   1    -53.56    120.57     34.36     34.36   -1624.10   LC2L7B12   
+0   2   7   2    -53.56    154.93     34.36     34.36   -1624.10   LC2L7B34   
+0   3   7   1    -87.92    120.57     34.36     34.36   -1624.10   LC3L7B12   
+0   3   7   2    -87.92    154.93     34.36     34.36   -1624.10   LC3L7B34   
+0   4   7   1   -122.28    120.57     34.36     34.36   -1624.10   LC4L7B12   
+0   4   7   2   -122.28    154.93     34.36     34.36   -1624.10   LC4L7B34   
+0   5   7   1   -156.64    120.57     34.36     34.36   -1624.10   LC5L7B12   
+0   5   7   2   -156.64    154.93     34.36     34.36   -1624.10   LC5L7B34   
+0   6   7   1   -191.00    120.57     34.36     34.36   -1624.10   LC6L7B12   
+0   6   7   2   -191.00    154.93     34.36     34.36   -1624.10   LC6L7B34   
+0   7   7   1   -233.95    137.75     51.54     68.72   -1624.10   LC7L7B12   
+0   1   6   1    -19.20     59.98     34.36     17.18   -1616.90   LC1L6B12   
+0   1   6   2    -19.20     77.16     34.36     17.18   -1616.90   LC1L6B34   
+0   1   6   3    -19.20     94.34     34.36     17.18   -1616.90   LC1L6B56   
+0   2   6   1    -53.56     42.80     34.36     17.18   -1616.90   LC2L6B12   
+0   2   6   2    -53.56     59.98     34.36     17.18   -1616.90   LC2L6B34   
+0   2   6   3    -53.56     77.16     34.36     17.18   -1616.90   LC2L6B56   
+0   2   6   4    -53.56     94.34     34.36     17.18   -1616.90   LC2L6B78   
+0   3   6   1    -87.92     42.80     34.36     17.18   -1616.90   LC3L6B12   
+0   3   6   2    -87.92     59.98     34.36     17.18   -1616.90   LC3L6B34   
+0   3   6   3    -87.92     77.16     34.36     17.18   -1616.90   LC3L6B56   
+0   3   6   4    -87.92     94.34     34.36     17.18   -1616.90   LC3L6B78   
+0   4   6   1   -122.28     51.39     34.36     34.36   -1616.90   LC4L6B12   
+0   4   6   2   -122.28     85.75     34.36     34.36   -1616.90   LC4L6B34   
+0   5   6   1   -156.64     51.39     34.36     34.36   -1616.90   LC5L6B12   
+0   5   6   2   -156.64     85.75     34.36     34.36   -1616.90   LC5L6B34   
+0   6   6   1   -191.00     51.39     34.36     34.36   -1616.90   LC6L6B12   
+0   6   6   2   -191.00     85.75     34.36     34.36   -1616.90   LC6L6B34   
+0   7   6   1   -233.95     68.57     51.54     68.72   -1616.90   LC7L6B12   
+0   2   5   1    -62.15    -25.77     17.18     17.18   -1624.10   LC2L5B12   
+0   2   5   2    -62.15     -8.59     17.18     17.18   -1624.10   LC2L5B34   
+0   2   5   3    -62.15      8.59     17.18     17.18   -1624.10   LC2L5B56   
+0   2   5   4    -62.15     25.77     17.18     17.18   -1624.10   LC2L5B78   
+0   3   5   1    -87.92    -25.77     34.36     17.18   -1624.10   LC3L5B12   
+0   3   5   2    -87.92     -8.59     34.36     17.18   -1624.10   LC3L5B34   
+0   3   5   3    -87.92      8.59     34.36     17.18   -1624.10   LC3L5B56   
+0   3   5   4    -87.92     25.77     34.36     17.18   -1624.10   LC3L5B78   
+0   4   5   1   -122.28    -17.18     34.36     34.36   -1624.10   LC4L5B12   
+0   4   5   2   -122.28     17.18     34.36     34.36   -1624.10   LC4L5B34   
+0   5   5   1   -156.64    -17.18     34.36     34.36   -1624.10   LC5L5B12   
+0   5   5   2   -156.64     17.18     34.36     34.36   -1624.10   LC5L5B34   
+0   6   5   1   -191.00    -17.18     34.36     34.36   -1624.10   LC6L5B12   
+0   6   5   2   -191.00     17.18     34.36     34.36   -1624.10   LC6L5B34   
+0   7   5   1   -233.95      0.00     51.54     68.72   -1624.10   LC7L5B12   
+0   1   4   1    -19.20    -94.34     34.36     17.18   -1616.90   LC1L4B12   
+0   1   4   2    -19.20    -77.16     34.36     17.18   -1616.90   LC1L4B34   
+0   1   4   3    -19.20    -59.98     34.36     17.18   -1616.90   LC1L4B56   
+0   2   4   1    -53.56    -94.34     34.36     17.18   -1616.90   LC2L4B12   
+0   2   4   2    -53.56    -77.16     34.36     17.18   -1616.90   LC2L4B34   
+0   2   4   3    -53.56    -59.98     34.36     17.18   -1616.90   LC2L4B56   
+0   2   4   4    -53.56    -42.80     34.36     17.18   -1616.90   LC2L4B78   
+0   3   4   1    -87.92    -94.34     34.36     17.18   -1616.90   LC3L4B12   
+0   3   4   2    -87.92    -77.16     34.36     17.18   -1616.90   LC3L4B34   
+0   3   4   3    -87.92    -59.98     34.36     17.18   -1616.90   LC3L4B56   
+0   3   4   4    -87.92    -42.80     34.36     17.18   -1616.90   LC3L4B78   
+0   4   4   1   -122.28    -85.75     34.36     34.36   -1616.90   LC4L4B12   
+0   4   4   2   -122.28    -51.39     34.36     34.36   -1616.90   LC4L4B34   
+0   5   4   1   -156.64    -85.75     34.36     34.36   -1616.90   LC5L4B12   
+0   5   4   2   -156.64    -51.39     34.36     34.36   -1616.90   LC5L4B34   
+0   6   4   1   -191.00    -85.75     34.36     34.36   -1616.90   LC6L4B12   
+0   6   4   2   -191.00    -51.39     34.36     34.36   -1616.90   LC6L4B34   
+0   7   4   1   -233.95    -68.57     51.54     68.72   -1616.90   LC7L4B12   
+0   1   3   1    -19.20   -154.93     34.36     34.36   -1624.10   LC1L3B12   
+0   1   3   2    -19.20   -120.57     34.36     34.36   -1624.10   LC1L3B34   
+0   2   3   1    -53.56   -154.93     34.36     34.36   -1624.10   LC2L3B12   
+0   2   3   2    -53.56   -120.57     34.36     34.36   -1624.10   LC2L3B34   
+0   3   3   1    -87.92   -154.93     34.36     34.36   -1624.10   LC3L3B12   
+0   3   3   2    -87.92   -120.57     34.36     34.36   -1624.10   LC3L3B34   
+0   4   3   1   -122.28   -154.93     34.36     34.36   -1624.10   LC4L3B12   
+0   4   3   2   -122.28   -120.57     34.36     34.36   -1624.10   LC4L3B34   
+0   5   3   1   -156.64   -154.93     34.36     34.36   -1624.10   LC5L3B12   
+0   5   3   2   -156.64   -120.57     34.36     34.36   -1624.10   LC5L3B34   
+0   6   3   1   -191.00   -154.93     34.36     34.36   -1624.10   LC6L3B12   
+0   6   3   2   -191.00   -120.57     34.36     34.36   -1624.10   LC6L3B34   
+0   7   3   1   -233.95   -137.75     51.54     68.72   -1624.10   LC7L3B12   
+0   1   2   1    -19.20   -222.88     34.36     34.36   -1616.90   LC1L2B12   
+0   1   2   2    -19.20   -188.52     34.36     34.36   -1616.90   LC1L2B34   
+0   2   2   1    -53.56   -222.88     34.36     34.36   -1616.90   LC2L2B12   
+0   2   2   2    -53.56   -188.52     34.36     34.36   -1616.90   LC2L2B34   
+0   3   2   1    -87.92   -222.88     34.36     34.36   -1616.90   LC3L2B12   
+0   3   2   2    -87.92   -188.52     34.36     34.36   -1616.90   LC3L2B34   
+0   4   2   1   -122.28   -222.88     34.36     34.36   -1616.90   LC4L2B12   
+0   4   2   2   -122.28   -188.52     34.36     34.36   -1616.90   LC4L2B34   
+0   5   2   1   -156.64   -222.88     34.36     34.36   -1616.90   LC5L2B12   
+0   5   2   2   -156.64   -188.52     34.36     34.36   -1616.90   LC5L2B34   
+0   6   2   1   -191.00   -222.88     34.36     34.36   -1616.90   LC6L2B12   
+0   6   2   2   -191.00   -188.52     34.36     34.36   -1616.90   LC6L2B34   
+0   7   2   1   -233.95   -205.70     51.54     68.72   -1616.90   LC7L2B12   
+0   1   1   1    -19.20   -275.50     34.36     68.72   -1624.10   LC1L1B12   
+0   2   1   1    -53.56   -275.50     34.36     68.72   -1624.10   LC2L1B12   
+0   3   1   1    -87.92   -275.50     34.36     68.72   -1624.10   LC3L1B12   
+0   4   1   1   -122.28   -275.50     34.36     68.72   -1624.10   LC4L1B12   
+0   5   1   1   -156.64   -275.50     34.36     68.72   -1624.10   LC5L1B12   
+0   6   1   1   -191.00   -275.50     34.36     68.72   -1624.10   LC6L1B12   
+0   7   1   1   -233.95   -275.50     51.54     68.72   -1624.10   LC7L1B12   
+1   1   1   1     19.20   -274.27     34.36     68.72   -1616.90   RC1L1B12   
+1   2   1   1     53.56   -274.27     34.36     68.72   -1616.90   RC2L1B12   
+1   3   1   1     87.92   -274.27     34.36     68.72   -1616.90   RC3L1B12   
+1   4   1   1    122.28   -274.27     34.36     68.72   -1616.90   RC4L1B12   
+1   5   1   1    156.64   -274.27     34.36     68.72   -1616.90   RC5L1B12   
+1   6   1   1    191.00   -274.27     34.36     68.72   -1616.90   RC6L1B12   
+1   7   1   1    233.95   -274.27     51.54     68.72   -1616.90   RC7L1B12   
+1   1   2   1     19.20   -223.81     34.36     34.36   -1624.10   RC1L2B12   
+1   1   2   2     19.20   -189.45     34.36     34.36   -1624.10   RC1L2B34   
+1   2   2   1     53.56   -223.81     34.36     34.36   -1624.10   RC2L2B12   
+1   2   2   2     53.56   -189.45     34.36     34.36   -1624.10   RC2L2B34   
+1   3   2   1     87.92   -223.81     34.36     34.36   -1624.10   RC3L2B12   
+1   3   2   2     87.92   -189.45     34.36     34.36   -1624.10   RC3L2B34   
+1   4   2   1    122.28   -223.81     34.36     34.36   -1624.10   RC4L2B12   
+1   4   2   2    122.28   -189.45     34.36     34.36   -1624.10   RC4L2B34   
+1   5   2   1    156.64   -223.81     34.36     34.36   -1624.10   RC5L2B12   
+1   5   2   2    156.64   -189.45     34.36     34.36   -1624.10   RC5L2B34   
+1   6   2   1    191.00   -223.81     34.36     34.36   -1624.10   RC6L2B12   
+1   6   2   2    191.00   -189.45     34.36     34.36   -1624.10   RC6L2B34   
+1   7   2   1    233.95   -206.63     51.54     68.72   -1624.10   RC7L2B12   
+1   1   3   1     19.20   -154.31     34.36     34.36   -1616.90   RC1L3B12   
+1   1   3   2     19.20   -119.95     34.36     34.36   -1616.90   RC1L3B34   
+1   2   3   1     53.56   -154.31     34.36     34.36   -1616.90   RC2L3B12   
+1   2   3   2     53.56   -119.95     34.36     34.36   -1616.90   RC2L3B34   
+1   3   3   1     87.92   -154.31     34.36     34.36   -1616.90   RC3L3B12   
+1   3   3   2     87.92   -119.95     34.36     34.36   -1616.90   RC3L3B34   
+1   4   3   1    122.28   -154.31     34.36     34.36   -1616.90   RC4L3B12   
+1   4   3   2    122.28   -119.95     34.36     34.36   -1616.90   RC4L3B34   
+1   5   3   1    156.64   -154.31     34.36     34.36   -1616.90   RC5L3B12   
+1   5   3   2    156.64   -119.95     34.36     34.36   -1616.90   RC5L3B34   
+1   6   3   1    191.00   -154.31     34.36     34.36   -1616.90   RC6L3B12   
+1   6   3   2    191.00   -119.95     34.36     34.36   -1616.90   RC6L3B34   
+1   7   3   1    233.95   -137.13     51.54     68.72   -1616.90   RC7L3B12   
+1   1   4   1     19.20    -94.65     34.36     17.18   -1624.10   RC1L4B12   
+1   1   4   2     19.20    -77.47     34.36     17.18   -1624.10   RC1L4B34   
+1   1   4   3     19.20    -60.29     34.36     17.18   -1624.10   RC1L4B56   
+1   2   4   1     53.56    -94.65     34.36     17.18   -1624.10   RC2L4B12   
+1   2   4   2     53.56    -77.47     34.36     17.18   -1624.10   RC2L4B34   
+1   2   4   3     53.56    -60.29     34.36     17.18   -1624.10   RC2L4B56   
+1   2   4   4     53.56    -43.11     34.36     17.18   -1624.10   RC2L4B78   
+1   3   4   1     87.92    -94.65     34.36     17.18   -1624.10   RC3L4B12   
+1   3   4   2     87.92    -77.47     34.36     17.18   -1624.10   RC3L4B34   
+1   3   4   3     87.92    -60.29     34.36     17.18   -1624.10   RC3L4B56   
+1   3   4   4     87.92    -43.11     34.36     17.18   -1624.10   RC3L4B78   
+1   4   4   1    122.28    -86.06     34.36     34.36   -1624.10   RC4L4B12   
+1   4   4   2    122.28    -51.70     34.36     34.36   -1624.10   RC4L4B34   
+1   5   4   1    156.64    -86.06     34.36     34.36   -1624.10   RC5L4B12   
+1   5   4   2    156.64    -51.70     34.36     34.36   -1624.10   RC5L4B34   
+1   6   4   1    191.00    -86.06     34.36     34.36   -1624.10   RC6L4B12   
+1   6   4   2    191.00    -51.70     34.36     34.36   -1624.10   RC6L4B34   
+1   7   4   1    233.95    -68.88     51.54     68.72   -1624.10   RC7L4B12   
diff --git a/MUON/data/guimapp13.txt b/MUON/data/guimapp13.txt
new file mode 100644 (file)
index 0000000..fd6ba86
--- /dev/null
@@ -0,0 +1,234 @@
+1   2   5   1     65.34    -27.09     18.06     18.06   -1699.90   RC2L5B12   
+1   2   5   2     65.34     -9.03     18.06     18.06   -1699.90   RC2L5B34   
+1   2   5   3     65.34      9.03     18.06     18.06   -1699.90   RC2L5B56   
+1   2   5   4     65.34     27.09     18.06     18.06   -1699.90   RC2L5B78   
+1   3   5   1     92.43    -27.09     36.12     18.06   -1699.90   RC3L5B12   
+1   3   5   2     92.43     -9.03     36.12     18.06   -1699.90   RC3L5B34   
+1   3   5   3     92.43      9.03     36.12     18.06   -1699.90   RC3L5B56   
+1   3   5   4     92.43     27.09     36.12     18.06   -1699.90   RC3L5B78   
+1   4   5   1    128.55    -18.06     36.12     36.12   -1699.90   RC4L5B12   
+1   4   5   2    128.55     18.06     36.12     36.12   -1699.90   RC4L5B34   
+1   5   5   1    164.67    -18.06     36.12     36.12   -1699.90   RC5L5B12   
+1   5   5   2    164.67     18.06     36.12     36.12   -1699.90   RC5L5B34   
+1   6   5   1    200.79    -18.06     36.12     36.12   -1699.90   RC6L5B12   
+1   6   5   2    200.79     18.06     36.12     36.12   -1699.90   RC6L5B34   
+1   7   5   1    245.94      0.00     54.18     72.24   -1699.90   RC7L5B12   
+1   1   6   1     20.18     63.37     36.12     18.06   -1707.10   RC1L6B12   
+1   1   6   2     20.18     81.43     36.12     18.06   -1707.10   RC1L6B34   
+1   1   6   3     20.18     99.49     36.12     18.06   -1707.10   RC1L6B56   
+1   2   6   1     56.31     45.31     36.12     18.06   -1707.10   RC2L6B12   
+1   2   6   2     56.31     63.37     36.12     18.06   -1707.10   RC2L6B34   
+1   2   6   3     56.31     81.43     36.12     18.06   -1707.10   RC2L6B56   
+1   2   6   4     56.31     99.49     36.12     18.06   -1707.10   RC2L6B78   
+1   3   6   1     92.43     45.31     36.12     18.06   -1707.10   RC3L6B12   
+1   3   6   2     92.43     63.37     36.12     18.06   -1707.10   RC3L6B34   
+1   3   6   3     92.43     81.43     36.12     18.06   -1707.10   RC3L6B56   
+1   3   6   4     92.43     99.49     36.12     18.06   -1707.10   RC3L6B78   
+1   4   6   1    128.55     54.34     36.12     36.12   -1707.10   RC4L6B12   
+1   4   6   2    128.55     90.46     36.12     36.12   -1707.10   RC4L6B34   
+1   5   6   1    164.67     54.34     36.12     36.12   -1707.10   RC5L6B12   
+1   5   6   2    164.67     90.46     36.12     36.12   -1707.10   RC5L6B34   
+1   6   6   1    200.79     54.34     36.12     36.12   -1707.10   RC6L6B12   
+1   6   6   2    200.79     90.46     36.12     36.12   -1707.10   RC6L6B34   
+1   7   6   1    245.94     72.40     54.18     72.24   -1707.10   RC7L6B12   
+1   1   7   1     20.18    126.10     36.12     36.12   -1699.90   RC1L7B12   
+1   1   7   2     20.18    162.22     36.12     36.12   -1699.90   RC1L7B34   
+1   2   7   1     56.31    126.10     36.12     36.12   -1699.90   RC2L7B12   
+1   2   7   2     56.31    162.22     36.12     36.12   -1699.90   RC2L7B34   
+1   3   7   1     92.43    126.10     36.12     36.12   -1699.90   RC3L7B12   
+1   3   7   2     92.43    162.22     36.12     36.12   -1699.90   RC3L7B34   
+1   4   7   1    128.55    126.10     36.12     36.12   -1699.90   RC4L7B12   
+1   4   7   2    128.55    162.22     36.12     36.12   -1699.90   RC4L7B34   
+1   5   7   1    164.67    126.10     36.12     36.12   -1699.90   RC5L7B12   
+1   5   7   2    164.67    162.22     36.12     36.12   -1699.90   RC5L7B34   
+1   6   7   1    200.79    126.10     36.12     36.12   -1699.90   RC6L7B12   
+1   6   7   2    200.79    162.22     36.12     36.12   -1699.90   RC6L7B34   
+1   7   7   1    245.94    144.16     54.18     72.24   -1699.90   RC7L7B12   
+1   1   8   1     20.18    199.15     36.12     36.12   -1707.10   RC1L8B12   
+1   1   8   2     20.18    235.27     36.12     36.12   -1707.10   RC1L8B34   
+1   2   8   1     56.31    199.15     36.12     36.12   -1707.10   RC2L8B12   
+1   2   8   2     56.31    235.27     36.12     36.12   -1707.10   RC2L8B34   
+1   3   8   1     92.43    199.15     36.12     36.12   -1707.10   RC3L8B12   
+1   3   8   2     92.43    235.27     36.12     36.12   -1707.10   RC3L8B34   
+1   4   8   1    128.55    199.15     36.12     36.12   -1707.10   RC4L8B12   
+1   4   8   2    128.55    235.27     36.12     36.12   -1707.10   RC4L8B34   
+1   5   8   1    164.67    199.15     36.12     36.12   -1707.10   RC5L8B12   
+1   5   8   2    164.67    235.27     36.12     36.12   -1707.10   RC5L8B34   
+1   6   8   1    200.79    199.15     36.12     36.12   -1707.10   RC6L8B12   
+1   6   8   2    200.79    235.27     36.12     36.12   -1707.10   RC6L8B34   
+1   7   8   1    245.94    217.21     54.18     72.24   -1707.10   RC7L8B12   
+1   1   9   1     20.18    288.31     36.12     72.24   -1699.90   RC1L9B12   
+1   2   9   1     56.31    288.31     36.12     72.24   -1699.90   RC2L9B12   
+1   3   9   1     92.43    288.31     36.12     72.24   -1699.90   RC3L9B12   
+1   4   9   1    128.55    288.31     36.12     72.24   -1699.90   RC4L9B12   
+1   5   9   1    164.67    288.31     36.12     72.24   -1699.90   RC5L9B12   
+1   6   9   1    200.79    288.31     36.12     72.24   -1699.90   RC6L9B12   
+1   7   9   1    245.94    288.31     54.18     72.24   -1699.90   RC7L9B12   
+0   1   9   1    -20.18    289.61     36.12     72.24   -1707.10   LC1L9B12   
+0   2   9   1    -56.31    289.61     36.12     72.24   -1707.10   LC2L9B12   
+0   3   9   1    -92.43    289.61     36.12     72.24   -1707.10   LC3L9B12   
+0   4   9   1   -128.55    289.61     36.12     72.24   -1707.10   LC4L9B12   
+0   5   9   1   -164.67    289.61     36.12     72.24   -1707.10   LC5L9B12   
+0   6   9   1   -200.79    289.61     36.12     72.24   -1707.10   LC6L9B12   
+0   7   9   1   -245.94    289.61     54.18     72.24   -1707.10   LC7L9B12   
+0   1   8   1    -20.18    198.18     36.12     36.12   -1699.90   LC1L8B12   
+0   1   8   2    -20.18    234.30     36.12     36.12   -1699.90   LC1L8B34   
+0   2   8   1    -56.31    198.18     36.12     36.12   -1699.90   LC2L8B12   
+0   2   8   2    -56.31    234.30     36.12     36.12   -1699.90   LC2L8B34   
+0   3   8   1    -92.43    198.18     36.12     36.12   -1699.90   LC3L8B12   
+0   3   8   2    -92.43    234.30     36.12     36.12   -1699.90   LC3L8B34   
+0   4   8   1   -128.55    198.18     36.12     36.12   -1699.90   LC4L8B12   
+0   4   8   2   -128.55    234.30     36.12     36.12   -1699.90   LC4L8B34   
+0   5   8   1   -164.67    198.18     36.12     36.12   -1699.90   LC5L8B12   
+0   5   8   2   -164.67    234.30     36.12     36.12   -1699.90   LC5L8B34   
+0   6   8   1   -200.79    198.18     36.12     36.12   -1699.90   LC6L8B12   
+0   6   8   2   -200.79    234.30     36.12     36.12   -1699.90   LC6L8B34   
+0   7   8   1   -245.94    216.24     54.18     72.24   -1699.90   LC7L8B12   
+0   1   7   1    -20.18    126.75     36.12     36.12   -1707.10   LC1L7B12   
+0   1   7   2    -20.18    162.87     36.12     36.12   -1707.10   LC1L7B34   
+0   2   7   1    -56.31    126.75     36.12     36.12   -1707.10   LC2L7B12   
+0   2   7   2    -56.31    162.87     36.12     36.12   -1707.10   LC2L7B34   
+0   3   7   1    -92.43    126.75     36.12     36.12   -1707.10   LC3L7B12   
+0   3   7   2    -92.43    162.87     36.12     36.12   -1707.10   LC3L7B34   
+0   4   7   1   -128.55    126.75     36.12     36.12   -1707.10   LC4L7B12   
+0   4   7   2   -128.55    162.87     36.12     36.12   -1707.10   LC4L7B34   
+0   5   7   1   -164.67    126.75     36.12     36.12   -1707.10   LC5L7B12   
+0   5   7   2   -164.67    162.87     36.12     36.12   -1707.10   LC5L7B34   
+0   6   7   1   -200.79    126.75     36.12     36.12   -1707.10   LC6L7B12   
+0   6   7   2   -200.79    162.87     36.12     36.12   -1707.10   LC6L7B34   
+0   7   7   1   -245.94    144.81     54.18     72.24   -1707.10   LC7L7B12   
+0   1   6   1    -20.18     63.05     36.12     18.06   -1699.90   LC1L6B12   
+0   1   6   2    -20.18     81.11     36.12     18.06   -1699.90   LC1L6B34   
+0   1   6   3    -20.18     99.17     36.12     18.06   -1699.90   LC1L6B56   
+0   2   6   1    -56.31     44.99     36.12     18.06   -1699.90   LC2L6B12   
+0   2   6   2    -56.31     63.05     36.12     18.06   -1699.90   LC2L6B34   
+0   2   6   3    -56.31     81.11     36.12     18.06   -1699.90   LC2L6B56   
+0   2   6   4    -56.31     99.17     36.12     18.06   -1699.90   LC2L6B78   
+0   3   6   1    -92.43     44.99     36.12     18.06   -1699.90   LC3L6B12   
+0   3   6   2    -92.43     63.05     36.12     18.06   -1699.90   LC3L6B34   
+0   3   6   3    -92.43     81.11     36.12     18.06   -1699.90   LC3L6B56   
+0   3   6   4    -92.43     99.17     36.12     18.06   -1699.90   LC3L6B78   
+0   4   6   1   -128.55     54.02     36.12     36.12   -1699.90   LC4L6B12   
+0   4   6   2   -128.55     90.14     36.12     36.12   -1699.90   LC4L6B34   
+0   5   6   1   -164.67     54.02     36.12     36.12   -1699.90   LC5L6B12   
+0   5   6   2   -164.67     90.14     36.12     36.12   -1699.90   LC5L6B34   
+0   6   6   1   -200.79     54.02     36.12     36.12   -1699.90   LC6L6B12   
+0   6   6   2   -200.79     90.14     36.12     36.12   -1699.90   LC6L6B34   
+0   7   6   1   -245.94     72.08     54.18     72.24   -1699.90   LC7L6B12   
+0   2   5   1    -65.34    -27.09     18.06     18.06   -1707.10   LC2L5B12   
+0   2   5   2    -65.34     -9.03     18.06     18.06   -1707.10   LC2L5B34   
+0   2   5   3    -65.34      9.03     18.06     18.06   -1707.10   LC2L5B56   
+0   2   5   4    -65.34     27.09     18.06     18.06   -1707.10   LC2L5B78   
+0   3   5   1    -92.43    -27.09     36.12     18.06   -1707.10   LC3L5B12   
+0   3   5   2    -92.43     -9.03     36.12     18.06   -1707.10   LC3L5B34   
+0   3   5   3    -92.43      9.03     36.12     18.06   -1707.10   LC3L5B56   
+0   3   5   4    -92.43     27.09     36.12     18.06   -1707.10   LC3L5B78   
+0   4   5   1   -128.55    -18.06     36.12     36.12   -1707.10   LC4L5B12   
+0   4   5   2   -128.55     18.06     36.12     36.12   -1707.10   LC4L5B34   
+0   5   5   1   -164.67    -18.06     36.12     36.12   -1707.10   LC5L5B12   
+0   5   5   2   -164.67     18.06     36.12     36.12   -1707.10   LC5L5B34   
+0   6   5   1   -200.79    -18.06     36.12     36.12   -1707.10   LC6L5B12   
+0   6   5   2   -200.79     18.06     36.12     36.12   -1707.10   LC6L5B34   
+0   7   5   1   -245.94      0.00     54.18     72.24   -1707.10   LC7L5B12   
+0   1   4   1    -20.18    -99.17     36.12     18.06   -1699.90   LC1L4B12   
+0   1   4   2    -20.18    -81.11     36.12     18.06   -1699.90   LC1L4B34   
+0   1   4   3    -20.18    -63.05     36.12     18.06   -1699.90   LC1L4B56   
+0   2   4   1    -56.31    -99.17     36.12     18.06   -1699.90   LC2L4B12   
+0   2   4   2    -56.31    -81.11     36.12     18.06   -1699.90   LC2L4B34   
+0   2   4   3    -56.31    -63.05     36.12     18.06   -1699.90   LC2L4B56   
+0   2   4   4    -56.31    -44.99     36.12     18.06   -1699.90   LC2L4B78   
+0   3   4   1    -92.43    -99.17     36.12     18.06   -1699.90   LC3L4B12   
+0   3   4   2    -92.43    -81.11     36.12     18.06   -1699.90   LC3L4B34   
+0   3   4   3    -92.43    -63.05     36.12     18.06   -1699.90   LC3L4B56   
+0   3   4   4    -92.43    -44.99     36.12     18.06   -1699.90   LC3L4B78   
+0   4   4   1   -128.55    -90.14     36.12     36.12   -1699.90   LC4L4B12   
+0   4   4   2   -128.55    -54.02     36.12     36.12   -1699.90   LC4L4B34   
+0   5   4   1   -164.67    -90.14     36.12     36.12   -1699.90   LC5L4B12   
+0   5   4   2   -164.67    -54.02     36.12     36.12   -1699.90   LC5L4B34   
+0   6   4   1   -200.79    -90.14     36.12     36.12   -1699.90   LC6L4B12   
+0   6   4   2   -200.79    -54.02     36.12     36.12   -1699.90   LC6L4B34   
+0   7   4   1   -245.94    -72.08     54.18     72.24   -1699.90   LC7L4B12   
+0   1   3   1    -20.18   -162.87     36.12     36.12   -1707.10   LC1L3B12   
+0   1   3   2    -20.18   -126.75     36.12     36.12   -1707.10   LC1L3B34   
+0   2   3   1    -56.31   -162.87     36.12     36.12   -1707.10   LC2L3B12   
+0   2   3   2    -56.31   -126.75     36.12     36.12   -1707.10   LC2L3B34   
+0   3   3   1    -92.43   -162.87     36.12     36.12   -1707.10   LC3L3B12   
+0   3   3   2    -92.43   -126.75     36.12     36.12   -1707.10   LC3L3B34   
+0   4   3   1   -128.55   -162.87     36.12     36.12   -1707.10   LC4L3B12   
+0   4   3   2   -128.55   -126.75     36.12     36.12   -1707.10   LC4L3B34   
+0   5   3   1   -164.67   -162.87     36.12     36.12   -1707.10   LC5L3B12   
+0   5   3   2   -164.67   -126.75     36.12     36.12   -1707.10   LC5L3B34   
+0   6   3   1   -200.79   -162.87     36.12     36.12   -1707.10   LC6L3B12   
+0   6   3   2   -200.79   -126.75     36.12     36.12   -1707.10   LC6L3B34   
+0   7   3   1   -245.94   -144.81     54.18     72.24   -1707.10   LC7L3B12   
+0   1   2   1    -20.18   -234.30     36.12     36.12   -1699.90   LC1L2B12   
+0   1   2   2    -20.18   -198.18     36.12     36.12   -1699.90   LC1L2B34   
+0   2   2   1    -56.31   -234.30     36.12     36.12   -1699.90   LC2L2B12   
+0   2   2   2    -56.31   -198.18     36.12     36.12   -1699.90   LC2L2B34   
+0   3   2   1    -92.43   -234.30     36.12     36.12   -1699.90   LC3L2B12   
+0   3   2   2    -92.43   -198.18     36.12     36.12   -1699.90   LC3L2B34   
+0   4   2   1   -128.55   -234.30     36.12     36.12   -1699.90   LC4L2B12   
+0   4   2   2   -128.55   -198.18     36.12     36.12   -1699.90   LC4L2B34   
+0   5   2   1   -164.67   -234.30     36.12     36.12   -1699.90   LC5L2B12   
+0   5   2   2   -164.67   -198.18     36.12     36.12   -1699.90   LC5L2B34   
+0   6   2   1   -200.79   -234.30     36.12     36.12   -1699.90   LC6L2B12   
+0   6   2   2   -200.79   -198.18     36.12     36.12   -1699.90   LC6L2B34   
+0   7   2   1   -245.94   -216.24     54.18     72.24   -1699.90   LC7L2B12   
+0   1   1   1    -20.18   -289.61     36.12     72.24   -1707.10   LC1L1B12   
+0   2   1   1    -56.31   -289.61     36.12     72.24   -1707.10   LC2L1B12   
+0   3   1   1    -92.43   -289.61     36.12     72.24   -1707.10   LC3L1B12   
+0   4   1   1   -128.55   -289.61     36.12     72.24   -1707.10   LC4L1B12   
+0   5   1   1   -164.67   -289.61     36.12     72.24   -1707.10   LC5L1B12   
+0   6   1   1   -200.79   -289.61     36.12     72.24   -1707.10   LC6L1B12   
+0   7   1   1   -245.94   -289.61     54.18     72.24   -1707.10   LC7L1B12   
+1   1   1   1     20.18   -288.31     36.12     72.24   -1699.90   RC1L1B12   
+1   2   1   1     56.31   -288.31     36.12     72.24   -1699.90   RC2L1B12   
+1   3   1   1     92.43   -288.31     36.12     72.24   -1699.90   RC3L1B12   
+1   4   1   1    128.55   -288.31     36.12     72.24   -1699.90   RC4L1B12   
+1   5   1   1    164.67   -288.31     36.12     72.24   -1699.90   RC5L1B12   
+1   6   1   1    200.79   -288.31     36.12     72.24   -1699.90   RC6L1B12   
+1   7   1   1    245.94   -288.31     54.18     72.24   -1699.90   RC7L1B12   
+1   1   2   1     20.18   -235.27     36.12     36.12   -1707.10   RC1L2B12   
+1   1   2   2     20.18   -199.15     36.12     36.12   -1707.10   RC1L2B34   
+1   2   2   1     56.31   -235.27     36.12     36.12   -1707.10   RC2L2B12   
+1   2   2   2     56.31   -199.15     36.12     36.12   -1707.10   RC2L2B34   
+1   3   2   1     92.43   -235.27     36.12     36.12   -1707.10   RC3L2B12   
+1   3   2   2     92.43   -199.15     36.12     36.12   -1707.10   RC3L2B34   
+1   4   2   1    128.55   -235.27     36.12     36.12   -1707.10   RC4L2B12   
+1   4   2   2    128.55   -199.15     36.12     36.12   -1707.10   RC4L2B34   
+1   5   2   1    164.67   -235.27     36.12     36.12   -1707.10   RC5L2B12   
+1   5   2   2    164.67   -199.15     36.12     36.12   -1707.10   RC5L2B34   
+1   6   2   1    200.79   -235.27     36.12     36.12   -1707.10   RC6L2B12   
+1   6   2   2    200.79   -199.15     36.12     36.12   -1707.10   RC6L2B34   
+1   7   2   1    245.94   -217.21     54.18     72.24   -1707.10   RC7L2B12   
+1   1   3   1     20.18   -162.22     36.12     36.12   -1699.90   RC1L3B12   
+1   1   3   2     20.18   -126.10     36.12     36.12   -1699.90   RC1L3B34   
+1   2   3   1     56.31   -162.22     36.12     36.12   -1699.90   RC2L3B12   
+1   2   3   2     56.31   -126.10     36.12     36.12   -1699.90   RC2L3B34   
+1   3   3   1     92.43   -162.22     36.12     36.12   -1699.90   RC3L3B12   
+1   3   3   2     92.43   -126.10     36.12     36.12   -1699.90   RC3L3B34   
+1   4   3   1    128.55   -162.22     36.12     36.12   -1699.90   RC4L3B12   
+1   4   3   2    128.55   -126.10     36.12     36.12   -1699.90   RC4L3B34   
+1   5   3   1    164.67   -162.22     36.12     36.12   -1699.90   RC5L3B12   
+1   5   3   2    164.67   -126.10     36.12     36.12   -1699.90   RC5L3B34   
+1   6   3   1    200.79   -162.22     36.12     36.12   -1699.90   RC6L3B12   
+1   6   3   2    200.79   -126.10     36.12     36.12   -1699.90   RC6L3B34   
+1   7   3   1    245.94   -144.16     54.18     72.24   -1699.90   RC7L3B12   
+1   1   4   1     20.18    -99.49     36.12     18.06   -1707.10   RC1L4B12   
+1   1   4   2     20.18    -81.43     36.12     18.06   -1707.10   RC1L4B34   
+1   1   4   3     20.18    -63.37     36.12     18.06   -1707.10   RC1L4B56   
+1   2   4   1     56.31    -99.49     36.12     18.06   -1707.10   RC2L4B12   
+1   2   4   2     56.31    -81.43     36.12     18.06   -1707.10   RC2L4B34   
+1   2   4   3     56.31    -63.37     36.12     18.06   -1707.10   RC2L4B56   
+1   2   4   4     56.31    -45.31     36.12     18.06   -1707.10   RC2L4B78   
+1   3   4   1     92.43    -99.49     36.12     18.06   -1707.10   RC3L4B12   
+1   3   4   2     92.43    -81.43     36.12     18.06   -1707.10   RC3L4B34   
+1   3   4   3     92.43    -63.37     36.12     18.06   -1707.10   RC3L4B56   
+1   3   4   4     92.43    -45.31     36.12     18.06   -1707.10   RC3L4B78   
+1   4   4   1    128.55    -90.46     36.12     36.12   -1707.10   RC4L4B12   
+1   4   4   2    128.55    -54.34     36.12     36.12   -1707.10   RC4L4B34   
+1   5   4   1    164.67    -90.46     36.12     36.12   -1707.10   RC5L4B12   
+1   5   4   2    164.67    -54.34     36.12     36.12   -1707.10   RC5L4B34   
+1   6   4   1    200.79    -90.46     36.12     36.12   -1707.10   RC6L4B12   
+1   6   4   2    200.79    -54.34     36.12     36.12   -1707.10   RC6L4B34   
+1   7   4   1    245.94    -72.40     54.18     72.24   -1707.10   RC7L4B12   
diff --git a/MUON/data/guimapp14.txt b/MUON/data/guimapp14.txt
new file mode 100644 (file)
index 0000000..3740090
--- /dev/null
@@ -0,0 +1,234 @@
+1   2   5   1     65.99    -27.36     18.24     18.24   -1716.90   RC2L5B12   
+1   2   5   2     65.99     -9.12     18.24     18.24   -1716.90   RC2L5B34   
+1   2   5   3     65.99      9.12     18.24     18.24   -1716.90   RC2L5B56   
+1   2   5   4     65.99     27.36     18.24     18.24   -1716.90   RC2L5B78   
+1   3   5   1     93.35    -27.36     36.48     18.24   -1716.90   RC3L5B12   
+1   3   5   2     93.35     -9.12     36.48     18.24   -1716.90   RC3L5B34   
+1   3   5   3     93.35      9.12     36.48     18.24   -1716.90   RC3L5B56   
+1   3   5   4     93.35     27.36     36.48     18.24   -1716.90   RC3L5B78   
+1   4   5   1    129.83    -18.24     36.48     36.48   -1716.90   RC4L5B12   
+1   4   5   2    129.83     18.24     36.48     36.48   -1716.90   RC4L5B34   
+1   5   5   1    166.31    -18.24     36.48     36.48   -1716.90   RC5L5B12   
+1   5   5   2    166.31     18.24     36.48     36.48   -1716.90   RC5L5B34   
+1   6   5   1    202.79    -18.24     36.48     36.48   -1716.90   RC6L5B12   
+1   6   5   2    202.79     18.24     36.48     36.48   -1716.90   RC6L5B34   
+1   7   5   1    248.39      0.00     54.72     72.96   -1716.90   RC7L5B12   
+1   1   6   1     20.39     64.01     36.48     18.24   -1724.10   RC1L6B12   
+1   1   6   2     20.39     82.25     36.48     18.24   -1724.10   RC1L6B34   
+1   1   6   3     20.39    100.49     36.48     18.24   -1724.10   RC1L6B56   
+1   2   6   1     56.87     45.76     36.48     18.24   -1724.10   RC2L6B12   
+1   2   6   2     56.87     64.01     36.48     18.24   -1724.10   RC2L6B34   
+1   2   6   3     56.87     82.25     36.48     18.24   -1724.10   RC2L6B56   
+1   2   6   4     56.87    100.49     36.48     18.24   -1724.10   RC2L6B78   
+1   3   6   1     93.35     45.76     36.48     18.24   -1724.10   RC3L6B12   
+1   3   6   2     93.35     64.01     36.48     18.24   -1724.10   RC3L6B34   
+1   3   6   3     93.35     82.25     36.48     18.24   -1724.10   RC3L6B56   
+1   3   6   4     93.35    100.49     36.48     18.24   -1724.10   RC3L6B78   
+1   4   6   1    129.83     54.89     36.48     36.48   -1724.10   RC4L6B12   
+1   4   6   2    129.83     91.37     36.48     36.48   -1724.10   RC4L6B34   
+1   5   6   1    166.31     54.89     36.48     36.48   -1724.10   RC5L6B12   
+1   5   6   2    166.31     91.37     36.48     36.48   -1724.10   RC5L6B34   
+1   6   6   1    202.79     54.89     36.48     36.48   -1724.10   RC6L6B12   
+1   6   6   2    202.79     91.37     36.48     36.48   -1724.10   RC6L6B34   
+1   7   6   1    248.39     73.13     54.72     72.96   -1724.10   RC7L6B12   
+1   1   7   1     20.39    127.36     36.48     36.48   -1716.90   RC1L7B12   
+1   1   7   2     20.39    163.84     36.48     36.48   -1716.90   RC1L7B34   
+1   2   7   1     56.87    127.36     36.48     36.48   -1716.90   RC2L7B12   
+1   2   7   2     56.87    163.84     36.48     36.48   -1716.90   RC2L7B34   
+1   3   7   1     93.35    127.36     36.48     36.48   -1716.90   RC3L7B12   
+1   3   7   2     93.35    163.84     36.48     36.48   -1716.90   RC3L7B34   
+1   4   7   1    129.83    127.36     36.48     36.48   -1716.90   RC4L7B12   
+1   4   7   2    129.83    163.84     36.48     36.48   -1716.90   RC4L7B34   
+1   5   7   1    166.31    127.36     36.48     36.48   -1716.90   RC5L7B12   
+1   5   7   2    166.31    163.84     36.48     36.48   -1716.90   RC5L7B34   
+1   6   7   1    202.79    127.36     36.48     36.48   -1716.90   RC6L7B12   
+1   6   7   2    202.79    163.84     36.48     36.48   -1716.90   RC6L7B34   
+1   7   7   1    248.39    145.60     54.72     72.96   -1716.90   RC7L7B12   
+1   1   8   1     20.39    201.14     36.48     36.48   -1724.10   RC1L8B12   
+1   1   8   2     20.39    237.62     36.48     36.48   -1724.10   RC1L8B34   
+1   2   8   1     56.87    201.14     36.48     36.48   -1724.10   RC2L8B12   
+1   2   8   2     56.87    237.62     36.48     36.48   -1724.10   RC2L8B34   
+1   3   8   1     93.35    201.14     36.48     36.48   -1724.10   RC3L8B12   
+1   3   8   2     93.35    237.62     36.48     36.48   -1724.10   RC3L8B34   
+1   4   8   1    129.83    201.14     36.48     36.48   -1724.10   RC4L8B12   
+1   4   8   2    129.83    237.62     36.48     36.48   -1724.10   RC4L8B34   
+1   5   8   1    166.31    201.14     36.48     36.48   -1724.10   RC5L8B12   
+1   5   8   2    166.31    237.62     36.48     36.48   -1724.10   RC5L8B34   
+1   6   8   1    202.79    201.14     36.48     36.48   -1724.10   RC6L8B12   
+1   6   8   2    202.79    237.62     36.48     36.48   -1724.10   RC6L8B34   
+1   7   8   1    248.39    219.38     54.72     72.96   -1724.10   RC7L8B12   
+1   1   9   1     20.39    291.19     36.48     72.96   -1716.90   RC1L9B12   
+1   2   9   1     56.87    291.19     36.48     72.96   -1716.90   RC2L9B12   
+1   3   9   1     93.35    291.19     36.48     72.96   -1716.90   RC3L9B12   
+1   4   9   1    129.83    291.19     36.48     72.96   -1716.90   RC4L9B12   
+1   5   9   1    166.31    291.19     36.48     72.96   -1716.90   RC5L9B12   
+1   6   9   1    202.79    291.19     36.48     72.96   -1716.90   RC6L9B12   
+1   7   9   1    248.39    291.19     54.72     72.96   -1716.90   RC7L9B12   
+0   1   9   1    -20.39    292.50     36.48     72.96   -1724.10   LC1L9B12   
+0   2   9   1    -56.87    292.50     36.48     72.96   -1724.10   LC2L9B12   
+0   3   9   1    -93.35    292.50     36.48     72.96   -1724.10   LC3L9B12   
+0   4   9   1   -129.83    292.50     36.48     72.96   -1724.10   LC4L9B12   
+0   5   9   1   -166.31    292.50     36.48     72.96   -1724.10   LC5L9B12   
+0   6   9   1   -202.79    292.50     36.48     72.96   -1724.10   LC6L9B12   
+0   7   9   1   -248.39    292.50     54.72     72.96   -1724.10   LC7L9B12   
+0   1   8   1    -20.39    200.15     36.48     36.48   -1716.90   LC1L8B12   
+0   1   8   2    -20.39    236.63     36.48     36.48   -1716.90   LC1L8B34   
+0   2   8   1    -56.87    200.15     36.48     36.48   -1716.90   LC2L8B12   
+0   2   8   2    -56.87    236.63     36.48     36.48   -1716.90   LC2L8B34   
+0   3   8   1    -93.35    200.15     36.48     36.48   -1716.90   LC3L8B12   
+0   3   8   2    -93.35    236.63     36.48     36.48   -1716.90   LC3L8B34   
+0   4   8   1   -129.83    200.15     36.48     36.48   -1716.90   LC4L8B12   
+0   4   8   2   -129.83    236.63     36.48     36.48   -1716.90   LC4L8B34   
+0   5   8   1   -166.31    200.15     36.48     36.48   -1716.90   LC5L8B12   
+0   5   8   2   -166.31    236.63     36.48     36.48   -1716.90   LC5L8B34   
+0   6   8   1   -202.79    200.15     36.48     36.48   -1716.90   LC6L8B12   
+0   6   8   2   -202.79    236.63     36.48     36.48   -1716.90   LC6L8B34   
+0   7   8   1   -248.39    218.39     54.72     72.96   -1716.90   LC7L8B12   
+0   1   7   1    -20.39    128.01     36.48     36.48   -1724.10   LC1L7B12   
+0   1   7   2    -20.39    164.49     36.48     36.48   -1724.10   LC1L7B34   
+0   2   7   1    -56.87    128.01     36.48     36.48   -1724.10   LC2L7B12   
+0   2   7   2    -56.87    164.49     36.48     36.48   -1724.10   LC2L7B34   
+0   3   7   1    -93.35    128.01     36.48     36.48   -1724.10   LC3L7B12   
+0   3   7   2    -93.35    164.49     36.48     36.48   -1724.10   LC3L7B34   
+0   4   7   1   -129.83    128.01     36.48     36.48   -1724.10   LC4L7B12   
+0   4   7   2   -129.83    164.49     36.48     36.48   -1724.10   LC4L7B34   
+0   5   7   1   -166.31    128.01     36.48     36.48   -1724.10   LC5L7B12   
+0   5   7   2   -166.31    164.49     36.48     36.48   -1724.10   LC5L7B34   
+0   6   7   1   -202.79    128.01     36.48     36.48   -1724.10   LC6L7B12   
+0   6   7   2   -202.79    164.49     36.48     36.48   -1724.10   LC6L7B34   
+0   7   7   1   -248.39    146.25     54.72     72.96   -1724.10   LC7L7B12   
+0   1   6   1    -20.39     63.68     36.48     18.24   -1716.90   LC1L6B12   
+0   1   6   2    -20.39     81.92     36.48     18.24   -1716.90   LC1L6B34   
+0   1   6   3    -20.39    100.16     36.48     18.24   -1716.90   LC1L6B56   
+0   2   6   1    -56.87     45.44     36.48     18.24   -1716.90   LC2L6B12   
+0   2   6   2    -56.87     63.68     36.48     18.24   -1716.90   LC2L6B34   
+0   2   6   3    -56.87     81.92     36.48     18.24   -1716.90   LC2L6B56   
+0   2   6   4    -56.87    100.16     36.48     18.24   -1716.90   LC2L6B78   
+0   3   6   1    -93.35     45.44     36.48     18.24   -1716.90   LC3L6B12   
+0   3   6   2    -93.35     63.68     36.48     18.24   -1716.90   LC3L6B34   
+0   3   6   3    -93.35     81.92     36.48     18.24   -1716.90   LC3L6B56   
+0   3   6   4    -93.35    100.16     36.48     18.24   -1716.90   LC3L6B78   
+0   4   6   1   -129.83     54.56     36.48     36.48   -1716.90   LC4L6B12   
+0   4   6   2   -129.83     91.04     36.48     36.48   -1716.90   LC4L6B34   
+0   5   6   1   -166.31     54.56     36.48     36.48   -1716.90   LC5L6B12   
+0   5   6   2   -166.31     91.04     36.48     36.48   -1716.90   LC5L6B34   
+0   6   6   1   -202.79     54.56     36.48     36.48   -1716.90   LC6L6B12   
+0   6   6   2   -202.79     91.04     36.48     36.48   -1716.90   LC6L6B34   
+0   7   6   1   -248.39     72.80     54.72     72.96   -1716.90   LC7L6B12   
+0   2   5   1    -65.99    -27.36     18.24     18.24   -1724.10   LC2L5B12   
+0   2   5   2    -65.99     -9.12     18.24     18.24   -1724.10   LC2L5B34   
+0   2   5   3    -65.99      9.12     18.24     18.24   -1724.10   LC2L5B56   
+0   2   5   4    -65.99     27.36     18.24     18.24   -1724.10   LC2L5B78   
+0   3   5   1    -93.35    -27.36     36.48     18.24   -1724.10   LC3L5B12   
+0   3   5   2    -93.35     -9.12     36.48     18.24   -1724.10   LC3L5B34   
+0   3   5   3    -93.35      9.12     36.48     18.24   -1724.10   LC3L5B56   
+0   3   5   4    -93.35     27.36     36.48     18.24   -1724.10   LC3L5B78   
+0   4   5   1   -129.83    -18.24     36.48     36.48   -1724.10   LC4L5B12   
+0   4   5   2   -129.83     18.24     36.48     36.48   -1724.10   LC4L5B34   
+0   5   5   1   -166.31    -18.24     36.48     36.48   -1724.10   LC5L5B12   
+0   5   5   2   -166.31     18.24     36.48     36.48   -1724.10   LC5L5B34   
+0   6   5   1   -202.79    -18.24     36.48     36.48   -1724.10   LC6L5B12   
+0   6   5   2   -202.79     18.24     36.48     36.48   -1724.10   LC6L5B34   
+0   7   5   1   -248.39      0.00     54.72     72.96   -1724.10   LC7L5B12   
+0   1   4   1    -20.39   -100.16     36.48     18.24   -1716.90   LC1L4B12   
+0   1   4   2    -20.39    -81.92     36.48     18.24   -1716.90   LC1L4B34   
+0   1   4   3    -20.39    -63.68     36.48     18.24   -1716.90   LC1L4B56   
+0   2   4   1    -56.87   -100.16     36.48     18.24   -1716.90   LC2L4B12   
+0   2   4   2    -56.87    -81.92     36.48     18.24   -1716.90   LC2L4B34   
+0   2   4   3    -56.87    -63.68     36.48     18.24   -1716.90   LC2L4B56   
+0   2   4   4    -56.87    -45.44     36.48     18.24   -1716.90   LC2L4B78   
+0   3   4   1    -93.35   -100.16     36.48     18.24   -1716.90   LC3L4B12   
+0   3   4   2    -93.35    -81.92     36.48     18.24   -1716.90   LC3L4B34   
+0   3   4   3    -93.35    -63.68     36.48     18.24   -1716.90   LC3L4B56   
+0   3   4   4    -93.35    -45.44     36.48     18.24   -1716.90   LC3L4B78   
+0   4   4   1   -129.83    -91.04     36.48     36.48   -1716.90   LC4L4B12   
+0   4   4   2   -129.83    -54.56     36.48     36.48   -1716.90   LC4L4B34   
+0   5   4   1   -166.31    -91.04     36.48     36.48   -1716.90   LC5L4B12   
+0   5   4   2   -166.31    -54.56     36.48     36.48   -1716.90   LC5L4B34   
+0   6   4   1   -202.79    -91.04     36.48     36.48   -1716.90   LC6L4B12   
+0   6   4   2   -202.79    -54.56     36.48     36.48   -1716.90   LC6L4B34   
+0   7   4   1   -248.39    -72.80     54.72     72.96   -1716.90   LC7L4B12   
+0   1   3   1    -20.39   -164.49     36.48     36.48   -1724.10   LC1L3B12   
+0   1   3   2    -20.39   -128.01     36.48     36.48   -1724.10   LC1L3B34   
+0   2   3   1    -56.87   -164.49     36.48     36.48   -1724.10   LC2L3B12   
+0   2   3   2    -56.87   -128.01     36.48     36.48   -1724.10   LC2L3B34   
+0   3   3   1    -93.35   -164.49     36.48     36.48   -1724.10   LC3L3B12   
+0   3   3   2    -93.35   -128.01     36.48     36.48   -1724.10   LC3L3B34   
+0   4   3   1   -129.83   -164.49     36.48     36.48   -1724.10   LC4L3B12   
+0   4   3   2   -129.83   -128.01     36.48     36.48   -1724.10   LC4L3B34   
+0   5   3   1   -166.31   -164.49     36.48     36.48   -1724.10   LC5L3B12   
+0   5   3   2   -166.31   -128.01     36.48     36.48   -1724.10   LC5L3B34   
+0   6   3   1   -202.79   -164.49     36.48     36.48   -1724.10   LC6L3B12   
+0   6   3   2   -202.79   -128.01     36.48     36.48   -1724.10   LC6L3B34   
+0   7   3   1   -248.39   -146.25     54.72     72.96   -1724.10   LC7L3B12   
+0   1   2   1    -20.39   -236.63     36.48     36.48   -1716.90   LC1L2B12   
+0   1   2   2    -20.39   -200.15     36.48     36.48   -1716.90   LC1L2B34   
+0   2   2   1    -56.87   -236.63     36.48     36.48   -1716.90   LC2L2B12   
+0   2   2   2    -56.87   -200.15     36.48     36.48   -1716.90   LC2L2B34   
+0   3   2   1    -93.35   -236.63     36.48     36.48   -1716.90   LC3L2B12   
+0   3   2   2    -93.35   -200.15     36.48     36.48   -1716.90   LC3L2B34   
+0   4   2   1   -129.83   -236.63     36.48     36.48   -1716.90   LC4L2B12   
+0   4   2   2   -129.83   -200.15     36.48     36.48   -1716.90   LC4L2B34   
+0   5   2   1   -166.31   -236.63     36.48     36.48   -1716.90   LC5L2B12   
+0   5   2   2   -166.31   -200.15     36.48     36.48   -1716.90   LC5L2B34   
+0   6   2   1   -202.79   -236.63     36.48     36.48   -1716.90   LC6L2B12   
+0   6   2   2   -202.79   -200.15     36.48     36.48   -1716.90   LC6L2B34   
+0   7   2   1   -248.39   -218.39     54.72     72.96   -1716.90   LC7L2B12   
+0   1   1   1    -20.39   -292.50     36.48     72.96   -1724.10   LC1L1B12   
+0   2   1   1    -56.87   -292.50     36.48     72.96   -1724.10   LC2L1B12   
+0   3   1   1    -93.35   -292.50     36.48     72.96   -1724.10   LC3L1B12   
+0   4   1   1   -129.83   -292.50     36.48     72.96   -1724.10   LC4L1B12   
+0   5   1   1   -166.31   -292.50     36.48     72.96   -1724.10   LC5L1B12   
+0   6   1   1   -202.79   -292.50     36.48     72.96   -1724.10   LC6L1B12   
+0   7   1   1   -248.39   -292.50     54.72     72.96   -1724.10   LC7L1B12   
+1   1   1   1     20.39   -291.19     36.48     72.96   -1716.90   RC1L1B12   
+1   2   1   1     56.87   -291.19     36.48     72.96   -1716.90   RC2L1B12   
+1   3   1   1     93.35   -291.19     36.48     72.96   -1716.90   RC3L1B12   
+1   4   1   1    129.83   -291.19     36.48     72.96   -1716.90   RC4L1B12   
+1   5   1   1    166.31   -291.19     36.48     72.96   -1716.90   RC5L1B12   
+1   6   1   1    202.79   -291.19     36.48     72.96   -1716.90   RC6L1B12   
+1   7   1   1    248.39   -291.19     54.72     72.96   -1716.90   RC7L1B12   
+1   1   2   1     20.39   -237.62     36.48     36.48   -1724.10   RC1L2B12   
+1   1   2   2     20.39   -201.14     36.48     36.48   -1724.10   RC1L2B34   
+1   2   2   1     56.87   -237.62     36.48     36.48   -1724.10   RC2L2B12   
+1   2   2   2     56.87   -201.14     36.48     36.48   -1724.10   RC2L2B34   
+1   3   2   1     93.35   -237.62     36.48     36.48   -1724.10   RC3L2B12   
+1   3   2   2     93.35   -201.14     36.48     36.48   -1724.10   RC3L2B34   
+1   4   2   1    129.83   -237.62     36.48     36.48   -1724.10   RC4L2B12   
+1   4   2   2    129.83   -201.14     36.48     36.48   -1724.10   RC4L2B34   
+1   5   2   1    166.31   -237.62     36.48     36.48   -1724.10   RC5L2B12   
+1   5   2   2    166.31   -201.14     36.48     36.48   -1724.10   RC5L2B34   
+1   6   2   1    202.79   -237.62     36.48     36.48   -1724.10   RC6L2B12   
+1   6   2   2    202.79   -201.14     36.48     36.48   -1724.10   RC6L2B34   
+1   7   2   1    248.39   -219.38     54.72     72.96   -1724.10   RC7L2B12   
+1   1   3   1     20.39   -163.84     36.48     36.48   -1716.90   RC1L3B12   
+1   1   3   2     20.39   -127.36     36.48     36.48   -1716.90   RC1L3B34   
+1   2   3   1     56.87   -163.84     36.48     36.48   -1716.90   RC2L3B12   
+1   2   3   2     56.87   -127.36     36.48     36.48   -1716.90   RC2L3B34   
+1   3   3   1     93.35   -163.84     36.48     36.48   -1716.90   RC3L3B12   
+1   3   3   2     93.35   -127.36     36.48     36.48   -1716.90   RC3L3B34   
+1   4   3   1    129.83   -163.84     36.48     36.48   -1716.90   RC4L3B12   
+1   4   3   2    129.83   -127.36     36.48     36.48   -1716.90   RC4L3B34   
+1   5   3   1    166.31   -163.84     36.48     36.48   -1716.90   RC5L3B12   
+1   5   3   2    166.31   -127.36     36.48     36.48   -1716.90   RC5L3B34   
+1   6   3   1    202.79   -163.84     36.48     36.48   -1716.90   RC6L3B12   
+1   6   3   2    202.79   -127.36     36.48     36.48   -1716.90   RC6L3B34   
+1   7   3   1    248.39   -145.60     54.72     72.96   -1716.90   RC7L3B12   
+1   1   4   1     20.39   -100.49     36.48     18.24   -1724.10   RC1L4B12   
+1   1   4   2     20.39    -82.25     36.48     18.24   -1724.10   RC1L4B34   
+1   1   4   3     20.39    -64.01     36.48     18.24   -1724.10   RC1L4B56   
+1   2   4   1     56.87   -100.49     36.48     18.24   -1724.10   RC2L4B12   
+1   2   4   2     56.87    -82.25     36.48     18.24   -1724.10   RC2L4B34   
+1   2   4   3     56.87    -64.01     36.48     18.24   -1724.10   RC2L4B56   
+1   2   4   4     56.87    -45.76     36.48     18.24   -1724.10   RC2L4B78   
+1   3   4   1     93.35   -100.49     36.48     18.24   -1724.10   RC3L4B12   
+1   3   4   2     93.35    -82.25     36.48     18.24   -1724.10   RC3L4B34   
+1   3   4   3     93.35    -64.01     36.48     18.24   -1724.10   RC3L4B56   
+1   3   4   4     93.35    -45.76     36.48     18.24   -1724.10   RC3L4B78   
+1   4   4   1    129.83    -91.37     36.48     36.48   -1724.10   RC4L4B12   
+1   4   4   2    129.83    -54.89     36.48     36.48   -1724.10   RC4L4B34   
+1   5   4   1    166.31    -91.37     36.48     36.48   -1724.10   RC5L4B12   
+1   5   4   2    166.31    -54.89     36.48     36.48   -1724.10   RC5L4B34   
+1   6   4   1    202.79    -91.37     36.48     36.48   -1724.10   RC6L4B12   
+1   6   4   2    202.79    -54.89     36.48     36.48   -1724.10   RC6L4B34   
+1   7   4   1    248.39    -73.13     54.72     72.96   -1724.10   RC7L4B12