LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
lar_pandora::ConsolidatedPFParticleAnalysisTemplate Class Reference

ConsolidatedPFParticleAnalysisTemplate class. More...

Inheritance diagram for lar_pandora::ConsolidatedPFParticleAnalysisTemplate:
art::EDAnalyzer art::EventObserverBase art::Consumer art::EngineCreator

Public Types

typedef art::Handle< std::vector< recob::PFParticle > > PFParticleHandle
 
typedef std::map< size_t, art::Ptr< recob::PFParticle > > PFParticleIdMap
 
typedef std::vector< art::Ptr< recob::PFParticle > > PFParticleVector
 
typedef std::vector< art::Ptr< recob::Track > > TrackVector
 
typedef std::vector< art::Ptr< recob::Shower > > ShowerVector
 
using WorkerType = WorkerT< EDAnalyzer >
 
using ModuleType = EDAnalyzer
 

Public Member Functions

 ConsolidatedPFParticleAnalysisTemplate (fhicl::ParameterSet const &pset)
 Constructor. More...
 
void reconfigure (fhicl::ParameterSet const &pset)
 Configure memeber variables using FHiCL parameters. More...
 
void analyze (const art::Event &evt)
 Analyze an event! More...
 
std::string workerType () const
 
bool modifiesEvent () const
 
void registerProducts (MasterProductRegistry &, ProductDescriptions &, ModuleDescription const &)
 
std::string const & processName () const
 
bool wantAllEvents () const
 
bool wantEvent (Event const &e)
 
fhicl::ParameterSetID selectorConfig () const
 
art::Handle< art::TriggerResultsgetTriggerResults (Event const &e) 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
 
detail::CachedProducts & cachedProducts ()
 
void validateConsumedProduct (BranchType const bt, ProductInfo const &pi)
 
void prepareForJob (fhicl::ParameterSet const &pset)
 
void showMissingConsumes () const
 

Private Member Functions

void GetPFParticleIdMap (const PFParticleHandle &pfParticleHandle, PFParticleIdMap &pfParticleMap)
 Produce a mapping from PFParticle ID to the art ptr to the PFParticle itself for fast navigation. More...
 
void PrintOutScores (const art::Event &evt, const PFParticleHandle &pfParticleHandle) const
 Print out scores in PFParticleMetadata. More...
 
void GetFinalStatePFParticleVectors (const PFParticleIdMap &pfParticleMap, PFParticleVector &crParticles, PFParticleVector &nuParticles)
 Produce a mapping from PFParticle ID to the art ptr to the PFParticle itself for fast navigation. More...
 
void CollectTracksAndShowers (const PFParticleVector &particles, const PFParticleHandle &pfParticleHandle, const art::Event &evt, TrackVector &tracks, ShowerVector &showers)
 Collect associated tracks and showers to particles in an input particle vector. More...
 

Private Attributes

std::string m_pandoraLabel
 The label for the pandora producer. More...
 
std::string m_trackLabel
 The label for the track producer from PFParticles. More...
 
std::string m_showerLabel
 The label for the shower producer from PFParticles. More...
 
bool m_printOutScores
 Option to investigate the associations to scores for PFParticles. More...
 

Detailed Description

Member Typedef Documentation

Definition at line 39 of file EDAnalyzer.h.

Definition at line 38 of file EDAnalyzer.h.

Constructor & Destructor Documentation

lar_pandora::ConsolidatedPFParticleAnalysisTemplate::ConsolidatedPFParticleAnalysisTemplate ( fhicl::ParameterSet const &  pset)

Constructor.

Parameters
psetthe set of input fhicl parameters

Definition at line 122 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

References reconfigure().

122  : art::EDAnalyzer(pset)
123 {
124  this->reconfigure(pset);
125 }
void reconfigure(fhicl::ParameterSet const &pset)
Configure memeber variables using FHiCL parameters.

Member Function Documentation

void lar_pandora::ConsolidatedPFParticleAnalysisTemplate::analyze ( const art::Event evt)

Analyze an event!

Parameters
evtthe art event to analyze

