00001 // 00002 // ******************************************************************** 00003 // * License and Disclaimer * 00004 // * * 00005 // * The Geant4 software is copyright of the Copyright Holders of * 00006 // * the Geant4 Collaboration. It is provided under the terms and * 00007 // * conditions of the Geant4 Software License, included in the file * 00008 // * LICENSE and available at https://cern.ch/geant4/license . These * 00009 // * include a list of copyright holders. * 00010 // * * 00011 // * Neither the authors of this software system, nor their employing * 00012 // * institutes,nor the agencies providing financial support for this * 00013 // * work make any representation or warranty, express or implied, * 00014 // * regarding this software system or assume any liability for its * 00015 // * use. Please see the license in the file LICENSE and URL above * 00016 // * for the full disclaimer and the limitation of liability. * 00017 // * * 00018 // * This code implementation is the result of the scientific and * 00019 // * technical work of the GEANT4 collaboration. * 00020 // * By using, copying, modifying or distributing the software (or * 00021 // * any work based on the software) you agree to acknowledge its * 00022 // * use in resulting scientific publications, and indicate your * 00023 // * acceptance of all terms of the Geant4 Software license. * 00024 // ******************************************************************** 00025 // 00026 // GEANT4 tag $Name: V04-02-01 $ 00027 // 00028 //--------------------------------------------------------------------------- 00029 // 00030 // ClassName: G4MiscLHEPBuilder_WP 00031 // 00032 // Author: 2002 J.P. Wellisch 00033 // 00034 // Modified: 00035 // 16.11.2005 G.Folger: don't keep processes as data members, but new these 00036 // 13.06.2006 G.Folger: (re)move elastic scatterring 00037 // 00038 //---------------------------------------------------------------------------- 00039 // 00040 #include "SimG4Core/GFlash/interface/GflashHadronWrapperProcess.h" 00041 #include "SimG4Core/GFlash/interface/G4MiscLHEPBuilder_WP.h" 00042 00043 #include "G4ParticleDefinition.hh" 00044 #include "G4ParticleTable.hh" 00045 #include "G4ProcessManager.hh" 00046 00047 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00048 00049 G4MiscLHEPBuilder_WP::G4MiscLHEPBuilder_WP(): wasActivated(false) 00050 { 00051 theWrappedAntiProtonInelastic=new GflashHadronWrapperProcess("G4AntiProtonInelasticProcess"); 00052 } 00053 G4MiscLHEPBuilder_WP::~G4MiscLHEPBuilder_WP() 00054 { 00055 // delete theWrappedAntiProtonInelastic; 00056 } 00057 00058 void G4MiscLHEPBuilder_WP::Build() 00059 { 00060 G4ProcessManager * aProcMan = 0; 00061 wasActivated = true; 00062 00063 // anti-Proton 00064 aProcMan = G4AntiProton::AntiProton()->GetProcessManager(); 00065 theLEAntiProtonModel = new G4LEAntiProtonInelastic(); 00066 theHEAntiProtonModel = new G4HEAntiProtonInelastic(); 00067 theHEAntiProtonModel->SetMaxEnergy(100*TeV); 00068 theAntiProtonInelastic.RegisterMe(theLEAntiProtonModel); 00069 theAntiProtonInelastic.RegisterMe(theHEAntiProtonModel); 00070 // aProcMan->AddDiscreteProcess(&theAntiProtonInelastic); 00071 edm::LogInfo("SimG4CoreGFlash") << " Adding GflashHadronWrapperProcess (G4wrapperProcess) for G4AntiProtonInelasticProcess" ; 00072 theWrappedAntiProtonInelastic->RegisterProcess(&theAntiProtonInelastic); 00073 aProcMan->AddDiscreteProcess(theWrappedAntiProtonInelastic); 00074 00075 // AntiNeutron 00076 aProcMan = G4AntiNeutron::AntiNeutron()->GetProcessManager(); 00077 theLEAntiNeutronModel = new G4LEAntiNeutronInelastic(); 00078 theHEAntiNeutronModel = new G4HEAntiNeutronInelastic(); 00079 theHEAntiNeutronModel->SetMaxEnergy(100*TeV); 00080 theAntiNeutronInelastic.RegisterMe(theLEAntiNeutronModel); 00081 theAntiNeutronInelastic.RegisterMe(theHEAntiNeutronModel); 00082 aProcMan->AddDiscreteProcess(&theAntiNeutronInelastic); 00083 00084 // Lambda 00085 aProcMan = G4Lambda::Lambda()->GetProcessManager(); 00086 theLELambdaModel = new G4LELambdaInelastic(); 00087 theHELambdaModel = new G4HELambdaInelastic(); 00088 theHELambdaModel->SetMaxEnergy(100*TeV); 00089 theLambdaInelastic.RegisterMe(theLELambdaModel); 00090 theLambdaInelastic.RegisterMe(theHELambdaModel); 00091 aProcMan->AddDiscreteProcess(&theLambdaInelastic); 00092 00093 // AntiLambda 00094 aProcMan = G4AntiLambda::AntiLambda()->GetProcessManager(); 00095 theLEAntiLambdaModel = new G4LEAntiLambdaInelastic(); 00096 theHEAntiLambdaModel = new G4HEAntiLambdaInelastic(); 00097 theHEAntiLambdaModel->SetMaxEnergy(100*TeV); 00098 theAntiLambdaInelastic.RegisterMe(theLEAntiLambdaModel); 00099 theAntiLambdaInelastic.RegisterMe(theHEAntiLambdaModel); 00100 aProcMan->AddDiscreteProcess(&theAntiLambdaInelastic); 00101 00102 // SigmaMinus 00103 aProcMan = G4SigmaMinus::SigmaMinus()->GetProcessManager(); 00104 theLESigmaMinusModel = new G4LESigmaMinusInelastic(); 00105 theHESigmaMinusModel = new G4HESigmaMinusInelastic(); 00106 theHESigmaMinusModel->SetMaxEnergy(100*TeV); 00107 theSigmaMinusInelastic.RegisterMe(theLESigmaMinusModel); 00108 theSigmaMinusInelastic.RegisterMe(theHESigmaMinusModel); 00109 aProcMan->AddDiscreteProcess(&theSigmaMinusInelastic); 00110 00111 // anti-SigmaMinus 00112 aProcMan = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager(); 00113 theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic(); 00114 theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic(); 00115 theHEAntiSigmaMinusModel->SetMaxEnergy(100*TeV); 00116 theAntiSigmaMinusInelastic.RegisterMe(theLEAntiSigmaMinusModel); 00117 theAntiSigmaMinusInelastic.RegisterMe(theHEAntiSigmaMinusModel); 00118 aProcMan->AddDiscreteProcess(&theAntiSigmaMinusInelastic); 00119 00120 // SigmaPlus 00121 aProcMan = G4SigmaPlus::SigmaPlus()->GetProcessManager(); 00122 theLESigmaPlusModel = new G4LESigmaPlusInelastic(); 00123 theHESigmaPlusModel = new G4HESigmaPlusInelastic(); 00124 theHESigmaPlusModel->SetMaxEnergy(100*TeV); 00125 theSigmaPlusInelastic.RegisterMe(theLESigmaPlusModel); 00126 theSigmaPlusInelastic.RegisterMe(theHESigmaPlusModel); 00127 aProcMan->AddDiscreteProcess(&theSigmaPlusInelastic); 00128 00129 // anti-SigmaPlus 00130 aProcMan = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager(); 00131 theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic(); 00132 theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic(); 00133 theHEAntiSigmaPlusModel->SetMaxEnergy(100*TeV); 00134 theAntiSigmaPlusInelastic.RegisterMe(theLEAntiSigmaPlusModel); 00135 theAntiSigmaPlusInelastic.RegisterMe(theHEAntiSigmaPlusModel); 00136 aProcMan->AddDiscreteProcess(&theAntiSigmaPlusInelastic); 00137 00138 // XiMinus 00139 aProcMan = G4XiMinus::XiMinus()->GetProcessManager(); 00140 theLEXiMinusModel = new G4LEXiMinusInelastic(); 00141 theHEXiMinusModel = new G4HEXiMinusInelastic(); 00142 theHEXiMinusModel->SetMaxEnergy(100*TeV); 00143 theXiMinusInelastic.RegisterMe(theLEXiMinusModel); 00144 theXiMinusInelastic.RegisterMe(theHEXiMinusModel); 00145 aProcMan->AddDiscreteProcess(&theXiMinusInelastic); 00146 00147 // anti-XiMinus 00148 aProcMan = G4AntiXiMinus::AntiXiMinus()->GetProcessManager(); 00149 theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic(); 00150 theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic(); 00151 theHEAntiXiMinusModel->SetMaxEnergy(100*TeV); 00152 theAntiXiMinusInelastic.RegisterMe(theLEAntiXiMinusModel); 00153 theAntiXiMinusInelastic.RegisterMe(theHEAntiXiMinusModel); 00154 aProcMan->AddDiscreteProcess(&theAntiXiMinusInelastic); 00155 00156 // XiZero 00157 aProcMan = G4XiZero::XiZero()->GetProcessManager(); 00158 theLEXiZeroModel = new G4LEXiZeroInelastic(); 00159 theHEXiZeroModel = new G4HEXiZeroInelastic(); 00160 theHEXiZeroModel->SetMaxEnergy(100*TeV); 00161 theXiZeroInelastic.RegisterMe(theLEXiZeroModel); 00162 theXiZeroInelastic.RegisterMe(theHEXiZeroModel); 00163 aProcMan->AddDiscreteProcess(&theXiZeroInelastic); 00164 00165 // anti-XiZero 00166 aProcMan = G4AntiXiZero::AntiXiZero()->GetProcessManager(); 00167 theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic(); 00168 theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic(); 00169 theHEAntiXiZeroModel->SetMaxEnergy(100*TeV); 00170 theAntiXiZeroInelastic.RegisterMe(theLEAntiXiZeroModel); 00171 theAntiXiZeroInelastic.RegisterMe(theHEAntiXiZeroModel); 00172 aProcMan->AddDiscreteProcess(&theAntiXiZeroInelastic); 00173 00174 // OmegaMinus 00175 aProcMan = G4OmegaMinus::OmegaMinus()->GetProcessManager(); 00176 theLEOmegaMinusModel = new G4LEOmegaMinusInelastic(); 00177 theHEOmegaMinusModel = new G4HEOmegaMinusInelastic(); 00178 theHEOmegaMinusModel->SetMaxEnergy(100*TeV); 00179 theOmegaMinusInelastic.RegisterMe(theLEOmegaMinusModel); 00180 theOmegaMinusInelastic.RegisterMe(theHEOmegaMinusModel); 00181 aProcMan->AddDiscreteProcess(&theOmegaMinusInelastic); 00182 00183 // anti-OmegaMinus 00184 aProcMan = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager(); 00185 theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic(); 00186 theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic(); 00187 theHEAntiOmegaMinusModel->SetMaxEnergy(100*TeV); 00188 theAntiOmegaMinusInelastic.RegisterMe(theLEAntiOmegaMinusModel); 00189 theAntiOmegaMinusInelastic.RegisterMe(theHEAntiOmegaMinusModel); 00190 aProcMan->AddDiscreteProcess(&theAntiOmegaMinusInelastic); 00191 } 00192 00193 // 2002 by J.P. Wellisch