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

Public Member Functions

 CRHitRemoval (fhicl::ParameterSet const &pset)
 
virtual void produce (art::Event &e)
 
virtual void beginJob ()
 Begin job method. More...
 
virtual void endJob ()
 End job method. More...
 

Private Types

using HitPtrVector = std::vector< art::Ptr< recob::Hit >>
 

Private Member Functions

void collectPFParticleHits (const recob::PFParticle *pfParticle, const art::Handle< std::vector< recob::PFParticle >> &pfParticleHandle, const art::FindManyP< recob::Cluster > &partToClusAssns, const art::FindManyP< recob::Hit > &clusToHitAssns, HitPtrVector &hitVec)
 
void copyAllHits (std::vector< art::Ptr< recob::Hit >> &, art::FindOneP< recob::Wire > &, recob::HitCollectionCreator &)
 
void copyInTimeHits (std::vector< art::Ptr< recob::Hit >> &, art::FindOneP< recob::Wire > &, recob::HitCollectionCreator &)
 
void FilterHits (HitPtrVector &hits, HitPtrVector &used_hits)
 

Private Attributes

std::vector< std::string > fCosmicProducerLabels
 List of cosmic tagger producers. More...
 
std::string fHitProducerLabel
 The full collection of hits. More...
 
std::string fPFParticleProducerLabel
 PFParticle producer. More...
 
std::vector< std::string > fTrackProducerLabels
 Track producer. More...
 
std::vector< std::string > fAssnProducerLabels
 Track to PFParticle assns producer. More...
 
std::vector< double > fCosmicTagThresholds
 Thresholds for tagging. More...
 
int fEndTickPadding
 Padding the end tick. More...
 
int fDetectorWidthTicks
 Effective drift time in ticks. More...
 
int fMinTickDrift
 Starting tick. More...
 
int fMaxTickDrift
 Ending tick. More...
 
int fMaxOutOfTime
 Max hits that can be out of time before rejecting. More...
 
int fNumEvent
 Number of events seen. More...
 
int fNumCRRejects
 Number of tracks produced. More...
 

Detailed Description

Definition at line 48 of file CRHitRemoval_module.cc.

Member Typedef Documentation

using CRHitRemoval::HitPtrVector = std::vector<art::Ptr<recob::Hit>>
private

Definition at line 60 of file CRHitRemoval_module.cc.

Constructor & Destructor Documentation

CRHitRemoval::CRHitRemoval ( fhicl::ParameterSet const &  pset)
explicit

Constructor.

Arguments:

pset - Fcl parameters.

Definition at line 109 of file CRHitRemoval_module.cc.

110  : EDProducer{pset}, fNumEvent(0), fNumCRRejects(0)
111 {
112  fCosmicProducerLabels = pset.get<std::vector<std::string>>("CosmicProducerLabels");
113  fHitProducerLabel = pset.get<std::string>("HitProducerLabel");
114  fPFParticleProducerLabel = pset.get<std::string>("PFParticleProducerLabel");
115  fTrackProducerLabels = pset.get<std::vector<std::string>>("TrackProducerLabels");
116  fAssnProducerLabels = pset.get<std::vector<std::string>>("AssnProducerLabels");
117  fCosmicTagThresholds = pset.get<std::vector<double>>("CosmicTagThresholds");
118  fEndTickPadding = pset.get<int>("EndTickPadding", 50);
119  fMaxOutOfTime = pset.get<int>("MaxOutOfTime", 4);
120 
121  // let HitCollectionCreator declare that we are going to produce
122  // hits and associations with wires and raw digits
123  // (with no particular product label)
124  recob::HitCollectionCreator::declare_products(producesCollector(), "", true, false);
125 
126  // Report.
127  mf::LogInfo("CRHitRemoval") << "CRHitRemoval configured\n";
128 }
std::string fPFParticleProducerLabel
PFParticle producer.
int fEndTickPadding
Padding the end tick.
int fNumCRRejects
Number of tracks produced.
static void declare_products(art::ProducesCollector &collector, std::string instance_name="", bool doWireAssns=true, bool doRawDigitAssns=true)
Declares the hit products we are going to fill.
Definition: HitCreator.cxx:248
std::vector< std::string > fAssnProducerLabels
Track to PFParticle assns producer.
std::string fHitProducerLabel
The full collection of hits.
std::vector< double > fCosmicTagThresholds
Thresholds for tagging.
int fMaxOutOfTime
Max hits that can be out of time before rejecting.
std::vector< std::string > fTrackProducerLabels
Track producer.
int fNumEvent
Number of events seen.
std::vector< std::string > fCosmicProducerLabels
List of cosmic tagger producers.

