All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Namespaces | Functions | Variables
NuVertexChargeTree_module.cc File Reference
#include "art/Framework/Core/EDAnalyzer.h"
#include "art/Framework/Core/ModuleMacros.h"
#include "art/Framework/Principal/Event.h"
#include "art/Framework/Principal/Handle.h"
#include "art/Framework/Principal/Run.h"
#include "art/Framework/Principal/SubRun.h"
#include "canvas/Utilities/InputTag.h"
#include "fhiclcpp/ParameterSet.h"
#include "messagefacility/MessageLogger/MessageLogger.h"
#include "art_root_io/TFileService.h"
#include "sbncode/CAFMaker/RecoUtils/RecoUtils.h"
#include "lardataobj/RecoBase/Hit.h"
#include "lardataobj/RecoBase/Cluster.h"
#include "lardataobj/RecoBase/PFParticle.h"
#include "lardataobj/RecoBase/SpacePoint.h"
#include "lardataobj/RecoBase/Track.h"
#include "lardataobj/RecoBase/Vertex.h"
#include "lardataobj/RecoBase/Slice.h"
#include "lardataobj/RecoBase/Shower.h"
#include "nusimdata/SimulationBase/MCParticle.h"
#include "larcore/Geometry/Geometry.h"
#include "larcore/CoreUtils/ServiceUtil.h"
#include "larcorealg/Geometry/GeometryCore.h"
#include "larcorealg/Geometry/Exceptions.h"
#include "lardataalg/DetectorInfo/DetectorPropertiesStandard.h"
#include "lardata/DetectorInfoServices/DetectorPropertiesService.h"
#include "larpandora/LArPandoraInterface/LArPandoraHelper.h"
#include "larcorealg/Geometry/BoxBoundedGeo.h"
#include "larsim/MCCheater/BackTrackerService.h"
#include "larsim/MCCheater/ParticleInventoryService.h"
#include "lardata/DetectorInfoServices/DetectorClocksService.h"
#include "larevt/SpaceChargeServices/SpaceChargeService.h"
#include "../LArRecoProducer/LArReco/TrackMomentumCalculator.h"
#include "sbncode/TPCReco/VertexStub/StubMergeAlgorithms.h"
#include "sbnobj/Common/Reco/VertexHit.h"
#include "sbnobj/Common/Reco/Stub.h"

Go to the source code of this file.

Classes

class  sbn::NuVertexChargeTree
 Analyzer module for use with sbn::Stub and sbn::VertexHit objects. More...
 

Namespaces

 sbn
 This module creates Common Analysis Files.
 

Functions

 fRangeCalculator (p.get< float >("MinTrackLength", 0.1))
 
_tree Branch ("ifile",&fIFile,"ifile/i")
 
_tree Branch ("ievt",&fIEvt,"ievt/i")
 
_tree Branch ("evt",&fEvt,"evt/i")
 
_tree Branch ("nue",&fNuE,"nue/F")
 
_tree Branch ("numode",&fNuMode,"numode/i")
 
_tree Branch ("nuinttype",&fNuIntType,"nuinttype/i")
 
_tree Branch ("fsp_px",&fFSPPx)
 
_tree Branch ("fsp_py",&fFSPPy)
 
_tree Branch ("fsp_pz",&fFSPPz)
 
_tree Branch ("fsp_start_x",&fFSPStartZ)
 
_tree Branch ("fsp_start_y",&fFSPStartY)
 
_tree Branch ("fsp_start_z",&fFSPStartZ)
 
_tree Branch ("fsp_end_x",&fFSPEndZ)
 
_tree Branch ("fsp_end_y",&fFSPEndY)
 
_tree Branch ("fsp_end_z",&fFSPEndZ)
 
_tree Branch ("fsp_e",&fFSPE)
 
_tree Branch ("fsp_ke",&fFSPKE)
 
_tree Branch ("fsp_vise",&fFSPVisE)
 
_tree Branch ("fsp_q",&fFSPQ)
 
_tree Branch ("fsp_len",&fFSPLen)
 
_tree Branch ("fsp_pid",&fFSPPID)
 
_tree Branch ("fsp_matched",&fFSPMatched)
 
_tree Branch ("fsp_matched_pfp_primary",&fFSPMatchedPFPPrimary)
 
