LArSoft  v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
cheat::ParticleInventory Class Reference

#include "ParticleInventory.h"

Inheritance diagram for cheat::ParticleInventory:
cheat::ParticleInventoryService

Classes

struct  MCTObjects
 A simple struct to contain the MC Truth information. More...
 
struct  ParticleInventoryConfig
 FHICL Validation Object This struct is used for loading the fhicl configuration. More...
 

Public Member Functions

 ParticleInventory (const ParticleInventoryConfig &config)
 
 ParticleInventory (const fhicl::ParameterSet &pSet)
 
 ParticleInventory (ParticleInventory const &)=delete
 
template<typename Evt >
void PrepEvent (const Evt &evt)
 Function to set up the ParticleInventory state for an event. This is a function to tell the ParticleInventory to prepare itself to work with a particular event. More...
 
bool ParticleListReady () const
 A simple check to determine if the ParticleList has already been prepared for this event or not. More...
 
bool MCTruthListReady () const
 A simple check to determine if the MCTruthList has already been prepared and cached or not. More...
 
bool TrackIdToMCTruthReady () const
 A simple check to determine if the TrackIdToMCTruth map has been prepared or not. More...
 
template<typename Evt >
void PrepParticleList (const Evt &evt) const
 A function to load the ParticleList and cache it This function will find the particle list and load it for later use. Ideally this would would be used for a "lazy" loading of the backtracker, but this does not work in the current setup of art. More...
 
template<typename Evt >
void PrepTrackIdToMCTruthIndex (const Evt &evt) const
 A function to prepare and cache a map of TrackIds and MCTruth object indicies from fMCTruthList. More...
 
template<typename Evt >
void PrepMCTruthList (const Evt &evt) const
 A function to load and cache the MCTruthList of the event. More...
 
template<typename Evt >
void PrepMCTruthListAndTrackIdToMCTruthIndex (const Evt &evt) const
 A function to make both PrepTrackIdToMCTruthIndex and PrepMCTruthList run when both are needed. More...
 
template<typename Evt >
bool CanRun (const Evt &evt) const
 A short function to check if use of the backtracker is appropriate or not based on the type of input file. This function simply checks to see if the file loaded is real data, or MC Simulation, as backtracking on real data makes no sense. If one does try to backtrack real data, this will throw and exception. More...
 
const sim::ParticleListParticleList () const
 
void SetEveIdCalculator (sim::EveIdCalculator *ec)
 
const std::vector< art::Ptr< simb::MCTruth > > & MCTruthList () const
 
const std::map< int, int > & TrackIdToMCTruthIndex () const
 
void ClearEvent ()
 
const simb::MCParticleTrackIdToParticle_P (int const &id) const
 
simb::MCParticle TrackIdToParticle (int const &id) const
 
const simb::MCParticleTrackIdToMotherParticle_P (int const &id) const
 
simb::MCParticle TrackIdToMotherParticle (int const &id) const
 
const art::Ptr< simb::MCTruth > & TrackIdToMCTruth_P (int const &id) const
 
simb::MCTruth TrackIdToMCTruth (int const &id) const
 
int TrackIdToEveTrackId (const int &tid) const
 
const art::Ptr< simb::MCTruth > & ParticleToMCTruth_P (const simb::MCParticle *p) const
 
simb::MCTruth ParticleToMCTruth (const simb::MCParticle *p) const
 
const std::vector< art::Ptr< simb::MCTruth > > & MCTruthVector_Ps () const
 
const std::vector< const simb::MCParticle * > MCTruthToParticles_Ps (art::Ptr< simb::MCTruth > const &mct) const
 
std::set< int > GetSetOfTrackIds () const
 
std::set< int > GetSetOfEveIds () const
 

Private Attributes

sim::ParticleList fParticleList
 
MCTObjects fMCTObj
 
art::InputTag fG4ModuleLabel
 

Detailed Description

Definition at line 178 of file ParticleInventory.h.

Constructor & Destructor Documentation

cheat::ParticleInventory::ParticleInventory ( const ParticleInventoryConfig config)

Definition at line 26 of file ParticleInventory.cc.

Referenced by cheat::ParticleInventoryService::ParticleInventoryService().

27  :fG4ModuleLabel(config.G4ModuleLabel())
28  {
29  }
cheat::ParticleInventory::ParticleInventory ( const fhicl::ParameterSet pSet)

Definition at line 32 of file ParticleInventory.cc.

