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

 ShowerFinder (fhicl::ParameterSet const &)
 
virtual ~ShowerFinder ()
 
void reconfigure (fhicl::ParameterSet const &p)
 
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< 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 Attributes

std::string fVertexModuleLabel
 label of module finding 2D endpoint More...
 
std::string fClusterModuleLabel
 label of module finding clusters More...
 
std::string fHoughLineModuleLabel
 label of module finding hough line More...
 
std::string fVertexStrengthModuleLabel
 label of module finding 2D endpoint More...
 
double fRcone
 radious of cone for method More...
 
double fLcone
 length of the cone More...
 

Detailed Description

Definition at line 58 of file ShowerFinder_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

shwf::ShowerFinder::ShowerFinder ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 91 of file ShowerFinder_module.cc.

References reconfigure().

92  {
93  this->reconfigure(pset);
94 
95  produces< std::vector<recob::Shower> >();
96  produces< art::Assns<recob::Shower, recob::Cluster> >();
97  produces< art::Assns<recob::Shower, recob::Hit> >();
98  }
void reconfigure(fhicl::ParameterSet const &p)
shwf::ShowerFinder::~ShowerFinder ( )
virtual

Definition at line 102 of file ShowerFinder_module.cc.

103  {
104  }

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 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
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
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 shwf::ShowerFinder::produce ( art::Event evt)
virtual
Todo:

This method appears to produce a recob::Cluster really as it is

a collection of 2D clusters from single planes

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Todo:
NEED TO TAKE OUT THE HOUGH LINES FROM THE PROTOSHOWERS!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Todo:
really need to determine the values of the arguments of the recob::Shower ctor

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Todo:
check if protoshower from further vertex is also contained in vertex nearer...

Implements art::EDProducer.

Definition at line 123 of file ShowerFinder_module.cc.

References art::PtrVector< T >::clear(), util::CreateAssn(), DEFINE_ART_MODULE, fClusterModuleLabel, fHoughLineModuleLabel, fLcone, fRcone, fVertexModuleLabel, fVertexStrengthModuleLabel, art::DataViewImpl::getByLabel(), hits(), recob::EndPoint2D::ID(), recob::Cluster::ID(), geo::kCollection, art::PtrVector< T >::push_back(), art::Event::put(), art::PtrVector< T >::size(), and recob::EndPoint2D::Strength().

