From 29e49736ea5d43a6b29458b096c7a55a0a036051 Mon Sep 17 00:00:00 2001 From: Kamil Sedlak Date: Mon, 15 Mar 2010 13:19:31 +0000 Subject: [PATCH] 15.3.2010 Kamil Sedlak 1) Implemented a posibility to add "Models" to physics processes (this should be a first step towards the implementation of the Meyer scattering. The documentation has not been updated yet. 2) Minor change - implementation of a special volume for GPD --- src/musrDetectorConstruction.cc | 42 ++++++++++++++++++++++++++- src/musrPhysicsList.cc | 50 +++++++++++++++++++++++++++++++-- 2 files changed, 89 insertions(+), 3 deletions(-) diff --git a/src/musrDetectorConstruction.cc b/src/musrDetectorConstruction.cc index d4bc3f2..722f1ef 100644 --- a/src/musrDetectorConstruction.cc +++ b/src/musrDetectorConstruction.cc @@ -354,9 +354,49 @@ G4VPhysicalVolume* musrDetectorConstruction::Construct() { <<" orientation="< FindParticle(stringParticleName); // G4cout<<"particleDefinition of "<musrError(FATAL,eMessage,false); } @@ -357,6 +363,46 @@ void musrPhysicsList::ConstructEM() musrErrorMessage::GetInstance()->musrError(FATAL,eMessage,false); } } + else if (strcmp(tmpString2,"addModel")==0) { + G4ProcessTable* processTable = G4ProcessTable::GetProcessTable(); + // G4VProcess* myProc = processTable->FindProcess(charProcessName,particleDefinition); + // pManager + + G4int modelPriority; + char charModelName[100]=""; + sscanf(&line[0],"%*s %*s %*s %*s %*s %s %d",charModelName,&modelPriority); + G4String stringModelName = charModelName; + G4cout<<" Adding model "<musrError(FATAL,eMessage,false); + // } + if ((stringModelName=="G4WentzelVIModel")&&(stringProcessName=="G4MuMultipleScattering")) { + G4MuMultipleScattering* mmm = (G4MuMultipleScattering*) processTable->FindProcess("muMsc",particleDefinition); + mmm->AddEmModel(modelPriority, new G4WentzelVIModel()); + } + else if ((stringModelName=="G4UrbanMscModel90")&&(stringProcessName=="G4MuMultipleScattering")) { + G4MuMultipleScattering* mmm = (G4MuMultipleScattering*) processTable->FindProcess("muMsc",particleDefinition); + mmm->AddEmModel(modelPriority, new G4UrbanMscModel90()); + } + else if ((stringModelName=="G4UrbanMscModel92")&&(stringProcessName=="G4MuMultipleScattering")) { + G4MuMultipleScattering* mmm = (G4MuMultipleScattering*) processTable->FindProcess("muMsc",particleDefinition); + mmm->AddEmModel(modelPriority, new G4UrbanMscModel92()); + } + else if ((stringModelName=="G4UrbanMscModel93")&&(stringProcessName=="G4MuMultipleScattering")) { + G4MuMultipleScattering* mmm = (G4MuMultipleScattering*) processTable->FindProcess("muMsc",particleDefinition); + mmm->AddEmModel(modelPriority, new G4UrbanMscModel93()); + } + + else { + sprintf(eMessage,"musrPhysicsList: Model \"%s\" is not implemented for \"%s\" in musrPhysicsList.cc for addModel. It can be easily added.", + charModelName,charProcessName); + musrErrorMessage::GetInstance()->musrError(FATAL,eMessage,false); + } + + } + } else if (strcmp(tmpString2,"cutForGamma")==0) {