_tree Branch ("fsp_matched_pid",&fFSPMatchedPID)
 
_tree Branch ("fsp_matched_primary",&fFSPMtachedPrimary)
 
_tree Branch ("fsp_process_is_topping",&fFSPIsStopping)
 
_tree Branch ("fsp_maxq0",&fFSPMaxQ0)
 
_tree Branch ("fsp_maxq1",&fFSPMaxQ1)
 
_tree Branch ("fsp_maxq2",&fFSPMaxQ2)
 
_tree Branch ("fsp_pitch0",&fFSPPitch0)
 
_tree Branch ("fsp_pitch1",&fFSPPitch1)
 
_tree Branch ("fsp_pitch2",&fFSPPitch2)
 
_tree Branch ("reco_vert_dist",&fRecoVertDist,"reco_vert_dist/F")
 
_tree Branch ("vertex_hit_spid",&fVertexHitSPID)
 
_tree Branch ("vertex_hit_pitch",&fVertexHitPitch)
 
_tree Branch ("vertex_hit_dqdx",&fVertexHitdQdx)
 
_tree Branch ("vertex_hit_dedx",&fVertexHitdEdx)
 
_tree Branch ("vertex_hit_charge",&fVertexHitCharge)
 
_tree Branch ("vertex_hit_dist",&fVertexHitDist)
 
_tree Branch ("vertex_hit_vtxw",&fVertexHitVtxW)
 
_tree Branch ("vertex_hit_plane",&fVertexHitPlane)
 
_tree Branch ("vertex_hit_wire",&fVertexHitWire)
 
_tree Branch ("vertex_hit_peak_x",&fVertexHitPeakX)
 
_tree Branch ("vertex_hit_true_e",&fVertexHitTrueEnergy)
 
_tree Branch ("vertex_hit_true_proton_e",&fVertexHitTrueProtonEnergy)
 
_tree Branch ("vertex_hit_true_bragg_proton_e",&fVertexHitTrueBraggProtonEnergy)
 
_tree Branch ("vertex_hit_true_x",&fVertexHitTrueX)
 
_tree Branch ("vertex_hit_true_y",&fVertexHitTrueY)
 
_tree Branch ("vertex_hit_true_z",&fVertexHitTrueZ)
 
_tree Branch ("stub_endx",&fStubEndx)
 
_tree Branch ("stub_endy",&fStubEndy)
 
_tree Branch ("stub_endz",&fStubEndz)
 
_tree Branch ("stub_dirx",&fStubDirx)
 
_tree Branch ("stub_diry",&fStubDiry)
 
_tree Branch ("stub_dirz",&fStubDirz)
 
_tree Branch ("stub_length",&fStubLength)
 
_tree Branch ("stub_lenp",&fStubLenP)
 
_tree Branch ("stub_charge",&fStubCharge)
 
_tree Branch ("stub_trk_pitch",&fStubTrkPitch)
 
_tree Branch ("stub_pitch",&fStubPitch)
 
_tree Branch ("stub_nwire",&fStubNWire)
 
_tree Branch ("stub_hit_ind",&fStubHitInd)
 
_tree Branch ("stub_pfpid",&fStubPFPID)
 
_tree Branch ("stub_nplane",&fStubNPlane)
 
_tree Branch ("stub_vtx_w",&fStubVtxW)
 
_tree Branch ("stub_end_w",&fStubEndW)
 
_tree Branch ("stub_vtx_efield",&fStubVtxEField)
 
_tree Branch ("stub_end_efield",&fStubEndEField)
 
_tree Branch ("stub_qlength",&fStubQLength)
 
_tree Branch ("stub_qs",&fStubQs)
 
_tree Branch ("stub_ontracks",&fStubOnTracks)
 
_tree Branch ("stub_wires",&fStubWires)
 
_tree Branch ("stub_true_ke",&fStubTrueKE)
 
_tree Branch ("stub_true_length",&fStubTrueLength)
 
_tree Branch ("stub_true_id",&fStubTrueID)
 
_tree Branch ("stub_true_pdg",&fStubTruePdg)
 
_tree Branch ("stub_true_px",&fStubTruePx)
 
_tree Branch ("stub_true_py",&fStubTruePy)
 
_tree Branch ("stub_true_pz",&fStubTruePz)
 
_tree Branch ("stub_pfp_true_pdg",&fStubPFPTruePdg)
 
