Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // 28 // Trajectory filter model factories creating filters 29 // and associated messengers. 30 // 31 // Jane Tinslay March 2006 32 // 33 #include "G4AttributeFilterT.hh" 34 #include "G4ModelCommandsT.hh" 35 #include "G4TrajectoryFilterFactories.hh" 36 #include "G4TrajectoryChargeFilter.hh" 37 #include "G4TrajectoryParticleFilter.hh" 38 #include "G4TrajectoryOriginVolumeFilter.hh" 39 #include "G4TrajectoryEncounteredVolumeFilter.hh" 40 41 // Attribute filter 42 G4TrajectoryAttributeFilterFactory::G4TrajectoryAttributeFilterFactory() 43 :G4VModelFactory< G4VFilter<G4VTrajectory> >("attributeFilter") 44 {} 45 46 G4TrajectoryAttributeFilterFactory::~G4TrajectoryAttributeFilterFactory() {} 47 48 G4TrajectoryAttributeFilterFactory::ModelAndMessengers 49 G4TrajectoryAttributeFilterFactory::Create(const G4String& placement, const G4String& name) 50 { 51 typedef G4AttributeFilterT<G4VTrajectory> G4TrajectoryAttributeFilter; 52 // Create model 53 G4TrajectoryAttributeFilter* model = new G4TrajectoryAttributeFilter(name); 54 55 // Create associated messengers 56 Messengers messengers; 57 58 messengers.push_back(new G4ModelCmdSetString<G4TrajectoryAttributeFilter>(model, placement, "setAttribute")); 59 messengers.push_back(new G4ModelCmdInvert<G4TrajectoryAttributeFilter>(model, placement)); 60 messengers.push_back(new G4ModelCmdActive<G4TrajectoryAttributeFilter>(model, placement)); 61 messengers.push_back(new G4ModelCmdVerbose<G4TrajectoryAttributeFilter>(model, placement)); 62 messengers.push_back(new G4ModelCmdReset<G4TrajectoryAttributeFilter>(model, placement)); 63 messengers.push_back(new G4ModelCmdAddInterval<G4TrajectoryAttributeFilter>(model, placement, "addInterval")); 64 messengers.push_back(new G4ModelCmdAddValue<G4TrajectoryAttributeFilter>(model, placement, "addValue")); 65 66 return ModelAndMessengers(model, messengers); 67 } 68 69 // Charge filter 70 G4TrajectoryChargeFilterFactory::G4TrajectoryChargeFilterFactory() 71 :G4VModelFactory< G4VFilter<G4VTrajectory> >("chargeFilter") 72 {} 73 74 G4TrajectoryChargeFilterFactory::~G4TrajectoryChargeFilterFactory() {} 75 76 G4TrajectoryChargeFilterFactory::ModelAndMessengers 77 G4TrajectoryChargeFilterFactory::Create(const G4String& placement, const G4String& name) 78 { 79 // Create model 80 G4TrajectoryChargeFilter* model = new G4TrajectoryChargeFilter(name); 81 82 // Create associated messengers 83 Messengers messengers; 84 85 messengers.push_back(new G4ModelCmdAddString<G4TrajectoryChargeFilter>(model, placement)); 86 messengers.push_back(new G4ModelCmdInvert<G4TrajectoryChargeFilter>(model, placement)); 87 messengers.push_back(new G4ModelCmdActive<G4TrajectoryChargeFilter>(model, placement)); 88 messengers.push_back(new G4ModelCmdVerbose<G4TrajectoryChargeFilter>(model, placement)); 89 messengers.push_back(new G4ModelCmdReset<G4TrajectoryChargeFilter>(model, placement)); 90 91 return ModelAndMessengers(model, messengers); 92 } 93 94 // Particle type filter 95 G4TrajectoryParticleFilterFactory::G4TrajectoryParticleFilterFactory() 96 :G4VModelFactory< G4VFilter<G4VTrajectory> >("particleFilter") 97 {} 98 99 G4TrajectoryParticleFilterFactory::~G4TrajectoryParticleFilterFactory() {} 100 101 G4TrajectoryParticleFilterFactory::ModelAndMessengers 102 G4TrajectoryParticleFilterFactory::Create(const G4String& placement, const G4String& name) 103 { 104 // Create model 105 G4TrajectoryParticleFilter* model = new G4TrajectoryParticleFilter(name); 106 107 // Create associated messengers 108 Messengers messengers; 109 110 messengers.push_back(new G4ModelCmdAddString<G4TrajectoryParticleFilter>(model, placement)); 111 messengers.push_back(new G4ModelCmdInvert<G4TrajectoryParticleFilter>(model, placement)); 112 messengers.push_back(new G4ModelCmdActive<G4TrajectoryParticleFilter>(model, placement)); 113 messengers.push_back(new G4ModelCmdVerbose<G4TrajectoryParticleFilter>(model, placement)); 114 messengers.push_back(new G4ModelCmdReset<G4TrajectoryParticleFilter>(model, placement)); 115 116 return ModelAndMessengers(model, messengers); 117 } 118 119 // Origin volume filter 120 G4TrajectoryOriginVolumeFilterFactory::G4TrajectoryOriginVolumeFilterFactory() 121 :G4VModelFactory< G4VFilter<G4VTrajectory> >("originVolumeFilter") 122 {} 123 124 G4TrajectoryOriginVolumeFilterFactory::~G4TrajectoryOriginVolumeFilterFactory() {} 125 126 G4TrajectoryOriginVolumeFilterFactory::ModelAndMessengers 127 G4TrajectoryOriginVolumeFilterFactory::Create(const G4String& placement, const G4String& name) 128 { 129 // Create model 130 G4TrajectoryOriginVolumeFilter* model = new G4TrajectoryOriginVolumeFilter(name); 131 132 // Create associated messengers 133 Messengers messengers; 134 135 messengers.push_back(new G4ModelCmdAddString<G4TrajectoryOriginVolumeFilter>(model, placement)); 136 messengers.push_back(new G4ModelCmdInvert<G4TrajectoryOriginVolumeFilter>(model, placement)); 137 messengers.push_back(new G4ModelCmdActive<G4TrajectoryOriginVolumeFilter>(model, placement)); 138 messengers.push_back(new G4ModelCmdVerbose<G4TrajectoryOriginVolumeFilter>(model, placement)); 139 messengers.push_back(new G4ModelCmdReset<G4TrajectoryOriginVolumeFilter>(model, placement)); 140 141 return ModelAndMessengers(model, messengers); 142 } 143 144 // Encountered volume filter 145 G4TrajectoryEncounteredVolumeFilterFactory::G4TrajectoryEncounteredVolumeFilterFactory() 146 :G4VModelFactory< G4VFilter<G4VTrajectory> >("encounteredVolumeFilter") 147 {} 148 149 G4TrajectoryEncounteredVolumeFilterFactory::~G4TrajectoryEncounteredVolumeFilterFactory() {} 150 151 G4TrajectoryEncounteredVolumeFilterFactory::ModelAndMessengers 152 G4TrajectoryEncounteredVolumeFilterFactory::Create(const G4String& placement, const G4String& name) 153 { 154 // Create model 155 G4TrajectoryEncounteredVolumeFilter* model = new G4TrajectoryEncounteredVolumeFilter(name); 156 157 // Create associated messengers 158 Messengers messengers; 159 160 messengers.push_back(new G4ModelCmdAddString<G4TrajectoryEncounteredVolumeFilter>(model, placement)); 161 messengers.push_back(new G4ModelCmdInvert<G4TrajectoryEncounteredVolumeFilter>(model, placement)); 162 messengers.push_back(new G4ModelCmdActive<G4TrajectoryEncounteredVolumeFilter>(model, placement)); 163 messengers.push_back(new G4ModelCmdVerbose<G4TrajectoryEncounteredVolumeFilter>(model, placement)); 164 messengers.push_back(new G4ModelCmdReset<G4TrajectoryEncounteredVolumeFilter>(model, placement)); 165 166 return ModelAndMessengers(model, messengers); 167 } 168