LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
hit::TTHitFinder Class Reference
Inheritance diagram for hit::TTHitFinder:
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

 TTHitFinder (fhicl::ParameterSet const &pset)
 
virtual ~TTHitFinder ()
 
void produce (art::Event &evt)
 
void beginJob ()
 
void endJob ()
 
void reconfigure (fhicl::ParameterSet const &p)
 
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< T > consumes (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< T > consumes (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< T > consumesView (InputTag const &it)
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< T > mayConsume (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< T > mayConsumeView (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

CurrentProcessingContext const * currentContext () const
 
void validateConsumedProduct (BranchType const bt, ProductInfo const &pi)
 
void prepareForJob (fhicl::ParameterSet const &pset)
 
void showMissingConsumes () const
 

Private Member Functions

float getTotalCharge (const float *, int, float)
 Collection wire hit width (in time ticks) More...
 

Private Attributes

std::string fCalDataModuleLabel
 
float fMinSigPeakInd
 Input caldata module name. More...
 
float fMinSigPeakCol
 Induction wire signal height threshold at peak. More...
 
float fMinSigTailInd
 Collection wire signal height threshold at peak. More...
 
float fMinSigTailCol
 Induction wire signal height threshold outside peak. More...
 
int fIndWidth
 Collection wire signal height threshold outside peak. More...
 
int fColWidth
 Induction wire hit width (in time ticks) More...
 

Detailed Description

Definition at line 34 of file TTHitFinder_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

hit::TTHitFinder::TTHitFinder ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 63 of file TTHitFinder_module.cc.

References recob::HitAndAssociationsWriterBase::declare_products(), and reconfigure().

63  {
64  this->reconfigure(pset);
65 
66  // let HitCollectionCreator declare that we are going to produce
67  // hits and associations with wires and raw digits
71 
72  }
static void declare_products(ModuleType &producer, std::string instance_name="", bool doWireAssns=true, bool doRawDigitAssns=true)
Declares the hit products we are going to fill.
Definition: HitCreator.h:1117
void reconfigure(fhicl::ParameterSet const &p)
hit::TTHitFinder::~TTHitFinder ( )
virtual

Definition at line 75 of file TTHitFinder_module.cc.

75 {}

Member Function Documentation

void hit::TTHitFinder::beginJob ( )
virtual

Reimplemented from art::EDProducer.

Definition at line 100 of file TTHitFinder_module.cc.

100 {}
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 147 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

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

Definition at line 162 of file Consumer.h.

163 {
164  if (!moduleContext_)
165  return;
166 
167  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
168 }
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
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 172 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

173 {
174  if (!moduleContext_)
175  return ViewToken<T>::invalid();
176 
177  consumables_[BT].emplace_back(ConsumableType::ViewElement,
178  TypeID{typeid(T)},
179  it.label(),
180  it.instance(),
181  it.process());
182  return ViewToken<T>{it};
183 }
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
EngineCreator::base_engine_t & EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make 
)
inherited

Definition at line 32 of file EngineCreator.cc.

References art::EngineCreator::rng().

34 {
35  return rng()->createEngine(
36  placeholder_schedule_id(), seed, kind_of_engine_to_make);
37 }
long seed
Definition: chem4.cc:68
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
EngineCreator::base_engine_t & EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make,
label_t const &  engine_label 
)
inherited

Definition at line 40 of file EngineCreator.cc.

References art::EngineCreator::rng().

43 {
44  return rng()->createEngine(
45  placeholder_schedule_id(), seed, kind_of_engine_to_make, engine_label);
46 }
long seed
Definition: chem4.cc:68
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
CurrentProcessingContext const * art::EDProducer::currentContext ( ) const
protectedinherited

Definition at line 120 of file EDProducer.cc.

References art::EDProducer::current_context_.

121  {
122  return current_context_.get();
123  }
CPC_exempt_ptr current_context_
Definition: EDProducer.h:116
void hit::TTHitFinder::endJob ( )
virtual

Reimplemented from art::EDProducer.

Definition at line 103 of file TTHitFinder_module.cc.

103 {}
EngineCreator::seed_t EngineCreator::get_seed_value ( fhicl::ParameterSet const &  pset,
char const  key[] = "seed",
seed_t const  implicit_seed = -1 
)
inherited

Definition at line 49 of file EngineCreator.cc.

References fhicl::ParameterSet::get().

Referenced by art::MixFilter< T >::initEngine_().

52 {
53  auto const& explicit_seeds = pset.get<std::vector<int>>(key, {});
54  return explicit_seeds.empty() ? implicit_seed : explicit_seeds.front();
55 }
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_.

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 B, and 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  }
Int_t B
Definition: plot.C:25
float hit::TTHitFinder::getTotalCharge ( const float *  signal_vector,
int  width = 3,
float  threshold = -99 
)
private

Collection wire hit width (in time ticks)

Definition at line 246 of file TTHitFinder_module.cc.

References DEFINE_ART_MODULE.

Referenced by produce().

246  {
247 
248  float totalCharge = 0;
249  for(int tick=0; tick<width; tick++){
250  if(signal_vector[tick] < threshold){
251  totalCharge = -999; //special value for being below threshold
252  break;
253  }
254  totalCharge += signal_vector[tick];
255  }
256  return totalCharge;
257 
258  }//end getTotalCharge method
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 190 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

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

Definition at line 205 of file Consumer.h.

206 {
207  if (!moduleContext_)
208  return;
209 
210  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
211 }
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
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 215 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

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

Definition at line 40 of file ProducerBase.h.

References art::ProducerBase::getProductID().

41  {
42  return true;
43  }
void art::Consumer::prepareForJob ( fhicl::ParameterSet const &  pset)
protectedinherited

Definition at line 89 of file Consumer.cc.

References fhicl::ParameterSet::get_if_present().

Referenced by art::EDProducer::doBeginJob(), art::EDFilter::doBeginJob(), and art::EDAnalyzer::doBeginJob().

90 {
91  if (!moduleContext_)
92  return;
93 
94  pset.get_if_present("errorOnMissingConsumes", requireConsumes_);
95  for (auto& consumablesPerBranch : consumables_) {
96  cet::sort_all(consumablesPerBranch);
97  }
98 }
bool requireConsumes_
Definition: Consumer.h:137
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
void hit::TTHitFinder::produce ( art::Event evt)
virtual

Implements art::EDProducer.

Definition at line 106 of file TTHitFinder_module.cc.

References recob::Wire::Channel(), geo::GeometryCore::ChannelToWire(), recob::HitCollectionCreator::emplace_back(), fCalDataModuleLabel, fColWidth, fIndWidth, fMinSigPeakCol, fMinSigPeakInd, fMinSigTailCol, fMinSigTailInd, art::DataViewImpl::getByLabel(), getTotalCharge(), geo::kCollection, geo::kInduction, LOG_DEBUG, recob::HitCreator::move(), geo::PlaneID::Plane, recob::HitCollectionCreator::put_into(), recob::Wire::Signal(), geo::GeometryCore::SignalType(), recob::HitCollectionCreator::size(), and geo::WireID::Wire.

107  {
108 
109  // these objects contain the hit collections
110  // and their associations to wires and raw digits:
111  recob::HitCollectionCreator hitCollection_U(*this, evt, "uhits");
112  recob::HitCollectionCreator hitCollection_V(*this, evt, "vhits");
113  recob::HitCollectionCreator hitCollection_Y(*this, evt, "yhits");
114 
115  // Read in the wire List object(s).
117  evt.getByLabel(fCalDataModuleLabel,wireVecHandle);
118  std::vector<recob::Wire> const& wireVec(*wireVecHandle);
119 
120  // also get the raw digits associated with wires
121  art::FindOneP<raw::RawDigit> WireToRawDigits
122  (wireVecHandle, evt, fCalDataModuleLabel);
123 
125 
126  //initialize some variables that will be in the loop.
127  float threshold_peak = 0;
128  float threshold_tail = -99;
129  int width = 3;
130 
131  //Loop over wires
132  for(unsigned int wireIter = 0; wireIter < wireVec.size(); wireIter++) {
133 
134  //get our wire
135  art::Ptr<recob::Wire> wire(wireVecHandle, wireIter);
136  art::Ptr<raw::RawDigit> const& rawdigits = WireToRawDigits.at(wireIter);
137 
138  std::vector<float> signal(wire->Signal());
139  std::vector<float>::iterator timeIter; // iterator for time bins
140  geo::WireID wire_id = (geom->ChannelToWire(wire->Channel())).at(0); //just grabbing the first one
141 
142 
143  //set the thresholds and widths based on wire type
144  geo::SigType_t sigType = geom->SignalType(wire->Channel());
145  if(sigType == geo::kInduction){
146  threshold_peak = fMinSigPeakInd;
147  threshold_tail = fMinSigTailInd;
148  width = fIndWidth;
149  }
150  else if(sigType == geo::kCollection){
151  threshold_peak = fMinSigPeakCol;
152  threshold_tail = fMinSigTailCol;
153  width = fColWidth;
154  }
155 
156  //make a half_width variable to be the search window around each time tick.
157  float half_width = ((float)width-1)/2.;
158 
159  //now do the loop over the time ticks on the wire
160  int time_bin = -1;
161  float peak_val = 0;
162  for(timeIter = signal.begin(); timeIter < signal.end(); timeIter++){
163  time_bin++;
164 
165  //set the peak value, taking average between ticks if desired total width is even
166  if(width%2==1) peak_val = *timeIter;
167  else if(width%2==0) peak_val = 0.5 * (*timeIter + *(timeIter+1));
168 
169  //continue immediately if we are not above the threshold
170  if(peak_val < threshold_peak) continue;
171 
172  //continue if we are too close to the edge
173  if( time_bin-half_width < 0 ) continue;
174  if( time_bin+half_width > signal.size() ) continue;
175 
176  //if necessary, do loop over hit width, and check tail thresholds
177  int begin_tail_tick = std::floor(time_bin-half_width);
178  float totalCharge = getTotalCharge(&signal[begin_tail_tick],width,threshold_tail);
179  if(totalCharge==-999) {
180  LOG_DEBUG("TTHitFinder") << "Rejecting would be hit at (plane,wire,time_bin,first_bin,last_bin)=("
181  << wire_id.Plane << "," << wire_id.Wire << "," << time_bin << "," << begin_tail_tick << "," << begin_tail_tick+width-1 << "): "
182  << signal.at(time_bin-1) << " "
183  << signal.at(time_bin) << " "
184  << signal.at(time_bin+1);
185  continue;
186  }
187 
188  //OK, if we've passed all tests up to this point, we have a hit!
189 
190  float hit_time = time_bin;
191  if(width%2==0) hit_time = time_bin+0.5;
192 
193  // hit time region is 2 widths (4 RMS) wide
194  const raw::TDCtick_t start_tick = hit_time - width,
195  end_tick = hit_time + width;
196 
197  // make the hit
199  *wire, // wire
200  wire_id, // wireID
201  start_tick, // start_tick
202  end_tick, // end_tick
203  width / 2., // rms
204  hit_time, // peak_time
205  0., // sigma_peak_time
206  peak_val, // peak_amplitude
207  0., // sigma_peak_amplitude
208  totalCharge, // hit_integral
209  0., // hit_sigma_integral
210  totalCharge, // summedADC
211  1, // multiplicity (dummy value)
212  0, // local_index (dummy value)
213  1., // goodness_of_fit (dummy value)
214  0 // dof
215  );
216  if(wire_id.Plane==0)
217  hitCollection_U.emplace_back(hit.move(), wire, rawdigits);
218  else if(wire_id.Plane==1)
219  hitCollection_V.emplace_back(hit.move(), wire, rawdigits);
220  else if(wire_id.Plane==2)
221  hitCollection_Y.emplace_back(hit.move(), wire, rawdigits);
222 
223  }//End loop over time ticks on wire
224 
225  LOG_DEBUG("TTHitFinder") << "Finished wire " << wire_id.Wire << " (plane " << wire_id.Plane << ")"
226  << "\tTotal hits (U,V,Y)= ("
227  << hitCollection_U.size() << ","
228  << hitCollection_V.size() << ","
229  << hitCollection_Y.size() << ")";
230 
231  }//End loop over all wires
232 
233  // put the hit collection and associations into the event
234  mf::LogInfo("TTHitFinder") << "Total TTHitFinder hits (U,V,Y)=("
235  << hitCollection_U.size() << ","
236  << hitCollection_V.size() << ","
237  << hitCollection_Y.size() << ")";
238  hitCollection_U.put_into(evt); // reminder: instance name was "uhits"
239  hitCollection_V.put_into(evt); // reminder: instance name was "vhits"
240  hitCollection_Y.put_into(evt); // reminder: instance name was "yhits"
241 
242  } // End of produce()
int fColWidth
Induction wire hit width (in time ticks)
float fMinSigTailInd
Collection wire signal height threshold at peak.
intermediate_table::iterator iterator
float fMinSigPeakCol
Induction wire signal height threshold at peak.
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::vector< geo::WireID > ChannelToWire(raw::ChannelID_t const channel) const
Returns a list of wires connected to the specified TPC channel.
WireID_t Wire
Index of the wire within its plane.
Definition: geo_types.h:313
SigType_t SignalType(geo::PlaneID const &pid) const
Returns the type of signal on the channels of specified TPC plane.
int TDCtick_t
Type representing a TDC tick.
Definition: RawTypes.h:24
Class managing the creation of a new recob::Hit object.
Definition: HitCreator.h:84
A class handling a collection of hits and its associations.
Definition: HitCreator.h:513
Signal from induction planes.
Definition: geo_types.h:92
enum geo::_plane_sigtype SigType_t
Enumerate the possible plane projections.
PlaneID_t Plane
Index of the plane within its TPC.
Definition: geo_types.h:258
float fMinSigTailCol
Induction wire signal height threshold outside peak.
Detector simulation of raw signals on wires.
std::string fCalDataModuleLabel
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
float fMinSigPeakInd
Input caldata module name.
#define LOG_DEBUG(id)
int fIndWidth
Collection wire signal height threshold outside peak.
Definition: fwd.h:25
float getTotalCharge(const float *, int, float)
Collection wire hit width (in time ticks)
Signal from collection planes.
Definition: geo_types.h:93
void hit::TTHitFinder::reconfigure ( fhicl::ParameterSet const &  p)

