/////////////////////////////////////////////////////////////////////////////
// Conditional return on a data cleaning flag. Returns OKTRUE if the
// data cleaning flag is applied and set, if the flag is applied and not
// set it returns OKFALSE. If the flag has not been applied the result
// is OK. The current pass will be used unless the user overrides this.
// The processor will FAIL if there is more than one event.
//
// \author: P G Jones
// \contact Rob Knapik
//
// REVISION HISTORY:
// 2014-10-24 : P Jones - New file.
// 2017-03-27 : R. Knapik
// -Checks the dCApplied flags in the current pass,
// if the first applied bit is zero, fPass = fPass -1.
// -Now you can pass in a blindness value to check for
// bitmasks stored in BLINDNESS.ratdb. This will be only
// used by the proccesing group to filter the data set
// into closed and open data sets.
// 2017-01-17 : R Lane
// -Modifying code such that it wont automatically fail a DS:Event
// if it has more than one EV (important if running the processor on MC)
//
/////////////////////////////////////////////////////////////////////////////
#ifndef __RAT_DataCleaningCutProc_hh__
#define __RAT_DataCleaningCutProc_hh__
#include
#include
#include
#include
namespace RAT
{
class DataCleaningCutProc : public Processor
{
public:
// Create a new cut processor, cuts events with the wrong classification
DataCleaningCutProc() : Processor("DataCleaningCutProc"), fPass(-1), fBlindness(0) { }
// Destroy the processor
virtual ~DataCleaningCutProc() { }
// Applies the set integer commands.
//
// param should be pass
// value should be the pass value
// throws ParamUnknown if param is not pass
virtual void SetI( const std::string& param, const int value );
// Applies the set string commands.
//
// param should be flag
// value should be the name of the flag
// throws ParamUnknown if param is not flag
virtual void SetS( const std::string& param, const std::string& value );
// Gets the current pass number
//
// run: Data structure for the run
virtual void BeginOfRun( DS::Run& run );
// Process the event
//
// Conditional on the classifier value
//
// run: Data structure for the run
// ds: Data structure for the event
// returns OKTRUE if the flag has been applied and is set
virtual Processor::Result DSEvent( DS::Run& run, DS::Entry& /*ds*/ );
protected:
std::vector fFlags; // The flags to check
std::vector fMasks; // Optional DB defined masks to check
Int_t fPass; // The pass to consider
unsigned int fBlindness; // to check the BLINDNESS.ratdb file instead
};
} // namespace RAT
#endif