ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4TrajectoryFilterFactories.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4TrajectoryFilterFactories.hh
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 #ifndef G4TRAJECTORYFILTERFACTORIES_HH
34 #define G4TRAJECTORYFILTERFACTORIES_HH
35 
36 #include "G4VFilter.hh"
37 #include "G4VModelFactory.hh"
38 #include "G4VTrajectory.hh"
39 
40 // Attribute filter
41 class G4TrajectoryAttributeFilterFactory : public G4VModelFactory< G4VFilter<G4VTrajectory> > {
42 
43 public: // With description
44 
45  typedef std::vector<G4UImessenger*> Messengers;
46  typedef std::pair< G4VFilter<G4VTrajectory> *, Messengers > ModelAndMessengers;
47 
49 
51 
52  ModelAndMessengers Create(const G4String& placement, const G4String& name);
53 
54 };
55 
56 // Charge filter
57 class G4TrajectoryChargeFilterFactory : public G4VModelFactory< G4VFilter<G4VTrajectory> > {
58 
59 public: // With description
60 
61  typedef std::vector<G4UImessenger*> Messengers;
62  typedef std::pair< G4VFilter<G4VTrajectory> *, Messengers > ModelAndMessengers;
63 
65 
67 
68  ModelAndMessengers Create(const G4String& placement, const G4String& name);
69 
70 };
71 
72 // Particle filter
73 class G4TrajectoryParticleFilterFactory : public G4VModelFactory< G4VFilter<G4VTrajectory> > {
74 
75 public: // With description
76 
77  typedef std::vector<G4UImessenger*> Messengers;
78  typedef std::pair< G4VFilter<G4VTrajectory> *, Messengers > ModelAndMessengers;
79 
81 
83 
84  ModelAndMessengers Create(const G4String& placement, const G4String& name);
85 
86 };
87 
88 // Origin volume filter
89 class G4TrajectoryOriginVolumeFilterFactory : public G4VModelFactory< G4VFilter<G4VTrajectory> > {
90 
91 public: // With description
92 
93  typedef std::vector<G4UImessenger*> Messengers;
94  typedef std::pair< G4VFilter<G4VTrajectory> *, Messengers > ModelAndMessengers;
95 
97 
99 
100  ModelAndMessengers Create(const G4String& placement, const G4String& name);
101 
102 };
103 
104 // Encountered volume filter
105 class G4TrajectoryEncounteredVolumeFilterFactory : public G4VModelFactory< G4VFilter<G4VTrajectory> > {
106 
107 public: // With description
108 
109  typedef std::vector<G4UImessenger*> Messengers;
110  typedef std::pair< G4VFilter<G4VTrajectory> *, Messengers > ModelAndMessengers;
111 
113 
115 
116  ModelAndMessengers Create(const G4String& placement, const G4String& name);
117 
118 };
119 
120 
121 #endif
122