Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
skim::CellHitSkimmer Class Reference
Inheritance diagram for skim::CellHitSkimmer:
art::EDFilter art::ProducerBase art::Consumer art::EngineCreator art::ProductRegistryHelper

Public Types

using ModuleType = EDFilter
 
using WorkerType = WorkerT< EDFilter >
 
template<typename UserConfig >
using Table = ProducerBase::Table< UserConfig >
 

Public Member Functions

 CellHitSkimmer (fhicl::ParameterSet const &p)
 
virtual ~CellHitSkimmer ()
 
 CellHitSkimmer (CellHitSkimmer const &)=delete
 
 CellHitSkimmer (CellHitSkimmer &&)=delete
 
CellHitSkimmeroperator= (CellHitSkimmer const &)=delete
 
CellHitSkimmeroperator= (CellHitSkimmer &&)=delete
 
bool filter (art::Event &e) override
 
void reconfigure (fhicl::ParameterSet const &p)
 
void beginJob () override
 
bool beginSubRun (art::SubRun &sr) override
 
bool endSubRun (art::SubRun &sr) override
 
bool beginRun (art::Run &r) override
 
bool endRun (art::Run &r) override
 
void endJob () override
 
template<typename PROD , BranchType B = InEvent>
ProductID getProductID (std::string const &instanceName={}) const
 
template<typename PROD , BranchType B>
ProductID getProductID (ModuleDescription const &moduleDescription, std::string const &instanceName) const
 
bool modifiesEvent () const
 
