#ifndef LEMuSRDetectorMessenger_h
#define LEMuSRDetectorMessenger_h 1


#include "G4ios.hh"
#include "globals.hh"
#include "G4UImessenger.hh"
#include "LEMuSRDetectorConstruction.hh"
#include "LEMuSRElectricField.hh"
#include "G4RunManager.hh"

#include "G4UIdirectory.hh"
#include "G4UIcmdWith3VectorAndUnit.hh"
#include "G4UIcmdWith3Vector.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithADouble.hh"

#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "G4UIcommand.hh"
#include "G4UImanager.hh"
#include "G4UIterminal.hh"
#include "G4UItcsh.hh"

class G4UIcommand;
class G4UIdirectory;
class G4UIcmdWithADouble;
class G4UIcmdWithADoubleAndUnit;
class G4UIcmdWith3VectorAndUnit;
class G4UIcmdWith3Vector;
class G4UIcmdWithAnInteger;
class G4UIcmdWithAString;
class G4UIcmdWithoutParameter;
class LEMuSRDetectorConstruction; //modif

class LEMuSRDetectorMessenger : public G4UImessenger  {
public:
  LEMuSRDetectorMessenger(LEMuSRDetectorConstruction*);
  ~LEMuSRDetectorMessenger();
  
  
public:
  void SetNewValue(G4UIcommand* command, G4String newvalue);  
  
 
 //arguments
private: 
  LEMuSRDetectorConstruction* theDetector;
  
  // commands	
private: 
  
  G4UIdirectory*  DetMode;
  
  //commands with STRING
  G4UIcmdWithAString* SetDetMode ;
  G4UIcmdWithAString* SetElField ;
  G4UIcmdWithAString* SetGrid ;
  G4UIcmdWithAString* SetGuards ;
  G4UIcmdWithAString* SetDetVisualization ;  
  G4UIcmdWithAString* SetSAHmaterial ;  

  G4UIcmdWithAString* SetAsymCheck ;
  G4UIcmdWithAString* SetFieldCheck ;

  //commands with DOUBLE
  G4UIcmdWithADouble* SetThirdLensPotential, *SetCFthk ;
  G4UIcmdWithADouble* SetFieldStepLim ;
  G4UIcmdWithADouble* SetMagField ;
  
  G4UIcmdWithADouble* SetCryoPotential;


  //coomand with 3vector
  G4UIcmdWith3Vector* SetRAPotential;



  G4VPhysicalVolume* newDetector;


};

#endif				
