LArSoft  v10_04_05
Liquid Argon Software toolkit - https://larsoft.org/
phot::CreateHybridLibrary Class Reference
Inheritance diagram for phot::CreateHybridLibrary:
art::EDAnalyzer art::detail::Analyzer art::detail::LegacyModule art::Observer art::ModuleBase

Public Types

using ModuleType = EDAnalyzer
 

Public Member Functions

 CreateHybridLibrary (const fhicl::ParameterSet &p)
 
 CreateHybridLibrary (const CreateHybridLibrary &)=delete
 
 CreateHybridLibrary (CreateHybridLibrary &&)=delete
 
CreateHybridLibraryoperator= (const CreateHybridLibrary &)=delete
 
CreateHybridLibraryoperator= (CreateHybridLibrary &&)=delete
 
void analyze (const art::Event &e) override
 
void doBeginJob (SharedResources const &resources)
 
void doEndJob ()
 
void doRespondToOpenInputFile (FileBlock const &fb)
 
void doRespondToCloseInputFile (FileBlock const &fb)
 
void doRespondToOpenOutputFiles (FileBlock const &fb)
 
void doRespondToCloseOutputFiles (FileBlock const &fb)
 
bool doBeginRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doEndRun (RunPrincipal &rp, ModuleContext const &mc)
 
bool doBeginSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEndSubRun (SubRunPrincipal &srp, ModuleContext const &mc)
 
bool doEvent (EventPrincipal &ep, ModuleContext const &mc, std::atomic< std::size_t > &counts_run, std::atomic< std::size_t > &counts_passed, std::atomic< std::size_t > &counts_failed)
 
ModuleDescription const & moduleDescription () const
 
void setModuleDescription (ModuleDescription const &)
 
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables () const
 
void sortConsumables (std::string const &current_process_name)
 
std::unique_ptr< Worker > makeWorker (WorkerParams const &wp)
 
template<typename T , BranchType BT>
ViewToken< T > consumesView (InputTag const &tag)
 
template<typename T , BranchType BT>
ViewToken< T > mayConsumeView (InputTag const &tag)
 

Protected Member Functions

std::string const & processName () const
 
bool wantAllEvents () const noexcept
 
bool wantEvent (ScheduleID id, Event const &e) const
 
Handle< TriggerResults > getTriggerResults (Event const &e) const
 
ConsumesCollector & consumesCollector ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 

Detailed Description

Definition at line 33 of file CreateHybridLibrary_module.cc.

Member Typedef Documentation

Definition at line 22 of file EDAnalyzer.h.

Constructor & Destructor Documentation

phot::CreateHybridLibrary::CreateHybridLibrary ( const fhicl::ParameterSet p)
explicit

Definition at line 47 of file CreateHybridLibrary_module.cc.

References c1, d, larg4::dist(), geo::OpDetGeo::DistanceToPoint(), e, sim::PhotonVoxel::GetCenter(), geo::OpDetGeo::GetCenter(), sim::PhotonVoxelDef::GetNVoxels(), sim::PhotonVoxelDef::GetPhotonVoxel(), phot::PhotonVisibilityService::GetVisibility(), phot::PhotonVisibilityService::GetVoxelDef(), geo::GeometryCore::NOpDets(), geo::GeometryCore::OpDetGeoFromOpDet(), PI, and vox.

