Methods and class definition for media and material properties browser added
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 18 Jan 2000 16:12:56 +0000 (16:12 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 18 Jan 2000 16:12:56 +0000 (16:12 +0000)
TGeant3/TGeant3GUI.h

index 247ceae..e4eb76a 100644 (file)
@@ -34,26 +34,45 @@ class AliGuiGeomDialog;
 class AliGUISliders;
 class AliGuiGeomMain;
 class AliDrawVolume;
+class AliGUIMaterial;
+class AliGUIMedium;
 
 
 class AliGeant3GeometryGUI : public TObject {
  private:
-    AliGuiGeomMain *fPanel;  // the main gui panel
-    Int_t          fNstack;  // number of volumes
-    TClonesArray   *fVolumes;
-    Int_t*    fZlq;
-    Float_t*  fZq;    
+    AliGuiGeomMain *fPanel;     // the main gui panel
+    Int_t          fNstack;      // number of volumes
+    TClonesArray   *fVolumes;    // array of volumes  
+    Int_t          fNMaterials;  // number of materials and media
+    TClonesArray   *fMaterials;  // array of materials
+    TClonesArray   *fMedia;  // array of materials    
+// Zebra bank related information      
+    Int_t*    fZlq;              
+    Float_t*  fZq;
+    Int_t*    fZiq;
     Gclink_t* fGclink;
-    
+    Gcnum_t*  fGcnum;
  public:
     AliGeant3GeometryGUI();
+    // Reads the zebra geometry tree and put it into the ListTree
     void  ReadGeometryTree();
+    // Read material and media information and put it into ComboBox 
+    void  ReadMaterials();
+    Float_t Cut(Int_t idmed, Int_t icut);
  private:
     virtual AliDrawVolume* Volume(Int_t id)
        {return (AliDrawVolume *) (fVolumes->UncheckedAt(id));}
-       
+    // Return number of children for volume idvol
     Int_t NChildren(Int_t idvol);
+    // Return child number idc of volume idvol
     Int_t Child(Int_t idvol, Int_t idc);
+    // Return medium number for given volume idvol
+    Int_t Medium(Int_t idvol);
+    // Return material number for given volume idvol
+    Int_t Material(Int_t idvol);
+    //
+
+    
     ClassDef(AliGeant3GeometryGUI,1)  // GUI for Geant3 geometry visualisation
 };
 
@@ -61,25 +80,59 @@ class AliGeant3GeometryGUI : public TObject {
 class AliGuiGeomMain : public TGMainFrame {
 
 private:
-   TGCanvas           *fCanvasWindow;
-   TGCompositeFrame   *fContainer;
-   TGListTree         *fLt;
-   TGMenuBar          *fMenuBar;
-   TGPopupMenu        *fMenuFile, *fMenuTest, *fMenuHelp;
-   TGLayoutHints      *fMenuBarItemLayout, *fMenuBarHelpLayout, *fMenuBarLayout;
-   AliGuiGeomDialog   *fDialog; //! no output please
-   
-public:
-   AliGuiGeomMain(const TGWindow *p, UInt_t w, UInt_t h);
-   virtual ~AliGuiGeomMain();
-
-   virtual void CloseWindow();
-   virtual TGListTreeItem *
-       AddItem(TObject *, TGListTreeItem* ,
-              const char*, const TGPicture*, const TGPicture*);
-   virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t);
-   virtual void Update();
-   ClassDef(AliGuiGeomMain,1)  // MainFrame for Geometry Browser
+    TGTab              *fTab;     
+    TGCanvas           *fCanvasWindow;
+    TGCompositeFrame   *fContainer, *fF2, *fF21, *fF3, *fF31, *fF4, *fF5;
+    TGCompositeFrame   *fF6, *fF61, *fF62, *fF63;
+    TGListTree         *fLt;
+    TGMenuBar          *fMenuBar;
+    TGPopupMenu        *fMenuFile, *fMenuTest, *fMenuHelp;
+    TGLayoutHints      *fMenuBarItemLayout, *fMenuBarHelpLayout,
+                      *fMenuBarLayout, fLTab;
+    TGLayoutHints      *fL2;
+    AliGuiGeomDialog   *fDialog;                   //! no output please
+    TGComboBox         *fMaterialCombo;
+    TGComboBox         *fMechanismCombo;
+    TGComboBox         *fMediaCombo, *fParticleCombo;
+    TGListBox          *fProcessLB, *fCutsLB;
+    TClonesArray       *fComboEntries;
+    TClonesArray       *fComboMediaEntries;    
+    TGHorizontalFrame  *fHframe[6],*fHframeM[8];
+    TGTextBuffer       *fTbh[6], *fTbhM[8], *fTbh61, *fTbh62, *fTbh63;
+    TGTextEntry        *fTeh[6], *fTehM[8], *fTeh61, *fTeh62, *fTeh63;
+    TGLabel            *fLabel[6], *fLabelM[8], *fSLabel61;
+    TGTextButton       *fPlotButton;
+    Float_t            fEmin;
+    Float_t            fEmax;
+    Int_t              fNbins;
+    
+ public:
+    AliGuiGeomMain(const TGWindow *p, UInt_t w, UInt_t h);
+    virtual ~AliGuiGeomMain();
+    // Destroy the main window
+    virtual void CloseWindow();
+    // Add item to ListTree
+    virtual TGListTreeItem *
+       AddItem(TObject *, TGListTreeItem* ,
+               const char*, const TGPicture*, const TGPicture*);
+    // Add Material to ComboBox
+    virtual void AddMaterial(AliGUIMaterial *Material, Int_t i);
+    // Add Medium to ComboBox
+    virtual void AddMedium(AliGUIMedium *Medium, Int_t i);
+    // Process messages from this window
+    virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t);
+    // Update widgets
+    virtual void Update();
+    // Update ComboBoxes
+    virtual void UpdateCombo();
+    virtual void UpdateListBox();
+    // Relate objects to ComboEntries
+    // Currently ComboBox Entries are strings only, hence we need this construction
+    virtual void SetComboEntries(TClonesArray *entries) {fComboEntries=entries;}
+    virtual void SetMediaComboEntries(TClonesArray *entries)
+       {fComboMediaEntries=entries;}
+    virtual void Plot();
+    ClassDef(AliGuiGeomMain,1)  // MainFrame for Geometry Browser
 };
 
 
