Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:58:58

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 // G4ProcessManager inline function members implementation
0027 //
0028 // - 02.12.1995, G.Cosmo - First implementation, based on object model
0029 // --------------------------------------------------------------------
0030 
0031 inline  
0032 void G4ProcessManager::SetParticleType(const G4ParticleDefinition* aParticle)
0033 {
0034   theParticleType = aParticle;
0035 }
0036 
0037 inline 
0038 G4ProcessVector* G4ProcessManager::GetProcessList() const
0039 {
0040   return theProcessList;
0041 }
0042 
0043 inline
0044 G4int G4ProcessManager::GetProcessListLength() const
0045 {
0046   return numberOfProcesses;
0047 }
0048 
0049 inline 
0050 G4int G4ProcessManager::GetProcessIndex(G4VProcess* aProcess) const
0051 {
0052   G4int idx = G4int(theProcessList->index(aProcess));
0053   if (idx>=numberOfProcesses) idx = -1;
0054   return idx;
0055 }
0056 
0057 inline 
0058 G4int G4ProcessManager::GetProcessVectorId(G4ProcessVectorDoItIndex idx,
0059                                            G4ProcessVectorTypeIndex typ) const
0060 {
0061   if ( idx == idxAtRest )
0062   {
0063     if (typ == typeGPIL) { return 0; }
0064     else                 { return 1; }
0065   }
0066   else if ( idx == idxAlongStep )
0067   {
0068     if (typ == typeGPIL) { return 2; }
0069     else                 { return 3; }
0070   }
0071   else if ( idx == idxPostStep )
0072   {
0073     if (typ == typeGPIL) { return 4; }
0074     else                 { return 5; }
0075   }
0076   else
0077   {
0078     return -1;
0079   }
0080 }
0081  
0082 inline  
0083 G4ProcessVector* G4ProcessManager::GetProcessVector(
0084                                        G4ProcessVectorDoItIndex idx,  
0085                                        G4ProcessVectorTypeIndex typ
0086                                       ) const
0087 {
0088   G4int ivec = GetProcessVectorId(idx, typ);
0089   if ( ivec >=0 )
0090   {
0091     return theProcVector[ivec];
0092   }
0093   else
0094   {
0095     return nullptr;
0096   }
0097 }
0098 
0099 inline 
0100 G4ProcessVector*
0101 G4ProcessManager::GetAtRestProcessVector(G4ProcessVectorTypeIndex typ) const
0102 {
0103   if (typ == typeGPIL) { return theProcVector[0]; }
0104   else                 { return theProcVector[1]; }
0105 }
0106 
0107 inline 
0108 G4ProcessVector*
0109 G4ProcessManager::GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ) const
0110 {
0111   if (typ == typeGPIL) { return theProcVector[2]; }
0112   else                 { return theProcVector[3]; }
0113 }
0114 
0115 inline 
0116 G4ProcessVector*
0117 G4ProcessManager::GetPostStepProcessVector(G4ProcessVectorTypeIndex typ) const
0118 {
0119   if (typ == typeGPIL) { return theProcVector[4]; }
0120   else                 { return theProcVector[5]; }
0121 }
0122 
0123 inline
0124 G4int G4ProcessManager::GetAtRestIndex(
0125                           G4VProcess* aProcess,
0126                           G4ProcessVectorTypeIndex typ 
0127                           ) const
0128 {
0129   return GetProcessVectorIndex(aProcess, idxAtRest, typ);
0130 }
0131 
0132 inline 
0133 G4int G4ProcessManager::GetAlongStepIndex(
0134                           G4VProcess* aProcess,
0135                           G4ProcessVectorTypeIndex typ 
0136                           ) const
0137 {
0138   return GetProcessVectorIndex(aProcess, idxAlongStep, typ);
0139 }
0140 
0141 inline
0142 G4int G4ProcessManager::GetPostStepIndex(
0143                           G4VProcess* aProcess,
0144                           G4ProcessVectorTypeIndex typ 
0145                         ) const
0146 {
0147   return GetProcessVectorIndex(aProcess, idxPostStep, typ);
0148 }
0149 
0150 inline 
0151 G4int G4ProcessManager::AddRestProcess(G4VProcess* aProcess, G4int ord)
0152 {
0153   return AddProcess(aProcess, ord, ordInActive, ordInActive);
0154 }
0155 
0156 inline 
0157 G4int G4ProcessManager::AddContinuousProcess(G4VProcess* aProcess, G4int ord)
0158 {
0159   return AddProcess(aProcess, ordInActive, ord, ordInActive);
0160 }
0161 
0162 inline 
0163 G4int G4ProcessManager::AddDiscreteProcess(G4VProcess* aProcess, G4int ord)
0164 {
0165   return AddProcess(aProcess, ordInActive, ordInActive, ord);
0166 }
0167 
0168 inline 
0169 G4ParticleDefinition* G4ProcessManager::GetParticleType() const
0170 { 
0171   return (G4ParticleDefinition*)theParticleType; 
0172 }
0173 
0174 inline 
0175 void G4ProcessManager::SetVerboseLevel(G4int value)
0176 {
0177   verboseLevel = value;
0178 }
0179 
0180 inline  
0181 G4int G4ProcessManager::GetVerboseLevel() const
0182 {
0183   return verboseLevel;
0184 }