MarlinTPC  1.2.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
marlintpc::TopoFinder Class Reference

TopoFinder contains finding algorithms for clusters of TrackerPulses. More...

#include <TopoFinder.h>

Inheritance diagram for marlintpc::TopoFinder:
marlintpc::HitTrackFinderTopoProcessor

Public Member Functions

std::string getRevision ()
 Get the revision of the TopoFinder. More...
 

Static Public Member Functions

static void addTrackerHitVecs (EVENT::TrackerHitVec **vectorToAddTo, EVENT::TrackerHitVec **vectorToBeAdded)
 A helper function to add the contents of one TrackerHitVec to another. More...
 

Protected Member Functions

 TopoFinder ()
 The constructor.
 
EVENT::TrackerHit * findHit (std::multimap< gear::GlobalPadIndex, EVENT::TrackerPulse * >::iterator currentPulseIter)
 Find the hit which contains the given pulse. More...
 
std::list< EVENT::TrackerPulse * > findNeighbouringPulses (gear::GlobalPadIndex currentPadIndex, EVENT::TrackerPulse *currentPulse, const gear::TPCModule &module)
 Iteratively searches for pulses that are on neighbouring pads. More...
 
EVENT::TrackerHitVec * findHitsInNeighbouringRows (EVENT::TrackerHit *hit, int moduleID)
 Find Hits in the neighbouring rows. More...
 
EVENT::TrackerHitVec * findHitsInRange (gear::GlobalPadIndex index1, gear::GlobalPadIndex index2, float minADCIndex, float maxADCIndex)
 Find all the hits in the given pad range. More...
 

Protected Attributes

int _maxEmptyPads
 Maximum number of consecuitve empty pads in cluster.
 
int _minHitSize
 Minimum number of pads per hit.
 
float _maxTimeSpread
 Maximum time between pulses in a cluster in ??
 
int _minTrackHits
 Minimum number of hits on track.
 
int _maxSkipRows
 Maximum number of empty rows.
 
float _vDrift
 Optional: Set drift velocity in case there is no conditions data.
 
float _zAnode
 The position of the readout anode (positive value, TPC currently assumed to be symmetrical)
 
int _negativeZDirection
 Flag to determine if the second half TPC is reconstructed, which looks in the negative z direction. More...
 
std::multimap
< gear::GlobalPadIndex,
EVENT::TrackerPulse * > * 
_pulsesByIndex
 A multimap containing the pad index and the corresponding pulse. More...
 
unsigned int _recursionCounter
 A nested helper class for sorting gear::GlobalPadIndex. More...
 

Detailed Description

TopoFinder contains finding algorithms for clusters of TrackerPulses.

It operates on a std::multimap<int, TrackerPulse*> which contains the pulses to search in a multimap sorted by the corresponding pad index.

Attention
!! Be careful with the iterators! They are deleted from the map and are invalid afterwards!!
Author
Martin Killenberg, University of Bonn

This class is not a processor, but called from them.

Member Function Documentation

void marlintpc::TopoFinder::addTrackerHitVecs ( EVENT::TrackerHitVec **  vectorToAddTo,
EVENT::TrackerHitVec **  vectorToBeAdded 
)
static

A helper function to add the contents of one TrackerHitVec to another.

Be aware that you need handlers of TrackerHitVec because the pointers are modified!

Attention
vectorToBeAdded is 0 after calling this function!

Referenced by findHitsInNeighbouringRows().

EVENT::TrackerHit * marlintpc::TopoFinder::findHit ( std::multimap< gear::GlobalPadIndex, EVENT::TrackerPulse * >::iterator  currentPulseIter)
protected

Find the hit which contains the given pulse.

It looks for pulses in neighbouring pads.

References _minHitSize, _negativeZDirection, _pulsesByIndex, _vDrift, _zAnode, and findNeighbouringPulses().

Referenced by findHitsInRange(), and marlintpc::HitTrackFinderTopoProcessor::processEvent().

EVENT::TrackerHitVec * marlintpc::TopoFinder::findHitsInNeighbouringRows ( EVENT::TrackerHit *  hit,
int  moduleID 
)
protected

Find Hits in the neighbouring rows.

If empty rows are allowed this does not necessarrily mean next neighbouring rows. (Empty row means there is no hit in this row which matches the given hit. It does not have to be completely empty.)

References _maxSkipRows, _recursionCounter, addTrackerHitVecs(), and findHitsInRange().

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

EVENT::TrackerHitVec * marlintpc::TopoFinder::findHitsInRange ( gear::GlobalPadIndex  index1,
gear::GlobalPadIndex  index2,
float  minADCIndex,
float  maxADCIndex 
)
protected

Find all the hits in the given pad range.

There might be more than one hit in case of a looper or an interaction.

References _pulsesByIndex, and findHit().

Referenced by findHitsInNeighbouringRows().

std::list< TrackerPulse * > marlintpc::TopoFinder::findNeighbouringPulses ( gear::GlobalPadIndex  currentPadIndex,
EVENT::TrackerPulse *  currentPulse,
const gear::TPCModule &  module 
)
protected

Iteratively searches for pulses that are on neighbouring pads.

Erase the iterator of this pulse from the global map before calling this function to avoid finding it twice. The reference to the module is passed so it does not have to be retrieved over and over again...

References _maxEmptyPads, and _pulsesByIndex.

Referenced by findHit().

std::string marlintpc::TopoFinder::getRevision ( )

Get the revision of the TopoFinder.

Use this information in the processor which uses or is derived from this class:

run->parameters().setValue( _processorName + "_revision",
*                          std::string("$Rev:$  using TopoFinder " + myTopoFinder->getRevision()));
*  

Referenced by marlintpc::HitTrackFinderTopoProcessor::processRunHeader().

Member Data Documentation

int marlintpc::TopoFinder::_negativeZDirection
protected

Flag to determine if the second half TPC is reconstructed, which looks in the negative z direction.

In this case the x and z coordinate are multiplied with -1 (endplate rotated by 180 degress around y axis wrt. first endplate)

Referenced by findHit(), and marlintpc::HitTrackFinderTopoProcessor::HitTrackFinderTopoProcessor().

std::multimap<gear::GlobalPadIndex, EVENT::TrackerPulse*>* marlintpc::TopoFinder::_pulsesByIndex
protected

A multimap containing the pad index and the corresponding pulse.

Sorted by pad index.

Referenced by findHit(), findHitsInRange(), findNeighbouringPulses(), and marlintpc::HitTrackFinderTopoProcessor::processEvent().

unsigned int marlintpc::TopoFinder::_recursionCounter
protected

A nested helper class for sorting gear::GlobalPadIndex.

They are sorted by moduleID, and within moduleID in padIndex

Referenced by findHitsInNeighbouringRows().


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