Definition at line 78 of file TTHitFinder_module.cc.

References fCalDataModuleLabel, fColWidth, fIndWidth, fMinSigPeakCol, fMinSigPeakInd, fMinSigTailCol, fMinSigTailInd, and fhicl::ParameterSet::get().

Referenced by TTHitFinder().

78  {
79  fCalDataModuleLabel = p.get< std::string >("CalDataModuleLabel");
80  fMinSigPeakInd = p.get< float >("MinSigPeakInd");
81  fMinSigPeakCol = p.get< float >("MinSigPeakCol");
82  fMinSigTailInd = p.get< float >("MinSigTailInd",-99); //defaulting to well-below zero
83  fMinSigTailCol = p.get< float >("MinSigTailCol",-99); //defaulting to well-below zero
84  fIndWidth = p.get< int >("IndWidth", 3); //defaulting to 3
85  fColWidth = p.get< int >("ColWidth", 3); //defaulting to 3
86 
87  //enforce a minimum width
88  if(fIndWidth<1){
89  mf::LogWarning("TTHitFinder") << "IndWidth must be 1 at minimum. Resetting width to one time tick";
90  fIndWidth = 1;
91  }
92  if(fColWidth<1){
93  mf::LogWarning("TTHitFinder") << "ColWidth must be 1 at minimum. Resetting width to one time tick";
94  fColWidth = 1;
95  }
96 
97  }
int fColWidth
Induction wire hit width (in time ticks)
float fMinSigTailInd
Collection wire signal height threshold at peak.
float fMinSigPeakCol
Induction wire signal height threshold at peak.
float fMinSigTailCol
Induction wire signal height threshold outside peak.
std::string fCalDataModuleLabel
float fMinSigPeakInd
Input caldata module name.
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
int fIndWidth
Collection wire signal height threshold outside peak.
void art::Consumer::showMissingConsumes ( ) const
protectedinherited

