Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
lem::LEMSummarizer Class Reference

Transform slices into the minimal description LEM needs to PID them. More...

Inheritance diagram for lem::LEMSummarizer:
art::EDProducer art::ProducerBase art::Consumer art::EngineCreator art::ProductRegistryHelper

Public Types

using ModuleType = EDProducer
 
using WorkerType = WorkerT< EDProducer >
 
template<typename UserConfig , typename KeysToIgnore = void>
using Table = ProducerBase::Table< UserConfig, KeysToIgnore >
 

Public Member Functions

 LEMSummarizer (const fhicl::ParameterSet &pset)
 
 ~LEMSummarizer ()
 
virtual void reconfigure (const fhicl::ParameterSet &pset)
 
virtual void produce (art::Event &evt)
 
template<typename PROD , BranchType B = InEvent>
ProductID getProductID (std::string const &instanceName={}) const
 
template<typename PROD , BranchType B>
ProductID getProductID (ModuleDescription const &moduleDescription, std::string const &instanceName) const
 
bool modifiesEvent () const
 
template<typename T , BranchType = InEvent>
ProductToken< Tconsumes (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< Tconsumes (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< TconsumesView (InputTag const &it)
 
template<typename T , BranchType = InEvent>
ProductToken< TmayConsume (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< TmayConsume (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< TmayConsumeView (InputTag const &it)
 
base_engine_tcreateEngine (seed_t seed)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make, label_t const &engine_label)
 
seed_t get_seed_value (fhicl::ParameterSet const &pset, char const key[]="seed", seed_t const implicit_seed=-1)
 

Static Public Member Functions

static cet::exempt_ptr< Consumernon_module_context ()
 

Protected Member Functions

LEMInput SliceToLEMInput (const art::Ptr< rb::Cluster > &slice, bool isMC, int vtxPlane, int vtxCell, int vtxCellOther, bool reverse) const
 
CurrentProcessingContext const * currentContext () const
 
void validateConsumedProduct (BranchType const bt, ProductInfo const &pi)
 
void prepareForJob (fhicl::ParameterSet const &pset)
 
void showMissingConsumes () const
 

Protected Attributes

double fGeVToPECorr
 
std::string fSlicerLabel
 
std::string fVertexLabel
 
std::vector< std::stringfFilterLabels
 Labels of filter lists to obey. More...
 
bool fRawGeVForCalE
 

Detailed Description

Transform slices into the minimal description LEM needs to PID them.

Definition at line 33 of file LEMSummarizer_module.cc.

Member Typedef Documentation

using art::EDProducer::ModuleType = EDProducer
inherited

Definition at line 34 of file EDProducer.h.

template<typename UserConfig , typename KeysToIgnore = void>
using art::EDProducer::Table = ProducerBase::Table<UserConfig, KeysToIgnore>
inherited

Definition at line 43 of file EDProducer.h.

using art::EDProducer::WorkerType = WorkerT<EDProducer>
inherited

Definition at line 35 of file EDProducer.h.

Constructor & Destructor Documentation

lem::LEMSummarizer::LEMSummarizer ( const fhicl::ParameterSet pset)
explicit

Definition at line 59 of file LEMSummarizer_module.cc.

References reconfigure().

60  {
61  reconfigure(pset);
62 
63  produces<std::vector<LEMInput>>();
64  produces<art::Assns<LEMInput, rb::Cluster>>();
65 
66  // Also produce variants where the z direction is reverse, if vertexing
67  // module provided a reversed vertex.
68  produces<std::vector<LEMInput>>("reverse");
69  produces<art::Assns<LEMInput, rb::Cluster>>("reverse");
70  }
virtual void reconfigure(const fhicl::ParameterSet &pset)
lem::LEMSummarizer::~LEMSummarizer ( )

Definition at line 73 of file LEMSummarizer_module.cc.

74  {
75  }

Member Function Documentation

template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::consumes ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::consumes ( InputTag const &  it)
inherited

Definition at line 146 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

147 {
148  if (!moduleContext_)
149  return ProductToken<T>::invalid();
150 
151  consumables_[BT].emplace_back(ConsumableType::Product,
152  TypeID{typeid(T)},
153  it.label(),
154  it.instance(),
155  it.process());
156  return ProductToken<T>{it};
157 }
set< int >::iterator it
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename T , art::BranchType BT>
void art::Consumer::consumesMany ( )
inherited

Definition at line 161 of file Consumer.h.

References T.

162 {
163  if (!moduleContext_)
164  return;
165 
166  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
167 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::consumesView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::consumesView ( InputTag const &  it)
inherited

Definition at line 171 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

172 {
173  if (!moduleContext_)
174  return ViewToken<T>::invalid();
175 
176  consumables_[BT].emplace_back(ConsumableType::ViewElement,
177  TypeID{typeid(T)},
178  it.label(),
179  it.instance(),
180  it.process());
181  return ViewToken<T>{it};
182 }
set< int >::iterator it
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make 
)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make,
label_t const &  engine_label 
)
inherited
CurrentProcessingContext const* art::EDProducer::currentContext ( ) const
protectedinherited
seed_t art::EngineCreator::get_seed_value ( fhicl::ParameterSet const &  pset,
char const  key[] = "seed",
seed_t const  implicit_seed = -1 
)
inherited
template<typename PROD , BranchType B>
ProductID art::EDProducer::getProductID ( std::string const &  instanceName = {}) const
inlineinherited

Definition at line 123 of file EDProducer.h.

References art::EDProducer::moduleDescription_.

Referenced by skim::NueSkimmer::CopyMichelSlice(), and skim::NueSkimmer::CopyMichelTrack().

124  {
125  return ProducerBase::getProductID<PROD, B>(moduleDescription_,
126  instanceName);
127  }
ModuleDescription moduleDescription_
Definition: EDProducer.h:115
template<typename PROD , BranchType B>
ProductID art::ProducerBase::getProductID ( ModuleDescription const &  moduleDescription,
std::string const &  instanceName 
) const
inherited

Definition at line 56 of file ProducerBase.h.

References art::ModuleDescription::moduleLabel().

Referenced by art::ProducerBase::modifiesEvent().

58  {
59  auto const& pd =
60  get_ProductDescription<PROD>(B, md.moduleLabel(), instanceName);
61  return pd.productID();
62  }
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::mayConsume ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::mayConsume ( InputTag const &  it)
inherited

Definition at line 189 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

190 {
191  if (!moduleContext_)
192  return ProductToken<T>::invalid();
193 
194  consumables_[BT].emplace_back(ConsumableType::Product,
195  TypeID{typeid(T)},
196  it.label(),
197  it.instance(),
198  it.process());
199  return ProductToken<T>{it};
200 }
set< int >::iterator it
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename T , art::BranchType BT>
void art::Consumer::mayConsumeMany ( )
inherited

Definition at line 204 of file Consumer.h.

References T.

205 {
206  if (!moduleContext_)
207  return;
208 
209  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
210 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::mayConsumeView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::mayConsumeView ( InputTag const &  it)
inherited

Definition at line 214 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

215 {
216  if (!moduleContext_)
217  return ViewToken<T>::invalid();
218 
219  consumables_[BT].emplace_back(ConsumableType::ViewElement,
220  TypeID{typeid(T)},
221  it.label(),
222  it.instance(),
223  it.process());
224  return ViewToken<T>{it};
225 }
set< int >::iterator it
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
bool art::ProducerBase::modifiesEvent ( ) const
inlineinherited

Definition at line 40 of file ProducerBase.h.

References art::ProducerBase::getProductID(), and string.

41  {
42  return true;
43  }
static cet::exempt_ptr<Consumer> art::Consumer::non_module_context ( )
staticinherited
void art::Consumer::prepareForJob ( fhicl::ParameterSet const &  pset)
protectedinherited
void lem::LEMSummarizer::produce ( art::Event evt)
virtual

Implements art::EDProducer.

Definition at line 90 of file LEMSummarizer_module.cc.

References ana::assert(), util::CreateAssn(), lem::DefaultVertex(), fFilterLabels, fSlicerLabel, fVertexLabel, geom(), art::DataViewImpl::getByLabel(), rb::IsFiltered(), rb::Cluster::IsNoise(), art::Event::isRealData(), art::Event::put(), site_stats_from_log::reverse, SliceToLEMInput(), sum, and lem::VertexToPlaneAndCell().

91  {
92  std::unique_ptr<std::vector<LEMInput>> sumcol(new std::vector<LEMInput>);
93  std::unique_ptr<art::Assns<LEMInput, rb::Cluster> > assns(new art::Assns<LEMInput, rb::Cluster>);
94 
95  std::unique_ptr<std::vector<LEMInput>> sumcol_rev(new std::vector<LEMInput>);
96  std::unique_ptr<art::Assns<LEMInput, rb::Cluster> > assns_rev(new art::Assns<LEMInput, rb::Cluster>);
97 
99  evt.getByLabel(fSlicerLabel, slices);
100 
102  const bool isMC = !evt.isRealData();
103 
104  art::FindManyP<rb::Vertex> fmv(slices, evt, fVertexLabel);
105  art::FindManyP<rb::Vertex> fmv_rev(slices, evt,
106  art::InputTag(fVertexLabel, "reverse"));
107 
108  const int sliceMax = slices->size();
109  for(int sliceIdx = 0; sliceIdx < sliceMax; ++sliceIdx){
110  if(rb::IsFiltered(evt, slices, sliceIdx, fFilterLabels))
111  continue;
112 
113  const art::Ptr<rb::Cluster> slice(slices, sliceIdx);
114 
115  if(slice->IsNoise()) continue;
116 
117  for(bool reverse: {false, true}){
118 
119  // Find the associated vertex and transform it into plane/cell
120  std::vector<art::Ptr<rb::Vertex> > vtxs;
121  if(reverse){
122  // It's OK if the vertexing module didn't produce a reversed vertex
123  if(!fmv_rev.isValid()) continue;
124  vtxs = fmv_rev.at(sliceIdx);
125  if(vtxs.empty()) continue;
126  }
127  else{
128  vtxs = fmv.at(sliceIdx);
129  }
130 
131  int vtxPlane, vtxCell, vtxCellOther;
132  if(vtxs.empty()){
133  DefaultVertex(*slice, vtxPlane, vtxCell, vtxCellOther);
134  }
135  else{
136  assert(vtxs.size() == 1);
137  VertexToPlaneAndCell(vtxs[0]->GetXYZ(), *slice,
138  vtxPlane, vtxCell, vtxCellOther, reverse);
139  }
140 
141  const LEMInput sum = SliceToLEMInput(slice, isMC,
142  vtxPlane, vtxCell, vtxCellOther,
143  reverse);
144 
145  if(reverse){
146  sumcol_rev->push_back(sum);
147  util::CreateAssn(*this, evt, *sumcol_rev, slice, *assns_rev);
148  }
149  else{
150  sumcol->push_back(sum);
151  util::CreateAssn(*this, evt, *sumcol, slice, *assns);
152  }
153 
154  } // end for reverse
155  } // end for sliceIdx
156 
157  evt.put(std::move(sumcol));
158  evt.put(std::move(assns));
159 
160  evt.put(std::move(sumcol_rev), "reverse");
161  evt.put(std::move(assns_rev), "reverse");
162  }
static bool CreateAssn(art::EDProducer const &prod, art::Event &evt, std::vector< T > &a, art::Ptr< U > b, art::Assns< T, U > &assn, size_t indx=UINT_MAX, std::string const &instance=std::string())
Create a 1 to 1 association between a new product and one already in the event.
void VertexToPlaneAndCell(const TVector3 vtx, const rb::Cluster &slice, int &plane, int &cell, int &cellOtherView, bool reverse)
Definition: Util.cxx:60
bool isRealData() const
Definition: Event.h:83
std::vector< std::string > fFilterLabels
Labels of filter lists to obey.
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
LEMInput SliceToLEMInput(const art::Ptr< rb::Cluster > &slice, bool isMC, int vtxPlane, int vtxCell, int vtxCellOther, bool reverse) const
void DefaultVertex(const rb::Cluster &slice, int &plane, int &cell, int &cellOtherView, bool reverse)
Definition: Util.cxx:20
bool IsFiltered(const art::Event &evt, art::Ptr< T > x, const std::vector< std::string > &labels)
Is this Ptr marked "filtered out"?
Definition: FilterList.h:96
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
void geom(int which=0)
Definition: geom.C:163
assert(nhit_max >=nhit_nbins)
Double_t sum
Definition: plot.C:31
void lem::LEMSummarizer::reconfigure ( const fhicl::ParameterSet pset)
virtual

Definition at line 78 of file LEMSummarizer_module.cc.

References fFilterLabels, fGeVToPECorr, fRawGeVForCalE, fSlicerLabel, fVertexLabel, fhicl::ParameterSet::get(), and string.

Referenced by LEMSummarizer().

79  {
80  fRawGeVForCalE = pset.get<bool>("RawGeVForCalE");
81 
82  fGeVToPECorr = pset.get<double>("GeVToPECorr");
83 
84  fSlicerLabel = pset.get<std::string>("SlicerLabel");
85  fVertexLabel = pset.get<std::string>("VertexLabel");
86  fFilterLabels = pset.get< std::vector<std::string> >("FilterLabels");
87  }
std::vector< std::string > fFilterLabels
Labels of filter lists to obey.
T get(std::string const &key) const
Definition: ParameterSet.h:231
enum BeamMode string
void art::Consumer::showMissingConsumes ( ) const
protectedinherited

Referenced by art::RootOutput::endJob().

LEMInput lem::LEMSummarizer::SliceToLEMInput ( const art::Ptr< rb::Cluster > &  slice,
bool  isMC,
int  vtxPlane,
int  vtxCell,
int  vtxCellOther,
bool  reverse 
) const
protected

Definition at line 166 of file LEMSummarizer_module.cc.

References abs(), ana::assert(), rb::Cluster::CalorimetricEnergy(), getBrightness::cell, rb::CellHit::Cell(), rb::Cluster::Cell(), DEFINE_ART_MODULE(), allTimeWatchdog::endl, fGeVToPECorr, fRawGeVForCalE, art::Ptr< T >::get(), rb::RecoHit::GeV(), lem::LEMInput::hits, rb::RecoHit::IsCalibrated(), std::isinf(), std::isnan(), lem::kVertexCell, lem::kVertexPlane, geo::kX, LOG_DEBUG, calib::Calibrator::MakeRecoHit(), std::max(), std::min(), rb::Cluster::NCell(), rb::Cluster::NXCell(), rb::Cluster::NYCell(), rb::CellHit::Plane(), NDAPDHVSetting::plane, rb::Cluster::RecoHit(), sum, lem::LEMInput::totalGeV, rb::CellHit::View(), rb::Cluster::W(), rb::Cluster::XCell(), and rb::Cluster::YCell().

Referenced by produce().

169  {
170  LEMInput sum;
171 
173 
174  // TODO: merge hits that fall on already hit cells. This apparently
175  // happens. Does it cause the self-energy to be wrong?
176  for(unsigned int cellIdx = 0; cellIdx < slice->NCell(); ++cellIdx){
177  const art::Ptr<rb::CellHit>& chit = slice->Cell(cellIdx);
178 
179  const int planeDelta = (reverse
180  ? vtxPlane - chit->Plane()
181  : chit->Plane() - vtxPlane);
182  const int cellDelta = ((abs(planeDelta)%2) ?
183  chit->Cell()-vtxCellOther :
184  chit->Cell()-vtxCell);
185 
186  // Align to standard position and clamp into allowed range
187  int plane = std::min(255, std::max(0, planeDelta + lem::kVertexPlane));
188  int cell = std::min(255, std::max(0, cellDelta + lem::kVertexCell ));
189 
190  const rb::RecoHit rhit = slice->RecoHit(chit);
191  if(rhit.IsCalibrated()){
192  // LEM libraries were based on PECorrs and generated for the FA.
193  // We need to get the GeV of each hit, and scale the GeV to the
194  // corresponding FA-era PECorr.
195  double gev = rhit.GeV();
196  double pecorr = gev*fGeVToPECorr;
197  assert(!std::isnan(pecorr));
198  assert(!std::isinf(pecorr));
199  sum.hits.push_back(LiteHit(plane, cell, pecorr, 0));
200  }
201  } // end for cellIdx
202 
203  if(!fRawGeVForCalE){
204  sum.totalGeV = slice->CalorimetricEnergy();
205  assert(!std::isnan(sum.totalGeV));
206  assert(!std::isinf(sum.totalGeV));
207  }
208  else{
209  sum.totalGeV = 0;
210  // Mean position in each view
211  const double wx = (slice->NXCell() > 0) ? slice->W(slice->XCell(0).get()) : 0;
212  const double wy = (slice->NYCell() > 0) ? slice->W(slice->YCell(0).get()) : 0;
213 
214  for(unsigned int hitIdx = 0; hitIdx < slice->NCell(); ++hitIdx){
215  // This is slow because we have to keep recalculating the mean
216  // positions. The manual version below is much better.
217  // const rb::RecoHit rhit = slice->RecoHit(hitIdx);
218 
219  const art::Ptr<rb::CellHit>& chit = slice->Cell(hitIdx);
220 
221  const rb::RecoHit rhit(cal->MakeRecoHit(*chit, chit->View() == geo::kX ? wx : wy));
222 
223  if(!rhit.IsCalibrated()){
224  LOG_DEBUG("LEMSummarizer") << "Not calibrated?! "
225  << chit->Plane() << " " << chit->Cell()
226  << std::endl;
227  continue;
228  }
229  sum.totalGeV += rhit.GeV();
230  }
231  }
232 
233  return sum;
234  }
T max(const caf::Proxy< T > &a, T b)
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
int isinf(const stan::math::var &a)
Definition: std_isinf.hpp:16
virtual double W(const rb::CellHit *chit) const
Estimate the unmeasured coordinate of chit.
Definition: Cluster.cxx:121
unsigned int NCell(geo::View_t view) const
Number of cells in view view.
Definition: Cluster.cxx:134
art::Ptr< rb::CellHit > XCell(unsigned int xIdx) const
Get the ith cell in the x-view.
Definition: Cluster.cxx:157
unsigned short Plane() const
Definition: CellHit.h:39
geo::View_t View() const
Definition: CellHit.h:41
Vertical planes which measure X.
Definition: PlaneGeo.h:28
const int kVertexPlane
Definition: EventSummary.h:22
rb::RecoHit MakeRecoHit(rb::CellHit const &cellhit, double w)
void abs(TH1 *hist)
int isnan(const stan::math::var &a)
Definition: std_isnan.hpp:18
Calibrated quantities relying on position in the orthogonal view. To generate a rb::CellHit from a rb...
Definition: RecoHit.h:19
unsigned short Cell() const
Definition: CellHit.h:40
double CalorimetricEnergy(EEnergyCalcScheme escheme=kRecomputeEnergy) const
Simple estimate of neutrino energy.
Definition: Cluster.cxx:439
art::Ptr< rb::CellHit > YCell(unsigned int yIdx) const
Get the ith cell in the y-view.
Definition: Cluster.cxx:165
const int kVertexCell
Definition: EventSummary.h:23
rb::RecoHit RecoHit(const art::Ptr< rb::CellHit > &chit) const
Return calibrated hit based on assumed W coordinate.
Definition: Cluster.cxx:259
bool IsCalibrated() const
You MUST check here before accessing PECorr, MIP or GeV.
Definition: RecoHit.cxx:35
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
float GeV() const
Definition: RecoHit.cxx:69
T const * get() const
Definition: Ptr.h:321
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
assert(nhit_max >=nhit_nbins)
T min(const caf::Proxy< T > &a, T b)
Double_t sum
Definition: plot.C:31
void art::Consumer::validateConsumedProduct ( BranchType const  bt,
ProductInfo const &  pi 
)
protectedinherited

Member Data Documentation

std::vector<std::string> lem::LEMSummarizer::fFilterLabels
protected

Labels of filter lists to obey.

Definition at line 53 of file LEMSummarizer_module.cc.

Referenced by produce(), and reconfigure().

double lem::LEMSummarizer::fGeVToPECorr
protected

Definition at line 47 of file LEMSummarizer_module.cc.

Referenced by reconfigure(), and SliceToLEMInput().

bool lem::LEMSummarizer::fRawGeVForCalE
protected

Definition at line 55 of file LEMSummarizer_module.cc.

Referenced by reconfigure(), and SliceToLEMInput().

std::string lem::LEMSummarizer::fSlicerLabel
protected

Definition at line 49 of file LEMSummarizer_module.cc.

Referenced by produce(), and reconfigure().

std::string lem::LEMSummarizer::fVertexLabel
protected

Definition at line 50 of file LEMSummarizer_module.cc.

Referenced by produce(), and reconfigure().


The documentation for this class was generated from the following file: