/scratch0/jsnuveri/BDSIM/BDSIMgit/bdsim/include/BDSMagFieldSQL.hh

00001 /* BDSIM code.    Version 1.0
00002    Author: Grahame A. Blair, Royal Holloway, Univ. of London.
00003    Last modified 24.7.2002
00004    Copyright (c) 2002 by G.A.Blair.  ALL RIGHTS RESERVED. 
00005 */
00006 
00007 #ifndef BDSMagFieldSQL_h
00008 #define BDSMagFieldSQL_h 
00009 
00010 #include <fstream>
00011 #include <iostream>
00012 #include <list>
00013 #include <map>
00014 #include <vector>
00015 
00016 #include "G4Types.hh"
00017 #include "G4MagneticField.hh"
00018 
00019 #include "G4VPhysicalVolume.hh"
00020 #include "G4Navigator.hh"
00021 #include "G4TouchableHistory.hh"
00022 #include "G4TouchableHistoryHandle.hh"
00023 #include "BDSMagField.hh"
00024 
00025 class BDSMagFieldSQL : public BDSMagField
00026 {
00027 public:  // with description
00028 
00029 #if 0
00030   BDSMagFieldSQL(const G4String& FieldFile, G4double aMarkerLength,
00031                  std::list<G4String> Quadvol, std::list<G4double> aQuadBgrad,
00032                  std::list<G4String> Sextvol, std::list<G4double> aSextBgrad,
00033                  std::list<G4String> Octvol, std::list<G4double> aOctBgrad,
00034                  std::list<G4String> Fieldvol, std::list<G4ThreeVector> aUniformField);
00035 #endif
00036 
00037   BDSMagFieldSQL(const G4String& aFieldFile,
00038                  G4double aMarkerLength,
00039                  std::map<G4String, G4double> aQuadVolBgrad,
00040                  std::map<G4String, G4double> aSextVolBgrad,
00041                  std::map<G4String, G4double> aOctVolBgrad,
00042                  std::map<G4String, G4ThreeVector> aUniformFieldVolField,
00043                  G4bool aHasNPoleFields, G4bool aHasUniformField);
00044   
00045   virtual ~BDSMagFieldSQL();
00046   // Constructor and destructor. No actions.
00047 
00048 
00049   void  GetFieldValue( const G4double Point[4],G4double *Bfield ) const;
00050 
00051   G4bool GetHasNPoleFields();
00052   G4bool GetHasUniformField();
00053   G4bool GetHasFieldMap();
00054 
00055   void Prepare(G4VPhysicalVolume *referenceVolume);
00056 
00057 private:
00058   G4Navigator* itsIRNavigator;
00059   G4bool itsHasNPoleFields;
00060   G4bool itsHasUniformField;
00061   G4bool itsHasFieldMap;
00062 
00063   std::ofstream ofs;
00064   std::ifstream ifs;
00065 
00066   G4double itsMarkerLength;
00067   G4String FieldFile;
00068 
00069   // For Quad/Sext/Oct Fields
00070   std::list<G4double> itsQuadBgrad;
00071   std::list<G4String> itsQuadVol; 
00072   std::list<G4double> itsSextBgrad;
00073   std::list<G4String> itsSextVol; 
00074   std::list<G4double> itsOctBgrad;
00075   std::list<G4String> itsOctVol; 
00076 
00077   // For Uniform Fields
00078   std::list<G4ThreeVector> itsUniformField;
00079   std::list<G4String> itsFieldVol; 
00080 
00081   //Maps for fields
00082   std::map<G4String, G4ThreeVector> itsUniformFieldVolField;
00083   std::map<G4String, G4double> itsQuadVolBgrad;
00084   std::map<G4String, G4double> itsSextVolBgrad;
00085   std::map<G4String, G4double> itsOctVolBgrad;
00086 
00087   // For Solenoid FieldMaps
00088   std::vector<G4double> itsBz;
00089   std::vector<G4double> itsZ;
00090   std::vector<G4double> itsBr_over_r;
00091   std::vector<G4double> itsdBz_by_dz;
00092   double itsdz;
00093 };
00094 
00095 #endif

Generated on 28 Jun 2015 for BDSIM by  doxygen 1.4.7