@@ -99,15 +152,17 @@ private:
     TGTextEntry         *fTeh11, *fTeh12, *fTeh21, *fTeh22, *fTeh31, *fTeh32;
     TGDoubleHSlider     *fDslider1, *fDslider2, *fDslider3;
     TGLabel             *fSLabel1,  *fSLabel2,  *fSLabel3;
+    
 public:
    AliGuiGeomDialog(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h,
                UInt_t options = kMainFrame | kVerticalFrame);
    virtual ~AliGuiGeomDialog();
-
+// Destroy this window
    virtual void CloseWindow();
+// Process messages from this window    
    virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
+// Update widgets   
    virtual void Update();
-//   ClassDef(AliGuiGeomDialog,1)  // Just a test 
 };
 
 class AliGUISliders : public  TGCompositeFrame {
@@ -124,12 +179,11 @@ private:
 public:
    AliGUISliders(const TGWindow *p, const TGWindow *main, UInt_t w, UInt_t h);
    virtual ~AliGUISliders();
-
    virtual void CloseWindow();
    virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
    virtual void Update();
       
-   //   ClassDef(AliGUISliders,1)  // Just a test 
+   //   ClassDef(AliGUISliders,1)  // Window containing sliders 
 };
 
 class AliDrawVolume : public TObject 
@@ -137,20 +191,37 @@ class AliDrawVolume : public TObject
 public:
     AliDrawVolume(char* name);
     virtual ~AliDrawVolume(){;}
+    // Draw the volume
     virtual void    Draw(Option_t * =0);
+    // Draw volume specs
     virtual void    DrawSpec();
+    // Return volume name
     virtual char*   Name();
-    virtual void    SetParam(Int_t, Float_t);
-    virtual Float_t GetParam(Int_t);
-
+    // Set volume parameter i
+    virtual void    SetParam(Int_t i, Float_t);
+    // Get volume parameters i
+    virtual Float_t GetParam(Int_t i);
+    // Set volume id
     virtual void  SetIdVolume(Int_t id) {fIdVolume = id;}
-    virtual void  SetIdCopy(Int_t id)   {fIdCopy = id;}    
+    // Set volume copy number
+    virtual void  SetIdCopy(Int_t id)   {fIdCopy = id;}
+    // Set volume medium number
+    virtual void  SetIdMedium(Int_t id)   {fIdMedium = id;}
+    // Set volume material number
+    virtual void  SetIdMaterial(Int_t id) {fIdMaterial = id;}
+    // Get volume id
     virtual Int_t GetIdVolume()         {return fIdVolume;}
+    // Get copy number
     virtual Int_t GetIdCopy()           {return fIdCopy;}
+    // Get medium number
+    virtual Int_t Medium()   {return fIdMedium;}
+    // Get material number
+    virtual Int_t Material() {return fIdMaterial;}
+    // Increase copy number by one
     virtual void  AddCopy()             {fIdCopy ++;}