47  : EDAnalyzer(p)
48  {
49 
51 
53  sim::PhotonVoxelDef voxdef = pvs->GetVoxelDef();
54 
55  TFile* fout_full = new TFile("full.root", "RECREATE");
56  TFile* fout_fit = new TFile("fit.root", "RECREATE");
57 
58  std::cout << voxdef.GetNVoxels() << " voxels for each of " << geom->NOpDets() << " OpDets"
59  << std::endl;
60  std::cout << std::endl;
61 
62  //EP = Exception points: the parameterization is not a good description of the visibility and the value of the Photon Library is kept.
63  long totExceptions = 0;
64  long totPts = 0;
65 
66  for (unsigned int opdetIdx = 0; opdetIdx < geom->NOpDets(); ++opdetIdx) {
67  std::cout << opdetIdx << " / " << geom->NOpDets() << std::endl;
68 
69  TDirectory* d_full = fout_full->mkdir(TString::Format("opdet_%d", opdetIdx).Data());
70  TDirectory* d_fit = fout_fit->mkdir(TString::Format("opdet_%d", opdetIdx).Data());
71 
72  d_full->cd();
73  TTree* tr_full = new TTree("tr", "tr");
74  int vox, taken;
75  float dist, vis, psi, theta, xpos;
76  tr_full->Branch("vox", &vox);
77  tr_full->Branch("dist", &dist);
78  tr_full->Branch("vis", &vis);
79  tr_full->Branch("taken", &taken);
80  tr_full->Branch("psi",
81  &psi); //not needed to parameterize the visibilities, useful for tests in SP
82  tr_full->Branch("theta",
83  &theta); //not needed to parameterize the visibilities, useful for tests in SP
84  tr_full->Branch("xpos",
85  &xpos); //not needed to parameterize the visibilities, useful for tests in SP
86 
87  const geo::OpDetGeo& opdet = geom->OpDetGeoFromOpDet(opdetIdx);
88  auto const opdetCenter = opdet.GetCenter();
89 
90  struct Visibility {
91  Visibility(int vx, int t, float d, float v, float p, float th, float xp)
92  : vox(vx), taken(t), dist(d), vis(v), psi(p), theta(th), xpos(xp)
93  {}
94  int vox;
95  int taken;
96  float dist;
97  float vis;
98  float psi;
99  float theta;
100  float xpos;
101  };
102  TCanvas* c1 = new TCanvas("c1", "c1");
103  c1->SetWindowSize(600, 600);
104  TGraph g;
105  TGraph g2;
106 
107  std::vector<Visibility> viss;
108  viss.reserve(voxdef.GetNVoxels());
109 
110  for (unsigned int voxIdx = 0U; voxIdx < voxdef.GetNVoxels(); ++voxIdx) {
111 
112  const auto voxvec = voxdef.GetPhotonVoxel(voxIdx).GetCenter();
113  const double xyzvox[] = {voxvec.X(), voxvec.Y(), voxvec.Z()};
114  const double fc_y =
115  600; //624cm is below the center of the first voxel outside the Field Cage
116  const double fc_z = 1394;
117  const double fc_x = 350;
118  taken = 0;
119  //DP does not need variable "taken" because all voxels are inside the Field Cage for the Photon Library created in LightSim.
120  //DP taken = 1;
121  dist = opdet.DistanceToPoint(voxvec);
122  vis = pvs->GetVisibility(xyzvox, opdetIdx); // TODO use Point_t when available
123  // all voxels outside the Field Cage would be assigned these values of psi and theta
124  psi = 100;
125  theta = 200;
126  xpos = voxvec.X();
127 
128  if ((voxvec.X() - opdetCenter.X()) < 0) {
129  psi = atan((voxvec.Y() - opdetCenter.Y()) / (-voxvec.X() + opdetCenter.X()));
130  }
131 
132  if (voxvec.X() < fc_x && voxvec.X() > -fc_x && voxvec.Y() < fc_y && voxvec.Y() > -fc_y &&
133  voxvec.Z() > -9 && voxvec.Z() < fc_z) {
134  g.SetPoint(g.GetN(), dist, vis * dist * dist);
135  taken = 1;
136  psi = atan((voxvec.Y() - opdetCenter.Y()) / (voxvec.X() - opdetCenter.X())) * 180.0 /
137  PI; // psi takes values within (-PI/2, PI/2)
138  theta = acos((voxvec.Z() - opdetCenter.Z()) / dist) * 180.0 /
139  PI; // theta takes values within (0 (beam direction, z), PI (-beam direction, -z))
140 
141  if ((voxvec.X() - opdetCenter.X()) < 0) {
142  psi = atan((voxvec.Y() - opdetCenter.Y()) / (-voxvec.X() + opdetCenter.X()));
143  }
144  }
145  tr_full->Fill();
146  viss.emplace_back(voxIdx, taken, dist, vis, psi, theta, xpos);
147  } // end for voxIdx
148 
149  d_full->cd();
150  tr_full->Write();
151  delete tr_full;
152 
153  g.SetMarkerStyle(7);
154  c1->cd();
155  g.Draw("ap");
156  g.GetXaxis()->SetTitle("Distance (cm)");
157  g.GetYaxis()->SetTitle("Visibility #times r^{2}");
158  g.Fit("expo");
159  TF1* fit = g.GetFunction("expo");
160 
161  d_fit->cd();
162  TVectorD fitres(2);
163  fitres[0] = fit->GetParameter(0);
164  fitres[1] = fit->GetParameter(1);
165  fitres.Write("fit");
166 
167  gPad->SetLogy();
168 
169  TH1F h("", "", 200, 0, 20);
170 
171  d_fit->cd();
172  TTree* tr_fit = new TTree("tr", "tr");
173  tr_fit->Branch("vox", &vox);
174  tr_fit->Branch("dist", &dist);
175  tr_fit->Branch("vis", &vis);
176  tr_fit->Branch("taken", &taken);
177  tr_fit->Branch("psi", &psi);
178  tr_fit->Branch("theta", &theta);
179  tr_fit->Branch("xpos", &xpos);
180 
181  for (const Visibility& v : viss) {
182  // 2e-5 is the magic scaling factor to get back to integer photon
183  // counts. TODO this will differ for new libraries, should work out a
184  // way to communicate it or derive it.
185  const double obs = v.vis / 2e-5; //taken from the Photon Library
186  const double pred =
187  fit->Eval(v.dist) / (v.dist * v.dist) / 2e-5; //calculated with parameterization
188 
189  //Minimal amount of detected photons is 50, bc of Landau dustribution
190  //Those voxels with detected photons < 50 were set to 0
191 
192  // Log-likelihood ratio for poisson statistics
193  double chisq = 2 * (pred - obs);
194  if (obs) chisq += 2 * obs * log(obs / pred);
195 
196  vox = v.vox;
197  dist = v.dist;
198  vis = pred * 2e-5;
199  psi = v.psi;
200  theta = v.theta;
201  xpos = v.xpos;
202 
203  if (v.taken == 1) { h.Fill(chisq); }
204 
205  if (
206  chisq >
207  9) { //equivalent to more than 9 chisquare = 3 sigma //maybe play around with this cutoff
208  g2.SetPoint(g2.GetN(), v.dist, v.vis * v.dist * v.dist);
209  vis = obs * 2e-5;
210  tr_fit->Fill();
211  }
212  }
213 
214  d_fit->cd();
215  tr_fit->Write();
216  delete tr_fit;
217  g2.SetMarkerSize(1);
218  g2.SetLineWidth(3);
219  g2.SetMarkerStyle(7);
220  g2.SetMarkerColor(kRed);
221  gStyle->SetLabelSize(.04, "XY");
222  gStyle->SetTitleSize(.04, "XY");
223  c1->cd();
224  g2.Draw("p same");
225  c1->SaveAs(TString::Format("plots/Chris_vis_vs_dist_%d.png", opdetIdx).Data());
226 
227  h.GetXaxis()->SetTitle("#chi^{2}");
228  h.GetYaxis()->SetTitle("Counts");
229  gStyle->SetLabelSize(.04, "XY");
230  gStyle->SetTitleSize(.04, "XY");
231  h.Draw("hist");
232  std::cout << "Integral(90,-1)/Integral(all) = " << h.Integral(90, -1) / h.Integral(0, -1)
233  << std::endl;
234  std::cout << "*****************************" << std::endl;
235  totExceptions += h.Integral(90, -1);
236  totPts += h.Integral(0, -1);
237  gPad->Print(TString::Format("plots/chisq_opdet_%d.eps", opdetIdx).Data());
238 
239  delete c1;
240  } // end for opdetIdx
241 
242  std::cout << totExceptions << " exceptions from " << totPts
243  << " points = " << (100. * totExceptions) / totPts << "%" << std::endl;
244 
245  delete fout_full;
246  delete fout_fit;
247  exit(0); // We're done :)
248  }
Float_t vox
Definition: plot.C:38
Point_t const & GetCenter() const
Definition: OpDetGeo.h:71
Representation of a region of space diced into voxels.
Definition: PhotonVoxels.h:58
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.cc:6
double DistanceToPoint(Point_t const &point) const
Returns the distance of the specified point from detector center [cm].
Definition: OpDetGeo.cxx:94
TCanvas * c1
Definition: plotHisto.C:7
Float_t d
Definition: plot.C:235
unsigned int NOpDets() const
Number of OpDets in the whole detector.
const sim::PhotonVoxelDef & GetVoxelDef() const
double dist(const TReal *x, const TReal *y, const unsigned int dimension)
Point GetCenter() const
Returns the center of the voxel (type Point).
Definition: PhotonVoxels.h:186
unsigned int GetNVoxels() const
Returns the total number of voxels in the volume.
Float_t e
Definition: plot.C:35
float GetVisibility(Point const &p, unsigned int OpChannel, bool wantReflected=false) const
OpDetGeo const & OpDetGeoFromOpDet(unsigned int OpDet) const
Returns the geo::OpDetGeo object for the given detector number.
PhotonVoxel GetPhotonVoxel(int ID) const
phot::CreateHybridLibrary::CreateHybridLibrary ( const CreateHybridLibrary )
delete
phot::CreateHybridLibrary::CreateHybridLibrary ( CreateHybridLibrary &&  )
delete