template<typename T , BranchType = InEvent>
ProductToken< Tconsumes (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< Tconsumes (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< TconsumesView (InputTag const &it)
 
template<typename T , BranchType = InEvent>
ProductToken< TmayConsume (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< TmayConsume (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< TmayConsumeView (InputTag const &it)
 
base_engine_tcreateEngine (seed_t seed)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make, label_t const &engine_label)
 
seed_t get_seed_value (fhicl::ParameterSet const &pset, char const key[]="seed", seed_t const implicit_seed=-1)
 

Static Public Member Functions

static cet::exempt_ptr< Consumernon_module_context ()
 

Static Public Attributes

static constexpr bool Pass {true}
 
static constexpr bool Fail {false}
 

Protected Member Functions

CurrentProcessingContext const * currentContext () const
 
void validateConsumedProduct (BranchType const bt, ProductInfo const &pi)
 
void prepareForJob (fhicl::ParameterSet const &pset)
 
void showMissingConsumes () const
 

Private Member Functions

bool CheckEvent (art::Event &e)
 
bool EvaluateSlices (art::Event &e, bool const &goodEvent, std::string const &label, skim::Evaluator &evaluator)
 

Private Attributes

skim::EvaluatorMap fEvaluatorMap
 object that determines if we keep a slice or not More...
 
art::ServiceHandle< geo::GeometryfGeom
 geometry service More...
 
art::ServiceHandle< geo::LiveGeometryfLiveGeom
 geometry service More...
 
art::ServiceHandle< ds::DetectorServicefDetService
 detector service More...
 
art::ServiceHandle< nova::dbi::RunHistoryServicefRH
 RunHistory service. More...
 
novadaq::cnv::DetId fDetId
 detector id for the current run More...
 
SelectedSlices fSlicesPerType
 map instance labels to the number of passing slices More...
 
skim::SpillEvaluator fSpillEval
 tool to check the quality of a spill More...
 
std::string fEventQualityLabel
 label of module creating event quality More...
 
std::string fSpillDataLabel
 label of module creating event quality More...
 
sumdata::POTSum fPOTSumSubRun
 total pot for the current subrun More...
 
float fMaxFracDCM3Hits
 maximum fraction of hits in DCM3 More...
 
float fMinFracDCMEdgeMatch
 minimum edge match fraction of DCMs More...
 
int fMaxMissingDCMS
 maximum number of DCMs allowed to be missing in the ND More...
 
TH1F * fFracDCM3Hits
 
TH1F * fFracDCMEdgeMatch
 
TH1F * fMissingDCMS
 
TH1F * fDeltaTToSpill
 
TH1F * fPOTInSpill
 
TH1F * fHornCurrent
 
TH1F * fBeamXPos
 
TH1F * fBeamYPos
 
TH1F * fBeamWidth
 
TTree * fPOTTree
 
sumdata::POTSum fPOTSum
 
int fRun
 
int fEpoch
 
std::set< std::pair< int, int > > fNumuList
 
std::set< std::pair< int, int > > fNueList
 
bool fCherryPick
 set to true to grab a predefined list of events More...
 
bool fIsCosmic
 in order to look at cosmic events, don't evaluate the spill More...
 

Detailed Description

Definition at line 61 of file CellHitSkimmer_module.cc.

Member Typedef Documentation

using art::EDFilter::ModuleType = EDFilter
inherited

Definition at line 37 of file EDFilter.h.

template<typename UserConfig >
using art::EDFilter::Table = ProducerBase::Table<UserConfig>
inherited

Definition at line 46 of file EDFilter.h.

using art::EDFilter::WorkerType = WorkerT<EDFilter>
inherited

Definition at line 38 of file EDFilter.h.

Constructor & Destructor Documentation

skim::CellHitSkimmer::CellHitSkimmer ( fhicl::ParameterSet const &  p)
explicit

Definition at line 140 of file CellHitSkimmer_module.cc.

References fEvaluatorMap, and reconfigure().

141 : fSpillEval(p.get<fhicl::ParameterSet>("SpillEvaluation"))
142 {
143 
144  this->reconfigure(p);
145 
146  for(auto itr : fEvaluatorMap){
147  // create a new vector of rb::CellHits that are from the
148  // slices that we want to skim out of the full sample
149  produces< std::vector<rb::CellHit> >(itr.first);
150 
151  // make an art::PtrVector<rb::Cluster> that contains
152  // the slices we want to skim out of the sample. This
153  // collection will be used in the next module, AnalysisSkimmer,
154  // to enable looking at only the interesting slices without having
155  // to use the SliceEvaluator again.
156  produces< art::PtrVector<rb::Cluster> >(itr.first);
157  produces< std::vector<int> >(itr.first);
158  }
159 
160  produces< sumdata::POTSum, art::InSubRun>();
161 
162  return;
163 }
const char * p
Definition: xmltok.h:285
void reconfigure(fhicl::ParameterSet const &p)
skim::SpillEvaluator fSpillEval
tool to check the quality of a spill
skim::EvaluatorMap fEvaluatorMap
object that determines if we keep a slice or not
skim::CellHitSkimmer::~CellHitSkimmer ( )
virtual

Definition at line 166 of file CellHitSkimmer_module.cc.

References fEvaluatorMap.

167 {
168  for(auto itr : fEvaluatorMap){
169  delete itr.second;
170  }
171  fEvaluatorMap.clear();
172 }
skim::EvaluatorMap fEvaluatorMap
object that determines if we keep a slice or not
skim::CellHitSkimmer::CellHitSkimmer ( CellHitSkimmer const &  )
delete
skim::CellHitSkimmer::CellHitSkimmer ( CellHitSkimmer &&  )
delete

Member Function Documentation

void skim::CellHitSkimmer::beginJob ( )
overridevirtual

Reimplemented from art::EDFilter.

Definition at line 175 of file CellHitSkimmer_module.cc.

References fBeamWidth, fBeamXPos, fBeamYPos, fDeltaTToSpill, fEpoch, fFracDCM3Hits, fFracDCMEdgeMatch, fHornCurrent, fMissingDCMS, fNueList, fPOTInSpill, fPOTSum, fPOTTree, fRun, sumdata::POTSum::goodspills, art::TFileDirectory::make(), make_pair(), sumdata::POTSum::totgoodpot, sumdata::POTSum::totpot, and sumdata::POTSum::totspills.

176 {
177  // make histograms for each selection criteria
179 
180  fFracDCM3Hits = tfs->make<TH1F>("fracDCM3Hits", ";Fraction DCM3 Hits;Spills", 100, 0., 1. );
181  fFracDCMEdgeMatch = tfs->make<TH1F>("fracDCMEdgeMatch", ";Fraction DCM3 Hits;Spills", 100, 0., 1. );
182  fMissingDCMS = tfs->make<TH1F>("missingDCMS", ";Number Missing DCMs;Spills", 100, 0., 100.);
183  fDeltaTToSpill = tfs->make<TH1F>("deltaTToSpill", ";#Delta T (#mus);Spills", 100, 0., 1.e4);
184  fPOTInSpill = tfs->make<TH1F>("potInSpill", ";POT (#times10^{12});Spills", 100, 0., 50. );
185  fHornCurrent = tfs->make<TH1F>("hornCurrent", ";Horn Current (A);Spills", 200, -250., -150.);
186  fBeamXPos = tfs->make<TH1F>("beamXPos", ";Beam X Position (mm);Spills", 500, -2.5, 2.5 );
187  fBeamYPos = tfs->make<TH1F>("beamYPos", ";Beam Y Position (mm);Spills", 500, -2.5, 2.5 );
188  fBeamWidth = tfs->make<TH1F>("beamWidth", ";Beam Width (mm);Spills", 200, 0., 2. );
189 
190  fPOTTree = tfs->make<TTree>("potTree", "POT Summary Information");
191  fPOTTree->Branch("totpot", &fPOTSum.totpot);
192  fPOTTree->Branch("totgoodpot", &fPOTSum.totgoodpot);
193  fPOTTree->Branch("totspills", &fPOTSum.totspills);
194  fPOTTree->Branch("goodspills", &fPOTSum.goodspills);
195  fPOTTree->Branch("epoch", &fEpoch);
196  fPOTTree->Branch("run", &fRun);
197 
198 // fNumuList.emplace(std::make_pair(14828, 192569));
199 // fNumuList.emplace(std::make_pair(15974, 88744));
200 // fNumuList.emplace(std::make_pair(16453, 178062));
201 // fNumuList.emplace(std::make_pair(16708, 234543));
202 // fNumuList.emplace(std::make_pair(16730, 101478));
203 // fNumuList.emplace(std::make_pair(16751, 45215));
204 // fNumuList.emplace(std::make_pair(16895, 88217));
205 // fNumuList.emplace(std::make_pair(17953, 256887));
206 // fNumuList.emplace(std::make_pair(18068, 379778));
207 // fNumuList.emplace(std::make_pair(18342, 609061));
208 // fNumuList.emplace(std::make_pair(18417, 582977));
209 // fNumuList.emplace(std::make_pair(18464, 546039));
210 // fNumuList.emplace(std::make_pair(18571, 50129));
211 // fNumuList.emplace(std::make_pair(18572, 255330));
212 // fNumuList.emplace(std::make_pair(18639, 141206));
213 // fNumuList.emplace(std::make_pair(18653, 219065));
214 // fNumuList.emplace(std::make_pair(18756, 597960));
215 // fNumuList.emplace(std::make_pair(18791, 765587));
216 // fNumuList.emplace(std::make_pair(18810, 469509));
217 // fNumuList.emplace(std::make_pair(18862, 820267));
218 // fNumuList.emplace(std::make_pair(18963, 229864));
219 // fNumuList.emplace(std::make_pair(19004, 318354));
220 // fNumuList.emplace(std::make_pair(19058, 568646));
221 // fNumuList.emplace(std::make_pair(19070, 260204));
222 // fNumuList.emplace(std::make_pair(19084, 908450));
223 // fNumuList.emplace(std::make_pair(19152, 789340));
224 // fNumuList.emplace(std::make_pair(19260, 359000));
225 // fNumuList.emplace(std::make_pair(19327, 248695));
226 // fNumuList.emplace(std::make_pair(19332, 221786));
227 // fNumuList.emplace(std::make_pair(19420, 561111));
228 // fNumuList.emplace(std::make_pair(19423, 20137));
229 // fNumuList.emplace(std::make_pair(19425, 903289));
230 // fNumuList.emplace(std::make_pair(19468, 512430));
231 // fNumuList.emplace(std::make_pair(19476, 110767));
232 
233 // fNumuList.emplace(std::make_pair(14828, 284245))
234 // fNumuList.emplace(std::make_pair(14825, 216705))
235 // fNumuList.emplace(std::make_pair(15014, 150279))
236 
237  fNueList.emplace(std::make_pair(14109, 271884));
238  fNueList.emplace(std::make_pair(15975, 27652));
239  fNueList.emplace(std::make_pair(18625, 89150));
240  fNueList.emplace(std::make_pair(19067, 358535));
241  fNueList.emplace(std::make_pair(19361, 142949));
242  fNueList.emplace(std::make_pair(15330, 11978));
243  fNueList.emplace(std::make_pair(17103, 27816));
244  fNueList.emplace(std::make_pair(19165, 920415));
245  fNueList.emplace(std::make_pair(19193, 188331));
246  fNueList.emplace(std::make_pair(19264, 369602));
247  fNueList.emplace(std::make_pair(19578, 98069));
248 
249 
250  return;
251 }
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
std::set< std::pair< int, int > > fNueList
T * make(ARGS...args) const
int goodspills
Definition: POTSum.h:31
int totspills
Definition: POTSum.h:30
double totgoodpot
normalized by 10^12 POT
Definition: POTSum.h:28
double totpot
normalized by 10^12 POT
Definition: POTSum.h:27
bool skim::CellHitSkimmer::beginRun ( art::Run r)
overridevirtual

Reimplemented from art::EDFilter.

Definition at line 254 of file CellHitSkimmer_module.cc.

References ds::DetectorService::DetId(), fDetId, fDetService, fPOTSum, sumdata::POTSum::goodspills, sumdata::POTSum::totgoodpot, sumdata::POTSum::totpot, and sumdata::POTSum::totspills.

255 {
256 
257  fDetId = fDetService->DetId();
258 
259  fPOTSum.totpot = 0.;
260  fPOTSum.totgoodpot = 0.;
261  fPOTSum.totspills = 0;
262  fPOTSum.goodspills = 0;
263 
264  return true;
265 }
novadaq::cnv::DetId DetId() const
What detector are we in?
art::ServiceHandle< ds::DetectorService > fDetService
detector service
novadaq::cnv::DetId fDetId
detector id for the current run
int goodspills
Definition: POTSum.h:31
int totspills
Definition: POTSum.h:30
double totgoodpot
normalized by 10^12 POT
Definition: POTSum.h:28
double totpot
normalized by 10^12 POT
Definition: POTSum.h:27
bool skim::CellHitSkimmer::beginSubRun ( art::SubRun sr)
overridevirtual

Reimplemented from art::EDFilter.

Definition at line 268 of file CellHitSkimmer_module.cc.

References fPOTSumSubRun, sumdata::POTSum::goodspills, sumdata::POTSum::totgoodpot, sumdata::POTSum::totpot, and sumdata::POTSum::totspills.

269 {
270 
271  fPOTSumSubRun.totpot = 0.;
275 
276  return true;
277 }
sumdata::POTSum fPOTSumSubRun
total pot for the current subrun
int goodspills
Definition: POTSum.h:31
int totspills
Definition: POTSum.h:30
double totgoodpot
normalized by 10^12 POT
Definition: POTSum.h:28
double totpot
normalized by 10^12 POT
Definition: POTSum.h:27
bool skim::CellHitSkimmer::CheckEvent ( art::Event e)
private

Definition at line 457 of file CellHitSkimmer_module.cc.

References confusionMatrixTree::count, skim::SpillEvaluator::EvaluateSpill(), art::EventID::event(), fBeamWidth, fBeamXPos, fBeamYPos, fCherryPick, fDeltaTToSpill, fDetId, fEventQualityLabel, fFracDCM3Hits, fFracDCMEdgeMatch, fHornCurrent, fIsCosmic, fLiveGeom, fMaxFracDCM3Hits, fMaxMissingDCMS, fMinFracDCMEdgeMatch, fMissingDCMS, fNueList, fNumuList, fPOTInSpill, fPOTSum, fPOTSumSubRun, fSpillDataLabel, fSpillEval, nova::dbi::RunHistory::GetConfiguration(), art::DataViewImpl::getValidHandle(), nova::dbi::RunHistory::GoodDiBlockMask(), sumdata::POTSum::goodspills, MECModelEnuComparisons::i, art::Event::id(), art::Event::isRealData(), novadaq::cnv::kFARDET, ana::kFilteredRunList, novadaq::cnv::kNEARDET, LOG_DEBUG, make_pair(), geo::LiveGeometry::NDropouts(), rh, art::Event::run(), sumdata::POTSum::totgoodpot, sumdata::POTSum::totpot, and sumdata::POTSum::totspills.

Referenced by filter().

458 {
459 
460  if(fCherryPick){
461  auto runEvent = std::make_pair(e.run(), e.id().event());
462  if(fNumuList.count(runEvent) < 1 &&
463  fNueList .count(runEvent) < 1) return false;
464  else
465  LOG_DEBUG("CellHitSkimmer")
466  << "run: " << runEvent.first << " event: " << runEvent.second;
467  }
468 
469  bool goodQuality = true;
470  bool goodSpill = true;
471 
472  if(!fIsCosmic){
473  //Only check spill if it's not a cosmic file (cosmic files have no spill info)
474  LOG_DEBUG("CellHitSkimmer") << "Looking for valid handle for spill data";
476  if( spillData.failedToGet() ) goodSpill = false;
477  else{
478 
479  LOG_DEBUG("CellHitSkimmer") << "Found valid handle for spill data";
480 
481  fDeltaTToSpill->Fill(1.e-3*spillData->deltaspilltimensec);
482  fPOTInSpill ->Fill(spillData->spillpot);
483  fHornCurrent ->Fill(spillData->hornI);
484  fBeamXPos ->Fill(spillData->posx);
485  fBeamYPos ->Fill(spillData->posy);
486  fBeamWidth ->Fill(spillData->widthx);
487 
488  goodSpill = fSpillEval.EvaluateSpill(*spillData);
489 
490  fPOTSum.totpot += spillData->spillpot;
491  fPOTSum.totspills += 1;
492  fPOTSumSubRun.totpot += spillData->spillpot;
494  if(goodSpill){
495  fPOTSum.totgoodpot += spillData->spillpot;
496  fPOTSum.goodspills += 1;
497  fPOTSumSubRun.totgoodpot += spillData->spillpot;
499  }
500  }// end we found a SpillData object
501  }// end it's not a cosmic file
502 
503  // check the data quality for this event (spill)
505 
506  if( eventQual.failedToGet() ){
507  goodQuality = false;
508  LOG_DEBUG("CellHitSkimmer") << "Failed to get EventQuality object";
509  }
510  else {
511  fFracDCM3Hits ->Fill(eventQual->fracdcm3hits );
512  fFracDCMEdgeMatch->Fill(eventQual->dcmedgematchfrac);
513  fMissingDCMS ->Fill(eventQual->nmissingdcms );
514 
516  (eventQual->fracdcm3hits > fMaxFracDCM3Hits ||
517  eventQual->nmissingdcms > fMaxMissingDCMS)
518  ) ||
521  (e.isRealData() &&
522  eventQual->dcmedgematchfrac < fMinFracDCMEdgeMatch)
523  )
524  ) // if FD
525  ) goodQuality = false;
526  }
527 
528  LOG_DEBUG("CellHitSkimmer")
529  << "Event quality checks "
530  << eventQual->fracdcm3hits << "<" << fMaxFracDCM3Hits << "\n"
531  << eventQual->nmissingdcms << "<" << fMaxMissingDCMS << "\n"
532  << eventQual->dcmedgematchfrac << ">" << fMinFracDCMEdgeMatch << "(FD only)";
533 
534  // check the run is not in a list of runs to filter
535  if( ana::kFilteredRunList.count(e.run()) > 0 ) goodQuality = false;
536 
537  // some of the MC may have had the same incorrect masks applied as the data
538  // so check that here for both data and MC
540 
542  std::bitset<14> binary (rh->GoodDiBlockMask()&rh->GetConfiguration());
543 
544  LOG_DEBUG("CellHitSkimmer")
545  << "mask: "
546  << binary.to_string();
547 
548  int masksize = 0 ;
549  for (int i = 0; i < 14; ++i){
550  if (binary[i]) ++masksize;
551  else{
552  if (masksize > 3) break;
553  masksize = 0;
554  }
555  }
556  if (masksize < 4) goodQuality = false;
557 
558  // unsigned int dibfirst = 0;
559  // unsigned int diblast = 0;
560  //
561  // if (dibmask) {
562  // int iD;
563  // iD=0; while (!((dibmask>>iD)&1)) iD++; dibfirst=iD+1;
564  // iD=0; while (dibmask>>iD) iD++; diblast=iD;
565  // }
566 
567  // std::bitset<14> binary(dibmask);
568  // for (int i = 0; i < 14; ++i){
569  // unsigned int dbcount = i+1;
570  // if (dbcount >= dibfirst &&
571  // dbcount <= diblast &&
572  // binary[i] == 0) return false;
573  // }
574 
575  }// end if in the FD
576 
577  LOG_DEBUG("CellHitSkimmer")
578  << "Result of CheckEvent: "
579  << " spill: " << goodSpill
580  << " dq: " << goodQuality;
581 
582  if(!goodSpill || !goodQuality) return false;
583 
584  return true;
585 }
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
art::ServiceHandle< geo::LiveGeometry > fLiveGeom
geometry service
sumdata::POTSum fPOTSumSubRun
total pot for the current subrun
TH2 * rh
Definition: drawXsec.C:5
bool fCherryPick
set to true to grab a predefined list of events
float fMinFracDCMEdgeMatch
minimum edge match fraction of DCMs
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
std::set< std::pair< int, int > > fNumuList
bool isRealData() const
Definition: Event.h:83
Far Detector at Ash River, MN.
skim::SpillEvaluator fSpillEval
tool to check the quality of a spill
std::string fEventQualityLabel
label of module creating event quality
std::string fSpillDataLabel
label of module creating event quality
bool fIsCosmic
in order to look at cosmic events, don&#39;t evaluate the spill
Near Detector in the NuMI cavern.
std::set< std::pair< int, int > > fNueList
const std::set< int > kFilteredRunList
EventNumber_t event() const
Definition: EventID.h:116
float fMaxFracDCM3Hits
maximum fraction of hits in DCM3
bool EvaluateSpill(sumdata::SpillData const &spillData)
novadaq::cnv::DetId fDetId
detector id for the current run
int goodspills
Definition: POTSum.h:31
int fMaxMissingDCMS
maximum number of DCMs allowed to be missing in the ND
int totspills
Definition: POTSum.h:30
ValidHandle< PROD > getValidHandle(InputTag const &tag) const
int GoodDiBlockMask(int subrun=-1, bool reload=false)
double totgoodpot
normalized by 10^12 POT
Definition: POTSum.h:28
RunNumber_t run() const
Definition: Event.h:77
double totpot
normalized by 10^12 POT
Definition: POTSum.h:27
EventID id() const
Definition: Event.h:56
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::consumes ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::consumes ( InputTag const &  it)
inherited

