upgrade: added panels for viewing users limits (cuts, process controls) - D. Adamova
authorivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Dec 2001 10:37:39 +0000 (10:37 +0000)
committerivana <ivana@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 19 Dec 2001 10:37:39 +0000 (10:37 +0000)
TGeant4/TG4ListTreeFrame.cxx
TGeant4/TG4ListTreeFrame.h
TGeant4/TG4MainFrame.cxx
TGeant4/TG4VolumesFrames.cxx
TGeant4/TG4VolumesFrames.h

index 38f4c73..47f6eec 100644 (file)
@@ -184,4 +184,19 @@ void  TG4ListTreeFrame::DrawSelectedVolume(TGListTreeItem* item)
     G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update");
 }
 
+//________________________________________________________________________________
+void TG4ListTreeFrame::SendCloseMessage()
+{
+//---> Supposed to brighten up the "Volumes" panel
+//---> plus close the Volumes tree to the ALICE icon
+
+  TGListTreeItem* first = fVolumesListTree->GetFirstItem();
+  Int_t btn = kButton1;
+  fVolumesListTree->Clicked( first, btn);
+  fVolumesListTree->DoubleClicked( first, btn);
+  gClient->NeedRedraw(fVolumesListTree);
+
+}
+
+//__________________________________________________________________________________
 
index 4cb9fbd..39ab3df 100644 (file)
@@ -33,6 +33,7 @@ public:
     TGListTreeItem*
         AddItem(TObject* obj, TGListTreeItem* parent,const char* name,
                 const TGPicture* open, const TGPicture* closed);    
+    void SendCloseMessage();                
 //---------------------------------------------------------------------------
 
 protected:
index 1927750..fcc52ec 100644 (file)
@@ -17,6 +17,7 @@
 #include "TG4MaterialsFrames.h"
 #include "TG4Globals.h"
 
+
 #include <TGTab.h>
 #include <TGMenu.h>
 #include <TApplication.h>
@@ -51,7 +52,7 @@ TG4MainFrame::TG4MainFrame(const TGWindow* p, UInt_t w, UInt_t h)
    fPopupMenuHelp->Associate(this);
  
    fMenuBar = new TGMenuBar(this, 1, 1, kHorizontalFrame);
-   fMenuBar->AddPopup("&CloseWindow/ExitRoot",fPopupMenu, fMenuBarItemLayout);
+   fMenuBar->AddPopup("&Main Window",fPopupMenu, fMenuBarItemLayout);
    fMenuBar->AddPopup("&Draw Control", fPopupMenuTest, fMenuBarItemLayout);
    fMenuBar->AddPopup("&Report", fPopupMenuHelp, fMenuBarHelpLayout);
 
@@ -205,20 +206,27 @@ G4String editortxt =
 //---->case Handle Popup menus    
     case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
