#include IEmptyBeamSpillControlSample::IEmptyBeamSpillControlSample() : IControlSampleBase("EmptyBeamSpill"){ AddValidTrigger(COMET::Trigger::kBeamSpill); // Get Prescale factor from parameters file double potMax = COMET::IOARuntimeParameters::Get().GetParameterD("oaControlSample.EmptyBeamSpill.POTMax"); SetPOTMax(potMax); } void IEmptyBeamSpillControlSample::InitHistograms(){ // histogram of POT/spill hpot = new TH1F("hpot", ";POT (10^{13} protons", 100, 0.0, 20.0); } bool IEmptyBeamSpillControlSample::IsEventSelectedInternal(COMET::ICOMETEvent& event) { // Check again that we have a beam spill if( !event.CheckTrigger(COMET::Trigger::kBeamSpill) )return false; // Get the spill number and time for the event int spill = event.GetHeader().GetSpillNumber(); int mcmTime = event.GetHeader().GetMCMSecond(); // Get the Beam Data if( !COMET::IRawBeamDataSingleton::Get().GetSpill(spill, mcmTime, 1) ) return false; // Get the POT double pot = COMET::IRawBeamDataSingleton::Get().GetProtonsPerSpill(4); if(fMakeHistoFile) hpot->Fill(pot/1E13); // accept event if it has 0 POT (less than the threshold set by fPOTMax) return (pot < fPOTMax); }