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

Public Types

using ModuleType = EDAnalyzer
 

Public Member Functions

 TCShowerAnalysis (fhicl::ParameterSet const &pset)
 
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 ()
 

Private Member Functions

void beginJob () override
 
void analyze (const art::Event &evt) override
 
void reset ()
 
void truthMatcher (detinfo::DetectorClocksData const &clockData, std::vector< art::Ptr< recob::Hit >> all_hits, std::vector< art::Ptr< recob::Hit >> shower_hits, const simb::MCParticle *&MCparticle, double &Efrac, double &Ecomplet)
 

Private Attributes

TTree * fTree
 
int run
 
int subrun
 
int event
 
int nuPDG_truth
 
int ccnc_truth
 
int mode_truth
 
int nshws
 
int shwid [kMaxShowers]
 
float shwdcosx [kMaxShowers]
 
float shwdcosy [kMaxShowers]
 
float shwdcosz [kMaxShowers]
 
float shwstartx [kMaxShowers]
 
float shwstarty [kMaxShowers]
 
float shwstartz [kMaxShowers]
 
double shwdedx [kMaxShowers][2]
 
int shwbestplane [kMaxShowers]
 
int highestHitsPDG
 
double highestHitsFrac
 
std::string fHitModuleLabel
 
std::string fShowerModuleLabel
 
std::string fGenieGenModuleLabel
 
std::string fDigitModuleLabel
 
calo::CalorimetryAlg fCalorimetryAlg
 

Detailed Description

Definition at line 33 of file TCShowerAnalysis_module.cc.

Member Typedef Documentation

Definition at line 22 of file EDAnalyzer.h.

Constructor & Destructor Documentation

shower::TCShowerAnalysis::TCShowerAnalysis ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 86 of file TCShowerAnalysis_module.cc.

87  : EDAnalyzer(pset)
88  , fHitModuleLabel(pset.get<std::string>("HitModuleLabel", "trajcluster"))
89  , fShowerModuleLabel(pset.get<std::string>("ShowerModuleLabel", "tcshower"))
90  , fGenieGenModuleLabel(pset.get<std::string>("GenieGenModuleLabel", "generator"))
91  , fDigitModuleLabel(pset.get<std::string>("DigitModuleLabel", "largeant"))
92  , fCalorimetryAlg(pset.get<fhicl::ParameterSet>("CalorimetryAlg"))
93 {} // TCShowerTemplateMaker
calo::CalorimetryAlg fCalorimetryAlg
EDAnalyzer(fhicl::ParameterSet const &pset)
Definition: EDAnalyzer.cc:6

Member Function Documentation

void shower::TCShowerAnalysis::analyze ( const art::Event evt)
overrideprivate

Definition at line 129 of file TCShowerAnalysis_module.cc.

References simb::MCNeutrino::CCNC(), ccnc_truth, art::EventID::event(), fDigitModuleLabel, fGenieGenModuleLabel, fHitModuleLabel, art::fill_ptr_vector(), fShowerModuleLabel, fTree, art::ProductRetriever::getByLabel(), simb::MCTruth::GetNeutrino(), highestHitsFrac, highestHitsPDG, art::Event::id(), art::Handle< T >::isValid(), kMaxShowers, simb::MCNeutrino::Mode(), mode_truth, simb::MCTruth::NeutrinoSet(), nshws, simb::MCNeutrino::Nu(), nuPDG_truth, simb::MCParticle::PdgCode(), art::Event::run(), run, shwbestplane, shwdcosx, shwdcosy, shwdcosz, shwdedx, shwid, shwstartx, shwstarty, shwstartz, util::size(), art::Event::subRun(), subrun, and truthMatcher().