+               
+            case kCM_TAB:
+              G4cout << "!!!!CLICKING IN A TAB no.  " 
+                     << fTab->GetCurrent() << "   !!!" << G4endl;
+              break;
+       
             case kCM_MENU:
                switch (parm1) {
 
                    case 1:
-                  
+                    fTab->SetTab(0);
+                    flistTreeFrame->SendCloseMessage();
                     buttons = kMBOk;
                     // for (Int_t i=1; i<3; i++)
                     //      buttons |= i;
-                    new TGMsgBox(fClient->GetRoot(), this,
-                                  lMsgBTtleBf->GetString(), lMsgBAnnBf2->GetString(),
-                                  icontype, buttons, &retval);
+                   new TGMsgBox(fClient->GetRoot(), this,
+                                 lMsgBTtleBf->GetString(), lMsgBAnnBf2->GetString(),
+                                 icontype, buttons, &retval);
                           // if not here, produces
                           // Error in <RootX11ErrorHandler>: BadWindow 
-                          // (invalid Window parameter) (XID: 100663461)                     
+                          // (invalid Window parameter) (XID: 100663461)                                             
                      TGMainFrame::CloseWindow();
                              break;  
 
@@ -266,17 +274,16 @@ G4String editortxt =
           case kCM_BUTTON:
               switch(parm1) {
               
-                  case 301:
-                    cout << "\n User Limits Summary button pressed " << endl;    
+                  case 301:   
                      fvolumesFrames->DisplayUserLimits();
                     break;
                     
                   case 302:
-                     cout << "\n Cuts button pressed " << endl;
+                     fvolumesFrames->DisplayCuts();
                      break;
                      
                   case 303:
-                     cout << "\n Controls button pressed " << endl;
+                     fvolumesFrames->DisplayControls();
                      break;
                      
                   default:
index d5cfc8a..e287332 100644 (file)
  
 #include "TG4VolumesFrames.h"
 #include "TG4MaterialsFrames.h"
+#include "TG4MainFrame.h"
 #include "TG4Editor.h"
 #include "TG4Globals.h" 
 #include "TG4Limits.h"
 #include "TG4G3CutVector.h"
-#include "TG4G3Cut.h"
+#include "TG4G3ControlVector.h"
 
 #include <TGTextBuffer.h>
 #include <TGTextEntry.h>
@@ -36,7 +37,8 @@
  
  ClassImp(TG4VolumesFrames)
 
-TG4VolumesFrames::TG4VolumesFrames( TGTab* Tab, TGMainFrame* ActionFrame)
+TG4VolumesFrames::TG4VolumesFrames( TGTab* Tab, TG4MainFrame* ActionFrame)
+  : fPanel(ActionFrame)
 { 
 //---> creates the volumes properties display frame
 //---> and plunges it into the main frame
@@ -134,11 +136,23 @@ TG4VolumesFrames::TG4VolumesFrames( TGTab* Tab, TGMainFrame* ActionFrame)
   fGrFrame->Resize(fGrFrame->GetDefaultSize());
 
 // ---> text for the user's limits display window when no volume specified yet 
-  fDisplBuff = new TGTextBuffer(1000);
-  fDisplBuff->Clear(); 
-  fDisplBuff->AddText(0, "\n\n***  No volume specified, "
+  fDisplBuffLimits = new TGTextBuffer(1000);
+  fDisplBuffLimits->Clear(); 
+  fDisplBuffLimits->AddText(0, "\n\n***  No volume specified, "
   "no limits displayed *** ");
   
+// ---> text for the user's cuts display window when no volume specified yet 
+  fDisplBuffCuts = new TGTextBuffer(1000);
+  fDisplBuffCuts->Clear(); 
+  fDisplBuffCuts->AddText(0, "\n\n***  No volume specified, "
+  "no cuts displayed *** ");
+    
+// ---> text for the user's controls display window when no volume specified yet 
+  fDisplBuffControls = new TGTextBuffer(1000);
+  fDisplBuffControls->Clear(); 
+  fDisplBuffControls->AddText(0, "\n\n***  No volume specified, "
+  "no controls displayed *** ");
+      
 
 // ---> making up the Volumes frame   
      fCapFrame->AddFrame(fVolSubframe1,fVolFrameLayout);  
@@ -146,9 +160,6 @@ TG4VolumesFrames::TG4VolumesFrames( TGTab* Tab, TGMainFrame* ActionFrame)
 
 // --->  going to the main frame     
      parent->AddFrame(fCapFrame, fVolFrameLayout);
-     
-     SetPanel(ActionFrame);     
-     
 }
 
 TG4VolumesFrames::TG4VolumesFrames(const TG4VolumesFrames& vf) 
@@ -193,14 +204,10 @@ TG4VolumesFrames::~TG4VolumesFrames()
      delete fVolTextEntry[i];
      delete fLabel[i];
    }
-     delete fDisplBuff;
-}
-
-void TG4VolumesFrames::SetPanel(TGMainFrame* ActionFrame)
-{
-//---> produces the pointer to the main frame
-
-    fPanel = (TG4MainFrame*) ActionFrame;
+     delete fDisplBuffLimits;
+     delete fDisplBuffCuts;
+     delete fDisplBuffControls;
+     
 }
 
 void TG4VolumesFrames::SetVolumesComboEntries() 
@@ -251,11 +258,20 @@ void TG4VolumesFrames::DisplayVolumeCharacteristics()
      G4LogicalVolume* lVolume = (*lComboEntries )[ii];
      G4Material* lvMaterial = ((*lComboEntries )[ii])->GetMaterial();
      lLimits = (TG4Limits*)lVolume->GetUserLimits(); 
-     TString lDisplayLimits = GetDisplay(lLimits); 
-
+     TString lDisplayLimits = GetLimitsDisplay(lLimits);
+     TString lDisplayCuts = GetCutsDisplay(lLimits);
+     TString lDisplayControls = GetControlsDisplay(lLimits);
+     
 //---> fills up the buffer for popup frame display
-     fDisplBuff->Clear(); 
-     fDisplBuff->AddText(0,lDisplayLimits);
+     fDisplBuffLimits->Clear(); 
+     fDisplBuffLimits->AddText(0,lDisplayLimits);
+     
+     fDisplBuffCuts->Clear(); 
+     fDisplBuffCuts->AddText(0,lDisplayCuts);
+     
+     fDisplBuffControls->Clear(); 
+     fDisplBuffControls->AddText(0,lDisplayControls);
+     
 
      G4cout << lVolume->GetName() << "  " 
             << lVolume->GetSolid()->GetEntityType() << "  "
@@ -293,9 +309,18 @@ void TG4VolumesFrames::DisplayVolumeCharacteristics()
         fVolTextBuff[ii]->Clear();          
         gClient->NeedRedraw(fVolTextEntry[ii]);
        };
