CMS 3D CMS Logo

VisG4ExamplePhysics Class Reference

#include <VisExamples/VisG4ExN02/src/VisG4ExamplePhysics.h>

List of all members.

Public Member Functions

 VisG4ExamplePhysics (void)

Protected Member Functions

virtual void ConstructParticle (void)
virtual void ConstructProcess (void)
virtual void SetCuts (void)


Detailed Description

Definition at line 16 of file VisG4ExamplePhysics.h.


Constructor & Destructor Documentation

VisG4ExamplePhysics::VisG4ExamplePhysics ( void   ) 

Definition at line 40 of file VisG4ExamplePhysics.cc.

00041 { defaultCutValue = 2.0*mm; SetVerboseLevel (1); }


Member Function Documentation

void VisG4ExamplePhysics::ConstructParticle ( void   )  [protected, virtual]

Definition at line 44 of file VisG4ExamplePhysics.cc.

00045 {
00046     // pseudo-particles
00047     G4Geantino::GeantinoDefinition();
00048     G4ChargedGeantino::ChargedGeantinoDefinition();
00049 
00050     // gamma
00051     G4Gamma::GammaDefinition();
00052     G4Geantino::GeantinoDefinition ();
00053 
00054     // leptons
00055     //  e+/-
00056     G4Electron::ElectronDefinition();
00057     G4Positron::PositronDefinition();
00058 
00059     // mu+/-
00060     G4MuonPlus::MuonPlusDefinition();
00061     G4MuonMinus::MuonMinusDefinition();
00062 
00063     // nu_e
00064     G4NeutrinoE::NeutrinoEDefinition();
00065     G4AntiNeutrinoE::AntiNeutrinoEDefinition();
00066 
00067     // nu_mu
00068     G4NeutrinoMu::NeutrinoMuDefinition();
00069     G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
00070 
00071     //  mesons
00072     //    light mesons
00073     G4PionPlus::PionPlusDefinition();
00074     G4PionMinus::PionMinusDefinition();
00075     G4PionZero::PionZeroDefinition();
00076     G4Eta::EtaDefinition();
00077     G4EtaPrime::EtaPrimeDefinition();
00078     G4KaonPlus::KaonPlusDefinition();
00079     G4KaonMinus::KaonMinusDefinition();
00080     G4KaonZero::KaonZeroDefinition();
00081     G4AntiKaonZero::AntiKaonZeroDefinition();
00082     G4KaonZeroLong::KaonZeroLongDefinition();
00083     G4KaonZeroShort::KaonZeroShortDefinition();
00084 
00085     //  barions
00086     G4Proton::ProtonDefinition();
00087     G4AntiProton::AntiProtonDefinition();
00088 
00089     G4Neutron::NeutronDefinition();
00090     G4AntiNeutron::AntiNeutronDefinition();
00091 }

void VisG4ExamplePhysics::ConstructProcess ( void   )  [protected, virtual]

Definition at line 94 of file VisG4ExamplePhysics.cc.

References name, and p.