Definition at line 146 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

147 {
148  if (!moduleContext_)
149  return ProductToken<T>::invalid();
150 
151  consumables_[BT].emplace_back(ConsumableType::Product,
152  TypeID{typeid(T)},
153  it.label(),
154  it.instance(),
155  it.process());
156  return ProductToken<T>{it};
157 }
set< int >::iterator it
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename T , art::BranchType BT>
void art::Consumer::consumesMany ( )
inherited

Definition at line 161 of file Consumer.h.

References T.

162 {
163  if (!moduleContext_)
164  return;
165 
166  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
167 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::consumesView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::consumesView ( InputTag const &  it)
inherited

Definition at line 171 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

172 {
173  if (!moduleContext_)
174  return ViewToken<T>::invalid();
175 
176  consumables_[BT].emplace_back(ConsumableType::ViewElement,
177  TypeID{typeid(T)},
178  it.label(),
179  it.instance(),
180  it.process());
181  return ViewToken<T>{it};
182 }
set< int >::iterator it
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make 
)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make,
label_t const &  engine_label 
)
inherited
CurrentProcessingContext const* art::EDFilter::currentContext ( ) const
protectedinherited
void skim::CellHitSkimmer::endJob ( )
overridevirtual

Reimplemented from art::EDFilter.