Member Function Documentation

void CRHitRemoval::beginJob ( )
virtual

Begin job method.

Definition at line 133 of file CRHitRemoval_module.cc.

134 {
135  auto const* geo = lar::providerFrom<geo::Geometry>();
136  auto const clock_data = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataForJob();
137  auto const detp =
138  art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataForJob(clock_data);
139 
140  float const samplingRate = sampling_rate(clock_data);
141  float const driftVelocity = detp.DriftVelocity(detp.Efield(), detp.Temperature()); // cm/us
142 
143  fDetectorWidthTicks = 2 * geo->DetHalfWidth() / (driftVelocity * samplingRate / 1000);
144  fMinTickDrift =
145  clock_data.Time2Tick(clock_data.TriggerTime()); // this is the hardware trigger time
147 }
int fEndTickPadding
Padding the end tick.
int fMaxTickDrift
Ending tick.
int fDetectorWidthTicks
Effective drift time in ticks.
double sampling_rate(DetectorClocksData const &data)
Returns the period of the TPC readout electronics clock.
int fMinTickDrift
Starting tick.
void CRHitRemoval::collectPFParticleHits ( const recob::PFParticle pfParticle,
const art::Handle< std::vector< recob::PFParticle >> &  pfParticleHandle,
const art::FindManyP< recob::Cluster > &  partToClusAssns,
const art::FindManyP< recob::Hit > &  clusToHitAssns,
HitPtrVector hitVec 
)
private

Find all hits in PFParticle hierarchy

Arguments:

pfParticle - the top level PFParticle to have hits removed pfParticleHandle - handle to the PFParticle objects partToClusAssns - list of PFParticle to Cluster associations clusToHitAssns - list of Cluster to Hit associations hitVec - the current list of hits

This recursively called method will remove all hits associated to an input PFParticle and, in addition, will call itself for all daughters of the input PFParticle

Definition at line 419 of file CRHitRemoval_module.cc.

425 {
426  // Recover the clusters associated to the input PFParticle
427  std::vector<art::Ptr<recob::Cluster>> clusterVec = partToClusAssns.at(pfParticle->Self());
428 
429  int minTick(fMinTickDrift);
430  int maxTick(fMaxTickDrift);
431 
432  // Loop over the clusters and grab the associated hits
433  for (const auto& cluster : clusterVec) {
434  std::vector<art::Ptr<recob::Hit>> clusHitVec = clusToHitAssns.at(cluster.key());
435  hitVec.insert(hitVec.end(), clusHitVec.begin(), clusHitVec.end());
436 
437  int minHitTick = (*std::min_element(clusHitVec.begin(),
438  clusHitVec.end(),
439  [](const auto& hit, const auto& min) {
440  return hit->PeakTimeMinusRMS() < min->PeakTimeMinusRMS();
441  }))
442  ->PeakTimeMinusRMS();
443  int maxHitTick = (*std::max_element(clusHitVec.begin(),
444  clusHitVec.end(),
445  [](const auto& hit, const auto& max) {
446  return hit->PeakTimePlusRMS() > max->PeakTimePlusRMS();
447  }))
448  ->PeakTimePlusRMS();
449 
450  if (minHitTick < minTick) minTick = minHitTick;
451  if (maxHitTick < maxTick) maxTick = maxHitTick;
452  }
453 
454  // Loop over the daughters of this particle and remove their hits as well
455  for (const auto& daughterId : pfParticle->Daughters()) {
456  art::Ptr<recob::PFParticle> daughter(pfParticleHandle, daughterId);
457 
459  daughter.get(), pfParticleHandle, partToClusAssns, clusToHitAssns, hitVec);
460  }
461 
462  return;
463 }
const std::vector< size_t > & Daughters() const
Returns the collection of daughter particles.
Definition: PFParticle.h:114
size_t Self() const
Returns the index of this particle.
Definition: PFParticle.h:92
process_name cluster
Definition: cheaterreco.fcl:51
process_name hit
Definition: cheaterreco.fcl:51
int fMaxTickDrift
Ending tick.
void collectPFParticleHits(const recob::PFParticle *pfParticle, const art::Handle< std::vector< recob::PFParticle >> &pfParticleHandle, const art::FindManyP< recob::Cluster > &partToClusAssns, const art::FindManyP< recob::Hit > &clusToHitAssns, HitPtrVector &hitVec)
int fMinTickDrift
Starting tick.
void CRHitRemoval::copyAllHits ( std::vector< art::Ptr< recob::Hit >> &  inputHits,
art::FindOneP< recob::Wire > &  wireAssns,
recob::HitCollectionCreator newHitCollection 
)
private