130 {
131 
132  run = evt.run();
133  subrun = evt.subRun();
134  event = evt.id().event();
135 
137  std::vector<art::Ptr<recob::Hit>> hitlist;
138  if (evt.getByLabel(fHitModuleLabel, hitListHandle)) art::fill_ptr_vector(hitlist, hitListHandle);
139 
141  std::vector<art::Ptr<sim::SimChannel>> simchanlist;
142  if (evt.getByLabel(fDigitModuleLabel, scListHandle))
143  art::fill_ptr_vector(simchanlist, scListHandle);
144 
145  art::Handle<std::vector<recob::Shower>> showerListHandle;
146  std::vector<art::Ptr<recob::Shower>> showerlist;
147  if (evt.getByLabel(fShowerModuleLabel, showerListHandle))
148  art::fill_ptr_vector(showerlist, showerListHandle);
149 
150  art::Handle<std::vector<simb::MCTruth>> mctruthListHandle;
151  std::vector<art::Ptr<simb::MCTruth>> mclist;
152  if (evt.getByLabel(fGenieGenModuleLabel, mctruthListHandle))
153  art::fill_ptr_vector(mclist, mctruthListHandle);
154 
155  art::FindManyP<recob::Hit> shwfm(showerListHandle, evt, fShowerModuleLabel);
156 
157  //shower information
158  if (showerListHandle.isValid()) {
159  nshws = showerlist.size();
160 
161  for (int i = 0; i < std::min(int(showerlist.size()), kMaxShowers); ++i) {
162  shwid[i] = showerlist[i]->ID();
163  shwdcosx[i] = showerlist[i]->Direction().X();
164  shwdcosy[i] = showerlist[i]->Direction().Y();
165  shwdcosz[i] = showerlist[i]->Direction().Z();
166  shwstartx[i] = showerlist[i]->ShowerStart().X();
167  shwstarty[i] = showerlist[i]->ShowerStart().Y();
168  shwstartz[i] = showerlist[i]->ShowerStart().Z();
169  for (size_t j = 0; j < (showerlist[i]->dEdx()).size(); ++j) {
170  shwdedx[i][j] = showerlist[i]->dEdx()[j];
171  }
172  shwbestplane[i] = showerlist[i]->best_plane();
173  }
174 
175  } // shower info
176 
177  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(evt);
178 
179  if (mclist.size()) {
180  art::Ptr<simb::MCTruth> mctruth = mclist[0];
181  if (mctruth->NeutrinoSet()) {
182 
183  nuPDG_truth = mctruth->GetNeutrino().Nu().PdgCode();
184  ccnc_truth = mctruth->GetNeutrino().CCNC();
185  mode_truth = mctruth->GetNeutrino().Mode();
186 
187  if (showerlist.size()) { // only looks at the first shower since this is
188  // for tcshower
189  std::vector<art::Ptr<recob::Hit>> showerhits = shwfm.at(0);
190  // get shower truth info
191  const simb::MCParticle* particle;
192  double tmpEfrac = 0.0;
193  double tmpEcomplet = 0;
194  truthMatcher(clockData, hitlist, showerhits, particle, tmpEfrac, tmpEcomplet);
195  if (particle) {
196  std::cout << "shower pdg: " << particle->PdgCode() << " efrac " << tmpEfrac << std::endl;
197 
198  highestHitsPDG = particle->PdgCode();
199  highestHitsFrac = tmpEfrac;
200  }
201  }
202  }
203  }
204 
205  fTree->Fill();
206 
207 } // analyze
SubRunNumber_t subRun() const
Definition: Event.cc:35
int PdgCode() const
Definition: MCParticle.h:213
int CCNC() const
Definition: MCNeutrino.h:148
double shwdedx[kMaxShowers][2]
const simb::MCNeutrino & GetNeutrino() const
Definition: MCTruth.h:77
void truthMatcher(detinfo::DetectorClocksData const &clockData, std::vector< art::Ptr< recob::Hit >> all_hits, std::vector< art::Ptr< recob::Hit >> shower_hits, const simb::MCParticle *&MCparticle, double &Efrac, double &Ecomplet)
const simb::MCParticle & Nu() const
Definition: MCNeutrino.h:146
bool isValid() const noexcept
Definition: Handle.h:203
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:101
constexpr int kMaxShowers
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
EventNumber_t event() const
Definition: EventID.h:116
bool NeutrinoSet() const
Definition: MCTruth.h:78
void fill_ptr_vector(std::vector< Ptr< T >> &ptrs, H const &h)
Definition: Ptr.h:306
RunNumber_t run() const
Definition: Event.cc:29
int Mode() const
Definition: MCNeutrino.h:149
EventID id() const
Definition: Event.cc:23
void shower::TCShowerAnalysis::beginJob ( )
overrideprivatevirtual

Reimplemented from art::EDAnalyzer.

Definition at line 97 of file TCShowerAnalysis_module.cc.

References ccnc_truth, fTree, highestHitsFrac, highestHitsPDG, mode_truth, nshws, nuPDG_truth, run, shwbestplane, shwdcosx, shwdcosy, shwdcosz, shwdedx, shwid, shwstartx, shwstarty, shwstartz, and subrun.