_tree Branch ("stub_pfp_true_px",&fStubPFPTruePx)
 
_tree Branch ("stub_pfp_true_py",&fStubPFPTruePy)
 
_tree Branch ("stub_pfp_true_pz",&fStubPFPTruePz)
 
_tree Branch ("stub_match_length",&fStubMatchLength)
 
_tree Branch ("stub_match",&fStubMatch)
 
_tree Branch ("stub_match_overlaps",&fStubMatchOverlaps)
 
_tree Branch ("stub_match_dot",&fStubMatchDot)
 
_tree Branch ("stub_xplane_match_length",&fStubXPlaneMatchLength)
 
_tree Branch ("stub_xplane_match",&fStubXPlaneMatch)
 
_tree Branch ("stub_xplane_match_toff",&fStubXPlaneMatchTOff)
 
_tree Branch ("stub_xplane_match_qoff",&fStubXPlaneMatchQOff)
 
_tree Branch ("stub_xplane_match_dqdxoff",&fStubXPlaneMatchdQdxOff)
 
_tree Branch ("stub_xplane_match_peakqoff",&fStubXPlaneMatchPeakQOff)
 
_tree Branch ("n_slice_particles",&fNSliceParticles,"n_slice_particles/i")
 
_tree Branch ("n_slice_primary_particles",&fNSlicePrimaryParticles,"n_slice_primary_particles/i")
 
_tree Branch ("n_slice_primary_tracks",&fNSlicePrimaryTracks,"n_slice_primary_tracks/i")
 
_tree Branch ("n_slice_primary_nus",&fNSlicePrimaryNus,"n_slice_primary_nus/i")
 
_tree Branch ("n_slice_primary_showers",&fNSlicePrimaryShowers,"n_slice_primary_showers/i")
 
 for (auto const &cryo:geometry->IterateCryostats())
 
 for (const std::vector< geo::BoxBoundedGeo > &tpcs:fTPCVolumes)
 
const simb::MCParticle * Genie2G4MCParticle (const simb::MCParticle &genie_part, const simb::MCTruth &mctruth, const std::vector< art::Ptr< simb::MCParticle >> &g4_mcparticles, const std::vector< const sim::GeneratedParticleInfo * > infos)
 

Variables

 fIFile = 0
 
art::ServiceHandle
< art::TFileService > 
tfs
 
 _tree = tfs->make<TTree>("VertexEAnalyzer", "kink_tree")
 
const geo::GeometryCoregeometry = lar::providerFrom<geo::Geometry>()
 

Detailed Description

Author
Gray Putnam (grayp.nosp@m.utna.nosp@m.m@uch.nosp@m.icag.nosp@m.o.edu)

Definition in file NuVertexChargeTree_module.cc.

Function Documentation

