Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // 28 /*-----------------------------Hepvis----------------------------------------*/ 29 /* */ 30 /* Node: SoBox */ 31 /* Description: Represents the G4Box Geant Geometry entity */ 32 /* Author: Joe Boudreau Nov 11 1996 */ 33 /* */ 34 /*---------------------------------------------------------------------------*/ 35 #ifndef HEPVis_SoBox_h 36 #define HEPVis_SoBox_h 37 38 #include <Inventor/fields/SoSFFloat.h> 39 #include <Inventor/fields/SoSFNode.h> 40 #include <Inventor/nodes/SoShape.h> 41 42 class SoSFNode; 43 44 //! SoBox - Inventor version of the G4Box Geant Geometry entity 45 /*! 46 * Node: SoBox 47 * 48 * Description: The Inventor version of the G4Box Geant Geometry entity 49 * 50 * Author: Joe Boudreau Nov 11 1996 51 * 52 * class G4Box 53 * 54 * A Box is a cuboid of given half lengths dx,dy,dz. The Box is 55 * centred on the origin with sides parallel to the x/y/z axes. 56 * 57 * Always use Inventor Fields. This allows Inventor to detect a change to 58 * the data field and take the appropriate action; e.g., redraw the scene. 59 */ 60 61 #define SoBox Geant4_SoBox 62 63 class SoBox:public SoShape { 64 65 // The following is required: 66 SO_NODE_HEADER(SoBox); 67 68 public: 69 70 // 71 //! Half-length along X 72 // 73 SoSFFloat fDx; 74 // 75 //! Half-length along Y 76 // 77 SoSFFloat fDy; 78 // 79 //! Half-length along Z 80 // 81 SoSFFloat fDz; 82 // 83 //! Alternate rep - for use by users without HEPVis shared objects 84 // 85 SoSFNode alternateRep; 86 87 // 88 //! Constructor, required 89 // 90 SoBox(); 91 92 // 93 //! Class Initializer, required 94 // 95 static void initClass(); 96 97 // 98 //! Generate AlternateRep, required. Generating an alternate representation 99 //! must be done upon users request. It allows an Inventor program to read 100 //! back the file without requiring *this* code to be dynamically linked. 101 //! If the users expects that *this* code will be dynamically linked, he 102 //! need not invoke this method. 103 // 104 virtual void generateAlternateRep(); 105 106 // 107 //! We better be able to clear it, too! 108 // 109 virtual void clearAlternateRep(); 110 111 protected: 112 113 // 114 //! compute bounding Box, required 115 // 116 virtual void computeBBox(SoAction *action, SbBox3f &box, SbVec3f ¢er ); 117 118 // 119 //! Generate Primitives, required 120 // 121 virtual void generatePrimitives(SoAction *action); 122 123 // 124 //! GetChildList, required whenever the class has hidden children 125 // 126 virtual SoChildList *getChildren() const; 127 128 129 protected: 130 // 131 //! Destructor, required 132 // 133 virtual ~SoBox(); 134 135 private: 136 137 // 138 //! Generate Children. Used to create the hidden children. Required whenever 139 //! the node has hidden children. 140 // 141 void generateChildren(); 142 143 // 144 //! Used to modify hidden children when a data field is changed. Required 145 //! whenever the class has hidden children. 146 // 147 void updateChildren(); 148 149 // 150 //! ChildList. Required whenever the class has hidden children. 151 // 152 SoChildList *children; 153 154 }; 155 156 #endif 157