Investigate scores associated as larpandoraobject::metadata for the PFParticles

Definition at line 139 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

References CollectTracksAndShowers(), art::DataViewImpl::getByLabel(), GetFinalStatePFParticleVectors(), GetPFParticleIdMap(), art::Handle< T >::isValid(), m_pandoraLabel, m_printOutScores, and PrintOutScores().

140 {
141  // Collect the PFParticles from the event
142  PFParticleHandle pfParticleHandle;
143  evt.getByLabel(m_pandoraLabel, pfParticleHandle);
144 
145  if (!pfParticleHandle.isValid())
146  {
147  mf::LogDebug("ConsolidatedPFParticleAnalysisTemplate") << " Failed to find the PFParticles." << std::endl;
148  return;
149  }
150 
151  // Produce a map of the PFParticle IDs for fast navigation through the hierarchy
152  PFParticleIdMap pfParticleMap;
153  this->GetPFParticleIdMap(pfParticleHandle, pfParticleMap);
154 
156  if (m_printOutScores)
157  this->PrintOutScores(evt, pfParticleHandle);
158 
159  // Produce two PFParticle vectors containing final-state particles:
160  // 1. Particles identified as cosmic-rays - recontructed under cosmic-hypothesis
161  // 2. Daughters of the neutrino PFParticle - reconstructed under the neutrino hypothesis
162  std::vector< art::Ptr<recob::PFParticle> > crParticles;
163  std::vector< art::Ptr<recob::PFParticle> > nuParticles;
164  this->GetFinalStatePFParticleVectors(pfParticleMap, crParticles, nuParticles);
165 
166  // Use as required!
167  // -----------------------------
168  // What follows is an example showing how one might access the reconstructed neutrino final-state tracks and showers
169 
170  // These are the vectors to hold the tracks and showers for the final-states of the reconstructed neutrino
171  std::vector< art::Ptr<recob::Track> > tracks;
172  std::vector< art::Ptr<recob::Shower> > showers;
173  this->CollectTracksAndShowers(nuParticles, pfParticleHandle, evt, tracks, showers);
174 
175  // Print a summary of the consolidated event
176  std::cout << "Consolidated event summary:" << std::endl;
177  std::cout << " - Number of primary cosmic-ray PFParticles : " << crParticles.size() << std::endl;
178  std::cout << " - Number of neutrino final-state PFParticles : " << nuParticles.size() << std::endl;
179  std::cout << " ... of which are track-like : " << tracks.size() << std::endl;
180  std::cout << " ... of which are showers-like : " << showers.size() << std::endl;
181 }
void CollectTracksAndShowers(const PFParticleVector &particles, const PFParticleHandle &pfParticleHandle, const art::Event &evt, TrackVector &tracks, ShowerVector &showers)
Collect associated tracks and showers to particles in an input particle vector.
bool m_printOutScores
Option to investigate the associations to scores for PFParticles.
void PrintOutScores(const art::Event &evt, const PFParticleHandle &pfParticleHandle) const
Print out scores in PFParticleMetadata.
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
MaybeLogger_< ELseverityLevel::ELsev_success, false > LogDebug
void GetFinalStatePFParticleVectors(const PFParticleIdMap &pfParticleMap, PFParticleVector &crParticles, PFParticleVector &nuParticles)
Produce a mapping from PFParticle ID to the art ptr to the PFParticle itself for fast navigation...
void GetPFParticleIdMap(const PFParticleHandle &pfParticleHandle, PFParticleIdMap &pfParticleMap)
Produce a mapping from PFParticle ID to the art ptr to the PFParticle itself for fast navigation...
detail::CachedProducts& art::EventObserverBase::cachedProducts ( )
inlineprotectedinherited

Definition at line 79 of file EventObserverBase.h.

References art::EventObserverBase::selectors_.

Referenced by art::EDAnalyzer::doEvent(), and art::OutputModule::doWriteEvent().