Definition at line 348 of file CellHitSkimmer_module.cc.

References fSlicesPerType, LOG_VERBATIM, and confusionMatrixTree::out.

349 {
350  std::stringstream out;
351  for(auto itr : fSlicesPerType){
352  out << "\n" << itr.second.size()
353  << " events were selected by the "
354  << itr.first
355  << " evaluator to have at least one good slice:\n";
356  for(auto slitr : itr.second)
357  out
358  << "\n\t"
359  << slitr.first
360  << " "
361  << slitr.second;
362  }
363 
364  LOG_VERBATIM("CellHitSkimmer")
365  << out.str();
366 
367  return;
368 }
SelectedSlices fSlicesPerType
map instance labels to the number of passing slices
#define LOG_VERBATIM(category)
bool skim::CellHitSkimmer::endRun ( art::Run r)
overridevirtual

Reimplemented from art::EDFilter.

Definition at line 289 of file CellHitSkimmer_module.cc.

References lem_server::ep, fEpoch, fPOTSum, fPOTTree, fRH, fRun, nova::dbi::RunHistory::GetDataEpoch(), sumdata::POTSum::goodspills, LOG_VERBATIM, nova::dbi::DataEpoch::name, art::Run::run(), sumdata::POTSum::totgoodpot, sumdata::POTSum::totpot, and sumdata::POTSum::totspills.

