#ifndef PADTRACKMAKER_HH #define PADTRACKMAKER_HH //---------------------- // Base Class Headers -- //---------------------- #include "Framework/APPModule.hh" #include "Framework/AbsParmString.hh" #include "Framework/AbsParmBool.hh" #include "Framework/AbsParmGeneral.hh" #ifdef CDF //#include "BaBar/Cdf.hh" #endif //------------------------------------ // Collaborating Class Declarations -- //------------------------------------ //class HepHist1D; //class HepHist2D; //class HepNtuple; #include "TrackingObjects/Storable/CdfTrackView.hh" #include "TrackingSI/TrackFitting/SiKalmanFitter.hh" #include "TrackingCT/TrackSetComp.hh" // --------------------- // -- Class Interface -- // --------------------- class PadTrackMaker : public AppModule { public: // Constructors PadTrackMaker( const char* const theName = "PadTrackMaker", const char* const theDescription = "Makes the PAD tracks collection"); // Destructor virtual ~PadTrackMaker( ); // Operations virtual AppResult beginJob(AbsEvent* anEvent); virtual AppResult beginRun(AbsEvent* theRun); virtual AppResult event( AbsEvent* anEvent ); virtual AppResult endJob( AbsEvent* anEvent ); virtual AppModule* clone( const char* cloneName ); const char* rcsId( ) const; private: // TalkTo's AbsParmBool _debug; AbsParmString _processName; AbsParmString _outputCollectionDesc; AbsParmGeneral _cotAxialSegmentsMin; AbsParmGeneral _cotStereoSegmentsMin; AbsParmBool _constrainT0; AbsParmGeneral _ptMinForT0Constraint; AbsParmBool _dropHits; AbsParmGeneral _dropHitRoad; AbsParmBool _removeSiDuplicates; float _PionMass; // // Ntuple //bool initNtuple; //HepNtuple* PadTrackNtuple; SiKalmanFitter * _kalFitter; bool makePadTracks( EventRecord* anEvent, CdfTrackColl* padOut ); CdfTrack_clnk COTparent(CdfTrack_clnk inputTrack); CdfTrack_clnk OIparent(CdfTrack_clnk inputTrack); bool PassesPadOIZ(CdfTrack_clnk trk); bool PassesPadOIS(CdfTrack_clnk trk); bool PassesPadOI(CdfTrack_clnk trk); bool PassesPadCOT(CdfTrack_clnk trk); bool PassesPadSi(CdfTrack_clnk trk); bool PassesPadIO(CdfTrack_clnk trk); void drop90ZHits( CdfTrack * trk); void dropSASHits( CdfTrack * trk); TrackSet cotTrkSet; bool isDuplicateIO(CdfTrack_clnk trk); bool isDuplicateSi(CdfTrack_clnk trk, CdfTrackView_h trackView); }; //---------------------------------------------------------------- // This companion class provides the sort comparator for tracks -- //---------------------------------------------------------------- class DecrPt{ public: bool operator() ( const CdfTrack_clnk s, const CdfTrack_clnk t ) { return s->pt() > t->pt(); } bool operator() (const CdfTrackView::const_iterator & s, const CdfTrackView::const_iterator &t) { return (*s)->pt() > (*t)->pt(); } }; #endif