_tree Branch ( "ifile"  ,
fIFile,
"ifile/i"   
)
_tree Branch ( "ievt"  ,
fIEvt,
"ievt/i"   
)
_tree Branch ( "evt"  ,
fEvt,
"evt/i"   
)
_tree Branch ( "nue"  ,
fNuE,
"nue/F  
)
_tree Branch ( "numode"  ,
fNuMode,
"numode/i"   
)
_tree Branch ( "nuinttype"  ,
fNuIntType,
"nuinttype/i"   
)
_tree Branch ( "fsp_px"  ,
fFSPPx 
)
_tree Branch ( "fsp_py"  ,
fFSPPy 
)
_tree Branch ( "fsp_pz"  ,
fFSPPz 
)
_tree Branch ( "fsp_start_x"  ,
fFSPStartZ 
)
_tree Branch ( "fsp_start_y"  ,
fFSPStartY 
)
_tree Branch ( "fsp_start_z"  ,
fFSPStartZ 
)
_tree Branch ( "fsp_end_x"  ,
fFSPEndZ 
)
_tree Branch ( "fsp_end_y"  ,
fFSPEndY 
)
_tree Branch ( "fsp_end_z"  ,
fFSPEndZ 
)
_tree Branch ( "fsp_e"  ,
fFSPE 
)
_tree Branch ( "fsp_ke"  ,
fFSPKE 
)
_tree Branch ( "fsp_vise"  ,
fFSPVisE 
)
_tree Branch ( "fsp_q"  ,
fFSPQ 
)
_tree Branch ( "fsp_len"  ,
fFSPLen 
)
_tree Branch ( "fsp_pid"  ,
fFSPPID 
)
_tree Branch ( "fsp_matched"  ,
fFSPMatched 
)
_tree Branch ( "fsp_matched_pfp_primary"  ,
fFSPMatchedPFPPrimary 
)
_tree Branch ( "fsp_matched_pid"  ,
fFSPMatchedPID 
)
_tree Branch ( "fsp_matched_primary"  ,
fFSPMtachedPrimary 
)
_tree Branch ( "fsp_process_is_topping"  ,
fFSPIsStopping 
)
_tree Branch ( "fsp_maxq0"  ,
fFSPMaxQ0 
)
_tree Branch ( "fsp_maxq1"  ,
fFSPMaxQ1 
)
_tree Branch ( "fsp_maxq2"  ,
fFSPMaxQ2 
)
_tree Branch ( "fsp_pitch0"  ,
fFSPPitch0 
)
_tree Branch ( "fsp_pitch1"  ,
fFSPPitch1 
)
_tree Branch ( "fsp_pitch2"  ,
fFSPPitch2 
)
_tree Branch ( "reco_vert_dist"  ,
fRecoVertDist,
"reco_vert_dist/F  
)
_tree Branch ( "vertex_hit_spid"  ,
fVertexHitSPID 
)
_tree Branch ( "vertex_hit_pitch"  ,
fVertexHitPitch 
)
_tree Branch ( "vertex_hit_dqdx"  ,
fVertexHitdQdx 
)
_tree Branch ( "vertex_hit_dedx"  ,
fVertexHitdEdx 
)
_tree Branch ( "vertex_hit_charge"  ,
fVertexHitCharge 
)
_tree Branch ( "vertex_hit_dist"  ,
fVertexHitDist 
)
_tree Branch ( "vertex_hit_vtxw"  ,
fVertexHitVtxW 
)
_tree Branch ( "vertex_hit_plane"  ,
fVertexHitPlane 
)
_tree Branch ( "vertex_hit_wire"  ,
fVertexHitWire 
)
_tree Branch ( "vertex_hit_peak_x"  ,
fVertexHitPeakX 
)
_tree Branch ( "vertex_hit_true_e"  ,
fVertexHitTrueEnergy 
)
_tree Branch ( "vertex_hit_true_proton_e"  ,
fVertexHitTrueProtonEnergy 
)
_tree Branch ( "vertex_hit_true_bragg_proton_e"  ,
fVertexHitTrueBraggProtonEnergy 
)
_tree Branch ( "vertex_hit_true_x"  ,
fVertexHitTrueX 
)
_tree Branch ( "vertex_hit_true_y"  ,
fVertexHitTrueY 
)
_tree Branch ( "vertex_hit_true_z"  ,
fVertexHitTrueZ 
)
_tree Branch ( "stub_endx"  ,
fStubEndx 
)
_tree Branch ( "stub_endy"  ,
fStubEndy 
)
_tree Branch ( "stub_endz"  ,
fStubEndz 
)
_tree Branch ( "stub_dirx"  ,
fStubDirx 
)
_tree Branch ( "stub_diry"  ,
fStubDiry 
)
_tree Branch ( "stub_dirz"  ,
fStubDirz 
)
_tree Branch ( "stub_length"  ,
fStubLength 
)
_tree Branch ( "stub_lenp"  ,
fStubLenP 
)
_tree Branch ( "stub_charge"  ,
fStubCharge 
)
_tree Branch ( "stub_trk_pitch"  ,
fStubTrkPitch 
)
_tree Branch ( "stub_pitch"  ,
fStubPitch 
)
_tree Branch ( "stub_nwire"  ,
fStubNWire 
)
_tree Branch ( "stub_hit_ind"  ,
fStubHitInd 
)
_tree Branch ( "stub_pfpid"  ,
fStubPFPID 
)
_tree Branch ( "stub_nplane"  ,
fStubNPlane 
)
_tree Branch ( "stub_vtx_w"  ,
fStubVtxW 
)
_tree Branch ( "stub_end_w"  ,
fStubEndW 
)
_tree Branch ( "stub_vtx_efield"  ,
fStubVtxEField 
)
_tree Branch ( "stub_end_efield"  ,
fStubEndEField 
)
_tree Branch ( "stub_qlength"  ,
fStubQLength 
)
_tree Branch ( "stub_qs"  ,
fStubQs 
)
_tree Branch ( "stub_ontracks"  ,
fStubOnTracks 
)
_tree Branch ( "stub_wires"  ,
fStubWires 
)
_tree Branch ( "stub_true_ke"  ,
fStubTrueKE 
)
_tree Branch ( "stub_true_length"  ,
fStubTrueLength 
)
_tree Branch ( "stub_true_id"  ,
fStubTrueID 
)
_tree Branch ( "stub_true_pdg"  ,
fStubTruePdg 
)
_tree Branch ( "stub_true_px"  ,
fStubTruePx 
)
_tree Branch ( "stub_true_py"  ,
fStubTruePy 
)
_tree Branch ( "stub_true_pz"  ,
fStubTruePz 
)
_tree Branch ( "stub_pfp_true_pdg"  ,
fStubPFPTruePdg 
)
_tree Branch ( "stub_pfp_true_px"  ,
fStubPFPTruePx 
)
_tree Branch ( "stub_pfp_true_py"  ,
fStubPFPTruePy 
)
_tree Branch ( "stub_pfp_true_pz"  ,
fStubPFPTruePz 
)
_tree Branch ( "stub_match_length"  ,
fStubMatchLength 
)
_tree Branch ( "stub_match"  ,
fStubMatch 
)
_tree Branch ( "stub_match_overlaps"  ,
fStubMatchOverlaps 
)
_tree Branch ( "stub_match_dot"  ,
fStubMatchDot 
)
_tree Branch ( "stub_xplane_match_length"  ,
fStubXPlaneMatchLength 
)
_tree Branch ( "stub_xplane_match"  ,
fStubXPlaneMatch 
)
_tree Branch ( "stub_xplane_match_toff"  ,
fStubXPlaneMatchTOff 
)
_tree Branch ( "stub_xplane_match_qoff"  ,
fStubXPlaneMatchQOff 
)
_tree Branch ( "stub_xplane_match_dqdxoff"  ,
fStubXPlaneMatchdQdxOff 
)
_tree Branch ( "stub_xplane_match_peakqoff"  ,
fStubXPlaneMatchPeakQOff 
)
_tree Branch ( "n_slice_particles"  ,
fNSliceParticles,
"n_slice_particles/i"   
)
_tree Branch ( "n_slice_primary_particles"  ,
fNSlicePrimaryParticles,
"n_slice_primary_particles/i"   
)
_tree Branch ( "n_slice_primary_tracks"  ,
fNSlicePrimaryTracks,
"n_slice_primary_tracks/i"   
)
_tree Branch ( "n_slice_primary_nus"  ,
fNSlicePrimaryNus,
"n_slice_primary_nus/i"   
)
_tree Branch ( "n_slice_primary_showers"  ,
fNSlicePrimaryShowers,
"n_slice_primary_showers/i"   
)
for ( auto const &cryo:geometry->  IterateCryostats())

