00001 //---------------------------------------------------------------------------// 00002 // BOOST --- BESIII Object_Oriented Simulation Tool // 00003 //---------------------------------------------------------------------------// 00004 //Description: passing parameters to event action 00005 //Author: Deng Ziyan 00006 //Created: Sep, 2004 00007 //Modified: 00008 //Comment: 00009 //---------------------------------------------------------------------------// 00010 00011 #include "BesRunActionMessenger.hh" 00012 #include "BesRunAction.hh" 00013 #include "G4UIdirectory.hh" 00014 #include "G4UIcommand.hh" 00015 #include "G4UIcmdWithAnInteger.hh" 00016 #include "G4UIcmdWithAString.hh" 00017 #include "G4ios.hh" 00018 00019 BesRunActionMessenger::BesRunActionMessenger(BesRunAction * runAction) 00020 :m_runAction(runAction) 00021 { 00022 m_runActionDirectory = new G4UIdirectory("/runAction/"); 00023 m_runActionDirectory->SetGuidance("BESIII run action"); 00024 00025 //MCTruth command 00026 m_MCTruthCmd = new G4UIcmdWithAnInteger("/runAction/MCTruth",this); 00027 m_MCTruthCmd->SetGuidance("whether to save MC Truth information."); 00028 m_MCTruthCmd->SetParameterName("MCTruthFlag",true); 00029 m_MCTruthCmd->SetRange("MCTruthFlag>=0"); 00030 m_MCTruthCmd->SetDefaultValue(0); 00031 00032 //ascii I/O command 00033 /*G4UIparameter* parameter; 00034 G4bool omittable; 00035 00036 m_asciiCmd = new G4UIcommand("/runAction/ascii",this); 00037 m_asciiCmd->SetGuidance("Ascii I/O in BES."); 00038 m_asciiCmd->SetGuidance("mdcTruFlag, tofTruFlag, emcTruFlag, mucTruFlag,mdcDigiFlag, tofDigiFlag, emcDigiFlag, mucDigiFlag, asciiFileName"); 00039 00040 parameter = new G4UIparameter("mdcTruFlag",'i',omittable = true); 00041 parameter->SetGuidance("whether output mdc Truth information to asciiFile"); 00042 parameter->SetParameterRange("mdcTruFlag >= 0"); 00043 parameter->SetDefaultValue(1); 00044 m_asciiCmd->SetParameter(parameter); 00045 00046 parameter = new G4UIparameter("tofTruFlag",'i',omittable = true); 00047 parameter->SetGuidance("whether output tof truth information to asciiFile"); 00048 parameter->SetParameterRange("tofTruFlag >= 0"); 00049 parameter->SetDefaultValue(1); 00050 m_asciiCmd->SetParameter(parameter); 00051 00052 00053 parameter = new G4UIparameter("emcTruFlag",'i',omittable = true); 00054 parameter->SetGuidance("whether output emc truth information to asciiFile"); 00055 parameter->SetParameterRange("emcTruFlag >= 0"); 00056 parameter->SetDefaultValue(1); 00057 m_asciiCmd->SetParameter(parameter); 00058 00059 parameter = new G4UIparameter("mucTruFlag",'i',omittable = true); 00060 parameter->SetGuidance("whether output muc truth information to asciiFile"); 00061 parameter->SetParameterRange("mucTruFlag >= 0"); 00062 parameter->SetDefaultValue(1); 00063 m_asciiCmd->SetParameter(parameter); 00064 00065 00066 parameter = new G4UIparameter("mdcDigiFlag",'i',omittable = true); 00067 parameter->SetGuidance("whether output mdc digi information to asciiFile"); 00068 parameter->SetParameterRange("mdcDigiFlag >= 0"); 00069 parameter->SetDefaultValue(1); 00070 m_asciiCmd->SetParameter(parameter); 00071 00072 parameter = new G4UIparameter("tofDigiFlag",'i',omittable = true); 00073 parameter->SetGuidance("whether output tof digi information to asciiFile"); 00074 parameter->SetParameterRange("tofDigiFlag >= 0"); 00075 parameter->SetDefaultValue(1); 00076 m_asciiCmd->SetParameter(parameter); 00077 00078 00079 parameter = new G4UIparameter("emcDigiFlag",'i',omittable = true); 00080 parameter->SetGuidance("whether output emc digi information to asciiFile"); 00081 parameter->SetParameterRange("emcDigiFlag >= 0"); 00082 parameter->SetDefaultValue(1); 00083 m_asciiCmd->SetParameter(parameter); 00084 00085 parameter = new G4UIparameter("mucDigiFlag",'i',omittable = true); 00086 parameter->SetGuidance("whether output muc digi information to asciiFile"); 00087 parameter->SetParameterRange("mucDigiFlag >= 0"); 00088 parameter->SetDefaultValue(1); 00089 m_asciiCmd->SetParameter(parameter); 00090 00091 parameter = new G4UIparameter("asciiFileName",'s',omittable = true); 00092 parameter->SetGuidance("specify the ascii file name"); 00093 parameter->SetDefaultValue("AsciiDmp_out.dat"); 00094 m_asciiCmd->SetParameter(parameter); 00095 */ 00096 00097 } 00098 00099 BesRunActionMessenger::~BesRunActionMessenger() 00100 { 00101 delete m_runActionDirectory; 00102 delete m_MCTruthCmd; 00103 delete m_asciiCmd; 00104 } 00105 00106 void BesRunActionMessenger::SetNewValue(G4UIcommand * command,G4String newValue) 00107 { 00108 if( command == m_MCTruthCmd) 00109 m_runAction->SetMCTruthFlag(m_MCTruthCmd->GetNewIntValue(newValue)); 00110 00111 /*else if( command == m_asciiCmd) 00112 { 00113 G4int mdcTruFlag, tofTruFlag, emcTruFlag, mucTruFlag; 00114 G4int mdcDigiFlag, tofDigiFlag, emcDigiFlag, mucDigiFlag; 00115 G4String fileName; 00116 00117 std::istrstream is ((char*)newValue.data()); 00118 is >> mdcTruFlag >> tofTruFlag >> emcTruFlag >> mucTruFlag 00119 >> mdcDigiFlag >> tofDigiFlag >> emcDigiFlag >> mucDigiFlag 00120 >> fileName; 00121 m_runAction->SetMdcTruFlag(mdcTruFlag); 00122 m_runAction->SetTofTruFlag(tofTruFlag); 00123 m_runAction->SetEmcTruFlag(emcTruFlag); 00124 m_runAction->SetMucTruFlag(mucTruFlag); 00125 00126 m_runAction->SetMdcDigiFlag(mdcDigiFlag); 00127 m_runAction->SetTofDigiFlag(tofDigiFlag); 00128 m_runAction->SetEmcDigiFlag(emcDigiFlag); 00129 m_runAction->SetMucDigiFlag(mucDigiFlag); 00130 00131 m_runAction->SetAsciiFile(fileName); 00132 }*/ 00133 } 00134 00135 00136 00137 00138 00139 00140 00141 00142 00143 00144 00145 00146 00147