MarlinTPC  1.2.0
Classes | Public Member Functions | Protected Types | Protected Attributes | List of all members
marlintpc::HitSplitter Class Reference

The hit splitter separates hits that are merged. More...

#include <HitSplitter.h>

Classes

struct  Distance
 A nested helper struct to contain two pulses and the distance between them, and sort according to the distance. More...
 
class  SortablePulse
 A helper class to sort pulses according to their pad index. More...
 

Public Member Functions

 HitSplitter (IMPL::LCCollectionVec *SplitHitsCollection, IMPL::LCCollectionVec *PulsesInSplitHitsCollection, float vDrift)
 The constructor needs two collection it can write to: One for the split hits and one for the pulses that are contained in these hists (pulses might be split between hits, so they are not necessarily the same as the input pulses). More...
 
EVENT::TrackerHitVec splitHit (EVENT::TrackerHit const *const)
 The split hits function returns a vector with the split hits. More...
 

Protected Types

typedef std::pair
< std::multiset< SortablePulse >
::iterator, std::multiset
< SortablePulse >::iterator > 
IteratorPair
 

Protected Attributes

IMPL::LCCollectionVec * _splitHitsCollection
 
IMPL::LCCollectionVec * _pulsesInSplitHitsCollection
 
float _vDrift
 The drift velocity.
 

Detailed Description

The hit splitter separates hits that are merged.

In a first step it looks for multiple pulses per channel and regroups the hit candidates so there is only one pulse per channel. It always associates the pulse on the neighbouring channels that are closest in time, if they overlap.

In a second step it searches for minima on a per pad basis, using the SignalSplitter class to separate overapping signals.

Constructor & Destructor Documentation

marlintpc::HitSplitter::HitSplitter ( IMPL::LCCollectionVec *  SplitHitsCollection,
IMPL::LCCollectionVec *  PulsesInSplitHitsCollection,
float  vDrift 
)

The constructor needs two collection it can write to: One for the split hits and one for the pulses that are contained in these hists (pulses might be split between hits, so they are not necessarily the same as the input pulses).

In addition it needs the drift velocity to go from time (in pulses) to space (in the hits).

Member Function Documentation

TrackerHitVec marlintpc::HitSplitter::splitHit ( EVENT::TrackerHit const *  const)

The split hits function returns a vector with the split hits.

If the hit is not split the input hit is returned.

Attention: The split hits that are produced are automatically written to the collection given to the constructor. If you store the hits in an additional collection make sure it has the subSet flag turned on!

The idea behind this is that the hits which have not been split (which are usually already in a collection) and the split ones can be written to one collection (the one with the subSet flag turned on).

: set HAS_BEEN_DIVIDED flag

: this is arbitrary

References _vDrift, marlintpc::HitCandidate::addPulse(), marlintpc::HitCandidate::createTrackerHit(), and marlintpc::SignalSplitter::splitSignal().

Referenced by marlintpc::HitsInTracksSplitterProcessor::processEvent().


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