80  {
81  return selectors_;
82  }
detail::CachedProducts selectors_
void lar_pandora::ConsolidatedPFParticleAnalysisTemplate::CollectTracksAndShowers ( const PFParticleVector particles,
const PFParticleHandle pfParticleHandle,
const art::Event evt,
TrackVector tracks,
ShowerVector showers 
)
private

Collect associated tracks and showers to particles in an input particle vector.

Parameters
particlesa vector holding PFParticles from which to find the associated tracks and showers
pfParticleHandlethe handle for the PFParticle collection
evtthe art event to analyze
tracksa vector to hold the associated tracks
showersa vector to hold the associated showers

Definition at line 265 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

References m_showerLabel, and m_trackLabel.

Referenced by analyze().

266 {
267  // Get the associations between PFParticles and tracks/showers from the event
268  art::FindManyP< recob::Track > pfPartToTrackAssoc(pfParticleHandle, evt, m_trackLabel);
269  art::FindManyP< recob::Shower > pfPartToShowerAssoc(pfParticleHandle, evt, m_showerLabel);
270 
271  for (const art::Ptr<recob::PFParticle> &pParticle : particles)
272  {
273  const std::vector< art::Ptr<recob::Track> > associatedTracks(pfPartToTrackAssoc.at(pParticle.key()));
274  const std::vector< art::Ptr<recob::Shower> > associatedShowers(pfPartToShowerAssoc.at(pParticle.key()));
275  const unsigned int nTracks(associatedTracks.size());
276  const unsigned int nShowers(associatedShowers.size());
277 
278  // Check if the PFParticle has no associated tracks or showers
279  if (nTracks == 0 && nShowers == 0)
280  {
281  mf::LogDebug("ConsolidatedPFParticleAnalysisTemplate") << " No tracks or showers were associated to PFParticle " << pParticle->Self() << std::endl;
282  continue;
283  }
284 
285  // Check if there is an associated track
286  if (nTracks == 1 && nShowers == 0)
287  {
288  tracks.push_back(associatedTracks.front());
289  continue;
290  }
291 
292  // Check if there is an associated shower
293  if (nTracks == 0 && nShowers == 1)
294  {
295  showers.push_back(associatedShowers.front());
296  continue;
297  }
298 
299  throw cet::exception("ConsolidatedPFParticleAnalysisTemplate") << " There were " << nTracks << " tracks and " << nShowers << " showers associated with PFParticle " << pParticle->Self();
300  }
301 }
std::string m_showerLabel
The label for the shower producer from PFParticles.
std::string m_trackLabel
The label for the track producer from PFParticles.
MaybeLogger_< ELseverityLevel::ELsev_success, false > LogDebug
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
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::EDAnalyzer::currentContext ( ) const
protectedinherited

Definition at line 114 of file EDAnalyzer.cc.

References art::EDAnalyzer::current_context_.

Referenced by art::EDAnalyzer::workerType().

115  {
116  return current_context_.get();
117  }
CPC_exempt_ptr current_context_
Definition: EDAnalyzer.h:179
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 }
void lar_pandora::ConsolidatedPFParticleAnalysisTemplate::GetFinalStatePFParticleVectors ( const PFParticleIdMap pfParticleMap,
PFParticleVector crParticles,
PFParticleVector nuParticles 
)
private

Produce a mapping from PFParticle ID to the art ptr to the PFParticle itself for fast navigation.

Parameters
pfParticleMapthe mapping from ID to PFParticle
crParticlesa vector to hold the top-level PFParticles reconstructed under the cosmic hypothesis
nuParticlesa vector to hold the final-states of the reconstruced neutrino

Definition at line 225 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

References recob::PFParticle::Daughters(), recob::PFParticle::IsPrimary(), and recob::PFParticle::PdgCode().

Referenced by analyze().