Definition at line 466 of file CRHitRemoval_module.cc.

469 {
470  for (const auto& hitPtr : inputHits) {
471  art::Ptr<recob::Wire> wire = wireAssns.at(hitPtr.key());
472 
473  // just copy it
474  newHitCollection.emplace_back(*hitPtr, wire);
475  }
476 
477  return;
478 }
void emplace_back(recob::Hit &&hit, art::Ptr< recob::Wire > const &wire=art::Ptr< recob::Wire >(), art::Ptr< raw::RawDigit > const &digits=art::Ptr< raw::RawDigit >())
Adds the specified hit to the data collection.
Definition: HitCreator.cxx:290
void CRHitRemoval::copyInTimeHits ( std::vector< art::Ptr< recob::Hit >> &  inputHits,
art::FindOneP< recob::Wire > &  wireAssns,
recob::HitCollectionCreator newHitCollection 
)
private

Definition at line 481 of file CRHitRemoval_module.cc.

484 {
485  for (const auto& hitPtr : inputHits) {
486  // Check on out of time hits
487  if (hitPtr->PeakTimeMinusRMS() < fMinTickDrift || hitPtr->PeakTimePlusRMS() > fMaxTickDrift)
488  continue;
489 
490  art::Ptr<recob::Wire> wire = wireAssns.at(hitPtr.key());
491 
492  // just copy it
493  newHitCollection.emplace_back(*hitPtr, wire);
494  }
495 
496  return;
497 }
int fMaxTickDrift
Ending tick.
void emplace_back(recob::Hit &&hit, art::Ptr< recob::Wire > const &wire=art::Ptr< recob::Wire >(), art::Ptr< raw::RawDigit > const &digits=art::Ptr< raw::RawDigit >())
Adds the specified hit to the data collection.
Definition: HitCreator.cxx:290
int fMinTickDrift
Starting tick.
void CRHitRemoval::endJob ( )
virtual

End job method.

Definition at line 528 of file CRHitRemoval_module.cc.

529 {
530  double aveCRPerEvent = fNumEvent > 0 ? double(fNumCRRejects) / double(fNumEvent) : 0.;
531 
532  mf::LogInfo("CRHitRemoval") << "CRHitRemoval statistics:\n"
533  << " Number of events = " << fNumEvent << "\n"
534  << " Number of Cosmic Rays found = " << fNumCRRejects << ", "
535  << aveCRPerEvent << " average/event";
536 }
int fNumCRRejects
Number of tracks produced.
int fNumEvent
Number of events seen.
void CRHitRemoval::FilterHits ( HitPtrVector hits,
HitPtrVector used_hits 
)
private

