#include #include using namespace std; namespace RAT { void PrescaleCut::BeginOfRun(DS::Run&) { fLClean = DB::Get()->GetLink("DATACLEANING",fName); fFraction = fLClean->GetD("fraction"); } Processor::Result PrescaleCut::DSEvent(DS::Run&, DS::Entry& ds) { bool pass = true; // If any triggered event fails, they all fail for( size_t iEV = 0; iEV < ds.GetEVCount(); iEV++ ) if( Event(ds, ds.GetEV(iEV)) != OKTRUE ) pass = false; return pass ? OKTRUE : OKFALSE; } Processor::Result PrescaleCut::Event(DS::Entry&, DS::EV& ev) { fPassFlag = true; double rand = G4UniformRand(); if (rand > fFraction) fPassFlag = false; // now update the mask UpdateMask(ev); return fPassFlag ? OKFALSE : OKTRUE; } } // namespace RAT