Member Function Documentation

void phot::CreateHybridLibrary::analyze ( const art::Event e)
override

Definition at line 251 of file CreateHybridLibrary_module.cc.

References DEFINE_ART_MODULE.

251 {}
template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::consumes ( InputTag const &  tag)
protectedinherited

Definition at line 61 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumes().

62  {
63  return collector_.consumes<T, BT>(tag);
64  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ProductToken< T > consumes(InputTag const &)
ConsumesCollector & art::ModuleBase::consumesCollector ( )
protectedinherited

Definition at line 57 of file ModuleBase.cc.

References art::ModuleBase::collector_.

58  {
59  return collector_;
60  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::consumesMany ( )
protectedinherited

Definition at line 75 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesMany().

76  {
77  collector_.consumesMany<T, BT>();
78  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::consumesView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::consumesView ( InputTag const &  tag)
inherited

Definition at line 68 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::consumesView().

69  {
70  return collector_.consumesView<T, BT>(tag);
71  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > consumesView(InputTag const &)
void art::detail::Analyzer::doBeginJob ( SharedResources const &  resources)
inherited

Definition at line 25 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

26  {
27  setupQueues(resources);
28  ProcessingFrame const frame{ScheduleID{}};
29  beginJobWithFrame(frame);
30  }
virtual void beginJobWithFrame(ProcessingFrame const &)=0
virtual void setupQueues(SharedResources const &)=0
bool art::detail::Analyzer::doBeginRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 68 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

69  {
70  ProcessingFrame const frame{mc.scheduleID()};
71  beginRunWithFrame(std::as_const(rp).makeRun(mc), frame);
72  return true;
73  }
virtual void beginRunWithFrame(Run const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doBeginSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 84 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

85  {
86  ProcessingFrame const frame{mc.scheduleID()};
87  beginSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
88  return true;
89  }
virtual void beginSubRunWithFrame(SubRun const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doEndJob ( )
inherited

Definition at line 33 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

34  {
35  ProcessingFrame const frame{ScheduleID{}};
36  endJobWithFrame(frame);
37  }
virtual void endJobWithFrame(ProcessingFrame const &)=0
bool art::detail::Analyzer::doEndRun ( RunPrincipal rp,
ModuleContext const &  mc 
)
inherited

Definition at line 76 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

77  {
78  ProcessingFrame const frame{mc.scheduleID()};
79  endRunWithFrame(std::as_const(rp).makeRun(mc), frame);
80  return true;
81  }
virtual void endRunWithFrame(Run const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doEndSubRun ( SubRunPrincipal srp,
ModuleContext const &  mc 
)
inherited

Definition at line 92 of file Analyzer.cc.

References art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

93  {
94  ProcessingFrame const frame{mc.scheduleID()};
95  endSubRunWithFrame(std::as_const(srp).makeSubRun(mc), frame);
96  return true;
97  }
virtual void endSubRunWithFrame(SubRun const &, ProcessingFrame const &)=0
bool art::detail::Analyzer::doEvent ( EventPrincipal ep,
ModuleContext const &  mc,
std::atomic< std::size_t > &  counts_run,
std::atomic< std::size_t > &  counts_passed,
std::atomic< std::size_t > &  counts_failed 
)
inherited

Definition at line 100 of file Analyzer.cc.

References e, and art::ModuleContext::scheduleID().

Referenced by art::detail::Analyzer::Analyzer().

105  {
106  auto const e = std::as_const(ep).makeEvent(mc);
107  if (wantEvent(mc.scheduleID(), e)) {
108  ++counts_run;
109  ProcessingFrame const frame{mc.scheduleID()};
110  analyzeWithFrame(e, frame);
111  ++counts_passed;
112  }
113  return true;
114  }
bool wantEvent(ScheduleID id, Event const &e) const
Definition: Observer.cc:63
Float_t e
Definition: plot.C:35
virtual void analyzeWithFrame(Event const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doRespondToCloseInputFile ( FileBlock const &  fb)
inherited

Definition at line 47 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

48  {
49  ProcessingFrame const frame{ScheduleID{}};
51  }
TFile fb("Li6.root")
virtual void respondToCloseInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doRespondToCloseOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 61 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

62  {
63  ProcessingFrame const frame{ScheduleID{}};
65  }
virtual void respondToCloseOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
void art::detail::Analyzer::doRespondToOpenInputFile ( FileBlock const &  fb)
inherited

Definition at line 40 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

41  {
42  ProcessingFrame const frame{ScheduleID{}};
44  }
TFile fb("Li6.root")
virtual void respondToOpenInputFileWithFrame(FileBlock const &, ProcessingFrame const &)=0
void art::detail::Analyzer::doRespondToOpenOutputFiles ( FileBlock const &  fb)
inherited

Definition at line 54 of file Analyzer.cc.

Referenced by art::detail::Analyzer::Analyzer().

55  {
56  ProcessingFrame const frame{ScheduleID{}};
58  }
virtual void respondToOpenOutputFilesWithFrame(FileBlock const &, ProcessingFrame const &)=0
TFile fb("Li6.root")
std::array< std::vector< ProductInfo >, NumBranchTypes > const & art::ModuleBase::getConsumables ( ) const
inherited

Definition at line 43 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::getConsumables().

44  {
45  return collector_.getConsumables();
46  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
std::array< std::vector< ProductInfo >, NumBranchTypes > const & getConsumables() const
Handle< TriggerResults > art::Observer::getTriggerResults ( Event const &  e) const
protectedinherited

Definition at line 75 of file Observer.cc.

References art::ProductRetriever::get(), and art::Observer::selectors_.

Referenced by art::OutputModule::doWriteEvent(), and art::Observer::wantAllEvents().

76  {
77  if (selectors_) {
78  return selectors_->getOneTriggerResults(e);
79  }
80 
81  // The following applies for cases where no SelectEvents entries
82  // exist.
83  Handle<TriggerResults> h;
84  if (e.get(empty_process_name, h)) {
85  return h;
86  }
87  return Handle<TriggerResults>{};
88  }
Float_t e
Definition: plot.C:35
std::optional< detail::ProcessAndEventSelectors > selectors_
Definition: Observer.h:79
std::unique_ptr< Worker > art::ModuleBase::makeWorker ( WorkerParams const &  wp)
inherited

Definition at line 37 of file ModuleBase.cc.

References art::ModuleBase::doMakeWorker(), and art::NumBranchTypes.

38  {
39  return doMakeWorker(wp);
40  }
virtual std::unique_ptr< Worker > doMakeWorker(WorkerParams const &wp)=0
template<typename T , BranchType BT>
ProductToken< T > art::ModuleBase::mayConsume ( InputTag const &  tag)
protectedinherited

Definition at line 82 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsume().

83  {
84  return collector_.mayConsume<T, BT>(tag);
85  }
ProductToken< T > mayConsume(InputTag const &)
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename T , BranchType BT>
void art::ModuleBase::mayConsumeMany ( )
protectedinherited

Definition at line 96 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeMany().

97  {
98  collector_.mayConsumeMany<T, BT>();
99  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::ModuleBase::mayConsumeView ( InputTag const &  )
protectedinherited
template<typename T , BranchType BT>
ViewToken<T> art::ModuleBase::mayConsumeView ( InputTag const &  tag)
inherited

Definition at line 89 of file ModuleBase.h.

References art::ModuleBase::collector_, and art::ConsumesCollector::mayConsumeView().

90  {
91  return collector_.mayConsumeView<T, BT>(tag);
92  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
ViewToken< Element > mayConsumeView(InputTag const &)
ModuleDescription const & art::ModuleBase::moduleDescription ( ) const
inherited

Definition at line 13 of file ModuleBase.cc.

References art::errors::LogicError.

Referenced by art::OutputModule::doRespondToOpenInputFile(), art::OutputModule::doWriteEvent(), art::Modifier::fillProductDescriptions(), art::OutputModule::makePlugins_(), art::OutputWorker::OutputWorker(), reco::shower::LArPandoraModularShowerCreation::produce(), art::Modifier::registerProducts(), and art::OutputModule::registerProducts().

14  {
15  if (md_.has_value()) {
16  return *md_;
17  }
18 
20  "There was an error while calling moduleDescription().\n"}
21  << "The moduleDescription() base-class member function cannot be called\n"
22  "during module construction. To determine which module is "
23  "responsible\n"
24  "for calling it, find the '<module type>:<module "
25  "label>@Construction'\n"
26  "tag in the message prefix above. Please contact artists@fnal.gov\n"
27  "for guidance.\n";
28  }
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
CreateHybridLibrary& phot::CreateHybridLibrary::operator= ( const CreateHybridLibrary )
delete
CreateHybridLibrary& phot::CreateHybridLibrary::operator= ( CreateHybridLibrary &&  )
delete
string const & art::Observer::processName ( ) const
protectedinherited

Definition at line 57 of file Observer.cc.

References art::Observer::process_name_.

Referenced by art::FileDumperOutput::printPrincipal().

58  {
59  return process_name_;
60  }
std::string process_name_
Definition: Observer.h:76
void art::ModuleBase::setModuleDescription ( ModuleDescription const &  md)
inherited

Definition at line 31 of file ModuleBase.cc.

References art::ModuleBase::md_.

32  {
33  md_ = md;
34  }
std::optional< ModuleDescription > md_
Definition: ModuleBase.h:55
void art::ModuleBase::sortConsumables ( std::string const &  current_process_name)
inherited

Definition at line 49 of file ModuleBase.cc.

References art::ModuleBase::collector_, and art::ConsumesCollector::sortConsumables().

50  {
51  // Now that we know we have seen all the consumes declarations,
52  // sort the results for fast lookup later.
53  collector_.sortConsumables(current_process_name);
54  }
ConsumesCollector collector_
Definition: ModuleBase.h:56
void sortConsumables(std::string const &current_process_name)
bool art::Observer::wantAllEvents ( ) const
inlineprotectednoexceptinherited

Definition at line 31 of file Observer.h.

References e, art::Observer::getTriggerResults(), art::Observer::wantAllEvents_, and art::Observer::wantEvent().

32  {
33  return wantAllEvents_;
34  }
bool wantAllEvents_
Definition: Observer.h:75
bool art::Observer::wantEvent ( ScheduleID  id,
Event const &  e 
) const
protectedinherited

Definition at line 63 of file Observer.cc.

References art::Observer::rejectors_, art::Observer::selectors_, and art::Observer::wantAllEvents_.

Referenced by art::OutputModule::doEvent(), art::OutputModule::doWriteEvent(), and art::Observer::wantAllEvents().

64  {
65  if (wantAllEvents_) {
66  return true;
67  }
68  bool const select_event = selectors_ ? selectors_->matchEvent(id, e) : true;
69  bool const reject_event =
70  rejectors_ ? rejectors_->matchEvent(id, e) : false;
71  return select_event and not reject_event;
72  }
bool wantAllEvents_
Definition: Observer.h:75
std::optional< detail::ProcessAndEventSelectors > rejectors_
Definition: Observer.h:80
Float_t e
Definition: plot.C:35
std::optional< detail::ProcessAndEventSelectors > selectors_
Definition: Observer.h:79

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