33  :fG4ModuleLabel(pSet.get<art::InputTag>("G4ModuleLabel", "largeant"))
34  {
35  }
T get(std::string const &key) const
Definition: ParameterSet.h:231
cheat::ParticleInventory::ParticleInventory ( ParticleInventory const &  )
delete

Member Function Documentation

template<typename Evt >
bool cheat::ParticleInventory::CanRun ( const Evt &  evt) const

A short function to check if use of the backtracker is appropriate or not based on the type of input file. This function simply checks to see if the file loaded is real data, or MC Simulation, as backtracking on real data makes no sense. If one does try to backtrack real data, this will throw and exception.

Referenced by cheat::ParticleInventoryService::priv_CanRun(), and TrackIdToMCTruthReady().

void cheat::ParticleInventory::ClearEvent ( )
std::set< int > cheat::ParticleInventory::GetSetOfEveIds ( ) const

Definition at line 113 of file ParticleInventory.cc.

References sim::ParticleList::EveId(), fParticleList, and GetSetOfTrackIds().

Referenced by cheat::ParticleInventoryService::GetSetOfEveIds(), cheat::BackTracker::GetSetOfEveIds(), cheat::PhotonBackTracker::GetSetOfEveIds(), and ParticleToMCTruth().

113  {
114  std::set<int> ret;
115  std::set<int> tIds=this->GetSetOfTrackIds();
116  for(auto tId : tIds){
117  ret.emplace(fParticleList.EveId(tId));
118  }
119  return ret;
120  }
sim::ParticleList fParticleList
int EveId(const int trackID) const
std::set< int > GetSetOfTrackIds() const
std::set< int > cheat::ParticleInventory::GetSetOfTrackIds ( ) const

Definition at line 104 of file ParticleInventory.cc.

References sim::ParticleList::begin(), sim::ParticleList::end(), and fParticleList.

Referenced by GetSetOfEveIds(), cheat::ParticleInventoryService::GetSetOfTrackIds(), cheat::BackTracker::GetSetOfTrackIds(), cheat::PhotonBackTracker::GetSetOfTrackIds(), and ParticleToMCTruth().

104  {
105  std::set<int> ret;
106  for( auto partItr=fParticleList.begin(); partItr!=fParticleList.end(); ++partItr){
107  ret.emplace((partItr->second)->TrackId());
108  }
109  return ret;
110  }
sim::ParticleList fParticleList
iterator begin()
Definition: ParticleList.h:305
const std::vector< art::Ptr<simb::MCTruth> >& cheat::ParticleInventory::MCTruthList ( ) const
inline

Definition at line 218 of file ParticleInventory.h.

References fMCTObj, and cheat::ParticleInventory::MCTObjects::fMCTruthList.

218 { return fMCTObj.fMCTruthList;}
std::vector< art::Ptr< simb::MCTruth > > fMCTruthList
A vector containing the MCTruth objects.
bool cheat::ParticleInventory::MCTruthListReady ( ) const
inline

A simple check to determine if the MCTruthList has already been prepared and cached or not.

Definition at line 201 of file ParticleInventory.h.

References fMCTObj, and cheat::ParticleInventory::MCTObjects::fMCTruthList.

Referenced by cheat::ParticleInventoryService::priv_MCTruthListReady().

201 { return !( (fMCTObj.fMCTruthList).empty() ); }
std::vector< art::Ptr< simb::MCTruth > > fMCTruthList
A vector containing the MCTruth objects.
const std::vector< const simb::MCParticle * > cheat::ParticleInventory::MCTruthToParticles_Ps ( art::Ptr< simb::MCTruth > const &  mct) const

Definition at line 92 of file ParticleInventory.cc.

References fParticleList, and TrackIdToMCTruth_P().

Referenced by cheat::ParticleInventoryService::MCTruthToParticles_Ps(), and ParticleToMCTruth().

93  {
94  std::vector<const simb::MCParticle*> ret;
95  // sim::ParticleList::value_type is a pair (track Id, particle pointer)
96  for (const sim::ParticleList::value_type& TrackIdpair: fParticleList) {
97  if( this->TrackIdToMCTruth_P(TrackIdpair.first) == mct )
98  ret.push_back(TrackIdpair.second);
99  }
100  return ret;
101  }
sim::ParticleList fParticleList
list_type::value_type value_type
Definition: ParticleList.h:130
const art::Ptr< simb::MCTruth > & TrackIdToMCTruth_P(int const &id) const
const std::vector< art::Ptr< simb::MCTruth > > & cheat::ParticleInventory::MCTruthVector_Ps ( ) const

