/* * RefitTrackAction.h * * Created on: 10/may/2010 * Author: N. Mori */ #ifndef REFITTRACKACTION_H_ #define REFITTRACKACTION_H_ #include "../CollectionAction/CollectionAction.h" #include /*! @brief Track refitting. * * This action refits the TRK track using only level 2 data. This means that it will use the same * clusters which are associated to the track, with the possibility to mask or shift some of them. * If a refit fails the event will not be discarded (since this is not a cut) but chi2 will be negative, * and the event will be subsequently discarded by an eventual TrkPhSinCut. * This action can be used also before TrkPhSinCut, since it checks for the existence of at least * one track before refitting. The refitted track is always the first "physical" track; the ordering * criterion can be set using #SetSortingMethod. If, instead, this action is placed after a TrkPhsinCut * it is not necessary to set this parameter, since the value used for TrkPhSinCut will be automatically * used (of course, it can be used as well if a different ordering may be needed). * For a complete reprocess and fit use #ReprocessTrackAction. */ class RefitTrackAction: public CollectionAction { public: /*! @brief Constructor * * @param actionName The action's name. * @param spreadX The width of the gaussian spread applied to all the X view coordinates, in cm. * @param spreadY The width of the gaussian spread applied to all the Y view coordinates, in cm. * @param maskedViews The excluded views. 0 means that all the views will be used, while #T6X means that the * X view of the last tracker plane will be ignored. For other combinations, sum up the values * defined in #TRKLAYERS: T1X + T1Y will exclude the whole first plane, for example. * @param trkParamsFile The file containing the tracker parameters to be used. Default value corresponds to the standard * parameters used for data reduction. */ RefitTrackAction(const char *actionName, float spreadX = 0., float spreadY = 0., int maskedViews = 0., TString trkParamsFile = "") : CollectionAction(actionName), _spreadX(spreadX), _spreadY(spreadY), _maskedViews(maskedViews), _trkParamsFile( trkParamsFile), _sortingMethod(NULL) { } /*! @brief Destructor. */ ~RefitTrackAction() { } /* @brief The refitting procedure. * * This will refit the tracker track introducing the mask and spreads defined in the constructor. */ void OnGood(PamLevel2 *event); /*! @brief The finalization procedure. */ void Finalize() { } /* @brief Set the track sorting criterion * * The action refits the first track, which is the one obtained with PamLevel2::GetTrack(0). This method can * be used to set the sorting criterion used to determine which track is the first. * * @param sortingMethod The sorting method. Format has to be compatible with the argument of PamLevel2::SetSortingMethod. */ void SetSortingMethod(const char *sortingMethod) { _sortingMethod = sortingMethod; } private: float _spreadX, _spreadY; int _maskedViews; static TRandom3 *_r3; static long int _currEvent; float _xmBackup[6], _ymBackup[6]; int _layerXBackup[6], _layerYBackup[6]; TString _trkParamsFile; static TString _currTrkParamsFile; const char *_sortingMethod; }; #endif /* REFITTRACKACTION_H_ */