All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
icaruscode/icaruscode/PMT/OpReco/FlashFinder/FlashFinderFMWKInterface.cxx
Go to the documentation of this file.
1 #ifndef __FLASHFINDERFMWKINTERFACE_CXX__
2 #define __FLASHFINDERFMWKINTERFACE_CXX__
3 
4 #include "art/Framework/Core/EDProducer.h"
5 #include "art/Framework/Core/ModuleMacros.h"
6 #include "art/Framework/Principal/Event.h"
7 #include "art/Framework/Principal/Handle.h"
8 #include "art/Framework/Principal/Run.h"
9 #include "art/Framework/Principal/SubRun.h"
10 #include "canvas/Utilities/InputTag.h"
11 #include "fhiclcpp/ParameterSet.h"
12 #include "messagefacility/MessageLogger/MessageLogger.h"
13 #include "art_root_io/TFileService.h"
15 
16 
18 namespace pmtana {
19 
20 
21  std::vector<size_t> ListOpChannels(int cryostat) {
22  std::vector<size_t> res;
23  ::art::ServiceHandle<geo::Geometry> geo;
24  if(cryostat<0) {
25  for(size_t opch=0; opch<geo->MaxOpChannel(); ++opch) {
26  if(geo->IsValidOpChannel(opch)) continue;
27  res.push_back(opch);
28  }
29  }else{
30  auto const& bbox = geo->Cryostat(cryostat).Boundaries();
31  for(size_t opch=0; opch<geo->MaxOpChannel(); ++opch) {
32  if(geo->IsValidOpChannel(opch)) continue;
33  auto const& pt = geo->OpDetGeoFromOpChannel(opch).GetCenter();
34  if(!bbox.ContainsPosition(pt)) continue;
35  res.push_back(opch);
36  }
37  }
38  return res;
39  }
40 
41  std::vector<size_t> ListOpDets(int cryostat) {
42  std::vector<size_t> res;
43  ::art::ServiceHandle<geo::Geometry> geo;
44  if(cryostat<0) {
45  for(size_t opdet=0; opdet<geo->NOpDets(); ++opdet) {
46  res.push_back(opdet);
47  }
48  }else{
49  auto const& bbox = geo->Cryostat(cryostat).Boundaries();
50  for(size_t opdet=0; opdet<geo->NOpDets(); ++opdet) {
51  auto const& pt = geo->OpDetGeoFromOpDet(opdet).GetCenter();
52  if(!bbox.ContainsPosition(pt)) continue;
53  res.push_back(opdet);
54  }
55  }
56  return res;
57  }
58 
59  size_t NOpDets(int cryostat) {
60  ::art::ServiceHandle<geo::Geometry> geo;
61  if(cryostat<0)
62  return geo->NOpDets();
63  else
64  return geo->Cryostat(cryostat).NOpDet();
65  }
66 
67  size_t OpDetFromOpChannel(size_t opch) {
68  ::art::ServiceHandle<geo::Geometry> geo;
69  return geo->OpDetFromOpChannel(opch);
70  }
71 
72  void OpDetCenterFromOpChannel(size_t opch, double *xyz) {
73  ::art::ServiceHandle<geo::Geometry> geo;
74  geo->OpDetGeoFromOpChannel(opch).GetCenter(xyz);
75  }
76 
77 }
78 #endif
art framework interface to geometry description