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 #include <string>
16 #include <iostream>
17 
18 #ifndef LArG4Parameters_h
19 #define LArG4Parameters_h 1
20 
21 #include "fhiclcpp/ParameterSet.h"
25 
27 
28 namespace sim {
29 
31  public:
33 
34  int OpVerbosity() const { return fOpVerbosity; }
36  bool StoreTrajectories() const { return fStoreTrajectories; }
37  bool DrawNeutrals() const { return fDrawNeutrals; }
39  bool UseCustomPhysics() const { return fUseCustomPhysics; }
40  bool ModifyProtonCut() const { return fModifyProtonCut; }
41  double NewProtonCut() const { return fNewProtonCut; }
42  double RecombA() const { return fRecombA; }
43  double Recombk() const { return fRecombk; }
44  double ModBoxA() const { return fModBoxA; }
45  double ModBoxB() const { return fModBoxB; }
46  double LarqlChi0A() const { return fLarqlChi0A; }
47  double LarqlChi0B() const { return fLarqlChi0B; }
48  double LarqlChi0C() const { return fLarqlChi0C; }
49  double LarqlChi0D() const { return fLarqlChi0D; }
50  double LarqlAlpha() const { return fLarqlAlpha; }
51  double LarqlBeta() const { return fLarqlBeta; }
52  bool UseModBoxRecomb() const { return fUseModBoxRecomb; }
53  bool UseModLarqlRecomb() const { return fUseModLarqlRecomb; }
54  double GeVToElectrons() const { return util::kGeVToElectrons; }
55  double LongitudinalDiffusion() const { return fLongitudinalDiffusion; }
56  double TransverseDiffusion() const { return fTransverseDiffusion; }
57  double ElectronClusterSize() const { return fElectronClusterSize; }
59  const std::vector<std::string>& EnabledPhysics() const { return fEnabledPhysics; }
60  int K0Bias() const { return fK0Bias; }
61  int MNXBias() const { return fXBias; }
62  int MNXSBias() const { return fXSBias; }
64  bool DisableWireplanes() const { return fDisableWireplanes; }
65  const std::vector<unsigned short int>& SkipWireSignalInTPCs() const { return fSkipWireSignalInTPCs;}
67  const std::vector<std::string>& OpticalParamVolumes() const { return fOpticalParamVolumes; }
68  const std::vector<std::string>& OpticalParamModels() const { return fOpticalParamModels; }
69  const std::vector<int>& OpticalParamOrientations() const { return fOpticalParamOrientations;}
70  const std::vector<std::vector<std::vector<double>>>& OpticalParamParameters() const {return fOpticalParamParameters; }
71  bool UseLitePhotons() const { return fLitePhotons; }
72 
75  bool NoPhotonPropagation() const { return fNoPhotonPropagation; }
76 
77  private:
78  int const fOpVerbosity; ///< Verbosity of optical simulation - soon to be depricated
79  double const fParticleKineticECut; ///< Minimum energy a particle needs in order to be stored in the particle list [GeV]
80  bool const fStoreTrajectories; ///< Whether to store full trajectories for every particle
81  ///< simulated by Geant4
82  bool const fDrawNeutrals; ///< depricated
83  double const fVisualizationEnergyCut;///< depricated, GeV
84  bool const fUseCustomPhysics; ///< Whether to use a custom list of physics processes
85  ///< or the default
86  bool const fModifyProtonCut; ///< Whether to enable custom ProtonCut value, needed for HadronHP
87  double const fNewProtonCut; ///< New Proton Cut parameter to override default in HadronHP
88  double const fLongitudinalDiffusion; ///< Amount of diffusion in the longitudinal direction, cm^2/ns
89  double const fTransverseDiffusion; ///< Amount of diffusion in the transverse direction, cm^2/ns
90  double const fElectronClusterSize; ///< Number of ionization electrons in a given cluster
91  ///< to be simulated in the readout simulation
92  int const fMinNumberOfElCluster; ///< Minimum number of electron clusters
93  std::vector<std::string> const fEnabledPhysics; ///< List of enabled physics processes if using Custom physics
94  int const fK0Bias; ///< Turns on secondary particle bias for K0, Lambda,
95  ///< neutrons in MuNuclear
96  int const fXSBias; ///< Turns on cross-section bian in MuNuclear
97  int const fXBias; ///< Enhancement factor for cross-section bian in MuNuclear,
98  ///< should be <= 100
99  bool const fKeepEMShowerDaughters; ///< Whether to keep the secondary, tertiary, etc.
100  ///< particles from an EM shower in the output
101  bool const fDisableWireplanes; ///< Turn of LAr sensitivity and remove charge
102  ///< drift simulation - use for running pure optical sims
103  std::vector<unsigned short int> const fSkipWireSignalInTPCs; ///< selective disabling of drift simulation
104  double const fRecombA; ///< Possibly override the RecombA parameter
105  double const fRecombk; ///< Possibly override the Recombk parameter
106  double const fModBoxA; ///< Possibly override the ModBoxA parameter
107  double const fModBoxB; ///< Possibly override the ModBoxB parameter
108  double const fLarqlChi0A; ///< Possibly override the LarqlChi0A parameter
109  double const fLarqlChi0B; ///< Possibly override the LarqlChi0B parameter
110  double const fLarqlChi0C; ///< Possibly override the LarqlChi0C parameter
111  double const fLarqlChi0D; ///< Possibly override the LarqlChi0D parameter
112  double const fLarqlAlpha; ///< Possibly override the LarqlAlpha parameter
113  double const fLarqlBeta; ///< Possibly override the LarqlBeta parameter
114  bool const fUseModBoxRecomb; ///< Use Modified Box model recombination instead of Birks
115  bool const fUseModLarqlRecomb; ///< Use LArQL model recombination correction (dependence on EF)
116  std::string const fIonAndScintCalculator; ///< Name of algorithm to use to calculate the number of
117  ///< ionization electrons and scintillation photons
118  ///< for each G4 step, used by
119  ///< LArG4/IonizationAndScintillation.cxx
120  std::vector<std::string> const fOpticalParamVolumes; ///< List of volume names which have parameterized
121  ///< optical models
122  std::vector<std::string> const fOpticalParamModels; ///< List of names of those models
123  std::vector<int> const fOpticalParamOrientations; ///< List of orientations of (eg wireplane) in each
124  ///< param volume
125  std::vector<std::vector<std::vector<double>>> const fOpticalParamParameters; ///< Model dependent list of
126  ///< parameters for optically
127  ///< parameterized volumes
128 
129  bool const fLitePhotons;
130 
131  bool const fFillSimEnergyDeposits; ///< handle to fill SimEdeps or not
132  bool const fNoElectronPropagation; ///< specifically prevents electron propagation
133  bool const fNoPhotonPropagation; ///< specifically prevents photon propagation in opfast
134  };
135 }
136 
137 
139 #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.
std::string string
Definition: nybbler.cc:12
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
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 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
#define DECLARE_ART_SERVICE(svc, scope)
const std::vector< unsigned short int > & SkipWireSignalInTPCs() const
double ElectronClusterSize() 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
Code to link reconstructed objects back to the MC truth information.
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
double GeVToElectrons() const
bool UseLitePhotons() const
bool DisableWireplanes() const
bool DrawNeutrals() const
bool const fStoreTrajectories