CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/SimG4Core/GFlash/src/G4MiscLHEPBuilder_WP.cc

Go to the documentation of this file.
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