10 #ifndef LARSIM_ALGORITHMS_ACTIVEVOLUMEVERTEXSAMPLER_H
11 #define LARSIM_ALGORITHMS_ACTIVEVOLUMEVERTEXSAMPLER_H
19 #include "fhiclcpp/types/Atom.h"
20 #include "fhiclcpp/types/Comment.h"
21 #include "fhiclcpp/types/Name.h"
22 #include "fhiclcpp/types/OptionalAtom.h"
23 #include "fhiclcpp/types/Sequence.h"
24 #include "fhiclcpp/types/Table.h"
25 namespace fhicl {
class ParameterSet; }
28 namespace rndm {
class NuRandomService; }
31 namespace geo {
class Geometry; }
34 #include "TLorentzVector.h"
48 fhicl::Atom<std::string>
type_ {
50 Comment(
"Technique used to choose vertex locations"),
54 fhicl::OptionalAtom<std::string>
seed_ {
56 Comment(
"Seed used for sampling vertex locations"),
57 [
this]() ->
bool {
return type_() !=
"fixed"; }
62 Comment(
"Coordinates of the fixed vertex position"),
63 [
this]() ->
bool {
return type_() ==
"fixed"; }
68 Comment(
"The minimum allowed values for the x, y, and z coordinates"),
69 [
this]() ->
bool {
return type_() ==
"box"; }
74 Comment(
"The maximum allowed values for the x, y, and z coordinates"),
75 [
this]() ->
bool {
return type_() ==
"box"; }
80 Comment(
"Whether to enforce that the sampled vertices are within a TPC"
82 [
this]() ->
bool {
return type_() ==
"box"; }
119 std::unique_ptr<std::discrete_distribution<size_t> >
fTPCDist;
vertex_type_t fVertexType
TLorentzVector fVertexPosition
TLorentzVector sample_vertex_pos(const geo::Geometry &geom)
ActiveVolumeVertexSampler(const fhicl::Table< Config > &conf, rndm::NuRandomService &rand_service, const geo::Geometry &geom, const std::string &generator_name)
fhicl::OptionalAtom< bool > check_active_
fhicl::Sequence< double, 3 > position_
fhicl::Atom< std::string > type_
BEGIN_PROLOG vertical distance to the surface Name
The geometry of one entire detector, as served by art.
fhicl::Sequence< double, 3 > max_position_
fhicl::OptionalAtom< std::string > seed_
fhicl::Sequence< double, 3 > min_position_
std::unique_ptr< std::discrete_distribution< size_t > > fTPCDist
ActiveVolumeVertexSampler(const fhicl::ParameterSet &pset, rndm::NuRandomService &rand_service, const geo::Geometry &geom, const std::string &generator_name)
std::string fGeneratorName
std::mt19937_64 fTPCEngine