+    // Set link to ListTree Item 
     virtual void  SetItem(TGListTreeItem *item) {fItem = item;}
-
-
+    // Get link to ListTree Item
     virtual TGListTreeItem* GetItem() {return fItem;}
            
 private:
@@ -174,10 +245,105 @@ private:
     Float_t fClipZmin;    // clip box range zmin
     Float_t fClipZmax;    // clip box range zmax
     Int_t   fIdVolume;    // geant volume id
+    Int_t   fIdMedium;    // geant medium id
+    Int_t   fIdMaterial;  // geant material id    
     Int_t   fIdCopy;      // copy flag
     TGListTreeItem        *fItem;
     ClassDef(AliDrawVolume,1) // Volume Object for Drawing 
 };
+
+
+class AliGUIMaterial : public TObject 
+{
+public:
+    AliGUIMaterial();
+    AliGUIMaterial(Int_t imat, char* name, Float_t a, Float_t z,
+                  Float_t dens, Float_t radl, Float_t absl);
+    virtual ~AliGUIMaterial(){;}
+    // Dump material parameters
+    virtual void  Dump();
+    // Get material id
+    virtual Int_t Id();
+    // Get material name
+    virtual char* Name();
+    // Get mass number 
+    virtual Float_t A();
+    // Get charge number 
+    virtual Float_t Z();
+    // Get density
+    virtual Float_t Density();
+    // Get radiation length
+    virtual Float_t RadiationLength();
+    // Get absorption lenth
+    virtual Float_t AbsorptionLength();
+    // Plot
+    virtual void  Plot();
+    // Set and get link to widget entry
+    virtual Int_t ItemId() {return fItem;}
+    virtual void  SetItemId(Int_t id) {fItem=id;}
+private:
+    Int_t   fId;          // Id number of the material
+    char*   fName;        // name of the material 
+    Float_t fA;           // mass number of the material
+    Float_t fZ;           // charge number of the material
+    Float_t fDensity;     // density of the material
+    Float_t fRadl;        // radiation length of the material
+    Float_t fAbsl;        // absorption length
+    //
+    Int_t   fItem;            // Link to Widget Entry
+    ClassDef(AliGUIMaterial,1) // Material Object for GUI 
+};
+
+class AliGUIMedium : public TObject 
+{
+public:
+    AliGUIMedium();
+    AliGUIMedium(Int_t imed, Int_t imat, char* name, Int_t isvol, Int_t ifield,
+                Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax,
+                Float_t epsil, Float_t stmin);
+    
+    virtual ~AliGUIMedium(){;}
+    // Dump medium parameters
+    virtual void    Dump();
+    // Get id
+    virtual Int_t   Id();
+    // Get name
+    virtual char*   Name();
+    // Get parameters
+    virtual Int_t   IdMat()   {return fIdMat;}
+    virtual Int_t   Isvol()   {return fIsvol;}
+    virtual Int_t   Ifield()  {return fIfield;}
+    virtual Float_t Fieldm()  {return fFieldm;}    
+    virtual Float_t Tmaxfd()  {return fTmaxfd;}        
+    virtual Float_t Stemax()  {return fStemax;}    
+    virtual Float_t Deemax()  {return fDeemax;}        
+    virtual Float_t Epsil()   {return fEpsil;}
+    virtual Float_t Stmin()   {return fStmin;}
+    virtual void    SetPar(Int_t ipar, Float_t par) {fPars[ipar-1]=par;}
+    virtual Float_t GetPar(Int_t ipar);
+    // Set and get link to widget entry
+    virtual Int_t ItemId() {return fItem;}
+    virtual void  SetItemId(Int_t id) {fItem=id;}
+    
+ private:
+    const static Int_t fNPars=33;
+    Float_t fPars[fNPars];   // special medium parameters
+    Int_t   fId;             // Id number of the Medium
+    Int_t   fIdMat;          // Associated material
+    char*   fName;           // Name of the Medium
+    Int_t   fIsvol;          // Sensitivity flag 
+    Int_t   fIfield;         // Magnetic Field Flag
+    Float_t fFieldm;         // Maximum Field Strength
+    Float_t fTmaxfd;         // Max. Ang. Deviation
+    Float_t fStemax;         // Maximum Step   
+    Float_t fDeemax;         // Max. Frac. Energy Loss",
+    Float_t fEpsil;          // Crossing Precission 
+    Float_t fStmin;          // Minimum Step Size
+    //
+    Int_t   fItem;           // Link to Widget Entry
+    ClassDef(AliGUIMedium,1) // Tracking Medium Object for GUI 
+};
+
 #endif
 
 
@@ -186,3 +352,4 @@ private:
 
 
 
+