Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /* 26 /* 27 * =========================================== 27 * ============================================================================ 28 * 28 * 29 * Filename: CexmcChargeExchangeReconst 29 * Filename: CexmcChargeExchangeReconstructorMessenger.cc 30 * 30 * 31 * Description: charge exchange reconstruc 31 * Description: charge exchange reconstructor messenger 32 * 32 * 33 * Version: 1.0 33 * Version: 1.0 34 * Created: 14.12.2009 17:53:33 34 * Created: 14.12.2009 17:53:33 35 * Revision: none 35 * Revision: none 36 * Compiler: gcc 36 * Compiler: gcc 37 * 37 * 38 * Author: Alexey Radkov (), 38 * Author: Alexey Radkov (), 39 * Company: PNPI 39 * Company: PNPI 40 * 40 * 41 * =========================================== 41 * ============================================================================ 42 */ 42 */ 43 43 44 #include <G4UIcmdWithABool.hh> 44 #include <G4UIcmdWithABool.hh> 45 #include <G4UIcmdWithAString.hh> << 46 #include <G4UIcmdWithADoubleAndUnit.hh> 45 #include <G4UIcmdWithADoubleAndUnit.hh> 47 #include "CexmcChargeExchangeReconstructorMess 46 #include "CexmcChargeExchangeReconstructorMessenger.hh" 48 #include "CexmcChargeExchangeReconstructor.hh" 47 #include "CexmcChargeExchangeReconstructor.hh" 49 #include "CexmcMessenger.hh" 48 #include "CexmcMessenger.hh" 50 49 51 50 52 CexmcChargeExchangeReconstructorMessenger:: 51 CexmcChargeExchangeReconstructorMessenger:: 53 CexmcChargeExchangeReconstructorMessen 52 CexmcChargeExchangeReconstructorMessenger( 54 CexmcChargeExchangeRec << 53 CexmcChargeExchangeReconstructor * reconstructor ) : 55 reconstructor( reconstructor_ ), u << 54 reconstructor( reconstructor ), useTableMass( NULL ), 56 useMassCut( NULL ), mCutOPCenter( 55 useMassCut( NULL ), mCutOPCenter( NULL ), mCutNOPCenter( NULL ), 57 mCutOPWidth( NULL ), mCutNOPWidth( 56 mCutOPWidth( NULL ), mCutNOPWidth( NULL ), mCutAngle( NULL ), 58 useAbsorbedEnergyCut( NULL ), aeCu 57 useAbsorbedEnergyCut( NULL ), aeCutCLCenter( NULL ), 59 aeCutCRCenter( NULL ), aeCutCLWidt 58 aeCutCRCenter( NULL ), aeCutCLWidth( NULL ), aeCutCRWidth( NULL ), 60 aeCutAngle( NULL ), setExpectedMom << 59 aeCutAngle( NULL ) 61 setExpectedMomentumAmpDiff( NULL ) << 62 { 60 { 63 useTableMass = new G4UIcmdWithABool( 61 useTableMass = new G4UIcmdWithABool( 64 ( CexmcMessenger::reconstructorDirName 62 ( CexmcMessenger::reconstructorDirName + "useTableMass" ).c_str(), 65 this ); 63 this ); 66 useTableMass->SetGuidance( "\n If true 64 useTableMass->SetGuidance( "\n If true then reconstructor will use " 67 "table mass of output\n particle wh 65 "table mass of output\n particle when building output particle " 68 "energy,\n otherwise reconstructed 66 "energy,\n otherwise reconstructed mass will be used" ); 69 useTableMass->SetParameterName( "UseTableM << 67 useTableMass->SetParameterName( "UseTableMass", false ); 70 useTableMass->SetDefaultValue( true ); << 68 useTableMass->SetDefaultValue( false ); 71 useTableMass->AvailableForStates( G4State_ 69 useTableMass->AvailableForStates( G4State_PreInit, G4State_Idle ); 72 70 73 useMassCut = new G4UIcmdWithABool( 71 useMassCut = new G4UIcmdWithABool( 74 ( CexmcMessenger::reconstructorDirName 72 ( CexmcMessenger::reconstructorDirName + "useMassCut" ).c_str(), this ); 75 useMassCut->SetGuidance( "\n Use ellipt 73 useMassCut->SetGuidance( "\n Use elliptical cut for masses of output " 76 "particle\n an 74 "particle\n and nucleus output particle" ); 77 useMassCut->SetParameterName( "UseMassCut" << 75 useMassCut->SetParameterName( "UseMassCut", false ); 78 useMassCut->SetDefaultValue( true ); << 76 useMassCut->SetDefaultValue( false ); 79 useMassCut->AvailableForStates( G4State_Pr 77 useMassCut->AvailableForStates( G4State_PreInit, G4State_Idle ); 80 78 81 mCutOPCenter = new G4UIcmdWithADoubleAndUn 79 mCutOPCenter = new G4UIcmdWithADoubleAndUnit( 82 ( CexmcMessenger::reconstructorDirName 80 ( CexmcMessenger::reconstructorDirName + "mCutOPCenter" ).c_str(), 83 this ); 81 this ); 84 mCutOPCenter->SetGuidance( "\n Center o << 82 mCutOPCenter->SetGuidance( "Center of the ellipse in output particle mass " 85 "mass coordinat << 83 "coordinate" ); 86 mCutOPCenter->SetParameterName( "MCutOPCen 84 mCutOPCenter->SetParameterName( "MCutOPCenter", false ); 87 mCutOPCenter->SetDefaultValue( reconstruct 85 mCutOPCenter->SetDefaultValue( reconstructor->GetProductionModelData(). 88 outputParti 86 outputParticle->GetPDGMass() ); 89 mCutOPCenter->SetUnitCandidates( "eV keV M << 90 mCutOPCenter->SetDefaultUnit( "MeV" ); 87 mCutOPCenter->SetDefaultUnit( "MeV" ); >> 88 mCutOPCenter->SetUnitCandidates( "eV keV MeV GeV" ); 91 mCutOPCenter->AvailableForStates( G4State_ 89 mCutOPCenter->AvailableForStates( G4State_PreInit, G4State_Idle ); 92 90 93 mCutNOPCenter = new G4UIcmdWithADoubleAndU 91 mCutNOPCenter = new G4UIcmdWithADoubleAndUnit( 94 ( CexmcMessenger::reconstructorDirName 92 ( CexmcMessenger::reconstructorDirName + "mCutNOPCenter" ).c_str(), 95 this ); 93 this ); 96 mCutNOPCenter->SetGuidance( "\n Center << 94 mCutNOPCenter->SetGuidance( "Center of the ellipse in nucleus output " 97 "particle mass 95 "particle mass\n coordinate" ); 98 mCutNOPCenter->SetParameterName( "MCutNOPC 96 mCutNOPCenter->SetParameterName( "MCutNOPCenter", false ); 99 mCutNOPCenter->SetDefaultValue( reconstruc 97 mCutNOPCenter->SetDefaultValue( reconstructor->GetProductionModelData(). 100 nucleusOut 98 nucleusOutputParticle->GetPDGMass() ); 101 mCutNOPCenter->SetUnitCandidates( "eV keV << 102 mCutNOPCenter->SetDefaultUnit( "MeV" ); 99 mCutNOPCenter->SetDefaultUnit( "MeV" ); >> 100 mCutNOPCenter->SetUnitCandidates( "eV keV MeV GeV" ); 103 mCutNOPCenter->AvailableForStates( G4State 101 mCutNOPCenter->AvailableForStates( G4State_PreInit, G4State_Idle ); 104 102 105 mCutOPWidth = new G4UIcmdWithADoubleAndUni 103 mCutOPWidth = new G4UIcmdWithADoubleAndUnit( 106 ( CexmcMessenger::reconstructorDirName 104 ( CexmcMessenger::reconstructorDirName + "mCutOPWidth" ).c_str(), 107 this ); 105 this ); 108 mCutOPWidth->SetGuidance( "\n Width of << 106 mCutOPWidth->SetGuidance( "Width of the ellipse in output particle mass " 109 "mass coordinat << 107 "coordinate" ); 110 mCutOPWidth->SetParameterName( "MCutOPWidt 108 mCutOPWidth->SetParameterName( "MCutOPWidth", false ); 111 mCutOPWidth->SetDefaultValue( reconstructo 109 mCutOPWidth->SetDefaultValue( reconstructor->GetProductionModelData(). 112 outputPartic 110 outputParticle->GetPDGMass() * 0.1 ); 113 mCutOPWidth->SetUnitCandidates( "eV keV Me << 114 mCutOPWidth->SetDefaultUnit( "MeV" ); 111 mCutOPWidth->SetDefaultUnit( "MeV" ); >> 112 mCutOPWidth->SetUnitCandidates( "eV keV MeV GeV" ); 115 mCutOPWidth->AvailableForStates( G4State_P 113 mCutOPWidth->AvailableForStates( G4State_PreInit, G4State_Idle ); 116 114 117 mCutNOPWidth = new G4UIcmdWithADoubleAndUn 115 mCutNOPWidth = new G4UIcmdWithADoubleAndUnit( 118 ( CexmcMessenger::reconstructorDirName 116 ( CexmcMessenger::reconstructorDirName + "mCutNOPWidth" ).c_str(), 119 this ); 117 this ); 120 mCutNOPWidth->SetGuidance( "\n Width of << 118 mCutNOPWidth->SetGuidance( "Width of the ellipse in nucleus output " 121 "particle mass\ << 119 "particle mass\n coordinate" ); 122 mCutNOPWidth->SetParameterName( "MCutNOPWi 120 mCutNOPWidth->SetParameterName( "MCutNOPWidth", false ); 123 mCutNOPWidth->SetDefaultValue( reconstruct 121 mCutNOPWidth->SetDefaultValue( reconstructor->GetProductionModelData(). 124 nucleusOutp 122 nucleusOutputParticle->GetPDGMass() * 0.1 ); 125 mCutNOPWidth->SetUnitCandidates( "eV keV M << 126 mCutNOPWidth->SetDefaultUnit( "MeV" ); 123 mCutNOPWidth->SetDefaultUnit( "MeV" ); >> 124 mCutNOPWidth->SetUnitCandidates( "eV keV MeV GeV" ); 127 mCutNOPWidth->AvailableForStates( G4State_ 125 mCutNOPWidth->AvailableForStates( G4State_PreInit, G4State_Idle ); 128 126 129 mCutAngle = new G4UIcmdWithADoubleAndUnit( 127 mCutAngle = new G4UIcmdWithADoubleAndUnit( 130 ( CexmcMessenger::reconstructorDirName 128 ( CexmcMessenger::reconstructorDirName + "mCutAngle" ).c_str(), 131 this ); 129 this ); 132 mCutAngle->SetGuidance( "\n Angle of th << 130 mCutAngle->SetGuidance( "Angle of the ellipse" ); 133 mCutAngle->SetParameterName( "MCutAngle", 131 mCutAngle->SetParameterName( "MCutAngle", false ); 134 mCutAngle->SetDefaultValue( 0 ); 132 mCutAngle->SetDefaultValue( 0 ); 135 mCutAngle->SetUnitCandidates( "deg rad" ); << 136 mCutAngle->SetDefaultUnit( "deg" ); 133 mCutAngle->SetDefaultUnit( "deg" ); >> 134 mCutAngle->SetUnitCandidates( "deg rad" ); 137 mCutAngle->AvailableForStates( G4State_Pre 135 mCutAngle->AvailableForStates( G4State_PreInit, G4State_Idle ); 138 136 139 useAbsorbedEnergyCut = new G4UIcmdWithABoo 137 useAbsorbedEnergyCut = new G4UIcmdWithABool( 140 ( CexmcMessenger::reconstructorDirName 138 ( CexmcMessenger::reconstructorDirName + "useAbsorbedEnergyCut" ). 141 c_str(), this ); 139 c_str(), this ); 142 useAbsorbedEnergyCut->SetGuidance( "\n << 140 useAbsorbedEnergyCut->SetGuidance( "Use elliptical cut for absorbed " 143 "energi << 141 "energies in\n calorimeters" ); 144 useAbsorbedEnergyCut->SetParameterName( "U << 142 useAbsorbedEnergyCut->SetParameterName( "UseAbsorbedEnergyCut", false ); 145 useAbsorbedEnergyCut->SetDefaultValue( tru << 143 useAbsorbedEnergyCut->SetDefaultValue( false ); 146 useAbsorbedEnergyCut->AvailableForStates( 144 useAbsorbedEnergyCut->AvailableForStates( G4State_PreInit, G4State_Idle ); 147 145 148 aeCutCLCenter = new G4UIcmdWithADoubleAndU 146 aeCutCLCenter = new G4UIcmdWithADoubleAndUnit( 149 ( CexmcMessenger::reconstructorDirName 147 ( CexmcMessenger::reconstructorDirName + "aeCutCLCenter" ).c_str(), 150 this ); 148 this ); 151 aeCutCLCenter->SetGuidance( "\n Center << 149 aeCutCLCenter->SetGuidance( "Center of the ellipse in left calorimeter" 152 "calorimeter\n << 150 "\n absorbed energy coordinate" ); 153 aeCutCLCenter->SetParameterName( "AECutCLC 151 aeCutCLCenter->SetParameterName( "AECutCLCenter", false ); 154 aeCutCLCenter->SetDefaultValue( 0 ); 152 aeCutCLCenter->SetDefaultValue( 0 ); 155 aeCutCLCenter->SetUnitCandidates( "eV keV << 156 aeCutCLCenter->SetDefaultUnit( "MeV" ); 153 aeCutCLCenter->SetDefaultUnit( "MeV" ); >> 154 aeCutCLCenter->SetUnitCandidates( "eV keV MeV GeV" ); 157 aeCutCLCenter->AvailableForStates( G4State 155 aeCutCLCenter->AvailableForStates( G4State_PreInit, G4State_Idle ); 158 156 159 aeCutCRCenter = new G4UIcmdWithADoubleAndU 157 aeCutCRCenter = new G4UIcmdWithADoubleAndUnit( 160 ( CexmcMessenger::reconstructorDirName 158 ( CexmcMessenger::reconstructorDirName + "aeCutCRCenter" ).c_str(), 161 this ); 159 this ); 162 aeCutCRCenter->SetGuidance( "\n Center << 160 aeCutCRCenter->SetGuidance( "Center of the ellipse in right calorimeter" 163 "calorimeter\n << 161 "\n absorbed energy coordinate" ); 164 aeCutCRCenter->SetParameterName( "AECutCRC 162 aeCutCRCenter->SetParameterName( "AECutCRCenter", false ); 165 aeCutCRCenter->SetDefaultValue( 0 ); 163 aeCutCRCenter->SetDefaultValue( 0 ); 166 aeCutCRCenter->SetUnitCandidates( "eV keV << 167 aeCutCRCenter->SetDefaultUnit( "MeV" ); 164 aeCutCRCenter->SetDefaultUnit( "MeV" ); >> 165 aeCutCRCenter->SetUnitCandidates( "eV keV MeV GeV" ); 168 aeCutCRCenter->AvailableForStates( G4State 166 aeCutCRCenter->AvailableForStates( G4State_PreInit, G4State_Idle ); 169 167 170 aeCutCLWidth = new G4UIcmdWithADoubleAndUn 168 aeCutCLWidth = new G4UIcmdWithADoubleAndUnit( 171 ( CexmcMessenger::reconstructorDirName 169 ( CexmcMessenger::reconstructorDirName + "aeCutCLWidth" ).c_str(), 172 this ); 170 this ); 173 aeCutCLWidth->SetGuidance( "\n Width of << 171 aeCutCLWidth->SetGuidance( "Width of the ellipse in left calorimeter" 174 "\n absorbed << 172 "\n absorbed energy coordinate" ); 175 aeCutCLWidth->SetParameterName( "AECutCLWi 173 aeCutCLWidth->SetParameterName( "AECutCLWidth", false ); 176 aeCutCLWidth->SetDefaultValue( 0 ); 174 aeCutCLWidth->SetDefaultValue( 0 ); 177 aeCutCLWidth->SetUnitCandidates( "eV keV M << 178 aeCutCLWidth->SetDefaultUnit( "MeV" ); 175 aeCutCLWidth->SetDefaultUnit( "MeV" ); >> 176 aeCutCLWidth->SetUnitCandidates( "eV keV MeV GeV" ); 179 aeCutCLWidth->AvailableForStates( G4State_ 177 aeCutCLWidth->AvailableForStates( G4State_PreInit, G4State_Idle ); 180 178 181 aeCutCRWidth = new G4UIcmdWithADoubleAndUn 179 aeCutCRWidth = new G4UIcmdWithADoubleAndUnit( 182 ( CexmcMessenger::reconstructorDirName 180 ( CexmcMessenger::reconstructorDirName + "aeCutCRWidth" ).c_str(), 183 this ); 181 this ); 184 aeCutCRWidth->SetGuidance( "\n Width of << 182 aeCutCRWidth->SetGuidance( "Width of the ellipse in right calorimeter" 185 "\n absorbed << 183 "\n absorbed energy coordinate" ); 186 aeCutCRWidth->SetParameterName( "AECutCRWi 184 aeCutCRWidth->SetParameterName( "AECutCRWidth", false ); 187 aeCutCRWidth->SetDefaultValue( 0 ); 185 aeCutCRWidth->SetDefaultValue( 0 ); 188 aeCutCRWidth->SetUnitCandidates( "eV keV M << 189 aeCutCRWidth->SetDefaultUnit( "MeV" ); 186 aeCutCRWidth->SetDefaultUnit( "MeV" ); >> 187 aeCutCRWidth->SetUnitCandidates( "eV keV MeV GeV" ); 190 aeCutCRWidth->AvailableForStates( G4State_ 188 aeCutCRWidth->AvailableForStates( G4State_PreInit, G4State_Idle ); 191 189 192 aeCutAngle = new G4UIcmdWithADoubleAndUnit 190 aeCutAngle = new G4UIcmdWithADoubleAndUnit( 193 ( CexmcMessenger::reconstructorDirName 191 ( CexmcMessenger::reconstructorDirName + "aeCutAngle" ).c_str(), 194 this ); 192 this ); 195 aeCutAngle->SetGuidance( "\n Angle of t << 193 aeCutAngle->SetGuidance( "Angle of the ellipse" ); 196 aeCutAngle->SetParameterName( "AECutAngle" 194 aeCutAngle->SetParameterName( "AECutAngle", false ); 197 aeCutAngle->SetDefaultValue( 0 ); 195 aeCutAngle->SetDefaultValue( 0 ); 198 aeCutAngle->SetUnitCandidates( "deg rad" ) << 199 aeCutAngle->SetDefaultUnit( "deg" ); 196 aeCutAngle->SetDefaultUnit( "deg" ); >> 197 aeCutAngle->SetUnitCandidates( "deg rad" ); 200 aeCutAngle->AvailableForStates( G4State_Pr 198 aeCutAngle->AvailableForStates( G4State_PreInit, G4State_Idle ); 201 << 202 setExpectedMomentumAmp = new G4UIcmdWithAD << 203 ( CexmcMessenger::reconstructorDirName << 204 this ); << 205 setExpectedMomentumAmp->SetGuidance( "\n << 206 "expected in the target;\n this val << 207 "momentum\n of the beam as far as p << 208 " to the place where it starts. Thi << 209 " in reconstruction procedure"); << 210 setExpectedMomentumAmp->SetParameterName( << 211 setExpectedMomentumAmp->SetRange( "RecMome << 212 setExpectedMomentumAmp->SetUnitCandidates( << 213 setExpectedMomentumAmp->SetDefaultUnit( "M << 214 setExpectedMomentumAmp->AvailableForStates << 215 << 216 setExpectedMomentumAmpDiff = new G4UIcmdWi << 217 ( CexmcMessenger::reconstructorDirName << 218 this ); << 219 setExpectedMomentumAmpDiff->SetGuidance( " << 220 "between momenta of the beam\n on i << 221 "parameter can\n be used to automat << 222 " previous parameter 'momentumAmp'" << 223 setExpectedMomentumAmpDiff->SetParameterNa << 224 setExpectedMomentumAmpDiff->SetDefaultValu << 225 setExpectedMomentumAmpDiff->SetUnitCandida << 226 setExpectedMomentumAmpDiff->SetDefaultUnit << 227 setExpectedMomentumAmpDiff->AvailableForSt << 228 << 229 << 230 setEDCollectionAlgorithm = new G4UIcmdWith << 231 ( CexmcMessenger::reconstructorDirName << 232 this ); << 233 setEDCollectionAlgorithm->SetGuidance( << 234 "\n Choose crystals to be selected << 235 " all - all,\n" << 236 " adjacent - crystal with maximum e << 237 " adjacent crystals" ); << 238 setEDCollectionAlgorithm->SetParameterName << 239 setEDCollectionAlgorithm->SetCandidates( " << 240 setEDCollectionAlgorithm->SetDefaultValue( << 241 setEDCollectionAlgorithm->AvailableForStat << 242 << 243 } 199 } 244 200 245 201 246 CexmcChargeExchangeReconstructorMessenger:: 202 CexmcChargeExchangeReconstructorMessenger:: 247 ~CexmcChar 203 ~CexmcChargeExchangeReconstructorMessenger() 248 { 204 { 249 delete useTableMass; 205 delete useTableMass; 250 delete useMassCut; 206 delete useMassCut; 251 delete mCutOPCenter; 207 delete mCutOPCenter; 252 delete mCutNOPCenter; 208 delete mCutNOPCenter; 253 delete mCutOPWidth; 209 delete mCutOPWidth; 254 delete mCutNOPWidth; 210 delete mCutNOPWidth; 255 delete mCutAngle; 211 delete mCutAngle; 256 delete useAbsorbedEnergyCut; 212 delete useAbsorbedEnergyCut; 257 delete aeCutCLCenter; 213 delete aeCutCLCenter; 258 delete aeCutCRCenter; 214 delete aeCutCRCenter; 259 delete aeCutCLWidth; 215 delete aeCutCLWidth; 260 delete aeCutCRWidth; 216 delete aeCutCRWidth; 261 delete aeCutAngle; 217 delete aeCutAngle; 262 delete setExpectedMomentumAmp; << 263 delete setExpectedMomentumAmpDiff; << 264 delete setEDCollectionAlgorithm; << 265 } 218 } 266 219 267 220 268 void CexmcChargeExchangeReconstructorMessenge 221 void CexmcChargeExchangeReconstructorMessenger::SetNewValue( 269 G4UIco 222 G4UIcommand * cmd, G4String value ) 270 { 223 { 271 do 224 do 272 { 225 { 273 if ( cmd == useTableMass ) 226 if ( cmd == useTableMass ) 274 { 227 { 275 reconstructor->UseTableMass( 228 reconstructor->UseTableMass( 276 G4UIcmdWithABool::GetN 229 G4UIcmdWithABool::GetNewBoolValue( value ) ); 277 break; 230 break; 278 } 231 } 279 if ( cmd == useMassCut ) 232 if ( cmd == useMassCut ) 280 { 233 { 281 reconstructor->UseMassCut( 234 reconstructor->UseMassCut( 282 G4UIcmdWithABool::GetN 235 G4UIcmdWithABool::GetNewBoolValue( value ) ); 283 break; 236 break; 284 } 237 } 285 if ( cmd == mCutOPCenter ) 238 if ( cmd == mCutOPCenter ) 286 { 239 { 287 reconstructor->SetMassCutOPCenter( 240 reconstructor->SetMassCutOPCenter( 288 G4UIcmdWithADoubleAndU 241 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 289 break; 242 break; 290 } 243 } 291 if ( cmd == mCutNOPCenter ) 244 if ( cmd == mCutNOPCenter ) 292 { 245 { 293 reconstructor->SetMassCutNOPCenter 246 reconstructor->SetMassCutNOPCenter( 294 G4UIcmdWithADoubleAndU 247 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 295 break; 248 break; 296 } 249 } 297 if ( cmd == mCutOPWidth ) 250 if ( cmd == mCutOPWidth ) 298 { 251 { 299 reconstructor->SetMassCutOPWidth( 252 reconstructor->SetMassCutOPWidth( 300 G4UIcmdWithADoubleAndU 253 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 301 break; 254 break; 302 } 255 } 303 if ( cmd == mCutNOPWidth ) 256 if ( cmd == mCutNOPWidth ) 304 { 257 { 305 reconstructor->SetMassCutNOPWidth( 258 reconstructor->SetMassCutNOPWidth( 306 G4UIcmdWithADoubleAndU 259 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 307 break; 260 break; 308 } 261 } 309 if ( cmd == mCutAngle ) 262 if ( cmd == mCutAngle ) 310 { 263 { 311 reconstructor->SetMassCutEllipseAn 264 reconstructor->SetMassCutEllipseAngle( 312 G4UIcmdWithADoubleAndU 265 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 313 break; 266 break; 314 } 267 } 315 if ( cmd == useAbsorbedEnergyCut ) 268 if ( cmd == useAbsorbedEnergyCut ) 316 { 269 { 317 reconstructor->UseAbsorbedEnergyCu 270 reconstructor->UseAbsorbedEnergyCut( 318 G4UIcmdWithABool::GetN 271 G4UIcmdWithABool::GetNewBoolValue( value ) ); 319 break; 272 break; 320 } 273 } 321 if ( cmd == aeCutCLCenter ) 274 if ( cmd == aeCutCLCenter ) 322 { 275 { 323 reconstructor->SetAbsorbedEnergyCu 276 reconstructor->SetAbsorbedEnergyCutCLCenter( 324 G4UIcmdWithADoubleAndU 277 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 325 break; 278 break; 326 } 279 } 327 if ( cmd == aeCutCRCenter ) 280 if ( cmd == aeCutCRCenter ) 328 { 281 { 329 reconstructor->SetAbsorbedEnergyCu 282 reconstructor->SetAbsorbedEnergyCutCRCenter( 330 G4UIcmdWithADoubleAndU 283 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 331 break; 284 break; 332 } 285 } 333 if ( cmd == aeCutCLWidth ) 286 if ( cmd == aeCutCLWidth ) 334 { 287 { 335 reconstructor->SetAbsorbedEnergyCu 288 reconstructor->SetAbsorbedEnergyCutCLWidth( 336 G4UIcmdWithADoubleAndU 289 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 337 break; 290 break; 338 } 291 } 339 if ( cmd == aeCutCRWidth ) 292 if ( cmd == aeCutCRWidth ) 340 { 293 { 341 reconstructor->SetAbsorbedEnergyCu 294 reconstructor->SetAbsorbedEnergyCutCRWidth( 342 G4UIcmdWithADoubleAndU 295 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 343 break; 296 break; 344 } 297 } 345 if ( cmd == aeCutAngle ) 298 if ( cmd == aeCutAngle ) 346 { 299 { 347 reconstructor->SetAbsorbedEnergyCu 300 reconstructor->SetAbsorbedEnergyCutEllipseAngle( 348 G4UIcmdWithADoubleAndU 301 G4UIcmdWithADoubleAndUnit::GetNewDoubleValue( value ) ); 349 break; << 350 } << 351 if ( cmd == setExpectedMomentumAmp ) << 352 { << 353 reconstructor->SetExpectedMomentum << 354 G4UIcmdWithADoubleAndU << 355 break; << 356 } << 357 if ( cmd == setExpectedMomentumAmpDiff << 358 { << 359 reconstructor->SetExpectedMomentum << 360 G4UIcmdWithADoubleAndU << 361 break; << 362 } << 363 if ( cmd == setEDCollectionAlgorithm ) << 364 { << 365 CexmcEDCollectionAlgoritm << 366 edCollectionAlgorithm( << 367 do << 368 { << 369 if ( value == "adjacent" ) << 370 { << 371 edCollectionAlgorithm = Ce << 372 break; << 373 } << 374 } while ( false ); << 375 reconstructor->SetEDCollectionAlgo << 376 break; 302 break; 377 } 303 } 378 } while ( false ); 304 } while ( false ); 379 } 305 } 380 306 381 307