Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // 28 /*-----------------------------Hepvis--------- 29 /* 30 /* Node: SoTubs 31 /* Description: Represents the G4Tubs Gea 32 /* Author: Joe Boudreau Nov 11 1996 33 /* 34 /*-------------------------------------------- 35 #ifndef HEPVis_SoTubs_h 36 #define HEPVis_SoTubs_h 37 38 #include <Inventor/fields/SoSFFloat.h> 39 #include <Inventor/fields/SoSFNode.h> 40 #include <Inventor/fields/SoSFBool.h> 41 #include <Inventor/nodes/SoShape.h> 42 43 class SoSFNode; 44 45 //! SoTubs - Inventor version of the G4Tubs Ge 46 /*! 47 * Node: SoTubs 48 * 49 * Description: The Inventor version of t 50 * 51 * Author: Joe Boudreau Nov 11 1996 52 * 53 * class G4Tubs 54 * 55 * A tube or tube segment with curved sides pa 56 * the z-axis. The tube has a specified half-l 57 * the z axis, about which it is centred, and 58 * minimum and maximum radius. A minimum radiu 59 * signifies a filled tube /cylinder. The tube 60 * specified by starting and delta 61 * angles for phi, with 0 being the +x axis, P 62 * the +y axis. A delta angle of 2PI signifies 63 * complete, unsegmented tube/cylinder 64 * 65 * Always use Inventor Fields. This allows Inv 66 * the data field and take the appropriate act 67 */ 68 69 #define SoTubs Geant4_SoTubs 70 71 class SoTubs:public SoShape { 72 73 // The following is required: 74 SO_NODE_HEADER(SoTubs); 75 76 public: 77 78 // 79 //! Inside radius of the tube 80 // 81 SoSFFloat pRMin; 82 // 83 //! Outside radius of the tube 84 // 85 SoSFFloat pRMax; 86 // 87 //! Half-length in Z 88 // 89 SoSFFloat pDz; 90 // 91 //! Starting angle, in radians 92 // 93 SoSFFloat pSPhi; 94 // 95 //! Delta-angle, in radians 96 // 97 SoSFFloat pDPhi; 98 // 99 //! Alternate rep - required 100 // 101 SoSFNode alternateRep; 102 103 // 104 //! Constructor, required 105 // 106 SoTubs(); 107 108 // 109 //! Class Initializer, required 110 // 111 static void initClass(); 112 113 // 114 //! Generate AlternateRep, required. Genera 115 //! must be done upon users request. It all 116 //! back the file without requiring *this* c 117 //! If the users expects that *this* code wi 118 //! need not invoke this method. 119 // 120 virtual void generateAlternateRep(); 121 122 // 123 //! We better be able to clear it, too! 124 // 125 virtual void clearAlternateRep(); 126 127 protected: 128 129 // 130 //! compute bounding Box, required 131 // 132 virtual void computeBBox(SoAction *action, S 133 134 // 135 //! Generate Primitives, required 136 // 137 virtual void generatePrimitives(SoAction *ac 138 139 // 140 //! GetChildList, required whenever the clas 141 // 142 virtual SoChildList *getChildren() const; 143 144 145 protected: 146 // 147 //! Destructor, required 148 // 149 virtual ~SoTubs(); 150 151 private: 152 153 // 154 //! Generate Children. Used to create the hi 155 //! the node has hidden children. 156 // 157 void generateChildren(); 158 159 // 160 //! Used to modify hidden children when a da 161 //! whenever the class has hidden children. 162 // 163 void updateChildren(); 164 165 // 166 //! ChildList. Required whenever the class h 167 // 168 SoChildList *children; 169 170 // 171 //! help with trigonometry. increments sine 172 // 173 void inc(double & sinPhi, double & cosPhi, d 174 double oldSin=sinPhi,oldCos=cosPhi; 175 sinPhi = oldSin*cosDeltaPhi+oldCos*sinDelt 176 cosPhi = oldCos*cosDeltaPhi-oldSin*sinDelt 177 } 178 179 }; 180 181 #endif 182