#include #include #include IControlSampleBase::IControlSampleBase(std::string SampleName, int Prescale){ fSampleName = SampleName; fPrescale = Prescale; fSelectedEvents = 0; // Get flag to enable control sample fEnable = COMET::IOARuntimeParameters::Get().GetParameterI(Form("oaControlSample.%s.Enable", fSampleName.c_str())); // default constructor rejects all triggers fValidTriggerMask = 0; // Get Verbosity fVerbose = COMET::IOARuntimeParameters::Get().GetParameterI(Form("oaControlSample.%s.Verbose", fSampleName.c_str())); // Get Prescale int ps = COMET::IOARuntimeParameters::Get().GetParameterI(Form("oaControlSample.%s.Prescale", fSampleName.c_str())); SetPrescale(ps); // Get Option to Make Histogram file fMakeHistoFile = COMET::IOARuntimeParameters::Get().GetParameterI(Form("oaControlSample.%s.MakeHistoFile", fSampleName.c_str())); fFileName = ""; } /// Currently this method doesn't do much, but in the future we /// might implement some prescaling corrections here. bool IControlSampleBase::IsEventSelected(COMET::ICOMETEvent& event) { // right type of trigger? // For MC the trigger bits are not set, so we can't do this check. int partition = event.GetContext().GetPartition(); // right type of trigger? if( (event.GetHeader().GetTriggerBits() & fValidTriggerMask) == 0 && !(partition & COMET::ICOMETContext::kMCData && (unsigned int)partition != 0xdeadbeef)){ return false; } bool selected = IsEventSelectedInternal(event); if(selected)fSelectedEvents++; selected = selected && (fSelectedEvents%fPrescale == 0); // if Verbose, reported selected events if(fVerbose && selected){ std::cout << Form("%s: Selected event %d: %d th selected event: Prescale %d", fSampleName.c_str(), event.GetEventId(), fSelectedEvents, fPrescale) << std::endl; } return selected; } void IControlSampleBase::OpenHistoFile(std::string s){ SetHistoFileName(s); fHistoFile = new TFile(s.c_str(), "RECREATE"); std::cout << Form("%s: Opening Histogram file %s\n", fSampleName.c_str(), fHistoFileName.c_str()); InitHistograms(); return; } void IControlSampleBase::EndJob(){ if(fMakeHistoFile){ // output the histogram files fHistoFile->cd(); TList *list = gDirectory->GetList(); list->Write("allhists", TObject::kSingleKey); fHistoFile->Write(); fHistoFile->Close(); } return; }