-     fDisplBuff->Clear(); 
-     fDisplBuff->AddText(0, "\n\n***  No volume specified, "
+     fDisplBuffLimits->Clear(); 
+     fDisplBuffLimits->AddText(0, "\n\n***  No volume specified, "
      "no limits displayed *** ");
+     
+     fDisplBuffCuts->Clear(); 
+     fDisplBuffCuts->AddText(0, "\n\n***  No volume specified, "
+     "no cuts displayed *** ");
+     
+     fDisplBuffControls->Clear(); 
+     fDisplBuffControls->AddText(0, "\n\n***  No volume specified, "
+     "no controls displayed *** ");
+     
       
      };
 
@@ -309,14 +334,37 @@ void TG4VolumesFrames::DisplayUserLimits()
 {
 //-----> displays User Limits associated with the logical volume 
 
-  const char* cdisplay = fDisplBuff->GetString();
+  const char* cdisplay = fDisplBuffLimits->GetString();
+  TG4Editor* ed = new TG4Editor( fCapFrame, 450, 300);
+                      ed->LoadBuffer(cdisplay);
+                     ed->Popup();      
+
+}
+
+void TG4VolumesFrames::DisplayCuts()
+{
+//-----> displays Cuts associated with the logical volume 
+
+  const char* cdisplay = fDisplBuffCuts->GetString();
+  TG4Editor* ed = new TG4Editor( fCapFrame, 450, 300);
+                      ed->LoadBuffer(cdisplay);
+                     ed->Popup();      
+
+}
+
+void TG4VolumesFrames::DisplayControls()
+{
+//-----> displays Controls associated with the logical volume 
+
+  const char* cdisplay = fDisplBuffControls->GetString();
   TG4Editor* ed = new TG4Editor( fCapFrame, 450, 300);
                       ed->LoadBuffer(cdisplay);
                      ed->Popup();      
 
 }
 
-TString TG4VolumesFrames::GetDisplay(G4UserLimits* limits) const
+//_______________________________________________________________________
+TString TG4VolumesFrames::GetLimitsDisplay(G4UserLimits* limits) const
 {
 // Returns text for the user limits display in a separate frame
 // ---
@@ -326,33 +374,66 @@ TString TG4VolumesFrames::GetDisplay(G4UserLimits* limits) const
 
   display = "\n\n**************************************";
   display += "\n**************************************\n\n";
-  display += "\" ";
-  display += ((TG4Limits*)limits)->GetName();
-  display += "\"  limits:";
-  display += "\n\n  Max step length (mm): ";
-  TG4Globals::AppendNumberToString( display, limits->GetMaxAllowedStep(dummy)/mm);
-//  sprintf(buff, "%12.5e", fMaxStep/mm );
-//  display += buff;
-  display += "\n\n  Max track length (mm): ";
-  sprintf(buff, "%12.5e", limits->GetUserMaxTrackLength(dummy)/mm );
+
+  const char* lname = ((TG4Limits*)limits)->GetName();
+  sprintf( buff, "\"  %s \"  limits: \n\n  Max step length (mm):   %g ",
+            lname, limits->GetMaxAllowedStep(dummy)/mm );
   display += buff;
-  display += "\n\n  Max time (s)         : ";
-  sprintf(buff, "%12.5e", limits->GetUserMaxTime(dummy)/s );
+  
+  sprintf( buff, "\n\n  Max track length (mm):  %g  \n\n  Max time (s)         :  %g ",
+             limits->GetUserMaxTrackLength(dummy)/mm, limits->GetUserMaxTime(dummy)/s);             
+  display += buff;
+   
+  sprintf( buff, "\n\n  Min kin. energy (MeV):  %g \n\n  Min range (mm):         %g ",
+            limits->GetUserMinEkine(dummy)/MeV, limits->GetUserMinRange(dummy)/mm );
   display += buff;
-  display += "\n\n  Min kin. energy (MeV): ";
-  TG4Globals::AppendNumberToString( display, limits->GetUserMinEkine(dummy)/MeV);
-//  sprintf(buff, "%12.5e", fMinEkine/MeV );
-//  display += buff;
-  display += "\n\n  Min range (mm):        " ;
-  TG4Globals::AppendNumberToString( display, limits->GetUserMinRange(dummy)/mm);
-//  sprintf(buff, "%12.5e", fMinRange/mm);
-//  display += buff;
+  
   display += "\n\n**************************************";
-  display += "\n**************************************\n\n";
+  display += "\n**************************************\n\n";        
+
+  const char* tmp = display;
+  
+  return TString(tmp);
+
+}
+//===================inserted================================================
+//_______________________________________________________________________
+TString TG4VolumesFrames::GetCutsDisplay(G4UserLimits* limits) const
+{
+// Returns text for the cuts display in a separate frame
+// ---
+  G4String display;
+
+  const TG4G3CutVector* lCutVector = ((TG4Limits*)limits) -> GetCutVector();
+
+  if ( ((TG4Limits*)limits) -> IsCut() )
+     display = lCutVector -> Format(); 
+  else
+     display =  "\n\n****  No special cuts.  **** "; 
+
+  const char* tmp = display;
   
+  return TString(tmp);
+  
+}
+//_________________________________________________________________________
+TString TG4VolumesFrames::GetControlsDisplay(G4UserLimits* limits) const
+{
+// Returns text for the controls display in a separate frame
+ G4String display;
+
+ const TG4G3ControlVector* lControlVector = ((TG4Limits*)limits) -> GetControlVector();
+ if ( ((TG4Limits*)limits) -> IsControl() )
+    display = lControlVector -> Format();
+ else 
+    display =  "\n\n****  No special controls.  **** "; 
+
   const char* tmp = display;
   
   return TString(tmp);
 
 }
 