00095 {
00096     AddTransportation ();
00097 
00099     theParticleIterator->reset();
00100     while ((*theParticleIterator) ())
00101     {
00102         G4ParticleDefinition    *p = theParticleIterator->value ();
00103         G4ProcessManager        *pm = p->GetProcessManager ();
00104         G4String                name = p->GetParticleName ();
00105      
00106         if (name == "gamma")
00107         {
00108             pm->AddDiscreteProcess (new G4GammaConversion ());
00109             pm->AddDiscreteProcess (new G4ComptonScattering ());      
00110             pm->AddDiscreteProcess (new G4PhotoElectricEffect ());
00111         }
00112         else if (name == "e-")
00113         {
00114             G4VProcess *multipleScattering      = new G4MultipleScattering ();
00115             G4VProcess *ionisation              = new G4eIonisation ();
00116             G4VProcess *bremsstrahlung          = new G4eBremsstrahlung ();
00117 
00118             pm->AddProcess (multipleScattering);
00119             pm->AddProcess (ionisation);
00120             pm->AddProcess (bremsstrahlung);
00121 
00122             pm->SetProcessOrdering (multipleScattering, idxAlongStep,   1);
00123             pm->SetProcessOrdering (ionisation,         idxAlongStep,   2);
00124 
00125             pm->SetProcessOrdering (multipleScattering, idxPostStep, 1);
00126             pm->SetProcessOrdering (ionisation,         idxPostStep, 2);
00127             pm->SetProcessOrdering (bremsstrahlung,     idxPostStep, 3);
00128         }
00129         else if (name == "e+")
00130         {
00131             G4VProcess *multipleScattering      = new G4MultipleScattering ();
00132             G4VProcess *ionisation              = new G4eIonisation ();
00133             G4VProcess *bremsstrahlung          = new G4eBremsstrahlung ();
00134             G4VProcess *annihilation            = new G4eplusAnnihilation ();
00135 
00136             pm->AddProcess (multipleScattering);
00137             pm->AddProcess (ionisation);
00138             pm->AddProcess (bremsstrahlung);
00139             pm->AddProcess (annihilation);
00140 
00141             pm->SetProcessOrderingToFirst (annihilation, idxAtRest);
00142 
00143             pm->SetProcessOrdering (multipleScattering, idxAlongStep, 1);
00144             pm->SetProcessOrdering (ionisation,         idxAlongStep, 2);
00145 
00146             pm->SetProcessOrdering (multipleScattering, idxPostStep, 1);
00147             pm->SetProcessOrdering (ionisation,         idxPostStep, 2);
00148             pm->SetProcessOrdering (bremsstrahlung,     idxPostStep, 3);
00149             pm->SetProcessOrdering (annihilation,       idxPostStep, 4);
00150         }
00151         else if (name == "mu+" || name == "mu-")
00152         {
00153             G4VProcess *multipleScattering      = new G4MultipleScattering ();
00154             G4VProcess *bremsstrahlung          = new G4MuBremsstrahlung ();
00155             G4VProcess *pairProduction          = new G4MuPairProduction ();
00156             G4VProcess *ionisation              = new G4MuIonisation ();
00157 
00158             pm->AddProcess (ionisation);
00159             pm->AddProcess (multipleScattering);
00160             pm->AddProcess (bremsstrahlung);
00161             pm->AddProcess (pairProduction);
00162 
00163             pm->SetProcessOrdering (multipleScattering, idxAlongStep,1);
00164             pm->SetProcessOrdering (ionisation,         idxAlongStep,2);
00165 
00166             pm->SetProcessOrdering (multipleScattering, idxPostStep,1);
00167             pm->SetProcessOrdering (ionisation,         idxPostStep,2);
00168             pm->SetProcessOrdering (bremsstrahlung,     idxPostStep,3);
00169             pm->SetProcessOrdering (pairProduction,     idxPostStep,4);
00170         }
00171         else if (! p->IsShortLived ()
00172                  && p->GetPDGCharge () != 0.0
00173                  && p->GetParticleName () != "chargedgeantino")
00174         {
00175             // all others charged particles except geantino
00176             G4VProcess *multipleScattering      = new G4MultipleScattering ();
00177             G4VProcess *ionisation              = new G4hIonisation ();     
00178 
00179             pm->AddProcess (ionisation);
00180             pm->AddProcess (multipleScattering);    
00181 
00182             pm->SetProcessOrdering (multipleScattering, idxAlongStep,1);
00183             pm->SetProcessOrdering (ionisation,         idxAlongStep,2);
00184 
00185             pm->SetProcessOrdering (multipleScattering, idxPostStep,1);
00186             pm->SetProcessOrdering (ionisation,         idxPostStep,2);
00187         }
00188     }
00189 
00191     // Add Decay Process
00192     theParticleIterator->reset ();
00193     G4Decay *decay = new G4Decay ();
00194     while ((*theParticleIterator) ())
00195     {
00196         G4ParticleDefinition    *p = theParticleIterator->value ();
00197         G4ProcessManager        *pm = p->GetProcessManager ();
00198 
00199         if (decay->IsApplicable (*p))
00200         {
00201             pm->AddProcess (decay);
00202             pm->SetProcessOrdering (decay, idxPostStep);
00203             pm->SetProcessOrdering (decay, idxAtRest);
00204         }
00205     }
00206 }

void VisG4ExamplePhysics::SetCuts ( void   )  [protected, virtual]

Definition at line 209 of file VisG4ExamplePhysics.cc.

00210 { SetCutsWithDefault (); }


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:35:24 2009 for CMSSW by  doxygen 1.5.4