//////////////////////////////////////////////////////////////////// /// \class RAT::QClusterCut /// /// \brief Tries to tag flasher events for data cleaning /// /// \author Richie Bonventre /// \contact Eric Marzec /// /// REVISION HISTORY:\n /// 31 June 2011 : Richie Bonventre - first version /// 13 Nov 2014 : Eric Marzec - Made myself contact person. /// /// \details This processor tags events that are considered /// "qcluster" events. These are events with a cluster in /// electronics space of hits related to a high charge hit /// nearby. They can then be removed from an analysis by /// setting a data cleaning mask. /// /// /// /// //////////////////////////////////////////////////////////////////// #ifndef __RAT_QClusterCut__ #define __RAT_QClusterCut__ #include #include #include namespace RAT { class QClusterCut : public DataCleaningProc { public: QClusterCut() : DataCleaningProc("qcluster",1){}; virtual ~QClusterCut(){}; virtual Processor::Result DSEvent(DS::Run& run, DS::Entry& ds); void BeginOfRun(DS::Run&); protected: virtual Processor::Result Event(DS::Entry& ds, DS::EV& ev); std::vector fBadCrates; ///< List of crates to ignore std::vector fBadCards; ///< List of FECs to ignore std::vector fBadChans; ///< List of channels to ignore int fWindowSize; ///< size of sliding window for cluster identification int fMaxHits; ///< max number of hits in sliding window int fMaxBad; ///< threshold of channels with bad charge needed to reject event int fCutMode; ///< 1=raw adc only, 2=ped subtracted only, 3=whatevers available int fUnCalQHSLow; ///< Charge ranges for calibrated or uncalibrated to consider a hit bad int fUnCalQHSHigh; int fUnCalQHLLow; int fUnCalQHLHigh; int fUnCalQLXLow; int fUnCalQLXHigh; int fCalQHSLow; int fCalQHSHigh; int fCalQHLLow; int fCalQHLHigh; int fCalQLXLow; int fCalQLXHigh; }; } // namespace RAT #endif