/** * \file ExtTrkingAlg.h * \author Elena Vannuccini */ #ifndef exttrkingalg_h #define exttrkingalg_h // PAMELA classes #include #include #include #include #include //#include // ROOT classes #include #include #include #include #include class ExtTrkingAlg : public TObject { private: Int_t _whichAlg; ///< algorythm id TClonesArray *_trkArray; ///< array of tracks TrkLevel1* _trk_l1; TrkLevel2* _trk_l2; CaloLevel1* _cal_l1; CaloLevel2* _cal_l2; ToFLevel2* _tof_l2; Int_t _sel_nClstrMAX; ///< selection parameter: maximum number of cluster Int_t _sel_nPlaneXMIN; ///< selection parameter: minimum number of hit x-views Int_t _sel_nPlaneYMIN; ///< selection parameter: minimum number of hit y-views Int_t _alg_nClFixX; ///< algorythm parameter: n.hits required on X view Int_t _alg_nClFixY; ///< algorythm parameter:n.hits required on X view Int_t _alg_nTrackMAX; ///< algorythm parameter: maximum num. of track candidates Bool_t _debug; public: void Reset(); ///< Reset the algorythm void Clear(Option_t* option = ""); ///< Clear the event void Delete(){ delete _trkArray; }; ExtTrkingAlg(Int_t id=0); // ExtTrkingAlg(){ ExtTrkingAlg(0); }; ~ExtTrkingAlg(){ Delete(); }; // ExtTrkingAlg(Int_t id); void SetTrkLevel1( TrkLevel1* trkl1 = NULL ) { _trk_l1 = trkl1;}; void SetTrkLevel2( TrkLevel2* trkl2 = NULL ) { _trk_l2 = trkl2; }; void SetToFLevel2( ToFLevel2* tofl2 = NULL ) { _tof_l2 = tofl2; }; void SetCaloLevel1( CaloLevel1* call1 = NULL ) { _cal_l1 = call1; }; void SetCaloLevel2( CaloLevel2* call2 = NULL ) { _cal_l2 = call2; }; Bool_t CheckEvent(); ///< pre-selection void ProcessEvent(Bool_t force = false); ///< apply tracking algorythm TClonesArray *GetTrackArray(Bool_t reset = false); void SetSelectionParams(double* par); void SetAlgorythmParams(double* par); void SetDebug(Bool_t dbg = false){ _debug = dbg; }; void Dump(); TClonesArray** GetPointerToTrackArray(){ return &_trkArray; }; }; #endif