/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Simulation/BOOST/MdcSim/MdcSim-00-00-73/src/BesMdcDigitizerMessenger.cc

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------//
00002 //      BOOST --- BESIII Object_Oriented Simulation Tool                     //
00003 //---------------------------------------------------------------------------//
00004 //Description: passing parameters to BesMdcDigitizer
00005 //Author: Yuan Ye
00006 //Created: May , 2005
00007 //Modified:
00008 //Comment:
00009 //---------------------------------------------------------------------------//
00010 
00011 #include "BesMdcDigitizerMessenger.hh"
00012 #include "BesMdcDigitizer.hh"
00013 #include "G4UIdirectory.hh"
00014 #include "G4UIcommand.hh"
00015 #include "G4UIcmdWithAnInteger.hh"
00016 #include "G4UIcmdWithADouble.hh"
00017 #include "G4UIcmdWithAString.hh"
00018 #include "G4ios.hh"
00019 #include <sstream>
00020 
00021 BesMdcDigitizerMessenger::BesMdcDigitizerMessenger(BesMdcDigitizer * pointer)
00022 :mdcDigitizer(pointer)
00023 {
00024   noiseDirectory = new G4UIdirectory("/mdc/noise/");
00025   noiseDirectory->SetGuidance("BESIII MDC noise control");
00026   
00027   //Noise On/Off command
00028   noiseFlag =  new G4UIcmdWithAnInteger("/mdc/noise/flag",this);
00029   noiseFlag->SetGuidance("whether to add noise to MdcDigi.");
00030   noiseFlag->SetParameterName("MdcNoiseFlag",false);
00031   noiseFlag->SetRange("MdcNoiseFlag>=0");
00032   //  noiseFlag->SetDefaultValue(0);
00033 
00034   //Noise type command
00035   noiseType = new G4UIcmdWithAnInteger("/mdc/noise/type",this);
00036   noiseType->SetGuidance("select noise type.");
00037   noiseType->SetParameterName("MdcNoiseType",false);
00038   noiseType->SetRange("MdcNoiseType>=0");
00039   //  noiseType->SetDefaultValue(3);
00040 
00041   //Noise Level command
00042   noiseLevel = new G4UIcmdWithADouble("/mdc/noise/level",this);
00043   noiseLevel->SetGuidance("noise level");
00044   noiseLevel->SetParameterName("MdcNoiseLevel",false);
00045   noiseLevel->SetRange("MdcNoiseLevel>=0.");
00046   //  noiseLevel->SetDefaultValue(0.1);
00047 
00048   digiDirectory = new G4UIdirectory("/mdc/digi/");
00049   digiDirectory->SetGuidance("BESIII MDC digitizer control");
00050 
00051   //T channel smear On/Off command
00052   smearFlag =  new G4UIcmdWithAnInteger("/mdc/digi/smearflag",this);
00053   smearFlag->SetGuidance("whether to do T smear to MdcDigi.");
00054   smearFlag->SetParameterName("MdcSmearFlag",true);
00055   smearFlag->SetRange("MdcSmearFlag>=0");
00056   smearFlag->SetDefaultValue(1);
00057 
00058   //Space resolution command
00059   mdcDRes = new G4UIcmdWithADouble("/mdc/digi/spaceres",this);
00060   mdcDRes->SetGuidance("value of space resolution");
00061   mdcDRes->SetParameterName("MdcDRes",false);
00062   mdcDRes->SetRange("MdcDRes>0");
00063 
00064   effDirectory = new G4UIdirectory("/mdc/eff/");
00065   effDirectory->SetGuidance("BESIII MDC wire efficiency control");
00066 
00067   //Eff. source command
00068   effFlag =  new G4UIcmdWithAnInteger("/mdc/eff/flag",this);
00069   effFlag->SetGuidance("Get eff. from 0: CalSvc; 1: mac file");
00070   effFlag->SetParameterName("MdcEffFlag",false);
00071   effFlag->SetRange("MdcEffFlag>=0");
00072   //  effFlag->SetDefaultValue(0);
00073 
00074   G4UIparameter* parameter;
00075   G4bool omittable;
00076 
00077   //Eff. command
00078   layerEff = new G4UIcommand("/mdc/eff/eff",this);
00079   layerEff->SetGuidance("Set eff. of MDC layers");
00080 
00081   parameter = new G4UIparameter("layer",'i',omittable = false);
00082   parameter->SetGuidance("Which layer to be modified");
00083   parameter->SetParameterRange("layer >= -1 && layer < 43");
00084   parameter->SetDefaultValue(-1);
00085   layerEff->SetParameter(parameter);
00086 
00087   parameter = new G4UIparameter("eff",'d',omittable = false);
00088   parameter->SetGuidance("Eff. value");
00089   parameter->SetParameterRange("eff >= 0. && eff <=1.");
00090   parameter->SetDefaultValue(1.);
00091   layerEff->SetParameter(parameter);
00092 }
00093 
00094 BesMdcDigitizerMessenger::~BesMdcDigitizerMessenger()
00095 {
00096   delete noiseDirectory;
00097   delete noiseFlag;
00098   delete noiseType;
00099   delete noiseLevel;
00100   delete digiDirectory;
00101   delete smearFlag;
00102   delete mdcDRes;
00103   delete effDirectory;
00104   delete effFlag;
00105   delete layerEff;
00106 }
00107 
00108 void BesMdcDigitizerMessenger::SetNewValue(G4UIcommand * command,G4String newValue)
00109 {
00110   if( command == noiseFlag) {
00111     mdcDigitizer->SetNoiseFlag(noiseFlag->GetNewIntValue(newValue));
00112   }else if(command==noiseType){
00113     mdcDigitizer->SetNoiseType(noiseType->GetNewIntValue(newValue));
00114   }else if(command==noiseLevel){
00115     mdcDigitizer->SetNoiseLevel(noiseLevel->GetNewDoubleValue(newValue));  
00116   }else if(command==smearFlag){
00117     mdcDigitizer->SetSmearFlag(smearFlag->GetNewIntValue(newValue));
00118   }else if(command==mdcDRes){
00119     mdcDigitizer->SetMdcDRes(mdcDRes->GetNewDoubleValue(newValue));
00120   }else if(command==effFlag){
00121     mdcDigitizer->SetEffFlag(effFlag->GetNewIntValue(newValue));
00122   }else if(command==layerEff){
00123     G4int layer;
00124     G4double eff;
00125     std::istringstream is ((char*)newValue.data());
00126     is >> layer >> eff;
00127     mdcDigitizer->SetEff(layer, eff);
00128   }
00129 }
00130 
00131 
00132 
00133 
00134 
00135 
00136 
00137 
00138 
00139 
00140 
00141 
00142 
00143 

Generated on Tue Nov 29 23:14:27 2016 for BOSS_7.0.2 by  doxygen 1.4.7