124  {
125 
126  std::unique_ptr<std::vector<recob::Shower> > showercol(new std::vector<recob::Shower>);
127  std::unique_ptr< art::Assns<recob::Shower, recob::Cluster> > cassn(new art::Assns<recob::Shower, recob::Cluster>);
128  std::unique_ptr< art::Assns<recob::Shower, recob::Hit> > hassn(new art::Assns<recob::Shower, recob::Hit>);
129 
130  // Read in the vertex List object(s).
132  evt.getByLabel(fVertexModuleLabel,vertexListHandle);
133 
134  // Read in the hough line List object(s).
136  evt.getByLabel(fHoughLineModuleLabel,houghListHandle);
137 
138  // Read in the cluster List object(s).
139  art::Handle< std::vector<recob::Cluster> > clusterListHandle;
140  evt.getByLabel(fClusterModuleLabel,clusterListHandle);
141 
142  art::FindManyP<recob::Hit> fmh(clusterListHandle, evt, fClusterModuleLabel);
143 
144  // Read in the vertex Strength List object(s).
145  art::Handle< std::vector<recob::EndPoint2D> > vertexStrengthListHandle;
146  evt.getByLabel(fVertexStrengthModuleLabel,vertexStrengthListHandle);
147 
148  std::vector<size_t> protoShowers; //vector of indices of clusters associated to a cone
149 
150  std::vector< art::Ptr<recob::Hit> > clusterhits; //hits in the cluster
151 
153 
154  //This vector will contain all strong and strongest vertices
156 
157  //This loop is going over all the vertices in the event
158  //and is interested in ONLY strong and strongest vertices.
159  mf::LogInfo("ShowerFinder") << "Vertex STRENGTH list size = " << vertexStrengthListHandle->size()
160  << " AND vertices:" << vertexListHandle->size()
161  << "\nCLUSTER list size = " << clusterListHandle->size()
162  << " AND Hough: :" << houghListHandle->size();
163 
164  for(size_t iv = 0; iv < vertexListHandle->size(); ++iv){
165  art::Ptr<recob::EndPoint2D> vertex(vertexListHandle, iv);
166  //std::cout << "Vertex " << iv << " : str = " << vertex->ID() << std::endl;
167  //if(vertex->Strength() == 4 || vertex->Strength() == 3){
168  if(vertex->ID() == 1 || vertex->Strength() == 3){ //only use Strongest and strong
169  vertSel.push_back(vertex);
170  }
171  else continue;
172  }
173 
174  //Definition of the geometry of the cone (which is basically a triangle)
175  double scan_angle = 0; //angle of the scan steps
176  double xa_cone = 0; // x coordinate of the cone's apex (wire number)
177  double ya_cone = 0; // y coordinate of the cone's apex (drift time)
178  double x1_cone = 0; // x coordinate of the cone's top right point (wire number)
179  double y1_cone = 0; // y coordinate of the cone's top right point (drift time)
180  double x2_cone = 0; // x coordinate of the cone's top left point (wire number)
181  double y2_cone = 0; // y coordinate of the cone's top left point (drift time)
182 
183  //The length of the side of the cone
184  double fScone = std::sqrt( (fRcone*fRcone) + (fLcone*fLcone));
185 
186  // Opening angle of the cone (defined from input parameters)
187  double cone_angle = (TMath::ATan(fRcone / fLcone)) / 2.0;
188  mf::LogInfo("ShowerFinder") << "Cone Opening Angle: " << (180.0*cone_angle)/TMath::Pi();
189  double compl_angle = 0;
190 
191  unsigned int n_scan =1 + (int)(TMath::Pi() / (2.0*cone_angle));
192  mf::LogInfo("ShowerFinder") << "N scan: " << n_scan;
193 
194  double x_hit = 0; //x coordinate of hit
195  double y_hit = 0; //y coordinate of hit
196 
197  int hits_cluster_counter = 0; //count the number of hits in a cluster that is inside a cone
198  //int hits_cluster_Total = 0; //The total number of hits in a cluster
199 
200  // For EVERY vertex, the algorithm is going to scan the plane to find clusters
201  // contained in the scanning cones
202 
203  for(size_t ivert = 0; ivert < vertSel.size(); ++ivert){
204 
205  mf::LogInfo("ShowerFinder") << "Number of STRONG vertices = " << vertSel.size();
206 
207  //get the coordinates of the vertex for the summit of the cone
208  xa_cone = vertSel[ivert]->WireID().Wire; //for update to EndPoint2D ... WK 4/22/13
209  ya_cone = vertSel[ivert]->DriftTime();
210 
211  mf::LogInfo("ShowerFinder") << "Vertex at: (" << xa_cone << ", " << ya_cone << ")";
212 
213  //Beginning of the scan!
214  for(unsigned int iscan = 0; iscan < n_scan; ++iscan){
215 
216  mf::LogInfo("ShowerFinder") << ">>>> Start SCAN: " << iscan;
217 
218  //define the scan anlge
219  scan_angle = (TMath::Pi()/2.0) - (iscan*(2.0*cone_angle));
220 
221  mf::LogInfo("ShowerFinder") << "Scan Angle: " << (180.*scan_angle)/TMath::Pi();
222 
223  //get the complementary angle for geometry puurposes
224  compl_angle = scan_angle - cone_angle;
225 
226  //Calculate the coordinates of the top right corner of the cone
227  x1_cone = xa_cone + fScone*(std::cos(compl_angle));
228  y1_cone = ya_cone + fScone*(std::sin(compl_angle));
229 
230  //Calculate the coordinates of the top left corner of the cone
231  x2_cone = xa_cone + fScone*(std::cos(scan_angle + cone_angle));
232  y2_cone = ya_cone + fScone*(std::sin(scan_angle + cone_angle));
233 
234  //Looking if a cluster is in this cone (loop over all hits of all clusters)
235  protoShowers.clear();
236  for(size_t iclust = 0; iclust < clusterListHandle->size(); ++iclust){
237 
238  // art::Ptr<recob::Cluster> clust(clusterListHandle, iclust);
239  recob::Cluster const& clust = clusterListHandle->at(iclust);
240 
241  //Get the hits vector from the cluster
242  clusterhits = fmh.at(iclust);
243  if(clusterhits.size() == 0) continue;
244 
245  //Loop over ALL hits in the cluster. Looking if the cluster's
246  // hit is comprised in the cone
247  for(size_t ihits = 0; ihits < clusterhits.size(); ++ihits){
248 
249 
250  x_hit = clusterhits[ihits]->WireID().Wire; //for update to EndPoint2D ... WK 4/22/13
251  y_hit = clusterhits[ihits]->PeakTime();
252 
253  // Check in hits is INSIDE cone
254 
255  //define the 2 line equations:
256  if(y_hit <= ((y2_cone - ya_cone)/(x2_cone - xa_cone))*x_hit + ya_cone &&
257  y_hit >= ((y1_cone - ya_cone)/(x1_cone - xa_cone))*x_hit + ya_cone){
258  hits_cluster_counter++;
259  }
260 
261  }//end hits loop
262 
263  //If there is more than 50% if the cluster INSIDE the cone, this is a protoshower
264  if(clusterhits.size() == 0) continue;
265  if(((double)hits_cluster_counter / (double)clusterhits.size()) >= 0.5){
266  mf::LogInfo("ShowerFinder") << "GOT A SHOWER!!! in scan " << iscan
267  << " cluster: " << iclust << " : " << clust.ID();
268 
272 
273  protoShowers.push_back(iclust);
274  }
275  clusterhits.clear();
276  hits_cluster_counter = 0;
277 
278  } //end cluster loop
279 
280  if(protoShowers.empty()) continue;
281 
282  // loop over hits in the protoShowers to determine the total charge of the shower
283  double totalCharge = 0.;
284 
285  for(size_t p = 0; p < protoShowers.size(); ++p){
286  const size_t psIndex = protoShowers[p];
287  for (art::Ptr<recob::Hit> const& hit: fmh.at(psIndex))
288  if(hit->SignalType() == geo::kCollection) totalCharge += hit->Integral();
289  }
290 
292  // fill with bogus values for now
293  //double dcosVtx[3] = { util::kBogusD };
294  //double dcosVtxErr[3] = { util::kBogusD };
295  //double maxTransWidth[2] = { util::kBogusD };
296  //double distMaxWidth = util::kBogusD;
297 
298  //showercol->push_back( recob::Shower(dcosVtx, dcosVtxErr, maxTransWidth, totalCharge, distMaxWidth) );
299  showercol->push_back(recob::Shower());
300 
301  // associate the shower with its clusters
302  util::CreateAssn(*this, evt, *cassn,
303  showercol->size() - 1, protoShowers.begin(), protoShowers.end());
304 
305  // get the hits associated with each cluster and associate those with the shower
306  for(size_t p = 0; p < protoShowers.size(); ++p){
307  const size_t psIndex = protoShowers[p];
308  std::vector< art::Ptr<recob::Hit> > hits = fmh.at(psIndex);
309  util::CreateAssn(*this, evt, *showercol, hits, *hassn);
310  }
311 
312  } //end scan loop
313  } //end vertices loop
314 
316  //NEED TO SEPARATE THE SHOWERS FROM THE DIFFERENT VERTEX!!!!
318 
319 
320  mf::LogInfo("ShowerFinder") << "---> Recorded shower = "<< showercol->size();
322  //if the shower is stand alone ok, else, erase the next one
323  //shower.SetID(is);
324  //shower.SetVertexCoord(xa_cone, ya_cone);
325 
326  vertSel.clear();
327 
328  evt.put(std::move(showercol));
329  evt.put(std::move(cassn));
330  evt.put(std::move(hassn));
331 
332  return;
333  } // end of produce
std::string fHoughLineModuleLabel
label of module finding hough line
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::string fVertexModuleLabel
label of module finding 2D endpoint
Set of hits with a 2D structure.
Definition: Cluster.h:71
std::string fClusterModuleLabel
label of module finding clusters
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
void hits()
Definition: readHits.C:15
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:441
bool CreateAssn(PRODUCER const &prod, art::Event &evt, std::vector< T > const &a, art::Ptr< U > const &b, art::Assns< U, T > &assn, std::string a_instance, size_t indx=UINT_MAX)
Creates a single one-to-one association.
size_type size() const
Definition: PtrVector.h:308
Detector simulation of raw signals on wires.
std::string fVertexStrengthModuleLabel
label of module finding 2D endpoint
double fRcone
radious of cone for method
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
ID_t ID() const
Identifier of this cluster.
Definition: Cluster.h:738
double fLcone
length of the cone
void clear()
Definition: PtrVector.h:537
Definition: fwd.h:25
size_t size() const
Definition: DataViewImpl.cc:34
Signal from collection planes.
Definition: geo_types.h:93
vertex reconstruction
void shwf::ShowerFinder::reconfigure ( fhicl::ParameterSet const &  p)