Definition at line 125 of file Consumer.cc.

Referenced by art::EDProducer::doEndJob(), art::EDFilter::doEndJob(), art::EDAnalyzer::doEndJob(), and art::RootOutput::endJob().

126 {
127  if (!moduleContext_)
128  return;
129 
130  // If none of the branches have missing consumes statements, exit early.
131  if (std::all_of(cbegin(missingConsumes_),
132  cend(missingConsumes_),
133  [](auto const& perBranch) { return perBranch.empty(); }))
134  return;
135 
136  constexpr cet::HorizontalRule rule{60};
137  mf::LogPrint log{"MTdiagnostics"};
138  log << '\n'
139  << rule('=') << '\n'
140  << "The following consumes (or mayConsume) statements are missing from\n"
141  << module_context(moduleDescription_) << '\n'
142  << rule('-') << '\n';
143 
144  cet::for_all_with_index(
145  missingConsumes_, [&log](std::size_t const i, auto const& perBranch) {
146  for (auto const& pi : perBranch) {
147  log << " "
148  << assemble_consumes_statement(static_cast<BranchType>(i), pi)
149  << '\n';
150  }
151  });
152  log << rule('=');
153 }
cet::exempt_ptr< ModuleDescription const > moduleDescription_
Definition: Consumer.h:140
constexpr T pi()
Returns the constant pi (up to 35 decimal digits of precision)
bool moduleContext_
Definition: Consumer.h:136
ConsumableProductSets missingConsumes_
Definition: Consumer.h:139
void art::Consumer::validateConsumedProduct ( BranchType const  bt,
ProductInfo const &  pi 
)
protectedinherited

