All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | List of all members
t0::MCParticleTrackMatching Class Reference
Inheritance diagram for t0::MCParticleTrackMatching:

Public Member Functions

 MCParticleTrackMatching (fhicl::ParameterSet const &p)
 
 MCParticleTrackMatching (MCParticleTrackMatching const &)=delete
 
 MCParticleTrackMatching (MCParticleTrackMatching &&)=delete
 
MCParticleTrackMatchingoperator= (MCParticleTrackMatching const &)=delete
 
MCParticleTrackMatchingoperator= (MCParticleTrackMatching &&)=delete
 
void produce (art::Event &e) override
 

Private Attributes

art::InputTag fTrackModuleLabel
 
art::InputTag fTrackHitAssnLabel
 
art::InputTag fHitModuleLabel
 
art::InputTag fHitParticleAssnLabel
 

Detailed Description

Definition at line 43 of file MCParticleTrackMatching_module.cc.

Constructor & Destructor Documentation

t0::MCParticleTrackMatching::MCParticleTrackMatching ( fhicl::ParameterSet const &  p)
explicit

Definition at line 68 of file MCParticleTrackMatching_module.cc.

69  : EDProducer{p}
70 {
71  fTrackModuleLabel = p.get<art::InputTag>("TrackModuleLabel");
72  fTrackHitAssnLabel = p.get<art::InputTag>("TrackHitAssnLabel",fTrackModuleLabel);
73  fHitModuleLabel = p.get<art::InputTag>("HitModuleLabel");
74  fHitParticleAssnLabel = p.get<art::InputTag>("HitParticleAssnLabel");
75 
76  produces< art::Assns<recob::Track , simb::MCParticle, anab::BackTrackerMatchingData > > ();
77 }
pdgs p
Definition: selectors.fcl:22
t0::MCParticleTrackMatching::MCParticleTrackMatching ( MCParticleTrackMatching const &  )
delete
t0::MCParticleTrackMatching::MCParticleTrackMatching ( MCParticleTrackMatching &&  )
delete

Member Function Documentation

MCParticleTrackMatching& t0::MCParticleTrackMatching::operator= ( MCParticleTrackMatching const &  )
delete
MCParticleTrackMatching& t0::MCParticleTrackMatching::operator= ( MCParticleTrackMatching &&  )
delete
void t0::MCParticleTrackMatching::produce ( art::Event &  e)
override

Definition at line 79 of file MCParticleTrackMatching_module.cc.

80 {
81  if (evt.isRealData()) return;
82 
83  //auto mcpartHandle = evt.getValidHandle< std::vector<simb::MCParticle> >("largeant");
84  std::unique_ptr< art::Assns<recob::Track, simb::MCParticle, anab::BackTrackerMatchingData > > MCPartTrackassn( new art::Assns<recob::Track, simb::MCParticle, anab::BackTrackerMatchingData >);
85 
86 
87  double maxe = -1;
88  double tote = 0;
89  // int trkid = -1;
90  //int maxtrkid = -1;
91  //double maxn = -1;
92  //double totn = 0;
93  //int maxntrkid = -1;
94 
96  std::unordered_map<int,double> trkide;
97 
98  art::Handle< std::vector<recob::Track> > trackListHandle;
99  evt.getByLabel(fTrackModuleLabel,trackListHandle);
100 
101  art::Handle< std::vector<recob::Hit> > hitListHandle;
102  evt.getByLabel(fHitModuleLabel,hitListHandle);
103 
104  if(!trackListHandle.isValid()){
105  std::cerr << "Track handle is not valid!" << std::endl;
106  return;
107  }
108 
109  if(!hitListHandle.isValid()){
110  std::cerr << "Hit handle is not valid!" << std::endl;
111  return;
112  }
113 
114  auto const& trackList(*trackListHandle);
115  art::FindManyP<recob::Hit> fmtht(trackListHandle, evt, fTrackHitAssnLabel);
116  //auto const& mcpartList(*mcpartHandle);
117 
118  for(size_t i_t=0; i_t<trackList.size(); ++i_t){
119  art::Ptr<recob::Track> trkPtr(trackListHandle,i_t);
120  trkide.clear();
121  tote = 0; maxe=-1; art::Ptr<simb::MCParticle> maxp;
122 
123  std::vector< art::Ptr<recob::Hit> > allHits = fmtht.at(i_t);
124 
125  std::vector<anab::BackTrackerHitMatchingData const*> bthmd_vec;
126  std::vector< art::Ptr<simb::MCParticle> > matchedParticlePtrs;
127 
128  art::FindManyP<simb::MCParticle,anab::BackTrackerHitMatchingData>
129  particles_per_hit(hitListHandle, evt, fHitParticleAssnLabel);
130 
131  for(size_t i_h=0; i_h<allHits.size(); ++i_h){
132  bthmd_vec.clear(); matchedParticlePtrs.clear();
133  particles_per_hit.get(allHits[i_h].key(),matchedParticlePtrs,bthmd_vec);
134 
135  for(size_t i_p=0; i_p<matchedParticlePtrs.size(); ++i_p){
136  trkide[ matchedParticlePtrs[i_p]->TrackId() ] += bthmd_vec[i_p]->energy;
137  tote += bthmd_vec[i_p]->energy;
138  if( trkide[ matchedParticlePtrs[i_p]->TrackId() ] > maxe ){
139  maxe = trkide[ matchedParticlePtrs[i_p]->TrackId() ];
140  maxp = matchedParticlePtrs[i_p];
141  }
142  }//end loop over particles per hit
143 
144  }//end loop over hits
145 
146  btdata.cleanliness = maxe/tote;
147  if(maxe>0)
148  MCPartTrackassn->addSingle(trkPtr, maxp, btdata);
149 
150  }//end loop over tracks
151 
152  evt.put(std::move(MCPartTrackassn));
153 } // Produce
BEGIN_PROLOG could also be cerr
TCEvent evt
Definition: DataStructs.cxx:8

Member Data Documentation

art::InputTag t0::MCParticleTrackMatching::fHitModuleLabel
private

Definition at line 62 of file MCParticleTrackMatching_module.cc.

art::InputTag t0::MCParticleTrackMatching::fHitParticleAssnLabel
private

Definition at line 63 of file MCParticleTrackMatching_module.cc.

art::InputTag t0::MCParticleTrackMatching::fTrackHitAssnLabel
private

Definition at line 61 of file MCParticleTrackMatching_module.cc.

art::InputTag t0::MCParticleTrackMatching::fTrackModuleLabel
private

Definition at line 60 of file MCParticleTrackMatching_module.cc.


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