BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
BesMdcDigitizerMessenger.cc
Go to the documentation of this file.
1//---------------------------------------------------------------------------//
2// BOOST --- BESIII Object_Oriented Simulation Tool //
3//---------------------------------------------------------------------------//
4// Description: passing parameters to BesMdcDigitizer
5// Author: Yuan Ye
6// Created: May , 2005
7// Modified:
8// Comment:
9//---------------------------------------------------------------------------//
10
11#include "MdcSim/BesMdcDigitizerMessenger.hh"
12#include "G4UIcmdWithADouble.hh"
13#include "G4UIcmdWithAString.hh"
14#include "G4UIcmdWithAnInteger.hh"
15#include "G4UIcommand.hh"
16#include "G4UIdirectory.hh"
17#include "G4ios.hh"
18#include "MdcSim/BesMdcDigitizer.hh"
19#include <sstream>
20
22 : mdcDigitizer( pointer ) {
23 noiseDirectory = new G4UIdirectory( "/mdc/noise/" );
24 noiseDirectory->SetGuidance( "BESIII MDC noise control" );
25
26 // Noise On/Off command
27 noiseFlag = new G4UIcmdWithAnInteger( "/mdc/noise/flag", this );
28 noiseFlag->SetGuidance( "whether to add noise to MdcDigi." );
29 noiseFlag->SetParameterName( "MdcNoiseFlag", false );
30 noiseFlag->SetRange( "MdcNoiseFlag>=0" );
31 // noiseFlag->SetDefaultValue(0);
32
33 // Noise type command
34 noiseType = new G4UIcmdWithAnInteger( "/mdc/noise/type", this );
35 noiseType->SetGuidance( "select noise type." );
36 noiseType->SetParameterName( "MdcNoiseType", false );
37 noiseType->SetRange( "MdcNoiseType>=0" );
38 // noiseType->SetDefaultValue(3);
39
40 // Noise Level command
41 noiseLevel = new G4UIcmdWithADouble( "/mdc/noise/level", this );
42 noiseLevel->SetGuidance( "noise level" );
43 noiseLevel->SetParameterName( "MdcNoiseLevel", false );
44 noiseLevel->SetRange( "MdcNoiseLevel>=0." );
45 // noiseLevel->SetDefaultValue(0.1);
46
47 digiDirectory = new G4UIdirectory( "/mdc/digi/" );
48 digiDirectory->SetGuidance( "BESIII MDC digitizer control" );
49
50 // T channel smear On/Off command
51 smearFlag = new G4UIcmdWithAnInteger( "/mdc/digi/smearflag", this );
52 smearFlag->SetGuidance( "whether to do T smear to MdcDigi." );
53 smearFlag->SetParameterName( "MdcSmearFlag", true );
54 smearFlag->SetRange( "MdcSmearFlag>=0" );
55 smearFlag->SetDefaultValue( 1 );
56
57 // Space resolution command
58 mdcDRes = new G4UIcmdWithADouble( "/mdc/digi/spaceres", this );
59 mdcDRes->SetGuidance( "value of space resolution" );
60 mdcDRes->SetParameterName( "MdcDRes", false );
61 mdcDRes->SetRange( "MdcDRes>0" );
62
63 effDirectory = new G4UIdirectory( "/mdc/eff/" );
64 effDirectory->SetGuidance( "BESIII MDC wire efficiency control" );
65
66 // Eff. source command
67 effFlag = new G4UIcmdWithAnInteger( "/mdc/eff/flag", this );
68 effFlag->SetGuidance( "Get eff. from 0: CalSvc; 1: mac file" );
69 effFlag->SetParameterName( "MdcEffFlag", false );
70 effFlag->SetRange( "MdcEffFlag>=0" );
71 // effFlag->SetDefaultValue(0);
72
73 G4UIparameter* parameter;
74 G4bool omittable;
75
76 // Eff. command
77 layerEff = new G4UIcommand( "/mdc/eff/eff", this );
78 layerEff->SetGuidance( "Set eff. of MDC layers" );
79
80 parameter = new G4UIparameter( "layer", 'i', omittable = false );
81 parameter->SetGuidance( "Which layer to be modified" );
82 parameter->SetParameterRange( "layer >= -1 && layer < 43" );
83 parameter->SetDefaultValue( -1 );
84 layerEff->SetParameter( parameter );
85
86 parameter = new G4UIparameter( "eff", 'd', omittable = false );
87 parameter->SetGuidance( "Eff. value" );
88 parameter->SetParameterRange( "eff >= 0. && eff <=1." );
89 parameter->SetDefaultValue( 1. );
90 layerEff->SetParameter( parameter );
91}
92
94 delete noiseDirectory;
95 delete noiseFlag;
96 delete noiseType;
97 delete noiseLevel;
98 delete digiDirectory;
99 delete smearFlag;
100 delete mdcDRes;
101 delete effDirectory;
102 delete effFlag;
103 delete layerEff;
104}
105
106void BesMdcDigitizerMessenger::SetNewValue( G4UIcommand* command, G4String newValue ) {
107 if ( command == noiseFlag )
108 { mdcDigitizer->SetNoiseFlag( noiseFlag->GetNewIntValue( newValue ) ); }
109 else if ( command == noiseType )
110 { mdcDigitizer->SetNoiseType( noiseType->GetNewIntValue( newValue ) ); }
111 else if ( command == noiseLevel )
112 { mdcDigitizer->SetNoiseLevel( noiseLevel->GetNewDoubleValue( newValue ) ); }
113 else if ( command == smearFlag )
114 { mdcDigitizer->SetSmearFlag( smearFlag->GetNewIntValue( newValue ) ); }
115 else if ( command == mdcDRes )
116 { mdcDigitizer->SetMdcDRes( mdcDRes->GetNewDoubleValue( newValue ) ); }
117 else if ( command == effFlag )
118 { mdcDigitizer->SetEffFlag( effFlag->GetNewIntValue( newValue ) ); }
119 else if ( command == layerEff )
120 {
121 G4int layer;
122 G4double eff;
123 std::istringstream is( (char*)newValue.data() );
124 is >> layer >> eff;
125 mdcDigitizer->SetEff( layer, eff );
126 }
127}
void SetNewValue(G4UIcommand *command, G4String newValues)
BesMdcDigitizerMessenger(BesMdcDigitizer *)