MarlinTPC  1.2.0
Classes | Public Member Functions | Static Public Member Functions | List of all members
marlintpc::MMHitFinderProcessor Class Reference
Inheritance diagram for marlintpc::MMHitFinderProcessor:

Classes

class  HitCandidate
 

Public Member Functions

virtual Processor * newProcessor ()
 
virtual void init ()
 
virtual void processRunHeader (EVENT::LCRunHeader *run)
 
virtual void processEvent (EVENT::LCEvent *evt)
 
virtual void check (EVENT::LCEvent *evt)
 
virtual void end ()
 

Static Public Member Functions

static double calcRowDep (const double *x, int index, int row)
 
static const std::vector< double > calcParArray (const double *x, int nPar, int nMod, int modIndex, int rowIndex)
 

Member Function Documentation

void marlintpc::MMHitFinderProcessor::processEvent ( EVENT::LCEvent *  evt)
virtual

the processor is supposed to find "hits" in "rows" The input is a collection of pulses: (charge,time,moduleID,cellID + qualityFlag) The output is a collection of hits: ( [x,y,z] + covariance matrix, charge + qualityFlag )

steering input: - minimal hit size

  • minimum signal for a hit
  • max number of dead/empty pads within a hit
  • max distance in z/time between pulses
  • drift velocity

structurally this happens in a decomposition of: (A) sort the pulses by module & row (B) LOOP: look for pulses that belong together in a row (for all rows in a module, for all modules) (C) create the "Hit" by calculating all of its parameters


the basic data structure for the hit search is a single row; the row is a simple vector of the Pulse pointers: vector<TrackerPulse*>

Pulses are grouped into rows, and the rows into modules. This is represented by a map of maps of vectors of TrackerPulses, typedefed to SortedPulseMap. –> SortedPulseMap ==> map<int, map<int, vector<TrackerPulse*> >;

a helper class is instantiated to hold the hit candidates: "HitCandidate" the temporary result of the hit candidate search is stored in a vector


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