//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//*
//             LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION 
// 
//  ID    :LEMuSRCryoField.hh , v 1.2
//  AUTHOR: Taofiq PARAISO
//  DATE  : 2006-01-19 15:17
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//
//
//  &           &&&&&&&&&&                            &&&&&&&         &&&&&&&&
//  &           &                                   &&      &&       &       &&
//  &           &                   &      &       &                &       &&
//  &           &&&&&&&            &      &         &&&&&&         &&&&&&&&  
//  &           &                 &      &&                &      &      &&
//  &           &                &&     &  &     &&      &&      &        &
//  &&&&&&&&&&  &&&&&&&&&&      &  &&&&&    &&    &&&&&&&       &        &&   
//                             &
//                            &
//                           &
//                         &  
//                               CRYOFIELD   
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$//

#include "G4ElectricField.hh"
#include"G4ThreeVector.hh"
#include"G4ios.hh"
/*!
 * This class is defines homogenous electric field in the cryostat region.
 * It is obsolete since a field map has been introduces for this region.
 * Should be removed in the future.
 */

class LEMuSRCryoField : public G4ElectricField
{
public: 

  /*! This constructor initializes the field for all the sample chamber
   */
  LEMuSRCryoField(G4ThreeVector FieldVector);
  /*! The constructor initializes the field within the boundary cylinder centered in mcpv_z, radius and length= zmax-zmin
   */

  LEMuSRCryoField(G4ThreeVector FieldVector,G4double radius,G4double zmin, G4double zmax,G4double mcpv_z);
  ~LEMuSRCryoField();

  G4bool   DoesFieldChangeEnergy() const { return true; }
  // Since an electric field can change track energy
  
  void GetFieldValue(const G4double pos[4], G4double *field) const;
  
  G4bool uniform;


  G4double R;

  
private:
  G4double flength, fpotential, fradius, fzmin, fzmax;


  G4ThreeVector position;
  G4ThreeVector EField;

};