Definition at line 107 of file ShowerFinder_module.cc.

References fClusterModuleLabel, fHoughLineModuleLabel, fLcone, fRcone, fVertexModuleLabel, fVertexStrengthModuleLabel, and fhicl::ParameterSet::get().

Referenced by ShowerFinder().

108  {
109  fVertexModuleLabel = pset.get<std::string > ("VertexModuleLabel");
110  fClusterModuleLabel = pset.get<std::string > ("ClusterModuleLabel");
111  fHoughLineModuleLabel = pset.get<std::string > ("HoughLineModuleLabel");
112  fVertexStrengthModuleLabel= pset.get<std::string > ("VertexStrengthModuleLabel");
113  fRcone = pset.get<double > ("Rcone");
114  fLcone = pset.get<double > ("Lcone");
115 
116  return;
117  }
std::string fHoughLineModuleLabel
label of module finding hough line
std::string fVertexModuleLabel
label of module finding 2D endpoint
std::string fClusterModuleLabel
label of module finding clusters
std::string fVertexStrengthModuleLabel
label of module finding 2D endpoint
double fRcone
radious of cone for method
double fLcone
length of the cone
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 shwf::ShowerFinder::fClusterModuleLabel
private

label of module finding clusters

Definition at line 71 of file ShowerFinder_module.cc.

Referenced by produce(), and reconfigure().

std::string shwf::ShowerFinder::fHoughLineModuleLabel
private

label of module finding hough line

Definition at line 72 of file ShowerFinder_module.cc.

Referenced by produce(), and reconfigure().

double shwf::ShowerFinder::fLcone
private

length of the cone

Definition at line 75 of file ShowerFinder_module.cc.

Referenced by produce(), and reconfigure().

double shwf::ShowerFinder::fRcone
private

radious of cone for method

Definition at line 74 of file ShowerFinder_module.cc.

Referenced by produce(), and reconfigure().

std::string shwf::ShowerFinder::fVertexModuleLabel
private

label of module finding 2D endpoint

Definition at line 70 of file ShowerFinder_module.cc.

Referenced by produce(), and reconfigure().

std::string shwf::ShowerFinder::fVertexStrengthModuleLabel
private

label of module finding 2D endpoint

Definition at line 73 of file ShowerFinder_module.cc.

Referenced by produce(), and reconfigure().


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