Definition at line 87 of file ParticleInventory.cc.

References fMCTObj, and cheat::ParticleInventory::MCTObjects::fMCTruthList.

Referenced by cheat::ParticleInventoryService::MCTruthVector_Ps(), and ParticleToMCTruth().

87  {
88  return fMCTObj.fMCTruthList;
89  }
std::vector< art::Ptr< simb::MCTruth > > fMCTruthList
A vector containing the MCTruth objects.
const sim::ParticleList& cheat::ParticleInventory::ParticleList ( ) const
inline
bool cheat::ParticleInventory::ParticleListReady ( ) const
inline

A simple check to determine if the ParticleList has already been prepared for this event or not.

Definition at line 200 of file ParticleInventory.h.

References sim::ParticleList::empty(), and fParticleList.

Referenced by cheat::ParticleInventoryService::priv_ParticleListReady().

200 { return !( fParticleList.empty() ); }
sim::ParticleList fParticleList
bool empty() const
Definition: ParticleList.h:314
simb::MCTruth cheat::ParticleInventory::ParticleToMCTruth ( const simb::MCParticle p) const
inline

Definition at line 241 of file ParticleInventory.h.

References GetSetOfEveIds(), GetSetOfTrackIds(), MCTruthToParticles_Ps(), MCTruthVector_Ps(), and ParticleToMCTruth_P().

242  { return *(this->ParticleToMCTruth_P(p)); }
const art::Ptr< simb::MCTruth > & ParticleToMCTruth_P(const simb::MCParticle *p) const
const art::Ptr< simb::MCTruth > & cheat::ParticleInventory::ParticleToMCTruth_P ( const simb::MCParticle p) const

Definition at line 81 of file ParticleInventory.cc.

References simb::MCParticle::TrackId(), and TrackIdToMCTruth_P().

Referenced by ParticleToMCTruth(), and TrackIdToEveTrackId().

82  {
83  return this->TrackIdToMCTruth_P(p->TrackId());
84  }
int TrackId() const
Definition: MCParticle.h:214
const art::Ptr< simb::MCTruth > & TrackIdToMCTruth_P(int const &id) const
template<typename Evt >
void cheat::ParticleInventory::PrepEvent ( const Evt &  evt)

Function to set up the ParticleInventory state for an event. This is a function to tell the ParticleInventory to prepare itself to work with a particular event.

Parameters
evtThe event the ParticleInventory should work with. *Note. This use breaks the multithreading model because the service has a "state".
template<typename Evt >
void cheat::ParticleInventory::PrepMCTruthList ( const Evt &  evt) const

A function to load and cache the MCTruthList of the event.

Referenced by cheat::ParticleInventoryService::priv_PrepMCTruthList(), and TrackIdToMCTruthReady().

template<typename Evt >
void cheat::ParticleInventory::PrepMCTruthListAndTrackIdToMCTruthIndex ( const Evt &  evt) const

A function to make both PrepTrackIdToMCTruthIndex and PrepMCTruthList run when both are needed.

Referenced by TrackIdToMCTruthReady().

template<typename Evt >
void cheat::ParticleInventory::PrepParticleList ( const Evt &  evt) const

A function to load the ParticleList and cache it This function will find the particle list and load it for later use. Ideally this would would be used for a "lazy" loading of the backtracker, but this does not work in the current setup of art.

Referenced by cheat::ParticleInventoryService::priv_PrepParticleList(), and TrackIdToMCTruthReady().

template<typename Evt >
void cheat::ParticleInventory::PrepTrackIdToMCTruthIndex ( const Evt &  evt) const

A function to prepare and cache a map of TrackIds and MCTruth object indicies from fMCTruthList.

Referenced by cheat::ParticleInventoryService::priv_PrepTrackIdToMCTruthIndex(), and TrackIdToMCTruthReady().

void cheat::ParticleInventory::SetEveIdCalculator ( sim::EveIdCalculator ec)
inline

Definition at line 216 of file ParticleInventory.h.

References sim::ParticleList::AdoptEveIdCalculator(), and fParticleList.

Referenced by cheat::ParticleInventoryService::SetEveIdCalculator().

sim::ParticleList fParticleList
static void AdoptEveIdCalculator(EveIdCalculator *)
int cheat::ParticleInventory::TrackIdToEveTrackId ( const int &  tid) const
inline
simb::MCTruth cheat::ParticleInventory::TrackIdToMCTruth ( int const &  id) const
inline

