// // ******************************************************************** // * DISCLAIMER * // * * // * The following disclaimer summarizes all the specific disclaimers * // * of contributors to this software. The specific disclaimers,which * // * govern, are listed with their locations in: * // * http://cern.ch/geant4/license * // * * // * Neither the authors of this software system, nor their employing * // * institutes,nor the agencies providing financial support for this * // * work make any representation or warranty, express or implied, * // * regarding this software system or assume any liability for its * // * use. * // * * // * This code implementation is the intellectual property of the * // * GEANT4 collaboration. * // * By copying, distributing or modifying the Program (or any work * // * based on the Program) you indicate your acceptance of this * // * statement, and all its terms. * // ******************************************************************** // // // $Id: G4MaterialPropertiesTable.hh,v 1.9.4.1 2001/06/28 19:10:29 gunter Exp $ // GEANT4 tag $Name: $ // // //////////////////////////////////////////////////////////////////////// // G4MaterialPropertiesTable Definition //////////////////////////////////////////////////////////////////////// // // File: G4MaterialPropertiesTable.hh // Description: An Material properties table is a hash table, with // key = property name, and value = G4MaterialPropertyVector // Version: 1.0 // Created: 1996-02-08 // Author: Juliet Armstrong // Updated: 1999-11-05 Migration from G4RWTPtrHashDictionary to STL // by John Allison // 1999-10-29 add method and class descriptors // 1997-03-25 by Peter Gumplinger // > cosmetics (only) // mail: gum@triumf.ca // //////////////////////////////////////////////////////////////////////// #ifndef G4MaterialPropertiesTable_h #define G4MaterialPropertiesTable_h 1 ///////////// // Includes ///////////// #include #include "g4std/map" #include "globals.hh" #include "G4MaterialPropertyVector.hh" // Class Description: // An Material properties table is a hash table, with key = property // name, and value = G4MaterialPropertyVector. // Class Description - End: #define RefractionIndex "RINDEX" ///////////////////// // Class Definition ///////////////////// class G4MaterialPropertiesTable { ////////////// // Operators ////////////// private: G4MaterialPropertiesTable& operator =(const G4MaterialPropertiesTable &right); //////////////// // Constructor //////////////// public: // Without description G4MaterialPropertiesTable(); private: G4MaterialPropertiesTable(const G4MaterialPropertiesTable &right); public: // Without description /////////////// // Destructor /////////////// ~G4MaterialPropertiesTable(); //////////// // Methods //////////// public: // With description void AddProperty(const char *key, G4double *PhotonMomenta, G4double *PropertyValues, G4int NumEntries); // Add a new property to the table by giving a key-name and the // arrays x and y of size NumEntries. void AddProperty(const char *key, G4MaterialPropertyVector *opv); // Add a new property to the table by giving a key-name and an // already constructed G4MaterialPropertyVector. void RemoveProperty(const char *key); // Remove a property from the table. G4MaterialPropertyVector* GetProperty(const char *key); // Get the property from the table corresponding to the key-name. void AddEntry(const char *key, G4double aPhotonMomentum, G4double aPropertyValue); // Add a new entry (pair of numbers) to the table for a given key. void RemoveEntry(const char *key, G4double aPhotonMomentum); // Remove an entry from the table for a given key and x-value. void DumpTable(); private: ///////////////////////// // Private Data members ///////////////////////// G4std::map > MPT; typedef G4std::map >::iterator MPTiterator; }; #endif /* G4MaterialPropertiesTable_h */