98 {
99 
101 
102  fTree = tfs->make<TTree>("tcshowerana", "tcshowerana");
103  fTree->Branch("run", &run, "run/I");
104  fTree->Branch("subrun", &subrun, "subrun/I");
105  fTree->Branch("event", &event, "event/I");
106 
107  fTree->Branch("nuPDG_truth", &nuPDG_truth, "nuPDG_truth/I");
108  fTree->Branch("ccnc_truth", &ccnc_truth, "ccnc_truth/I");
109  fTree->Branch("mode_truth", &mode_truth, "mode_truth/I");
110 
111  fTree->Branch("nshws", &nshws, "nshws/I");
112  fTree->Branch("shwid", shwid, "shwid[nshws]/I");
113  fTree->Branch("shwdcosx", shwdcosx, "shwdcosx[nshws]/F");
114  fTree->Branch("shwdcosy", shwdcosy, "shwdcosy[nshws]/F");
115  fTree->Branch("shwdcosz", shwdcosz, "shwdcosz[nshws]/F");
116  fTree->Branch("shwstartx", shwstartx, "shwstartx[nshws]/F");
117  fTree->Branch("shwstarty", shwstarty, "shwstarty[nshws]/F");
118  fTree->Branch("shwstartz", shwstartz, "shwstartz[nshws]/F");
119  fTree->Branch("shwdedx", shwdedx, "shwdedx[nshws][2]/D");
120  fTree->Branch("shwbestplane", shwbestplane, "shwbestplane[nshws]/I");
121 
122  fTree->Branch("highestHitsPDG", &highestHitsPDG, "highestHitsPDG/I");
123  fTree->Branch("highestHitsFrac", &highestHitsFrac, "highestHitsFrac/D");
124 
125 } // beginJob
double shwdedx[kMaxShowers][2]
Event finding and building.
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
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 shower::TCShowerAnalysis::reset ( )
private

Definition at line 211 of file TCShowerAnalysis_module.cc.

References ccnc_truth, highestHitsFrac, highestHitsPDG, kMaxShowers, mode_truth, nshws, nuPDG_truth, run, shwbestplane, shwdcosx, shwdcosy, shwdcosz, shwdedx, shwid, shwstartx, shwstarty, shwstartz, and subrun.

212 {
213 
214  run = -99999;
215  subrun = -99999;
216  event = -99999;
217 
218  nuPDG_truth = -99999;
219  ccnc_truth = -99999;
220  mode_truth = -99999;
221 
222  nshws = 0;
223  for (int i = 0; i < kMaxShowers; ++i) {
224  shwid[i] = -99999;
225  shwdcosx[i] = -99999;
226  shwdcosy[i] = -99999;
227  shwdcosz[i] = -99999;
228  shwstartx[i] = -99999;
229  shwstarty[i] = -99999;
230  shwstartz[i] = -99999;
231  for (int j = 0; j < 2; ++j) {
232  shwdedx[i][j] = -99999;
233  }
234  shwbestplane[i] = -99999;
235  }
236 
237  highestHitsPDG = -99999;
238  highestHitsFrac = -99999;
239 
240 } // reset
double shwdedx[kMaxShowers][2]
constexpr int kMaxShowers
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)
void shower::TCShowerAnalysis::truthMatcher ( detinfo::DetectorClocksData const &  clockData,
std::vector< art::Ptr< recob::Hit >>  all_hits,
std::vector< art::Ptr< recob::Hit >>  shower_hits,
const simb::MCParticle *&  MCparticle,
double &  Efrac,
double &  Ecomplet 
)
private

Definition at line 244 of file TCShowerAnalysis_module.cc.

References util::abs(), DEFINE_ART_MODULE, cheat::BackTrackerService::HitToEveTrackIDEs(), cheat::ParticleInventoryService::TrackIdToParticle_P(), and recob::Hit::View().

Referenced by analyze().