Definition at line 376 of file NuVertexChargeTree_module.cc.

376  : geometry->IterateCryostats()) {
378  tend = geometry->end_TPC(cryo.ID());
379  std::vector<geo::BoxBoundedGeo> this_tpc_volumes;
380  while (iTPC != tend) {
381  geo::TPCGeo const& TPC = *iTPC;
382  this_tpc_volumes.push_back(TPC.ActiveBoundingBox());
383  iTPC++;
384  }
385  fTPCVolumes.push_back(std::move(this_tpc_volumes));
386  }
const geo::GeometryCore * geometry
Geometry information for a single TPC.
Definition: TPCGeo.h:38
geo::BoxBoundedGeo const & ActiveBoundingBox() const
Returns the box of the active volume of this TPC.
Definition: TPCGeo.h:320
BEGIN_PROLOG TPC
TPC_iterator begin_TPC() const
Returns an iterator pointing to the first TPC in the detector.
IteratorBox< cryostat_iterator,&GeometryCore::begin_cryostat,&GeometryCore::end_cryostat > IterateCryostats() const
Enables ranged-for loops on all cryostats of the detector.
Forward iterator browsing all geometry elements in the detector.
Definition: GeometryCore.h:727
TPC_iterator end_TPC() const
Returns an iterator pointing after the last TPC in the detector.
for ( const std::vector< geo::BoxBoundedGeo > &tpcs:fTPCVolumes  )

