All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LArG4Parameters.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////
2 /// \file LArG4Parameters.h
3 /// \brief Store parameters for running LArG4
4 ///
5 /// \author bjpjones@mit.edu
6 ////////////////////////////////////////////////////////////////////////
7 //
8 // This service exists to pass parameters to various different
9 // classes in LArG4, which are not necessary directly called by
10 // the LArG4_module class.
11 //
12 // Ben Jones, MIT, March 2010
13 
14 
15 #ifndef LArG4Parameters_h
16 #define LArG4Parameters_h 1
17 
19 
20 namespace fhicl {
21  class ParameterSet;
22 }
23 
24 #include "art/Framework/Services/Registry/ServiceDeclarationMacros.h"
25 
26 #include <string>
27 #include <vector>
28 
29 namespace sim {
30 
32  public:
33  LArG4Parameters(fhicl::ParameterSet const& pset);
34 
35  int OpVerbosity() const { return fOpVerbosity; }
37  bool StoreTrajectories() const { return fStoreTrajectories; }
38  bool DrawNeutrals() const { return fDrawNeutrals; }
40  bool UseCustomPhysics() const { return fUseCustomPhysics; }
41  bool ModifyProtonCut() const { return fModifyProtonCut; }
42  double NewProtonCut() const { return fNewProtonCut; }
43  double RecombA() const { return fRecombA; }
44  double Recombk() const { return fRecombk; }
45  double ModBoxA() const { return fModBoxA; }
46  double ModBoxB() const { return fModBoxB; }
47  double LarqlChi0A() const { return fLarqlChi0A; }
48  double LarqlChi0B() const { return fLarqlChi0B; }
49  double LarqlChi0C() const { return fLarqlChi0C; }
50  double LarqlChi0D() const { return fLarqlChi0D; }
51  double LarqlAlpha() const { return fLarqlAlpha; }
52  double LarqlBeta() const { return fLarqlBeta; }
53  double Wph() const { return fWph; }
54  bool UseModBoxRecomb() const { return fUseModBoxRecomb; }
55  bool UseModLarqlRecomb() const { return fUseModLarqlRecomb; }
56  bool UseBinomialFlucts() const { return fUseBinomialFlucts; }
57  double GeVToElectrons() const { return util::kGeVToElectrons; }
58  double LongitudinalDiffusion() const { return fLongitudinalDiffusion; }
59  double TransverseDiffusion() const { return fTransverseDiffusion; }
60  double ElectronClusterSize() const { return fElectronClusterSize; }
62  const std::vector<std::string>& EnabledPhysics() const { return fEnabledPhysics; }
63  int K0Bias() const { return fK0Bias; }
64  int MNXBias() const { return fXBias; }
65  int MNXSBias() const { return fXSBias; }
67  bool DisableWireplanes() const { return fDisableWireplanes; }
68  const std::vector<unsigned short int>& SkipWireSignalInTPCs() const { return fSkipWireSignalInTPCs;}
69  const std::string& IonAndScintCalculator() const { return fIonAndScintCalculator; }
70  const std::vector<std::string>& OpticalParamVolumes() const { return fOpticalParamVolumes; }
71  const std::vector<std::string>& OpticalParamModels() const { return fOpticalParamModels; }
72  const std::vector<int>& OpticalParamOrientations() const { return fOpticalParamOrientations;}
73  const std::vector<std::vector<std::vector<double>>>& OpticalParamParameters() const {return fOpticalParamParameters; }
74  bool UseLitePhotons() const { return fLitePhotons; }
75 
78  bool NoPhotonPropagation() const { return fNoPhotonPropagation; }
79 
80  private:
81  int const fOpVerbosity; ///< Verbosity of optical simulation - soon to be depricated
82  double const fParticleKineticECut; ///< Minimum energy a particle needs in order to be stored in the particle list [GeV]
83  bool const fStoreTrajectories; ///< Whether to store full trajectories for every particle
84  ///< simulated by Geant4
85  bool const fDrawNeutrals; ///< depricated
86  double const fVisualizationEnergyCut;///< depricated, GeV
87  bool const fUseCustomPhysics; ///< Whether to use a custom list of physics processes
88  ///< or the default
89  bool const fModifyProtonCut; ///< Whether to enable custom ProtonCut value, needed for HadronHP
90  double const fNewProtonCut; ///< New Proton Cut parameter to override default in HadronHP
91  double const fLongitudinalDiffusion; ///< Amount of diffusion in the longitudinal direction, cm^2/ns
92  double const fTransverseDiffusion; ///< Amount of diffusion in the transverse direction, cm^2/ns
93  double const fElectronClusterSize; ///< Number of ionization electrons in a given cluster
94  ///< to be simulated in the readout simulation
95  int const fMinNumberOfElCluster; ///< Minimum number of electron clusters
96  std::vector<std::string> const fEnabledPhysics; ///< List of enabled physics processes if using Custom physics
97  int const fK0Bias; ///< Turns on secondary particle bias for K0, Lambda,
98  ///< neutrons in MuNuclear
99  int const fXSBias; ///< Turns on cross-section bian in MuNuclear
100  int const fXBias; ///< Enhancement factor for cross-section bian in MuNuclear,
101  ///< should be <= 100
102  bool const fKeepEMShowerDaughters; ///< Whether to keep the secondary, tertiary, etc.
103  ///< particles from an EM shower in the output
104  bool const fDisableWireplanes; ///< Turn of LAr sensitivity and remove charge
105  ///< drift simulation - use for running pure optical sims
106  std::vector<unsigned short int> const fSkipWireSignalInTPCs; ///< selective disabling of drift simulation
107  double const fRecombA; ///< Possibly override the RecombA parameter
108  double const fRecombk; ///< Possibly override the Recombk parameter
109  double const fModBoxA; ///< Possibly override the ModBoxA parameter
110  double const fModBoxB; ///< Possibly override the ModBoxB parameter
111  double const fLarqlChi0A; ///< Possibly override the LarqlChi0A parameter
112  double const fLarqlChi0B; ///< Possibly override the LarqlChi0B parameter
113  double const fLarqlChi0C; ///< Possibly override the LarqlChi0C parameter
114  double const fLarqlChi0D; ///< Possibly override the LarqlChi0D parameter
115  double const fLarqlAlpha; ///< Possibly override the LarqlAlpha parameter
116  double const fLarqlBeta; ///< Possibly override the LarqlBeta parameter
117  double const fWph; ///< Possibly override the Wph parameter
118  bool const fUseModBoxRecomb; ///< Use Modified Box model recombination instead of Birks
119  bool const fUseModLarqlRecomb; ///< Use LArQL model recombination correction (dependence on EF)
120  bool const fUseBinomialFlucts; ///< Use binomial fluctuations in correlated method
121  std::string const fIonAndScintCalculator; ///< Name of algorithm to use to calculate the number of
122  ///< ionization electrons and scintillation photons
123  ///< for each G4 step, used by
124  ///< LArG4/IonizationAndScintillation.cxx
125  std::vector<std::string> const fOpticalParamVolumes; ///< List of volume names which have parameterized
126  ///< optical models
127  std::vector<std::string> const fOpticalParamModels; ///< List of names of those models
128  std::vector<int> const fOpticalParamOrientations; ///< List of orientations of (eg wireplane) in each
129  ///< param volume
130  std::vector<std::vector<std::vector<double>>> const fOpticalParamParameters; ///< Model dependent list of
131  ///< parameters for optically
132  ///< parameterized volumes
133 
134  bool const fLitePhotons;
135 
136  bool const fFillSimEnergyDeposits; ///< handle to fill SimEdeps or not
137  bool const fNoElectronPropagation; ///< specifically prevents electron propagation
138  bool const fNoPhotonPropagation; ///< specifically prevents photon propagation in opfast
139  };
140 }
141 
142 DECLARE_ART_SERVICE(sim::LArG4Parameters, SHARED)
143 #endif
bool KeepEMShowerDaughters() const
double VisualizationEnergyCut() const
const std::vector< std::vector< std::vector< double > > > & OpticalParamParameters() const
const std::vector< std::string > & EnabledPhysics() const
const std::string & IonAndScintCalculator() const
double ModBoxA() const
int const fMinNumberOfElCluster
Minimum number of electron clusters.
double LarqlChi0B() const
double const fLarqlBeta
Possibly override the LarqlBeta parameter.
std::vector< std::vector< std::vector< double > > > const fOpticalParamParameters
double LarqlBeta() const
double LarqlAlpha() const
bool UseModBoxRecomb() const
bool const fModifyProtonCut
Whether to enable custom ProtonCut value, needed for HadronHP.
bool ModifyProtonCut() const
bool NoPhotonPropagation() const
double LarqlChi0D() const
const std::vector< std::string > & OpticalParamVolumes() const
bool UseBinomialFlucts() const
double const fModBoxB
Possibly override the ModBoxB parameter.
bool StoreTrajectories() const
int const fOpVerbosity
Verbosity of optical simulation - soon to be depricated.
double LarqlChi0C() const
double const fWph
Possibly override the Wph parameter.
double const fLarqlChi0B
Possibly override the LarqlChi0B parameter.
bool const fUseModBoxRecomb
Use Modified Box model recombination instead of Birks.
const std::vector< std::string > & OpticalParamModels() const
double const fLongitudinalDiffusion
Amount of diffusion in the longitudinal direction, cm^2/ns.
double TransverseDiffusion() const
constexpr double kGeVToElectrons
23.6eV per ion pair, 1e9 eV/GeV
bool NoElectronPropagation() const
double NewProtonCut() const
const std::vector< int > & OpticalParamOrientations() const
bool UseModLarqlRecomb() const
bool const fKeepEMShowerDaughters
const std::vector< unsigned short int > & SkipWireSignalInTPCs() const
double ElectronClusterSize() const
double Wph() const
bool FillSimEnergyDeposits() const
double const fVisualizationEnergyCut
depricated, GeV
bool const fUseModLarqlRecomb
Use LArQL model recombination correction (dependence on EF)
int OpVerbosity() const
double const fLarqlAlpha
Possibly override the LarqlAlpha parameter.
double RecombA() const
double LarqlChi0A() const
double const fRecombk
Possibly override the Recombk parameter.
double ParticleKineticEnergyCut() const
bool UseCustomPhysics() const
double const fRecombA
Possibly override the RecombA parameter.
double const fLarqlChi0D
Possibly override the LarqlChi0D parameter.
LArG4Parameters(fhicl::ParameterSet const &pset)
double const fParticleKineticECut
Minimum energy a particle needs in order to be stored in the particle list [GeV]. ...
double const fNewProtonCut
New Proton Cut parameter to override default in HadronHP.
int MinNumberOfElCluster() const
double ModBoxB() const
bool const fUseCustomPhysics
std::vector< std::string > const fOpticalParamModels
List of names of those models.
bool const fNoPhotonPropagation
specifically prevents photon propagation in opfast
double const fModBoxA
Possibly override the ModBoxA parameter.
double Recombk() const
double const fTransverseDiffusion
Amount of diffusion in the transverse direction, cm^2/ns.
bool const fNoElectronPropagation
specifically prevents electron propagation
int const fXSBias
Turns on cross-section bian in MuNuclear.
double const fLarqlChi0C
Possibly override the LarqlChi0C parameter.
std::vector< unsigned short int > const fSkipWireSignalInTPCs
selective disabling of drift simulation
std::vector< std::string > const fOpticalParamVolumes
bool const fDrawNeutrals
depricated
double const fElectronClusterSize
bool const fFillSimEnergyDeposits
handle to fill SimEdeps or not
std::vector< std::string > const fEnabledPhysics
List of enabled physics processes if using Custom physics.
double LongitudinalDiffusion() const
std::string const fIonAndScintCalculator
bool const fDisableWireplanes
double const fLarqlChi0A
Possibly override the LarqlChi0A parameter.
Collection of Physical constants used in LArSoft.
std::vector< int > const fOpticalParamOrientations
bool const fUseBinomialFlucts
Use binomial fluctuations in correlated method.
double GeVToElectrons() const
bool UseLitePhotons() const
bool DisableWireplanes() const
bool DrawNeutrals() const
bool const fStoreTrajectories