Definition at line 509 of file CRHitRemoval_module.cc.

510 {
511  if (used_hits.size() > 0) {
512  // Make sure both hit collections are sorted.
513  std::stable_sort(hits.begin(), hits.end());
514  std::stable_sort(used_hits.begin(), used_hits.end());
515 
516  // Do set difference operation.
517  std::vector<art::Ptr<recob::Hit>>::iterator it = std::set_difference(
518  hits.begin(), hits.end(), used_hits.begin(), used_hits.end(), hits.begin());
519 
520  // Truncate hit collection.
521  hits.erase(it, hits.end());
522  }
523 }
void CRHitRemoval::produce ( art::Event &  evt)
virtual

Produce method.

Arguments:

evt - Art event.

This is the primary method. The goal is to produce a list of recob::Hit objects which are a "clean" subset of all hits and which are believed to be due to a neutrino interaction. It does this by considering input CosmicTag objects, relating them to PFParticles/Tracks and removing the hits associated to those objects which are believed to be Cosmic Rays.

Definition at line 163 of file CRHitRemoval_module.cc.

164 {
165  ++fNumEvent;
166 
167  // Start by looking up the original hits
168  art::Handle<std::vector<recob::Hit>> hitHandle;
169  evt.getByLabel(fHitProducerLabel, hitHandle);
170 
171  // If there are no hits then there should be no output
172  if (!hitHandle.isValid()) return;
173 
174  // also get the associated wires
175  // Note that we no longer assume RawDigit associations and will not preserve them if they exist
176  // we assume they have been created by the same module as the hits
177  art::FindOneP<recob::Wire> ChannelHitWires(hitHandle, evt, fHitProducerLabel);
178 
179  HitPtrVector ChHits;
180  art::fill_ptr_vector(ChHits, hitHandle);
181 
182  // this object contains the hit collection
183  // and its associations to wires and raw digits:
184  recob::HitCollectionCreator hcol(evt, ChannelHitWires.isValid(), false);
185 
186  // Now recover thre remaining collections of objects in the event store that we need
187  // Recover the PFParticles that are ultimately associated to tracks
188  // This will be the key to recovering the hits
189  art::Handle<std::vector<recob::PFParticle>> pfParticleHandle;
190  evt.getByLabel(fPFParticleProducerLabel, pfParticleHandle);
191 
192  // Without a valid collection of PFParticles we can't do the hit removal
193  if (!pfParticleHandle.isValid()) {
194  copyAllHits(ChHits, ChannelHitWires, hcol);
195 
196  // put the hit collection and associations into the event
197  hcol.put_into(evt);
198 
199  return;
200  }
201 
202  // Recover the clusters so we can do associations to the hits
203  // In theory the clusters come from the same producer as the PFParticles
204  art::Handle<std::vector<recob::Cluster>> clusterHandle;
205  evt.getByLabel(fPFParticleProducerLabel, clusterHandle);
206 
207  // If there are no clusters then something is really wrong
208  if (!clusterHandle.isValid()) {
209  copyAllHits(ChHits, ChannelHitWires, hcol);
210 
211  // put the hit collection and associations into the event
212  hcol.put_into(evt);
213 
214  return;
215  }
216 
217  // Build the list of cosmic tag producers, associations and thresholds
218  std::vector<art::Handle<std::vector<anab::CosmicTag>>> cosmicHandleVec;
219  std::vector<std::map<int, std::vector<art::Ptr<recob::Track>>>> cosmicToTrackVecMapVec;
220  std::vector<std::map<int, std::vector<art::Ptr<recob::PFParticle>>>> trackToPFParticleVecMapVec;
221  std::vector<double> thresholdVec;
222 
223  for (size_t idx = 0; idx != fCosmicProducerLabels.size(); idx++) {
224  std::string& handleLabel(fCosmicProducerLabels[idx]);
225 
226  art::Handle<std::vector<anab::CosmicTag>> cosmicHandle;
227  evt.getByLabel(handleLabel, cosmicHandle);
228 
229  if (cosmicHandle.isValid()) {
230  // Look up the associations to tracks
231  art::FindManyP<recob::Track> cosmicTrackAssns(cosmicHandle, evt, handleLabel);
232 
233  // Get the handle to the tracks
234  art::Handle<std::vector<recob::Track>> trackHandle;
235  evt.getByLabel(fTrackProducerLabels[idx], trackHandle);
236 
237  // This should be the case
238  if (trackHandle.isValid()) {
239  std::map<int, std::vector<art::Ptr<recob::Track>>> cosmicToTrackVecMap;
240  std::map<int, std::vector<art::Ptr<recob::PFParticle>>> trackToPFParticleVecMap;
241 
242  // Loop through the cosmic tags
243  for (size_t cosmicIdx = 0; cosmicIdx < cosmicHandle->size(); cosmicIdx++) {
244  art::Ptr<anab::CosmicTag> cosmicTag(cosmicHandle, cosmicIdx);
245 
246  std::vector<art::Ptr<recob::Track>> cosmicToTrackVec =
247  cosmicTrackAssns.at(cosmicTag.key());
248 
249  cosmicToTrackVecMap[cosmicTag.key()] = cosmicToTrackVec;
250 
251  art::FindManyP<recob::PFParticle> trackPFParticleAssns(
252  trackHandle, evt, fAssnProducerLabels[idx]);
253 
254  for (auto& track : cosmicToTrackVec) {
255  std::vector<art::Ptr<recob::PFParticle>> trackToPFParticleVec =
256  trackPFParticleAssns.at(track.key());
257 
258  for (auto& pfParticle : trackToPFParticleVec)
259  trackToPFParticleVecMap[track.key()].push_back(pfParticle);
260  }
261  }
262 
263  // Store these collections
264  cosmicHandleVec.emplace_back(cosmicHandle);
265  cosmicToTrackVecMapVec.emplace_back(cosmicToTrackVecMap);
266  trackToPFParticleVecMapVec.emplace_back(trackToPFParticleVecMap);
267  thresholdVec.push_back(fCosmicTagThresholds[idx]);
268  }
269  }
270  }
271 
272  // No cosmic tags then nothing to do here
273  if (cosmicHandleVec.empty()) {
274  copyAllHits(ChHits, ChannelHitWires, hcol);
275 
276  // put the hit collection and associations into the event
277  hcol.put_into(evt);
278 
279  return;
280  }
281 
282  // Now we walk up the remaining list of associations needed to go from CR tags to hits
283  // We'll need to go from tracks to PFParticles
284  // From PFParticles we go to clusters
285  art::FindManyP<recob::Cluster> clusterAssns(pfParticleHandle, evt, fPFParticleProducerLabel);
286 
287  // Likewise, recover the collection of associations to hits
288  art::FindManyP<recob::Hit> clusterHitAssns(clusterHandle, evt, fPFParticleProducerLabel);
289 
290  // No point double counting hits
291  std::set<const recob::PFParticle*> taggedSet;
292 
293  // Start the identification of hits to remove. The outer loop is over the various producers of
294  // the CosmicTag objects we're examininig
295  for (size_t idx = 0; idx != cosmicHandleVec.size(); idx++) {
296  // Obviously, dereference the handle and associations
297  const art::Handle<std::vector<anab::CosmicTag>>& cosmicHandle(cosmicHandleVec[idx]);
298  const std::map<int, std::vector<art::Ptr<recob::Track>>>& crTagTrackVec(
299  cosmicToTrackVecMapVec[idx]);
300  const std::map<int, std::vector<art::Ptr<recob::PFParticle>>>& trackToPFParticleVecMap(
301  trackToPFParticleVecMapVec[idx]);
302 
303  for (size_t crIdx = 0; crIdx != cosmicHandle->size(); crIdx++) {
304  art::Ptr<anab::CosmicTag> cosmicTag(cosmicHandle, crIdx);
305 
306  // If this was tagged as a CR muon then we have work to do!
307  if (cosmicTag->CosmicScore() > thresholdVec[idx]) {
308  // Recover the associated track
309  std::vector<art::Ptr<recob::Track>> trackVec(crTagTrackVec.at(cosmicTag.key()));
310 
311  // Loop over the tracks (almost always only 1)
312  for (const auto& track : trackVec) {
313  std::map<int, std::vector<art::Ptr<recob::PFParticle>>>::const_iterator
314  trackToPFParticleVecItr = trackToPFParticleVecMap.find(track.key());
315 
316  if (trackToPFParticleVecItr != trackToPFParticleVecMap.end()) {
317  // Loop through them
318  for (const auto& pfParticlePtr : trackToPFParticleVecItr->second) {
319  // Get bare pointer
320  const recob::PFParticle* pfParticle = pfParticlePtr.get();
321 
322  // A cosmic ray must be a primary (by fiat)
323  while (!pfParticle->IsPrimary())
324  pfParticle =
325  art::Ptr<recob::PFParticle>(pfParticleHandle, pfParticle->Parent()).get();
326 
327  // Add to our list of tagged PFParticles
328  taggedSet.insert(pfParticle);
329  }
330  }
331  }
332  }
333  }
334  }
335 
336  // If no PFParticles have been tagged then nothing to do
337  if (!taggedSet.empty()) {
338  // This may all seem backwards... but what you want to do is remove all the hits which are associated to tagged
339  // cosmic ray tracks/PFParticles and what you want to leave is all other hits. This includes hits on other PFParticles
340  // as well as unassociated (as yet) hits.
341  // One also needs to deal with a slight complication with hits in 2D which are shared between untagged PFParticles and
342  // tagged ones... we should leave these in.
343 
344  // All that is left is to go through the PFParticles which have not been tagged and collect up all their hits
345  // to output to our new collection
346  // Note that this SHOULD take care of the case of shared 2D hits automagically since if the PFParticle has not
347  // been tagged and it shares hits we'll pick those up here.
348  HitPtrVector taggedHits;
349  HitPtrVector untaggedHits;
350 
351  // Loop through the PFParticles and build out the list of hits on untagged PFParticle trees
352  for (const auto& pfParticle : *pfParticleHandle) {
353  // Start with only primaries
354  if (!pfParticle.IsPrimary()) continue;
355 
356  // Temporary container for these hits
357  HitPtrVector tempHits;
358 
359  // Find the hits associated to this untagged PFParticle
360  collectPFParticleHits(&pfParticle, pfParticleHandle, clusterAssns, clusterHitAssns, tempHits);
361 
362  // One more possible chance at identifying tagged hits...
363  // Check these hits to see if any lie outside time window
364  bool goodHits(true);
365 
366  if (taggedSet.find(&pfParticle) != taggedSet.end()) goodHits = false;
367 
368  if (goodHits) {
369  int nOutOfTime(0);
370 
371  for (const auto& hit : tempHits) {
372  // Check on out of time hits
373  if (hit->PeakTimeMinusRMS() < fMinTickDrift || hit->PeakTimePlusRMS() > fMaxTickDrift)
374  nOutOfTime++;
375 
376  if (nOutOfTime > fMaxOutOfTime) {
377  goodHits = false;
378  break;
379  }
380  }
381  }
382 
383  if (goodHits)
384  std::copy(tempHits.begin(), tempHits.end(), std::back_inserter(untaggedHits));
385  else
386  std::copy(tempHits.begin(), tempHits.end(), std::back_inserter(taggedHits));
387  }
388 
389  // First task - remove hits from the tagged hit collection that are inthe untagged hits (shared hits)
390  FilterHits(taggedHits, untaggedHits);
391 
392  // Now filter the tagged hits from the total hit collection
393  FilterHits(ChHits, taggedHits);
394  }
395 
396  // Copy our new hit collection to the output
397  copyInTimeHits(ChHits, ChannelHitWires, hcol);
398 
399  // put the hit collection and associations into the event
400  hcol.put_into(evt);
401 }
std::string fPFParticleProducerLabel
PFParticle producer.
void copyAllHits(std::vector< art::Ptr< recob::Hit >> &, art::FindOneP< recob::Wire > &, recob::HitCollectionCreator &)
process_name use argoneut_mc_hitfinder track
process_name hit
Definition: cheaterreco.fcl:51
A class handling a collection of hits and its associations.
Definition: HitCreator.h:508
std::vector< std::string > fAssnProducerLabels
Track to PFParticle assns producer.
size_t Parent() const
Definition: PFParticle.h:96
std::vector< art::Ptr< recob::Hit >> HitPtrVector
std::string fHitProducerLabel
The full collection of hits.
int fMaxTickDrift
Ending tick.
bool IsPrimary() const
Returns whether the particle is the root of the flow.
Definition: PFParticle.h:86
std::vector< double > fCosmicTagThresholds
Thresholds for tagging.
void collectPFParticleHits(const recob::PFParticle *pfParticle, const art::Handle< std::vector< recob::PFParticle >> &pfParticleHandle, const art::FindManyP< recob::Cluster > &partToClusAssns, const art::FindManyP< recob::Hit > &clusToHitAssns, HitPtrVector &hitVec)
Hierarchical representation of particle flow.
Definition: PFParticle.h:44
int fMaxOutOfTime
Max hits that can be out of time before rejecting.
void copyInTimeHits(std::vector< art::Ptr< recob::Hit >> &, art::FindOneP< recob::Wire > &, recob::HitCollectionCreator &)
std::vector< std::string > fTrackProducerLabels
Track producer.
T copy(T const &v)
int fNumEvent
Number of events seen.
TCEvent evt
Definition: DataStructs.cxx:8
int fMinTickDrift
Starting tick.
void FilterHits(HitPtrVector &hits, HitPtrVector &used_hits)
std::vector< std::string > fCosmicProducerLabels
List of cosmic tagger producers.

