#ifndef TRACK_FITTER_KALMAN_PROCESSOR_H #define TRACK_FITTER_KALMAN_PROCESSOR 1 #include "marlin/Processor.h" //#include "lcio.h" //#include #include #include "TrackFitterFactory.h" //#include //namespace AIDA { // // class IHistogram1D; // class IHistogram2D; // // //} namespace marlintpc { /** A processor which instantiates a TrackFitterKalman and fits the tracks with it. * @author M. Killenberg(University of Bonn) * *

Input - Prerequisites

* \li A collection of track candidates (lcio::Tracks) containing the TrackerHits.
* Note: The LCIO::TRBIT_HITS flag has to be set when this collection is created so * the hits are stored in the track. * *

Output

* \li Collection of fitted tracks. * * @param InputTrackCandidates The the name of the input collection of track candidates (default: TPCTrackCandidates) * @param OutputTracks The name of the collection the straight tracks be stored under (default: TPCTracks) * @param SetOutputTransient If not 0 the output collection is set transient (default: 0) * @param TransDefocussing The transverse defocussing in the readout structure \f$\sigma_{0,{\mathrm trans}}\f$ (in mm) (default: 1) * @param LongDefocussing The longitudinal defocussing in the readout structure \f$\sigma_{0,{\mathrm long}}\f$ (in mm) (default: 1) * @param TransDiffusionCoef The transverse diffusion coefficient (in mm/\f$\sqrt{\mathrm mm}\f$) (default: 0) * @param TransDefocussing The longitudinal diffusion coefficient (in mm/\f$\sqrt{\mathrm mm}\f$) (default: 0) * */ class TrackFitterKalmanProcessor : public marlin::Processor { public: /** Default constructor */ TrackFitterKalmanProcessor(); /** Destructor */ ~TrackFitterKalmanProcessor(); /** Return a new instance of this processor */ Processor * newProcessor(); /** In this processor the init function set the * collection parameters for the track collection * and instantiates the TrackFitterFactory */ void init(); /** Called once per run to process the event's header */ void processRunHeader (EVENT::LCRunHeader *run); /** Process event requests a track fitter from the * TrackFitterFactory for each event (to update possible * conditions data). * Afterwards it loops all tracks and fits them. */ virtual void processEvent(EVENT::LCEvent *evt); /** Called for every event - right after processEvent() *has been called for all processors. */ virtual void check (EVENT::LCEvent *evt); /** Called after data processing for clean up in the * inverse order of the init() method so that resources * allocated in the first processor also will be available for * all following processors. */ virtual void end(); protected: /** The name of the input collection of seed tracks */ std::string _input_seed_tracks_collection_name; /** The name of the output collection with the fitted tracks */ std::string _output_tracks_collection_name; /** Give the status which is set to the transient flag of the output collection. * It is an int instead of a boolean, because the processor parameter * cannot be a boolean. * Hits and tracks can be set separately. */ int _outputIsTransient; //< if not 0 the hits collection is set transient //(default 0) EVENT::LCParameters * _trackCollectionParameters; float _transDefocussing, _longDefocussing, _transDiffusionCoef, _longDiffusionCoef; int _nGoodFits, _nBadFits; }; }// namespace marlintoc #endif // TRACKSEEDERPROCESSOR_H