Definition at line 233 of file ParticleInventory.h.

References TrackIdToMCTruth_P().

234  { return *(this->TrackIdToMCTruth_P(id)); }
const art::Ptr< simb::MCTruth > & TrackIdToMCTruth_P(int const &id) const
const art::Ptr< simb::MCTruth > & cheat::ParticleInventory::TrackIdToMCTruth_P ( int const &  id) const

Definition at line 67 of file ParticleInventory.cc.

References fMCTObj, cheat::ParticleInventory::MCTObjects::fMCTruthList, and cheat::ParticleInventory::MCTObjects::fTrackIdToMCTruthIndex.

Referenced by MCTruthToParticles_Ps(), ParticleToMCTruth_P(), TrackIdToMCTruth(), cheat::ParticleInventoryService::TrackIdToMCTruth_P(), and TrackIdToMotherParticle().

68  {
69  // find the entry in the MCTruth collection for this track id
70  auto mctItr = fMCTObj.fTrackIdToMCTruthIndex.find(abs(id));
71  if(mctItr!=fMCTObj.fTrackIdToMCTruthIndex.end()){
72  int partIndex = mctItr->second;
73  return fMCTObj.fMCTruthList.at(partIndex);
74  }else{
75  throw cet::exception("ParticleInventory") << "Attempt to find MCTruth for TrackId: "
76  << id <<" has failed.";
77  }
78  }
std::vector< art::Ptr< simb::MCTruth > > fMCTruthList
A vector containing the MCTruth objects.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
const std::map< int, int >& cheat::ParticleInventory::TrackIdToMCTruthIndex ( ) const
inline
bool cheat::ParticleInventory::TrackIdToMCTruthReady ( ) const
inline
simb::MCParticle cheat::ParticleInventory::TrackIdToMotherParticle ( int const &  id) const
inline

Definition at line 229 of file ParticleInventory.h.

References TrackIdToMCTruth_P(), and TrackIdToMotherParticle_P().

230  { return *(this->TrackIdToMotherParticle_P(id)); }
const simb::MCParticle * TrackIdToMotherParticle_P(int const &id) const
const simb::MCParticle * cheat::ParticleInventory::TrackIdToMotherParticle_P ( int const &  id) const

Definition at line 61 of file ParticleInventory.cc.

References sim::ParticleList::EveId(), fParticleList, and TrackIdToParticle_P().

Referenced by TrackIdToMotherParticle(), cheat::ParticleInventoryService::TrackIdToMotherParticle_P(), and TrackIdToParticle().

62  {
63  return this->TrackIdToParticle_P(fParticleList.EveId(abs(id)));
64  }
sim::ParticleList fParticleList
int EveId(const int trackID) const
const simb::MCParticle * TrackIdToParticle_P(int const &id) const
simb::MCParticle cheat::ParticleInventory::TrackIdToParticle ( int const &  id) const
inline

Definition at line 225 of file ParticleInventory.h.

References TrackIdToMotherParticle_P(), and TrackIdToParticle_P().

226  { return *(this->TrackIdToParticle_P(id)); }//Users are encouraged to use TrackIdToParticleP
const simb::MCParticle * TrackIdToParticle_P(int const &id) const
const simb::MCParticle * cheat::ParticleInventory::TrackIdToParticle_P ( int const &  id) const

Definition at line 48 of file ParticleInventory.cc.

References sim::ParticleList::end(), sim::ParticleList::find(), and fParticleList.

Referenced by TrackIdToMCTruthIndex(), TrackIdToMotherParticle_P(), TrackIdToParticle(), and cheat::ParticleInventoryService::TrackIdToParticle_P().

48  {
50  if(part_it == fParticleList.end()){
51  mf::LogWarning("ParticleInventory") << "Particle with TrackId: "
52  << id << " not found in inventory. "
53  << "Returning null pointer.";
54  return 0;
55  }
56  return part_it->second;
57  }//End TrackIdToParticle
sim::ParticleList fParticleList
list_type::const_iterator const_iterator
Definition: ParticleList.h:132
iterator find(const key_type &key)
Definition: ParticleList.h:318
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning

Member Data Documentation

art::InputTag cheat::ParticleInventory::fG4ModuleLabel
private

Definition at line 260 of file ParticleInventory.h.

MCTObjects cheat::ParticleInventory::fMCTObj
mutableprivate

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