//§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§//* // LOW ENERGY MUON SPIN RELAXATION, ROTATION, RADIATION Geant4 SIMULATION // ID : LEMuSR.cc , v 1.0 // AUTHOR: Taofiq PARAISO // DATE : 2004-06-24 09:57 //§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§// // // & &&&&&&&&&& &&&&&&& &&&&&&&& // & & && && & && // & & & & & & && // & &&&&&&& & & &&&&&& &&&&&&&& // & & & && & & && // & & && & & && && & & // &&&&&&&&&& &&&&&&&&&& & &&&&& && &&&&&&& & && // & // & // & // & // //§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§// // G4 CLASSES #include "G4RunManager.hh" #include "G4UImanager.hh" #include "G4UIterminal.hh" #include "G4UItcsh.hh" #include "G4ios.hh" #include // LEMuSR CLASSES #include "LEMuSRDetectorConstruction.hh" #include "LEMuSRPhysicsList.hh" #include "PhysicsList.hh" #include "LEMuSRPrimaryGeneratorAction.hh" #include "LEMuSRRunAction.hh" #include "LEMuSREventAction.hh" #include "LEMuSRSteppingAction.hh" #include "LEMuSRStackingAction.hh" #include "LEMuSRTrackingAction.hh" // DUMMY PLANES STEPPING ACTIONS #include "AsymCheck.hh" #include "FieldCheck.hh" #include "TDCheck.hh" #include "FocalLengthTest.hh" // LEMuSR VISUALIZATION CLASS #include "LEMuSRVisManager.hh" // Interactive root xwindow #ifdef G4UI_USE_ROOT #include "G4UIRoot.hh" #endif int main(int argc,char** argv)//argc:: defines the user interface { // random numbers time_t myseed; time(&myseed); RanecuEngine *theRanGenerator = new RanecuEngine; theRanGenerator->setSeed(myseed); HepRandom::setTheEngine(theRanGenerator); // 1 The run manager construction G4RunManager* runManager = new G4RunManager; // 2 The three mandatory classes // 2.1 LEMuSR Initialization classes LEMuSRDetectorConstruction* lemuDetector = new LEMuSRDetectorConstruction(); LEMuSRPhysicsList* lemuPhysicsList = new LEMuSRPhysicsList(); // 2.2 LEMuSR Action class LEMuSRPrimaryGeneratorAction* lemuPGA = new LEMuSRPrimaryGeneratorAction(); // 2.3 Setting the mandatory Initialization classes runManager ->SetUserInitialization( lemuDetector ); runManager ->SetUserInitialization( lemuPhysicsList ); // 2.4 Setting the mandatory Action class runManager ->SetUserAction( lemuPGA ); // 3 The optionnal classes runManager ->SetUserAction( new LEMuSRRunAction()); //#ifndef LEMU_TEST_FOCAL_LENGTH runManager ->SetUserAction( new LEMuSREventAction());// scintillators, sensitive detectors //#endif // optionnal stepping action: enable one at once #if defined LEMU_TEST_ASYM runManager ->SetUserAction( new AsymCheck()); #elif defined LEMU_TEST_FIELD runManager ->SetUserAction( new FieldCheck()); #elif defined LEMU_TEST_CFOIL runManager ->SetUserAction( new TDCheck()); #elif defined LEMU_TEST_FOCAL_LENGTH runManager ->SetUserAction( new FocalLengthTest()); #else runManager ->SetUserAction( new LEMuSRSteppingAction());// fur debugging #endif // 4 The visualization manager construction and initialization // ! will be initialize only if the env variable G4VIS_USE=1 ! #ifdef G4VIS_USE LEMuSRVisManager* lemuVisManager = new LEMuSRVisManager; lemuVisManager -> Initialize(); #endif // 5 Initialize G4 kernel runManager -> Initialize(); // Configuration of the User Interface manager G4UImanager* UI = G4UImanager::GetUIpointer(); G4UIsession* session = 0; #if defined G4UI_USE_ROOT // G4UIRoot is a ROOT based GUI session = new G4UIRoot( argc, argv); #elif defined G4UI_USE_TCSH session = new G4UIterminal(new G4UItcsh); G4cout<<"\n G4UI_USE_TCSH! \n"<ApplyCommand("/control/execute visual.mac"); UI->ApplyCommand("/run/verbose 2"); // UI->ApplyCommand("/Detector/MagneticField on"); // UI->ApplyCommand("/run/beamOn 1"); #if defined LEMU_TEST_ASYM // UI->ApplyCommand("/Detector/ElectricField off"); UI->ApplyCommand("/Detector/MagneticField 50"); UI->ApplyCommand("/Detector/AsymCheck on"); UI->ApplyCommand("/lemuGun/gunPosition 0 0 0"); UI->ApplyCommand("/lemuGun/energy/defined 0"); G4cout<<"\n READY TO TEST ASYMETRY! "; #endif session->SessionStart(); // JOB TERMINATION delete session; #if defined G4VIS_USE delete lemuVisManager; #endif delete runManager; return 0; }