Definition at line 389 of file NuVertexChargeTree_module.cc.

389  : fTPCVolumes) {
390  double XMin = std::min_element(tpcs.begin(), tpcs.end(), [](auto &lhs, auto &rhs) { return lhs.MinX() < rhs.MinX(); })->MinX();
391  double YMin = std::min_element(tpcs.begin(), tpcs.end(), [](auto &lhs, auto &rhs) { return lhs.MinY() < rhs.MinY(); })->MinY();
392  double ZMin = std::min_element(tpcs.begin(), tpcs.end(), [](auto &lhs, auto &rhs) { return lhs.MinZ() < rhs.MinZ(); })->MinZ();
393 
394  double XMax = std::max_element(tpcs.begin(), tpcs.end(), [](auto &lhs, auto &rhs) { return lhs.MaxX() < rhs.MaxX(); })->MaxX();
395  double YMax = std::max_element(tpcs.begin(), tpcs.end(), [](auto &lhs, auto &rhs) { return lhs.MaxY() < rhs.MaxY(); })->MaxY();
396  double ZMax = std::max_element(tpcs.begin(), tpcs.end(), [](auto &lhs, auto &rhs) { return lhs.MaxZ() < rhs.MaxZ(); })->MaxZ();
397 
398  // fActiveVolumes.emplace_back(XMin, XMax, YMin, YMax, ZMin, ZMax);
399  fFiducialVolumes.emplace_back(XMin + fFiducialInset[0], XMax - fFiducialInset[1],
400  YMin + fFiducialInset[2], YMax - fFiducialInset[3],
401  ZMin + fFiducialInset[4], ZMax - fFiducialInset[5]);
402  }
fRangeCalculator ( p.get< float >  "MinTrackLength", 0.1)
const simb::MCParticle* Genie2G4MCParticle ( const simb::MCParticle &  genie_part,
const simb::MCTruth &  mctruth,
const std::vector< art::Ptr< simb::MCParticle >> &  g4_mcparticles,
const std::vector< const sim::GeneratedParticleInfo * >  infos 
)

Definition at line 412 of file NuVertexChargeTree_module.cc.

416  {
417 
418  const simb::MCParticle *ret = nullptr;
419  for (int iparticle = 0; iparticle < (int)g4_mcparticles.size(); iparticle++) {
420  if (infos[iparticle]->hasGeneratedParticleIndex() &&
421  (int)infos[iparticle]->generatedParticleIndex() < mctruth.NParticles() && // TODO: why is this number sometimes bigger than the number of particles?
422  mctruth.GetParticle(infos[iparticle]->generatedParticleIndex()).TrackId() == genie_part.TrackId() &&
423  g4_mcparticles[iparticle]->Process() == "primary" /* TODO: will have to remove this restriction to include secondary particles*/) {
424 
425  // if a genie particle re-scatters in g4 and makes more particles, then multiple g4 particles can match to a
426  // genie particle. Thus, we also check that the start location of the associated genie particle matches the g4
427  // and that the pdgid matches (to be on the safe side)
428  //
429  // Note that this should be accounted for by requiring the process to be primary. This is a bit of redundancy.
430  const simb::MCParticle& matched_genie_particle = mctruth.GetParticle(infos[iparticle]->generatedParticleIndex());
431  if ((matched_genie_particle.Position().Vect() - g4_mcparticles[iparticle]->Position().Vect()).Mag() < 1e-4 &&
432  matched_genie_particle.PdgCode() == g4_mcparticles[iparticle]->PdgCode()) {
433 
434  // this should only be true for one particle
435  assert(ret == nullptr);
436  ret = g4_mcparticles[iparticle].get();
437  }
438  }
439  }
440  return ret;
441 }
do i e

Variable Documentation

_tree = tfs->make<TTree>("VertexEAnalyzer", "kink_tree")

Definition at line 256 of file NuVertexChargeTree_module.cc.

fIFile = 0

Definition at line 253 of file NuVertexChargeTree_module.cc.

Definition at line 373 of file NuVertexChargeTree_module.cc.

art::ServiceHandle<art::TFileService> tfs

Definition at line 254 of file NuVertexChargeTree_module.cc.