Definition at line 101 of file Consumer.cc.

References art::errors::ProductRegistrationFailure.

103 {
104  // Early exits if consumes tracking has been disabled or if the
105  // consumed product is an allowed consumable.
106  if (!moduleContext_)
107  return;
108 
109  if (cet::binary_search_all(consumables_[bt], pi))
110  return;
111 
112  if (requireConsumes_) {
114  "Consumer: an error occurred during validation of a "
115  "retrieved product\n\n")
116  << "The following consumes (or mayConsume) statement is missing from\n"
117  << module_context(moduleDescription_) << ":\n\n"
118  << " " << assemble_consumes_statement(bt, pi) << "\n\n";
119  }
120 
121  missingConsumes_[bt].insert(pi);
122 }
cet::exempt_ptr< ModuleDescription const > moduleDescription_
Definition: Consumer.h:140
bool requireConsumes_
Definition: Consumer.h:137
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
constexpr T pi()
Returns the constant pi (up to 35 decimal digits of precision)
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
ConsumableProductSets missingConsumes_
Definition: Consumer.h:139

Member Data Documentation

std::string hit::TTHitFinder::fCalDataModuleLabel
private

Definition at line 48 of file TTHitFinder_module.cc.

Referenced by produce(), and reconfigure().

int hit::TTHitFinder::fColWidth
private

Induction wire hit width (in time ticks)

Definition at line 54 of file TTHitFinder_module.cc.

Referenced by produce(), and reconfigure().

int hit::TTHitFinder::fIndWidth
private

Collection wire signal height threshold outside peak.

Definition at line 53 of file TTHitFinder_module.cc.

Referenced by produce(), and reconfigure().

float hit::TTHitFinder::fMinSigPeakCol
private

Induction wire signal height threshold at peak.

Definition at line 50 of file TTHitFinder_module.cc.

Referenced by produce(), and reconfigure().

float hit::TTHitFinder::fMinSigPeakInd
private

Input caldata module name.

Definition at line 49 of file TTHitFinder_module.cc.

Referenced by produce(), and reconfigure().

float hit::TTHitFinder::fMinSigTailCol
private

Induction wire signal height threshold outside peak.

Definition at line 52 of file TTHitFinder_module.cc.

Referenced by produce(), and reconfigure().

float hit::TTHitFinder::fMinSigTailInd
private

Collection wire signal height threshold at peak.

Definition at line 51 of file TTHitFinder_module.cc.

Referenced by produce(), and reconfigure().


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