+//================end of inserted==================================================  
index b115cd9..6e5041d 100644 (file)
@@ -16,7 +16,6 @@
 #include <TObject.h>
 #include <TGFrame.h>
 #include <TGButton.h>
-#include "TG4MainFrame.h"
 
 class TGLabel;
 class TGTab;
@@ -24,18 +23,20 @@ class TGTextBuffer;
 class TGTextEntry;
 class TGComboBox;
 class G4UserLimits;
+class TG4MainFrame; 
 
 class TG4VolumesFrames : public TObject {
 
 public:   
 
-    TG4VolumesFrames( TGTab* Tab, TGMainFrame* actionFrame);
+    TG4VolumesFrames( TGTab* Tab, TG4MainFrame* actionFrame);
     virtual ~TG4VolumesFrames();
     
     void SetVolumesComboEntries();
     void DisplayVolumeCharacteristics();
     void DisplayUserLimits();
-    void SetPanel(TGMainFrame* ActionFrame);
+    void DisplayCuts();
+    void DisplayControls();
 
 protected:
 
@@ -43,8 +44,11 @@ protected:
     TG4VolumesFrames& operator=(const TG4VolumesFrames& vf) ;
 
 private:
-    TString GetDisplay(G4UserLimits* limits) const;
-
+    TString GetLimitsDisplay(G4UserLimits* limits) const;
+    TString GetCutsDisplay(G4UserLimits* limits) const;
+    TString GetControlsDisplay(G4UserLimits* limits) const;
+    
+    TG4MainFrame*       fPanel;    //main frame
     TGCompositeFrame*   fCapFrame; // the top frame for volumes properties display
     TGCompositeFrame*   fVolSubframe1; // frame for the combo box
     TGCompositeFrame*   fVolSubframe2; //  frame for the text entries        
@@ -60,13 +64,10 @@ private:
     TGTextEntry*        fVolTextEntry[3]; // text entries for vols properties
     TGComboBox*         fVolumesCombo; // volumes  combo box
     TGLabel*            fComboLabel;   // label for combo box
-    
-    TGTextBuffer* fDisplBuff; //buffer containing text for user limits display
-    TG4MainFrame* fPanel;     //main frame
+    TGTextBuffer*       fDisplBuffLimits; //buffer containing text for user limits display
+    TGTextBuffer*       fDisplBuffCuts; //buffer containing text for cuts display
+    TGTextBuffer*       fDisplBuffControls; //buffer containing text for controls display
                                
-
-
-
     void AddLogicalVolumeName( const char* name, Int_t index) const;
 
     ClassDef(TG4VolumesFrames,0)
@@ -75,8 +76,3 @@ private:
   
 #endif
     
-    
-     
-    
-