290 {
291  // first get the epoch name and any letter associated with it
292  auto ep = fRH->GetDataEpoch().name;
293  size_t first = ep.find_first_of("abcdefghijklmnopqrstuvwxyz");
294  std::string alpha = ep.substr(first, first + 1);
295 
296  fEpoch = (std::atoi(ep.substr(0, first).c_str()) * 1000 +
297  static_cast<int>(*(alpha.c_str())) );
298  fRun = r.run();
299 
300  LOG_VERBATIM("CellHitSkimmer")
301  << "POT in Run "
302  << fRun
303  << "\ntotal: " << fPOTSum.totpot
304  << "\ngood:" << fPOTSum.totgoodpot
305  << "\nspills:" << fPOTSum.totspills
306  << "\ngood spills:" << fPOTSum.goodspills;
307 
308  fPOTTree->Fill();
309 
310  return true;
311 }
RunNumber_t run() const
Definition: Run.h:47
art::ServiceHandle< nova::dbi::RunHistoryService > fRH
RunHistory service.
std::string name
Definition: RunHistory.h:59
::xsd::cxx::tree::string< char, simple_type > string
Definition: Database.h:154
int goodspills
Definition: POTSum.h:31
int totspills
Definition: POTSum.h:30
#define LOG_VERBATIM(category)
DataEpoch GetDataEpoch()
Definition: RunHistory.h:484
double totgoodpot
normalized by 10^12 POT
Definition: POTSum.h:28
double totpot
normalized by 10^12 POT
Definition: POTSum.h:27
bool skim::CellHitSkimmer::endSubRun ( art::SubRun sr)
overridevirtual

Reimplemented from art::EDFilter.

Definition at line 280 of file CellHitSkimmer_module.cc.

References fPOTSumSubRun, and art::SubRun::put().

281 {
282  std::unique_ptr< sumdata::POTSum > potsum(new sumdata::POTSum(fPOTSumSubRun));
283  sr.put(std::move(potsum));
284 
285  return true;
286 }
sumdata::POTSum fPOTSumSubRun
total pot for the current subrun
ProductID put(std::unique_ptr< PROD > &&)
bool skim::CellHitSkimmer::EvaluateSlices ( art::Event e,
bool const &  goodEvent,
std::string const &  label,
skim::Evaluator evaluator 
)
private