226 {
227  for (PFParticleIdMap::const_iterator it = pfParticleMap.begin(); it != pfParticleMap.end(); ++it)
228  {
229  const art::Ptr<recob::PFParticle> pParticle(it->second);
230 
231  // Only look for primary particles
232  if (!pParticle->IsPrimary()) continue;
233 
234  // Check if this particle is identified as the neutrino
235  const int pdg(pParticle->PdgCode());
236  const bool isNeutrino(std::abs(pdg) == pandora::NU_E || std::abs(pdg) == pandora::NU_MU || std::abs(pdg) == pandora::NU_TAU);
237 
238  // All non-neutrino primary particles are reconstructed under the cosmic hypothesis
239  if (!isNeutrino)
240  {
241  crParticles.push_back(pParticle);
242  continue;
243  }
244 
245  // ATTN. We are filling nuParticles under the assumption that there is only one reconstructed neutrino identified per event.
246  // If this is not the case please handle accordingly
247  if (!nuParticles.empty())
248  {
249  throw cet::exception("ConsolidatedPFParticleAnalysisTemplate") << " This event contains multiple reconstructed neutrinos!";
250  }
251 
252  // Add the daughters of the neutrino PFParticle to the nuPFParticles vector
253  for (const size_t daughterId : pParticle->Daughters())
254  {
255  if (pfParticleMap.find(daughterId) == pfParticleMap.end())
256  throw cet::exception("ConsolidatedPFParticleAnalysisTemplate") << " Invalid PFParticle collection!";
257 
258  nuParticles.push_back(pfParticleMap.at(daughterId));
259  }
260  }
261 }
intermediate_table::const_iterator const_iterator
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
void lar_pandora::ConsolidatedPFParticleAnalysisTemplate::GetPFParticleIdMap ( const PFParticleHandle pfParticleHandle,
PFParticleIdMap pfParticleMap 
)
private

Produce a mapping from PFParticle ID to the art ptr to the PFParticle itself for fast navigation.

Parameters
pfParticleHandlethe handle for the PFParticle collection
pfParticleMapthe mapping from ID to PFParticle

Definition at line 185 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

References recob::PFParticle::Self().

Referenced by analyze().

186 {
187  for (unsigned int i = 0; i < pfParticleHandle->size(); ++i)
188  {
189  const art::Ptr<recob::PFParticle> pParticle(pfParticleHandle, i);
190  if (!pfParticleMap.insert(PFParticleIdMap::value_type(pParticle->Self(), pParticle)).second)
191  {
192  throw cet::exception("ConsolidatedPFParticleAnalysisTemplate") << " Unable to get PFParticle ID map, the input PFParticle collection has repeat IDs!";
193  }
194  }
195 }
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
art::Handle<art::TriggerResults> art::EventObserverBase::getTriggerResults ( Event const &  e) const
inlineinherited

Definition at line 61 of file EventObserverBase.h.

References art::detail::CachedProducts::getOneTriggerResults(), and art::EventObserverBase::selectors_.

Referenced by art::OutputModule::doWriteEvent().

62  {
64  }
detail::CachedProducts selectors_
art::Handle< art::TriggerResults > getOneTriggerResults(Event const &) const
Float_t e
Definition: plot.C:34
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::EventObserverBase::modifiesEvent ( ) const
inlineinherited

Definition at line 25 of file EventObserverBase.h.

26  {
27  return false;
28  }
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 lar_pandora::ConsolidatedPFParticleAnalysisTemplate::PrintOutScores ( const art::Event evt,
const PFParticleHandle pfParticleHandle 
) const
private

Print out scores in PFParticleMetadata.

Parameters
evtthe art event to analyze
pfParticleHandlethe handle for the PFParticle collection

Definition at line 199 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

References m_pandoraLabel, and recob::PFParticle::Self().

Referenced by analyze().