250 {
251 
252  MCparticle = 0;
253  Efrac = 1.0;
254  Ecomplet = 0;
255 
258  std::map<int, double> trkID_E;
259  for (size_t j = 0; j < shower_hits.size(); ++j) {
260  art::Ptr<recob::Hit> hit = shower_hits[j];
261  // For know let's use collection plane to look at the shower reconstruction
262  if (hit->View() != 1) continue;
263  std::vector<sim::TrackIDE> TrackIDs = bt_serv->HitToEveTrackIDEs(clockData, hit);
264  for (size_t k = 0; k < TrackIDs.size(); k++) {
265  if (trkID_E.find(std::abs(TrackIDs[k].trackID)) == trkID_E.end())
266  trkID_E[std::abs(TrackIDs[k].trackID)] = 0;
267  trkID_E[std::abs(TrackIDs[k].trackID)] += TrackIDs[k].energy;
268  }
269  }
270  double max_E = -999.0;
271  double total_E = 0.0;
272  int TrackID = -999;
273  double partial_E = 0.0;
274 
275  if (!trkID_E.size()) return; // Ghost shower???
276  for (std::map<int, double>::iterator ii = trkID_E.begin(); ii != trkID_E.end(); ++ii) {
277  total_E += ii->second;
278  if ((ii->second) > max_E) {
279  partial_E = ii->second;
280  max_E = ii->second;
281  TrackID = ii->first;
282  }
283  }
284  MCparticle = pi_serv->TrackIdToParticle_P(TrackID);
285 
286  Efrac = partial_E / total_E;
287 
288  // completeness
289  double totenergy = 0;
290  for (size_t k = 0; k < all_hits.size(); ++k) {
291  art::Ptr<recob::Hit> hit = all_hits[k];
292  std::vector<sim::TrackIDE> TrackIDs = bt_serv->HitToEveTrackIDEs(clockData, hit);
293  for (size_t l = 0; l < TrackIDs.size(); ++l) {
294  if (std::abs(TrackIDs[l].trackID) == TrackID) { totenergy += TrackIDs[l].energy; }
295  }
296  }
297  Ecomplet = partial_E / totenergy;
298 
299 } // truthMatcher
intermediate_table::iterator iterator
std::vector< TrackID > TrackIDs
const simb::MCParticle * TrackIdToParticle_P(int id) const
constexpr auto abs(T v)
Returns the absolute value of the argument.
geo::View_t View() const
View for the plane of the hit.
Definition: Hit.h:276
Detector simulation of raw signals on wires.
std::vector< sim::TrackIDE > HitToEveTrackIDEs(detinfo::DetectorClocksData const &clockData, recob::Hit const &hit) const
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

Member Data Documentation

int shower::TCShowerAnalysis::ccnc_truth
private

Definition at line 55 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::event
private

Definition at line 53 of file TCShowerAnalysis_module.cc.

calo::CalorimetryAlg shower::TCShowerAnalysis::fCalorimetryAlg
private

Definition at line 78 of file TCShowerAnalysis_module.cc.

std::string shower::TCShowerAnalysis::fDigitModuleLabel
private

Definition at line 76 of file TCShowerAnalysis_module.cc.

Referenced by analyze().

std::string shower::TCShowerAnalysis::fGenieGenModuleLabel
private

Definition at line 75 of file TCShowerAnalysis_module.cc.

Referenced by analyze().

std::string shower::TCShowerAnalysis::fHitModuleLabel
private

Definition at line 73 of file TCShowerAnalysis_module.cc.

Referenced by analyze().

std::string shower::TCShowerAnalysis::fShowerModuleLabel
private

Definition at line 74 of file TCShowerAnalysis_module.cc.

Referenced by analyze().

TTree* shower::TCShowerAnalysis::fTree
private

Definition at line 50 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), and beginJob().

double shower::TCShowerAnalysis::highestHitsFrac
private

Definition at line 71 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::highestHitsPDG
private

Definition at line 70 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::mode_truth
private

Definition at line 56 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::nshws
private

Definition at line 57 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::nuPDG_truth
private

Definition at line 54 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::run
private

Definition at line 51 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::shwbestplane[kMaxShowers]
private

Definition at line 67 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

float shower::TCShowerAnalysis::shwdcosx[kMaxShowers]
private

Definition at line 59 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

float shower::TCShowerAnalysis::shwdcosy[kMaxShowers]
private

Definition at line 60 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

float shower::TCShowerAnalysis::shwdcosz[kMaxShowers]
private

Definition at line 61 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

double shower::TCShowerAnalysis::shwdedx[kMaxShowers][2]
private

Definition at line 65 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::shwid[kMaxShowers]
private

Definition at line 58 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

float shower::TCShowerAnalysis::shwstartx[kMaxShowers]
private

Definition at line 62 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

float shower::TCShowerAnalysis::shwstarty[kMaxShowers]
private

Definition at line 63 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

float shower::TCShowerAnalysis::shwstartz[kMaxShowers]
private

Definition at line 64 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().

int shower::TCShowerAnalysis::subrun
private

Definition at line 52 of file TCShowerAnalysis_module.cc.

Referenced by analyze(), beginJob(), and reset().


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