Definition at line 372 of file CellHitSkimmer_module.cc.

References skim::Evaluator::CheckSlices(), art::Event::event(), fDetId, fSlicesPerType, art::Event::id(), skim::Evaluator::Initialize(), label, LOG_DEBUG, make_pair(), art::Event::put(), art::EventID::run(), art::Event::run(), skim::Evaluator::SlicesToKeep(), and art::Event::subRun().

Referenced by filter().

376 {
377  // As long as we do a drop on output we will keep all the
378  // necessary provenance information on how each item was created. The
379  // information is left in the configuration DB intact, and we know what modules
380  // created which input data product by the module label configurations for this module.
381  std::unique_ptr< std::vector<rb::CellHit> > cellHitOut(new std::vector<rb::CellHit> );
382  std::unique_ptr< art::PtrVector<rb::Cluster> > sliceOut (new art::PtrVector<rb::Cluster> );
383  std::unique_ptr< std::vector<int> > sliceNum (new std::vector<int> );
384 
385  bool goodSlices = false;
386 
387  LOG_DEBUG("CellHitSkimmer")
388  << "initialize the evaluator: "
389  << label
390  << " this event is "
391  << goodEvent
392  << " run = "
393  << e.run()
394  << " subrun = "
395  << e.subRun()
396  << " and event = "
397  << e.event();
398 
399  // we checked the event quality before calling this method, but pass the
400  // results into this method so that we still place empty collections on the
401  // event record if nothing passes the selection
402  if(goodEvent){
403 
404  goodSlices = true;
405 
406  // see if we can initialize the evaluator, if not there
407  // is a problem with the event (spill) and it should be
408  // filtered out
409  if( !evaluator.Initialize(fDetId, e) ) goodSlices = false;
410  else{
411 
412  // check that there is at least 1 slice to keep
413  LOG_DEBUG("CellHitSkimmer")
414  << "check the slices";
415  if( evaluator.CheckSlices() < 1){
416  LOG_DEBUG("CellHitSkimmer")
417  << "No slices to keep in the spill";
418  goodSlices = false;
419  }
420  else{
421 
422  fSlicesPerType[label].push_back(std::make_pair(e.id().run(), e.event()));
423 
424  // loop over the slices and keep those that satisfy the
425  // selection criteria
426  auto slices = evaluator.SlicesToKeep();
427  for(auto slice : slices){
428 
429  sliceOut->push_back(slice.keptSlice);
430  sliceNum->push_back(slice.keptSliceNum);
431 
432  // make a copy of the cell hits
433  auto allCells = slice.keptSlice->AllCells();
434 
435  // add the cell to the full list
436  for(size_t ch = 0; ch < allCells.size(); ++ch)
437  cellHitOut->emplace_back( *(allCells[ch]) );
438 
439  } // end loop over slices
440 
441  LOG_DEBUG("CellHitSkimmer")
442  << "keeping "
443  << cellHitOut->size() << " cells and "
444  << sliceOut->size() << " slices";
445  } // end that we have a slice to keep
446  } // end that we were able to initialize
447  } // end if this was a good event
448 
449  e.put(std::move(cellHitOut), label);
450  e.put(std::move(sliceOut), label);
451  e.put(std::move(sliceNum), label);
452 
453  return goodSlices;
454 }
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
SelectedSlices fSlicesPerType
map instance labels to the number of passing slices
SubRunNumber_t subRun() const
Definition: Event.h:72
std::pair< Spectrum *, CheatDecomp * > make_pair(SpectrumLoaderBase &loader_data, SpectrumLoaderBase &loader_mc, HistAxis *axis, Cut *cut, const SystShifts &shift, const Var &wei)
Definition: DataMCLoad.C:336
RunNumber_t run() const
Definition: EventID.h:98
const char * label
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
EventNumber_t event() const
Definition: Event.h:67
virtual bool Initialize(novadaq::cnv::DetId const &detId, art::Event const &e)=0
std::vector< KeptSliceInfo > const & SlicesToKeep()
Definition: Evaluator.h:68
novadaq::cnv::DetId fDetId
detector id for the current run
RunNumber_t run() const
Definition: Event.h:77
virtual size_t CheckSlices()=0
EventID id() const
Definition: Event.h:56
bool skim::CellHitSkimmer::filter ( art::Event e)
overridevirtual

Implements art::EDFilter.

Definition at line 314 of file CellHitSkimmer_module.cc.

References CheckEvent(), EvaluateSlices(), art::Event::event(), fEvaluatorMap, LOG_DEBUG, art::Event::run(), and art::Event::subRun().

315 {
316 
317  // see if we can initialize the evaluator, if not there
318  // is a problem with the event (spill) and it should be
319  // filtered out
320  size_t okToUse = 0;
321 
322  bool goodEvent = this->CheckEvent(e);
323 
324  // check if the event (spill) is worth keeping
325  LOG_DEBUG("CellHitSkimmer")
326  << "check the event"
327  << " run = "
328  << e.run()
329  << " subrun = "
330  << e.subRun()
331  << " and event = "
332  << e.event();
333  for(auto itr : fEvaluatorMap){
334  if(this->EvaluateSlices(e, goodEvent, itr.first, *(itr.second))) ++okToUse;
335  }
336 
337  // if at least one of the evaluators found a good slice in the event, keep it
338  // and store the cycle information
339  if(okToUse > 0){
340  return true;
341  }
342 
343  // no good slices found, filter the event out
344  return false;
345 }
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
SubRunNumber_t subRun() const
Definition: Event.h:72
bool EvaluateSlices(art::Event &e, bool const &goodEvent, std::string const &label, skim::Evaluator &evaluator)
skim::EvaluatorMap fEvaluatorMap
object that determines if we keep a slice or not
EventNumber_t event() const
Definition: Event.h:67
bool CheckEvent(art::Event &e)
RunNumber_t run() const
Definition: Event.h:77
seed_t art::EngineCreator::get_seed_value ( fhicl::ParameterSet const &  pset,
char const  key[] = "seed",
seed_t const  implicit_seed = -1 
)
inherited
template<typename PROD , BranchType B>
ProductID art::EDFilter::getProductID ( std::string const &  instanceName = {}) const
inlineinherited

Definition at line 131 of file EDFilter.h.

References art::EDFilter::moduleDescription_.

Referenced by novaddt::HoughTrackMaker::create_associations().

132  {
133  return ProducerBase::getProductID<PROD, B>(moduleDescription_,
134  instanceName);
135  }
ModuleDescription moduleDescription_
Definition: EDFilter.h:124
template<typename PROD , BranchType B>
ProductID art::ProducerBase::getProductID ( ModuleDescription const &  moduleDescription,
std::string const &  instanceName 
) const
inherited

Definition at line 56 of file ProducerBase.h.

References art::ModuleDescription::moduleLabel().

Referenced by art::ProducerBase::modifiesEvent().

58  {
59  auto const& pd =
60  get_ProductDescription<PROD>(B, md.moduleLabel(), instanceName);
61  return pd.productID();
62  }
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::mayConsume ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::mayConsume ( InputTag const &  it)
inherited

Definition at line 189 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

190 {
191  if (!moduleContext_)
192  return ProductToken<T>::invalid();
193 
194  consumables_[BT].emplace_back(ConsumableType::Product,
195  TypeID{typeid(T)},
196  it.label(),
197  it.instance(),
198  it.process());
199  return ProductToken<T>{it};
200 }
set< int >::iterator it
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename T , art::BranchType BT>
void art::Consumer::mayConsumeMany ( )
inherited

Definition at line 204 of file Consumer.h.

References T.