200 {
201  // Get the associations between PFParticles and larpandoraobj::PFParticleMetadata
202  art::FindManyP< larpandoraobj::PFParticleMetadata > pfPartToMetadataAssoc(pfParticleHandle, evt, m_pandoraLabel);
203 
204  for (unsigned int i = 0; i < pfParticleHandle->size(); ++i)
205  {
206  const std::vector< art::Ptr<larpandoraobj::PFParticleMetadata> > &pfParticleMetadataList(pfPartToMetadataAssoc.at(i));
207  if (!pfParticleMetadataList.empty())
208  {
209  const art::Ptr<recob::PFParticle> pParticle(pfParticleHandle, i);
210  for (unsigned int j=0; j<pfParticleMetadataList.size(); ++j)
211  {
212  const art::Ptr<larpandoraobj::PFParticleMetadata> &pfParticleMetadata(pfParticleMetadataList.at(j));
213  const larpandoraobj::PFParticleMetadata::PropertiesMap &pfParticlePropertiesMap(pfParticleMetadata->GetPropertiesMap());
214  if (!pfParticlePropertiesMap.empty())
215  std::cout << " Found PFParticle " << pParticle->Self() << " with: " << std::endl;
216  for (larpandoraobj::PFParticleMetadata::PropertiesMap::const_iterator it = pfParticlePropertiesMap.begin(); it != pfParticlePropertiesMap.end(); ++it)
217  std::cout << " - " << it->first << " = " << it->second << std::endl;
218  }
219  }
220  }
221 }
std::map< std::string, float > PropertiesMap
intermediate_table::const_iterator const_iterator
std::string const& art::EventObserverBase::processName ( ) const
inlineinherited
void lar_pandora::ConsolidatedPFParticleAnalysisTemplate::reconfigure ( fhicl::ParameterSet const &  pset)

Configure memeber variables using FHiCL parameters.

Parameters
psetthe set of input fhicl parameters

Definition at line 129 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

References fhicl::ParameterSet::get(), m_pandoraLabel, m_printOutScores, m_showerLabel, and m_trackLabel.

Referenced by ConsolidatedPFParticleAnalysisTemplate().

130 {
131  m_pandoraLabel = pset.get<std::string>("PandoraLabel");
132  m_trackLabel = pset.get<std::string>("TrackLabel");
133  m_showerLabel = pset.get<std::string>("ShowerLabel");
134  m_printOutScores = pset.get<bool>("PrintOutScores",true);
135 }
std::string m_showerLabel
The label for the shower producer from PFParticles.
std::string m_trackLabel
The label for the track producer from PFParticles.
bool m_printOutScores
Option to investigate the associations to scores for PFParticles.
void art::EventObserverBase::registerProducts ( MasterProductRegistry ,
ProductDescriptions ,
ModuleDescription const &   
)
inlineinherited

Definition at line 33 of file EventObserverBase.h.

36  {}
fhicl::ParameterSetID art::EventObserverBase::selectorConfig ( ) const
inlineinherited

Definition at line 56 of file EventObserverBase.h.

References art::EventObserverBase::selector_config_id_.

Referenced by art::RootOutputFile::writeOne().

57  {
58  return selector_config_id_;
59  }
fhicl::ParameterSetID selector_config_id_
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
bool art::EventObserverBase::wantAllEvents ( ) const
inlineinherited
bool art::EventObserverBase::wantEvent ( Event const &  e)
inlineinherited
std::string art::EDAnalyzer::workerType ( ) const
inlineinherited

Definition at line 109 of file EDAnalyzer.h.

References art::EDAnalyzer::currentContext().

110  {
111  return "WorkerT<EDAnalyzer>";
112  }

Member Data Documentation

std::string lar_pandora::ConsolidatedPFParticleAnalysisTemplate::m_pandoraLabel
private

The label for the pandora producer.

Definition at line 91 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

Referenced by analyze(), PrintOutScores(), and reconfigure().

bool lar_pandora::ConsolidatedPFParticleAnalysisTemplate::m_printOutScores
private

Option to investigate the associations to scores for PFParticles.

Definition at line 94 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

Referenced by analyze(), and reconfigure().

std::string lar_pandora::ConsolidatedPFParticleAnalysisTemplate::m_showerLabel
private

The label for the shower producer from PFParticles.

Definition at line 93 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

Referenced by CollectTracksAndShowers(), and reconfigure().

std::string lar_pandora::ConsolidatedPFParticleAnalysisTemplate::m_trackLabel
private

The label for the track producer from PFParticles.

Definition at line 92 of file ConsolidatedPFParticleAnalysisTemplate_module.cc.

Referenced by CollectTracksAndShowers(), and reconfigure().


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