Member Data Documentation

std::vector<std::string> CRHitRemoval::fAssnProducerLabels
private

Track to PFParticle assns producer.

Definition at line 84 of file CRHitRemoval_module.cc.

std::vector<std::string> CRHitRemoval::fCosmicProducerLabels
private

List of cosmic tagger producers.

Definition at line 80 of file CRHitRemoval_module.cc.

std::vector<double> CRHitRemoval::fCosmicTagThresholds
private

Thresholds for tagging.

Definition at line 86 of file CRHitRemoval_module.cc.

int CRHitRemoval::fDetectorWidthTicks
private

Effective drift time in ticks.

Definition at line 90 of file CRHitRemoval_module.cc.

int CRHitRemoval::fEndTickPadding
private

Padding the end tick.

Definition at line 88 of file CRHitRemoval_module.cc.

std::string CRHitRemoval::fHitProducerLabel
private

The full collection of hits.

Definition at line 81 of file CRHitRemoval_module.cc.

int CRHitRemoval::fMaxOutOfTime
private

Max hits that can be out of time before rejecting.

Definition at line 93 of file CRHitRemoval_module.cc.

int CRHitRemoval::fMaxTickDrift
private

Ending tick.

Definition at line 92 of file CRHitRemoval_module.cc.

int CRHitRemoval::fMinTickDrift
private

Starting tick.

Definition at line 91 of file CRHitRemoval_module.cc.

int CRHitRemoval::fNumCRRejects
private

Number of tracks produced.

Definition at line 97 of file CRHitRemoval_module.cc.

int CRHitRemoval::fNumEvent
private

Number of events seen.

Definition at line 96 of file CRHitRemoval_module.cc.

std::string CRHitRemoval::fPFParticleProducerLabel
private

PFParticle producer.

Definition at line 82 of file CRHitRemoval_module.cc.

std::vector<std::string> CRHitRemoval::fTrackProducerLabels
private

Track producer.

Definition at line 83 of file CRHitRemoval_module.cc.


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