205 {
206  if (!moduleContext_)
207  return;
208 
209  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
210 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::mayConsumeView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::mayConsumeView ( InputTag const &  it)
inherited

Definition at line 214 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

215 {
216  if (!moduleContext_)
217  return ViewToken<T>::invalid();
218 
219  consumables_[BT].emplace_back(ConsumableType::ViewElement,
220  TypeID{typeid(T)},
221  it.label(),
222  it.instance(),
223  it.process());
224  return ViewToken<T>{it};
225 }
set< int >::iterator it
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
bool art::ProducerBase::modifiesEvent ( ) const
inlineinherited

Definition at line 40 of file ProducerBase.h.

References art::ProducerBase::getProductID().

41  {
42  return true;
43  }
static cet::exempt_ptr<Consumer> art::Consumer::non_module_context ( )
staticinherited
CellHitSkimmer& skim::CellHitSkimmer::operator= ( CellHitSkimmer const &  )
delete
CellHitSkimmer& skim::CellHitSkimmer::operator= ( CellHitSkimmer &&  )
delete
void art::Consumer::prepareForJob ( fhicl::ParameterSet const &  pset)
protectedinherited
void skim::CellHitSkimmer::reconfigure ( fhicl::ParameterSet const &  p)

Definition at line 588 of file CellHitSkimmer_module.cc.

References DEFINE_ART_MODULE(), fCherryPick, fEvaluatorMap, fEventQualityLabel, fIsCosmic, fMaxFracDCM3Hits, fMaxMissingDCMS, fMinFracDCMEdgeMatch, fSpillDataLabel, fhicl::ParameterSet::get(), label, and LOG_VERBATIM.

Referenced by CellHitSkimmer().

589 {
590  auto evaluatorConfigs = p.get< std::vector<fhicl::ParameterSet> >("EvaluatorParameters");
591 
592  for(auto config : evaluatorConfigs){
593  auto label = config.get<std::string>("EvaluatorLabel");
594  if(label.find("numu") != std::string::npos) fEvaluatorMap[label] = new skim::EvaluatorNumu(config);
595  else if(label.find("nue" ) != std::string::npos) fEvaluatorMap[label] = new skim::EvaluatorNue (config);
596  else if(label.find("ccpi") != std::string::npos) fEvaluatorMap[label] = new skim::EvaluatorNumu(config);
597  }
598 
599  fEventQualityLabel = p.get<std::string>("EventQualityLabel", "dqspillflags" );
600  fSpillDataLabel = p.get<std::string>("SpillDataLabel", "ifdbspillinfo");
601  fCherryPick = p.get<bool >("CherryPick", false );
602  fMaxFracDCM3Hits = p.get<float >("MaxFracDCM3Hits", 0.5 );
603  fMinFracDCMEdgeMatch = p.get<float >("MinFracDCMEdgeMatch", 0.5 );
604  fMaxMissingDCMS = p.get<int >("MaxMissingDCMS", 0 );
605  fIsCosmic = p.get<bool >("IsCosmic", false );
606 
607  if(fIsCosmic) LOG_VERBATIM("CellHitSkimmer") << "This is a cosmic file: don't check spill";
608 
609  return;
610 }
bool fCherryPick
set to true to grab a predefined list of events
float fMinFracDCMEdgeMatch
minimum edge match fraction of DCMs
const char * p
Definition: xmltok.h:285
Definition: config.py:1
const char * label
std::string fEventQualityLabel
label of module creating event quality
skim::EvaluatorMap fEvaluatorMap
object that determines if we keep a slice or not
std::string fSpillDataLabel
label of module creating event quality
bool fIsCosmic
in order to look at cosmic events, don&#39;t evaluate the spill
::xsd::cxx::tree::string< char, simple_type > string
Definition: Database.h:154
float fMaxFracDCM3Hits
maximum fraction of hits in DCM3
int fMaxMissingDCMS
maximum number of DCMs allowed to be missing in the ND
#define LOG_VERBATIM(category)
void art::Consumer::showMissingConsumes ( ) const
protectedinherited

Referenced by art::RootOutput::endJob().

void art::Consumer::validateConsumedProduct ( BranchType const  bt,
ProductInfo const &  pi 
)
protectedinherited

Member Data Documentation

constexpr bool art::EDFilter::Fail {false}
staticinherited

Definition at line 33 of file EDFilter.h.

Referenced by evgen::GENIEFilter::filter().

TH1F* skim::CellHitSkimmer::fBeamWidth
private

Definition at line 124 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

TH1F* skim::CellHitSkimmer::fBeamXPos
private

Definition at line 122 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

TH1F* skim::CellHitSkimmer::fBeamYPos
private

Definition at line 123 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

bool skim::CellHitSkimmer::fCherryPick
private

set to true to grab a predefined list of events

Definition at line 135 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent(), and reconfigure().

TH1F* skim::CellHitSkimmer::fDeltaTToSpill
private

Definition at line 119 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

novadaq::cnv::DetId skim::CellHitSkimmer::fDetId
private

detector id for the current run

Definition at line 103 of file CellHitSkimmer_module.cc.

Referenced by beginRun(), CheckEvent(), and EvaluateSlices().

art::ServiceHandle<ds::DetectorService> skim::CellHitSkimmer::fDetService
private

detector service

Definition at line 101 of file CellHitSkimmer_module.cc.

Referenced by beginRun().

int skim::CellHitSkimmer::fEpoch
private

Definition at line 130 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and endRun().

skim::EvaluatorMap skim::CellHitSkimmer::fEvaluatorMap
private

object that determines if we keep a slice or not

Definition at line 98 of file CellHitSkimmer_module.cc.

Referenced by CellHitSkimmer(), filter(), reconfigure(), and ~CellHitSkimmer().

std::string skim::CellHitSkimmer::fEventQualityLabel
private

label of module creating event quality

Definition at line 106 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent(), and reconfigure().

TH1F* skim::CellHitSkimmer::fFracDCM3Hits
private

Definition at line 116 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

TH1F* skim::CellHitSkimmer::fFracDCMEdgeMatch
private

Definition at line 117 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

art::ServiceHandle<geo::Geometry> skim::CellHitSkimmer::fGeom
private

geometry service

Definition at line 99 of file CellHitSkimmer_module.cc.

TH1F* skim::CellHitSkimmer::fHornCurrent
private

Definition at line 121 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

bool skim::CellHitSkimmer::fIsCosmic
private

in order to look at cosmic events, don't evaluate the spill

Definition at line 136 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent(), and reconfigure().

art::ServiceHandle<geo::LiveGeometry> skim::CellHitSkimmer::fLiveGeom
private

geometry service

Definition at line 100 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent().

float skim::CellHitSkimmer::fMaxFracDCM3Hits
private

maximum fraction of hits in DCM3

Definition at line 111 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent(), and reconfigure().

int skim::CellHitSkimmer::fMaxMissingDCMS
private

maximum number of DCMs allowed to be missing in the ND

Definition at line 113 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent(), and reconfigure().

float skim::CellHitSkimmer::fMinFracDCMEdgeMatch
private

minimum edge match fraction of DCMs

Definition at line 112 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent(), and reconfigure().

TH1F* skim::CellHitSkimmer::fMissingDCMS
private

Definition at line 118 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

std::set<std::pair<int,int> > skim::CellHitSkimmer::fNueList
private

Definition at line 134 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

std::set<std::pair<int,int> > skim::CellHitSkimmer::fNumuList
private

Definition at line 133 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent().

TH1F* skim::CellHitSkimmer::fPOTInSpill
private

Definition at line 120 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and CheckEvent().

sumdata::POTSum skim::CellHitSkimmer::fPOTSum
private

Definition at line 128 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), beginRun(), CheckEvent(), and endRun().

sumdata::POTSum skim::CellHitSkimmer::fPOTSumSubRun
private

total pot for the current subrun

Definition at line 108 of file CellHitSkimmer_module.cc.

Referenced by beginSubRun(), CheckEvent(), and endSubRun().

TTree* skim::CellHitSkimmer::fPOTTree
private

Definition at line 127 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and endRun().

art::ServiceHandle<nova::dbi::RunHistoryService> skim::CellHitSkimmer::fRH
private

RunHistory service.

Definition at line 102 of file CellHitSkimmer_module.cc.

Referenced by endRun().

int skim::CellHitSkimmer::fRun
private

Definition at line 129 of file CellHitSkimmer_module.cc.

Referenced by beginJob(), and endRun().

SelectedSlices skim::CellHitSkimmer::fSlicesPerType
private

map instance labels to the number of passing slices

Definition at line 104 of file CellHitSkimmer_module.cc.

Referenced by endJob(), and EvaluateSlices().

std::string skim::CellHitSkimmer::fSpillDataLabel
private

label of module creating event quality

Definition at line 107 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent(), and reconfigure().

skim::SpillEvaluator skim::CellHitSkimmer::fSpillEval
private

tool to check the quality of a spill

Definition at line 105 of file CellHitSkimmer_module.cc.

Referenced by CheckEvent().

constexpr bool art::EDFilter::Pass {true}
staticinherited

Definition at line 32 of file EDFilter.h.

Referenced by evgen::GENIEFilter::filter().


The documentation for this class was generated from the following file: