ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4OpticalPhysics.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4OpticalPhysics.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 //---------------------------------------------------------------------------
29 //
30 // ClassName: G4OpticalPhysics
31 //
32 // Author: P.Gumplinger 30.09.2009
33 //
34 // Modified: P.Gumplinger 29.09.2011
35 // (based on code from I. Hrivnacova)
36 //
37 //---------------------------------------------------------------------------
38 //
39 // This class provides construction of default optical physics
40 //
41 
42 #ifndef G4OpticalPhysics_h
43 #define G4OpticalPhysics_h 1
44 
45 #include "G4OpticalProcessIndex.hh"
47 #include "G4OpticalSurface.hh"
48 
49 #include "G4VPhysicsConstructor.hh"
50 #include "globals.hh"
51 
52 #include <vector>
53 
54 class G4VProcess;
55 class G4EmSaturation;
56 class G4Scintillation;
57 class G4Cerenkov;
58 class G4OpWLS;
59 class G4OpRayleigh;
60 class G4OpMieHG;
62 class G4OpAbsorption;
63 
64 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
65 
67 {
68  public:
69 
70  G4OpticalPhysics(G4int verbose = 0, const G4String& name = "Optical");
71  virtual ~G4OpticalPhysics();
72 
73  protected:
74 
75  // construct particle and physics
76  virtual void ConstructParticle();
77  virtual void ConstructProcess();
78 
79  private:
80 
85 
86  public:
87 
88  // configure G4OpticalPhysics builder
90 
92 
93  // Cerenkov
99 
100  // Scintillation
106  void SetFiniteRiseTime(G4bool );
109  //void AddScintillationSaturation(G4EmSaturation* );
110 
111  // WLS
113  void SetWLSVerbosity(G4int);
114 
115  //boundary
117  void SetInvokeSD(G4bool );
118 
121  void SetMieVerbosity(G4int);
122 
123  private:
124 
125  // methods
126  void PrintStatistics() const;
127 
128  // messenger
130 
131  // The vector of process configuration
132  std::vector<G4bool> fProcessUse;
133 
134  // The vector of track secondaries options;
135  // the option to track secondaries before finishing their parent track
136  std::vector<G4bool> fProcessTrackSecondariesFirst;
137 
138  // scintillation /////////////////
142 
145 
150 
155 
159 
162 
164 
174 
179 
182 
185 
188 
193 };
194 
195 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
196 
197 #endif // G4OpticalPhysics_h