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

References DEFINE_ART_MODULE.

259 {}
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: