Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
rb::Track Class Reference

A rb::Prong with full reconstructed trajectory. More...

#include "/cvmfs/nova-development.opensciencegrid.org/novasoft/releases/N20-11-28/RecoBase/Track.h"

Inheritance diagram for rb::Track:
rb::Prong rb::Cluster cheat::SimTrack

Public Types

enum  ESaveGeVMode { kInitializeTotalGeV = 0, kResetTotalGeV = 1 }
 

Public Member Functions

virtual ~Track ()
 
void AppendTrajectoryPoint (TVector3 pt)
 
void AppendTrajectoryPoint (double pv, double pz)
 
void PrependTrajectoryPoint (TVector3 pt)
 Support constructing tracks backwards. More...
 
void PrependTrajectoryPoint (double pv, double pz)
 
size_t NTrajectoryPoints () const
 
std::vector< TVector3 > const & Trajectory () const
 return a constant reference to the track trajectory points More...
 
TVector3 TrajectoryPoint (unsigned int i) const
 The ith point on the trajectory, a 3-vector in cm. More...
 
virtual void SetStart (TVector3 start)
 
virtual void SetStart (double v0, double z0)
 
TVector3 Stop () const
 Position of the final trajectory point. More...
 
virtual TVector3 StopDir () const
 Get direction at the stop point. More...
 
virtual double TotalLength () const
 Length (cm) of all the track segments. More...
 
virtual double DistanceFromStart (double z) const
 
virtual double DistanceFromEnd (double z) const
 
virtual double W (const rb::CellHit *chit) const
 Estimate the unmeasured coordinate of chit. More...
 
virtual void InterpolateXY (double z, double &x, double &y) const
 
virtual TVector3 InterpolateDir (double z) const
 
void ClearTrajectoryPoints ()
 Forget about all trajectory points. More...
 
void RemoveTrajectoryPoint (unsigned int i)
 Remove the ith trajectory point from the track. More...
 
rb::Track ZipWith (const rb::Track &trk) const
 Combine with a 2D track from the other view to make a 3D track. More...
 
std::map< unsigned int, TVector3 > PlaneDirMap () const
 map of the direction cosines at each plane (ie z) More...
 
virtual bool Is3D () const
 
virtual TVector3 Start () const
 
virtual TVector3 Dir () const
 Unit vector describing prong direction. More...
 
virtual void SetDir (TVector3 dir)
 
virtual void SetDir (double dv, double dz)
 
bool operator< (const Prong &other) const
 
bool operator< (const Cluster &other) const
 
virtual void Add (const art::Ptr< rb::CellHit > &cell, double weight=1)
 
virtual void Add (const art::PtrVector< rb::CellHit > &cells, const std::vector< double > &weights=std::vector< double >())
 
void SetID (int id)
 
const int ID () const
 
bool Is2D () const
 
virtual geo::View_t View () const
 kXorY for 3D clusters. More...
 
rb::Cluster Exclude (const rb::Cluster *excl) const
 Create a cluster from this one, but with the hits of excl removed. More...
 
rb::RecoHit RecoHit (const art::Ptr< rb::CellHit > &chit) const
 Return calibrated hit based on assumed W coordinate. More...
 
rb::RecoHit RecoHit (geo::View_t view, unsigned int viewIdx) const
 
rb::RecoHit RecoHit (unsigned int globalIdx) const
 
virtual void Clear ()
 Forget about all owned cell hits. More...
 
void RemoveHit (const art::Ptr< rb::CellHit > hit)
 Remove hit from current cluster. More...
 
void RemoveHit (unsigned int globalIdx)
 Remove the ith hit from current cluster. More...
 
void SetNoise (bool noise)
 Declare the cluster to consist of noise hits or not. More...
 
bool IsNoise () const
 Is the noise flag set? More...
 
void SetWeight (unsigned int globalIdx, double weight)
 Set weight of the cell at this index. More...
 
void SetWeight (geo::View_t view, unsigned int viewIdx, double weight)
 Set weight of the cell at this index in this view. More...
 
void StandardSort ()
 Put the cells in the cluster into a standard order. More...
 
void SavePrecalcTotalGeV (ESaveGeVMode savemode)
 Store the current result of TotalGeV / CalorimetricEnergy. More...
 
Constructors

See rb::Prong documentation

 Track ()
 
 Track (const art::PtrVector< rb::CellHit > &cells, TVector3 start, TVector3 dir, int id=0)
 
 Track (const art::PtrVector< rb::CellHit > &cells, geo::View_t view, double v0, double z0, double dv, double dz, int id=0)
 
 Track (const std::vector< art::Ptr< rb::CellHit > > &cells, geo::View_t view, double v0, double z0, double dv, double dz, int id=0)
 
 Track (const rb::Cluster &clust, TVector3 start, TVector3 dir, int id=0)
 
 Track (const rb::Cluster &clust, double v0, double z0, double dv, double dz, int id=0)
 
 Track (const rb::Prong &prong, int id=0)
 
 Track (art::PtrVector< rb::CellHit > &cells, std::vector< double > const &weights, std::vector< TVector3 > const &trajectory, TVector3 const &start, TVector3 const &dir, int const &id, geo::View_t view)
 
Cell counts
unsigned int NCell (geo::View_t view) const
 Number of cells in view view. More...
 
unsigned int NCell () const
 Number of cells in either view. More...
 
unsigned int NXCell () const
 Number of cells in the x-view. More...
 
unsigned int NYCell () const
 Number of cells in the y-view. More...
 
Cell Accessors
art::Ptr< rb::CellHitCell (geo::View_t view, unsigned int viewIdx) const
 Get the ith cell from view view. More...
 
art::Ptr< rb::CellHitCell (unsigned int globalIdx) const
 Get the ith cell from either view. More...
 
art::Ptr< rb::CellHitXCell (unsigned int xIdx) const
 Get the ith cell in the x-view. More...
 
art::Ptr< rb::CellHitYCell (unsigned int yIdx) const
 Get the ith cell in the y-view. More...
 
const art::PtrVector< rb::CellHit > & XCells () const
 Get all cells from the x-view. More...
 
const art::PtrVector< rb::CellHit > & YCells () const
 Get all cells from the x-view. More...
 
art::PtrVector< rb::CellHitAllCells () const
 Get all cells from both views. More...
 
std::vector< geo::OfflineChanOfflineChans () const
 Positions of all the CellHits. More...
 
std::vector< rb::WeightedHitWeightedHits () const
 Get all hits from both views, with weights attached. More...
 
double Weight (unsigned int globalIdx) const
 Weight assigned to the cell. More...
 
double Weight (geo::View_t view, unsigned int viewIdx) const
 Weight assigned to the cell. More...
 
Minima

The "lower" corner of a box containing all the hits

TVector3 MinXYZ () const
 
double MinV (geo::View_t view) const
 
double MinX () const
 
double MinY () const
 
double MinZ () const
 
double MinTNS () const
 
unsigned int MinPlane (geo::View_t view=geo::kXorY) const
 
unsigned int MinCell (geo::View_t view) const
 
Maxima

The "upper" corner of a box containing all the hits

TVector3 MaxXYZ () const
 
double MaxV (geo::View_t view) const
 
double MaxX () const
 
double MaxY () const
 
double MaxZ () const
 
double MaxTNS () const
 
unsigned int MaxPlane (geo::View_t view=geo::kXorY) const
 
unsigned int MaxCell (geo::View_t view) const
 
Means

The unweighted mean position and time of all the hits in the cluster

TVector3 MeanXYZ (rb::AveragingScheme=kDefaultScheme) const
 
double MeanV (geo::View_t view, rb::AveragingScheme scheme=kDefaultScheme) const
 
double MeanX (rb::AveragingScheme scheme=kDefaultScheme) const
 
double MeanY (rb::AveragingScheme scheme=kDefaultScheme) const
 
double MeanZ (rb::AveragingScheme scheme=kDefaultScheme) const
 
double MeanTNS (rb::AveragingScheme scheme=kDefaultScheme) const
 
void MinMaxMeanXYZ (TVector3 &lo, TVector3 &hi, TVector3 &mean, rb::AveragingScheme scheme=kDefaultScheme) const
 Gets the min/max/mean all at once, called by the functions above. More...
 
Extents

The size of a box containing all the hits

TVector3 ExtentXYZ () const
 
double ExtentV (geo::View_t view) const
 
double ExtentX () const
 
double ExtentY () const
 
double ExtentZ () const
 
unsigned int ExtentPlane (geo::View_t view=geo::kXorY) const
 
unsigned int ExtentCell (geo::View_t view) const
 
double ExtentTNS () const
 
Connectedness measures
int MostContiguousPlanes (geo::View_t view) const
 Longest run of adjacent planes with hits. More...
 
int MostMissingPlanes (geo::View_t view) const
 Longest run of adjacent planes with no hits. More...
 
int NMissingPlanes (geo::View_t view) const
 Total number of missing planes in cluster. More...
 

Protected Member Functions

void FindNeighbouringPoints (double z, TVector3 &pt0, TVector3 &pt1) const
 Helper function for W. More...
 
void FindNeighbouringPointIndices (double z, int &i0, int &i1) const
 
void InterpolatePts (double z, const TVector3 &a, const TVector3 &b, double &x, double &y) const
 Helper function for InterpolateXY and ZipWith. More...
 
Internal helpers
void EnsureWeightAlloc ()
 Helper. Resizes weights vectors to match cell vectors. More...
 

Protected Attributes

std::vector< TVector3 > fTraj
 
TVector3 fStart
 Start location (xyz, cm) More...
 
TVector3 fDir
 Direction at starting point. More...
 
geo::View_t fView
 view this cluster is in More...
 
art::PtrVector< rb::CellHitfXCell
 collection of x-view cells in cluster More...
 
art::PtrVector< rb::CellHitfYCell
 collection of y-view cells in cluster More...
 
std::vector< double > fXWeights
 Weights, matching cell indexing. More...
 
std::vector< double > fYWeights
 May be empty, means all weights are 1. More...
 
int fID
 ID for cluster. More...
 
bool fNoiseCluster
 flag for whether this is a noise cluster More...
 
double fPrecalcTotalGeV
 -1 = uninitialized More...
 

Totals

double TotalADC () const
 Sum of the ADC of all the contained hits. More...
 
double TotalPE () const
 Sum of the PE value of all the contained hits. More...
 
double TotalGeV (EEnergyCalcScheme escheme=kRecomputeEnergy) const
 Simple sum of the estimated GeV of all the hits. More...
 
double TotalWeight () const
 Sum of all the weights. The effective number of hits. More...
 
double CalorimetricEnergy (EEnergyCalcScheme escheme=kRecomputeEnergy) const
 Simple estimate of neutrino energy. More...
 
enum  EEnergyCalcScheme { kRecomputeEnergy = 0, kUsePrecalcEnergy = 1 }
 

Detailed Description

A rb::Prong with full reconstructed trajectory.

Definition at line 20 of file Track.h.

Member Enumeration Documentation

Enumerator
kRecomputeEnergy 

Default. Ask Calibrator about each hit, and sum.

kUsePrecalcEnergy 

Use a value computed by a previous call to SavePrecalcTotalGeV.

Definition at line 177 of file Cluster.h.

177  {
178  kRecomputeEnergy = 0, ///< Default. Ask Calibrator about each hit, and sum
179  kUsePrecalcEnergy = 1 ///< Use a value computed by a previous call to \ref SavePrecalcTotalGeV
180  };
Use a value computed by a previous call to SavePrecalcTotalGeV.
Definition: Cluster.h:179
Default. Ask Calibrator about each hit, and sum.
Definition: Cluster.h:178
enum rb::Cluster::ESaveGeVMode
inherited
Enumerator
kInitializeTotalGeV 

Default, this is the initial/only call.

kResetTotalGeV 

Altering the already-set value is not an error.

Definition at line 281 of file Cluster.h.

281  {
282  kInitializeTotalGeV = 0, ///< Default, this is the initial/only call
283  kResetTotalGeV = 1 ///< Altering the already-set value is not an error
284  };
Default, this is the initial/only call.
Definition: Cluster.h:282
Altering the already-set value is not an error.
Definition: Cluster.h:283

Constructor & Destructor Documentation

rb::Track::Track ( )
inline
rb::Track::Track ( const art::PtrVector< rb::CellHit > &  cells,
TVector3  start,
TVector3  dir,
int  id = 0 
)

Definition at line 22 of file Track.cxx.

References AppendTrajectoryPoint().

26  : rb::Prong(cells, start, dir, id)
27  {
29  }
void AppendTrajectoryPoint(TVector3 pt)
Definition: Track.cxx:112
A Cluster with defined start position and direction.
Definition: Prong.h:19
TDirectory * dir
Definition: macro.C:5
rb::Track::Track ( const art::PtrVector< rb::CellHit > &  cells,
geo::View_t  view,
double  v0,
double  z0,
double  dv,
double  dz,
int  id = 0 
)

Definition at line 32 of file Track.cxx.

References AppendTrajectoryPoint().

39  : rb::Prong(cells, view, v0, z0, dv, dz, id)
40  {
41  AppendTrajectoryPoint(v0, z0);
42  }
double dz[NP][NC]
void AppendTrajectoryPoint(TVector3 pt)
Definition: Track.cxx:112
A Cluster with defined start position and direction.
Definition: Prong.h:19
rb::Track::Track ( const std::vector< art::Ptr< rb::CellHit > > &  cells,
geo::View_t  view,
double  v0,
double  z0,
double  dv,
double  dz,
int  id = 0 
)

Definition at line 45 of file Track.cxx.

References AppendTrajectoryPoint().

52  : rb::Prong(cells, view, v0, z0, dv, dz, id)
53  {
54  AppendTrajectoryPoint(v0, z0);
55  }
double dz[NP][NC]
void AppendTrajectoryPoint(TVector3 pt)
Definition: Track.cxx:112
A Cluster with defined start position and direction.
Definition: Prong.h:19
rb::Track::Track ( const rb::Cluster clust,
TVector3  start,
TVector3  dir,
int  id = 0 
)

Definition at line 58 of file Track.cxx.

References AppendTrajectoryPoint().

62  : rb::Prong(clust, start, dir, id)
63  {
65  }
void AppendTrajectoryPoint(TVector3 pt)
Definition: Track.cxx:112
A Cluster with defined start position and direction.
Definition: Prong.h:19
TDirectory * dir
Definition: macro.C:5
rb::Track::Track ( const rb::Cluster clust,
double  v0,
double  z0,
double  dv,
double  dz,
int  id = 0 
)

Definition at line 68 of file Track.cxx.

References AppendTrajectoryPoint().

74  : rb::Prong(clust, v0, z0, dv, dz, id)
75  {
76  AppendTrajectoryPoint(v0, z0);
77  }
double dz[NP][NC]
void AppendTrajectoryPoint(TVector3 pt)
Definition: Track.cxx:112
A Cluster with defined start position and direction.
Definition: Prong.h:19
rb::Track::Track ( const rb::Prong prong,
int  id = 0 
)

Definition at line 80 of file Track.cxx.

References AppendTrajectoryPoint(), rb::Cluster::SetID(), and rb::Prong::Start().

82  : rb::Prong(prong)
83  {
84  SetID(id);
86  }
virtual TVector3 Start() const
Definition: Prong.h:73
void AppendTrajectoryPoint(TVector3 pt)
Definition: Track.cxx:112
void SetID(int id)
Definition: Cluster.h:74
A Cluster with defined start position and direction.
Definition: Prong.h:19
rb::Track::Track ( art::PtrVector< rb::CellHit > &  cells,
std::vector< double > const &  weights,
std::vector< TVector3 > const &  trajectory,
TVector3 const &  start,
TVector3 const &  dir,
int const &  id,
geo::View_t  view 
)

Definition at line 89 of file Track.cxx.

References rb::Cluster::fView, rb::Cluster::SetWeight(), POTSpillRate::view, and w.

96  : Prong(cells, start, dir, id)
97  , fTraj(trajectory)
98  {
99  fView = view;
100  // set the cell weights
101  for(size_t w = 0; w < weights.size(); ++w) SetWeight(w, weights[w]);
102 
103  return;
104  }
Prong()
Definition: Prong.h:22
void SetWeight(unsigned int globalIdx, double weight)
Set weight of the cell at this index.
Definition: Cluster.cxx:327
geo::View_t fView
view this cluster is in
Definition: Cluster.h:316
Var weights
TDirectory * dir
Definition: macro.C:5
std::vector< TVector3 > fTraj
Definition: Track.h:160
Float_t w
Definition: plot.C:20
rb::Track::~Track ( )
virtual

Definition at line 107 of file Track.cxx.

Referenced by Track().

108  {
109  }

Member Function Documentation

void rb::Cluster::Add ( const art::Ptr< rb::CellHit > &  cell,
double  weight = 1 
)
virtualinherited

Definition at line 84 of file Cluster.cxx.

References ana::assert(), rb::Cluster::EnsureWeightAlloc(), rb::Cluster::fPrecalcTotalGeV, rb::Cluster::fView, rb::Cluster::fXCell, rb::Cluster::fXWeights, rb::Cluster::fYCell, rb::Cluster::fYWeights, geo::kX, geo::kY, art::PtrVector< T >::push_back(), and rb::CellHit::View().

Referenced by rb::Cluster::Add(), fuzz::FuzzyKVertex::AddProng(), bpfit::BPFTmvaTrainer::analyze(), bpf::BPFCVNAna::analyze(), htk::HoughTrack::analyze(), rb::Cluster::Cluster(), ddthelpers::cluster_hits(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), tdslicer::TDSlicer::DBSCAN(), slicemergeviews::SliceMergeViews::DoMerge(), rb::Cluster::Exclude(), comi::NumiFiltering::filter(), mono::MonopoleCluster::filter(), bsf::BremShowerFilter::filter(), mono::MonopoleTrack::filter(), mono::MonopoleCluster::find_isolated_hits(), trk::KalmanTrack::FindTracks(), cosrej::CosRejFxs::getActivity(), numusand::NumuSandFxs::getActivityVtx(), ndreco::NDRecoFxs::getProngActivity(), ndreco::NDRecoFxs::getProngDedx(), ndreco::NDRecoFxs::getTrackActivity(), ndreco::NDRecoFxs::getTrackDedx(), trk::KalmanTrackMerge::JoinTracks(), trk::WindowTrackingAlg::LookForBremsstrahlungHits(), mono::Cluster::make(), me::MEFinder::MakeSlcME(), fuzz::ViewMatchAlg::MakeTestProng(), nerd::ViewMatchAlg::MakeTestProng(), trk::WindowTrackingAlg::MakeTrack(), airshower::AirSlicer::MakeTrackSlices(), me::MEFinder::MakeTrkME(), numue::NumuEAlg::MakeVertexCluster(), fuzz::ViewMatchAlg::Matching(), nerd::ViewMatchAlg::Matching(), trk::KalmanTrackMerge::MatchTracks(), cheat::BackTracker::MCTruthToCluster(), qeef::QeFinder::produce(), slicer::Slicer4D::produce(), nuesand::FillNueSandbox::produce(), slid::Recluster::produce(), numusand::FillSandbox::produce(), cvn::CVNCosmicMapper::produce(), zcl::SPCluster::produce(), airshower::AirSlicer::produce(), zcl::SMMCluster::produce(), sn::SNSlicer::produce(), sn::SupernovaMCCluster::produce(), zcl::FMMTracker::produce(), cvn::CVNMapper::produce(), dif::DiFShowerFinder::produce(), bpfit::BPFEnergyEstimator::produce(), bpfit::BPFEnergyEstimatorOnly::produce(), tdslicer::TDSlicer::produce(), trk::WindowTrackingAlg::ShortTrack(), trk::WindowTrackingAlg::ShortTrackExtraPlane(), airshower::AirSlicer::TemporalClusters(), dt::Cand::ToTrack(), htk::Track3D::Track3D(), mono::Track3D::Track3D(), zcl::FMMTracker::Tracking2D(), slicemergeviews::SliceMergeViews::TrimNoise(), tdslicer::TDSlicer::TrimNoise(), trk::KalmanTrackMerge::ViewMergeTracks(), slicer::MMSlicer::WindowSlice(), and slicer::Slicer::WindowSlice().

85  {
86  fPrecalcTotalGeV = -1; // Invalidate any cached value
87 
88  assert(weight >= 0 && weight <= 1);
89 
90  // Are we optimizing (omitting) the weights storage?
91  const bool optWeights = (weight == 1 && fXWeights.empty() && fYWeights.empty());
92  if(!optWeights) EnsureWeightAlloc();
93 
94  if(cell->View() == geo::kX){
95  assert(fView != geo::kY);
96  fXCell.push_back(cell);
97  if(!optWeights) fXWeights.push_back(weight);
98  }
99  else{
100  assert(fView != geo::kX);
101  fYCell.push_back(cell);
102  if(!optWeights) fYWeights.push_back(weight);
103  }
104  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
const Var weight
geo::View_t View() const
Definition: CellHit.h:41
Vertical planes which measure X.
Definition: PlaneGeo.h:28
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:441
geo::View_t fView
view this cluster is in
Definition: Cluster.h:316
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
assert(nhit_max >=nhit_nbins)
void EnsureWeightAlloc()
Helper. Resizes weights vectors to match cell vectors.
Definition: Cluster.cxx:712
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
void rb::Cluster::Add ( const art::PtrVector< rb::CellHit > &  cells,
const std::vector< double > &  weights = std::vector<double>() 
)
virtualinherited

Definition at line 107 of file Cluster.cxx.

References rb::Cluster::Add(), ana::assert(), art::PtrVector< T >::empty(), getGoodRuns4SAM::n, and art::PtrVector< T >::size().

109  {
110  const unsigned int N = cells.size();
111 
112  assert(weights.empty() || weights.size() == N);
113 
114  for(unsigned int n = 0; n < N; ++n){
115  assert(weights.empty() || (weights[n] >= 0 && weights[n] <= 1));
116  Add(cells[n], weights.empty() ? 1 : weights[n]);
117  }
118  }
virtual void Add(const art::Ptr< rb::CellHit > &cell, double weight=1)
Definition: Cluster.cxx:84
Var weights
size_type size() const
Definition: PtrVector.h:308
assert(nhit_max >=nhit_nbins)
art::PtrVector< rb::CellHit > rb::Cluster::AllCells ( ) const
inherited

Get all cells from both views.

Definition at line 180 of file Cluster.cxx.

References plot_validation_datamc::c, rb::Cluster::fXCell, rb::Cluster::fYCell, art::PtrVector< T >::push_back(), and art::PtrVector< T >::size().

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), qeef::QeFinderVal::analyze(), calib::TestParticleCorrections::analyze(), sn::SNSlicerAna::analyze(), murem::MuonRemoveAna::analyze(), calib::HitEfficiency::analyze(), validation::NoiseClusterAnalysis::analyze(), showere::ShowerEnergyAna::analyze(), hough::HoughValidate::analyze(), zcl::FastMMStudy::analyze(), upmuana::UpMuRecoAna::analyze(), upmuana::UpMuAnalysis::analyze(), htk::HoughTrack::analyze(), murem::MRCCAna::analyze(), trk::KalmanTrackAna::CheckAssociations(), air::AirKalmanAna::CheckAssociations(), cheat::RecoCheckAna::CheckRecoClusters(), trk::KalmanTrackAna::CheckRecoTracks(), trk::WindowTrackingAlg::CheckTrackDirectionInY(), bpfit::dEdxCalculator::computeDEDX(), skim::SkimmingUtils::CopySlice(), murem::TrackCleanUpAlg::DeDxInPlane(), nnbar::NNbarUtilities::energyBalancingVertex(), dt::ViewMerger::FakeThirdDimension(), caf::FillDiFShowerVars(), caf::FillDiFVars(), calib::StopperThreshold::FillHist(), calib::CosmicTrends::FillHistograms(), caf::FillProngVars(), caf::FillShowerVars(), calib::StopperThreshold::FillTree(), trk::CosmicTrackAna::FillTrueInfo(), showere::ShowerEnergyFilterMC::filter(), sn::SNSlicer::FinalizeCluster(), cvn::Get2DProngEfficiencyByPDG(), cvn::Get2DProngEnergyByPDG(), cvn::Get2DProngPurityByPDG(), nnbar::NNbarUtilities::getCoordinateOfHits(), nuesand::FillNueSandbox::GetdEdx(), numusand::NumuSandFxs::getMissingE(), nnbar::NNbarUtilities::getMultipleCellFraction(), ndreco::NDRecoFxs::getProngActivity(), ndreco::NDRecoFxs::getProngDedx(), cvn::GetProngEfficiencyByPDG(), cvn::GetProngEnergyByPDG(), cvn::GetProngPurityByPDG(), nnbar::NNbarUtilities::getSliceBoundary(), nnbar::NNbarUtilities::getSliceTimeWindow(), ndreco::NDRecoFxs::getTrackActivity(), ndreco::NDRecoFxs::getTrackDedx(), nnbar::NNbarUtilities::getXyAsymmetry(), nnbar::NNbarUtilities::isFebFlasher(), novaddt::HorizontalMuonAna::IsHorzMuonTrack(), caf::IsTrueDiF(), calib::RockMuonStopperSelection::IsTrulyContainedStopper(), calib::StopperSelection::IsTrulyContainedStopper(), calib::RockMuonStopperSelection::IsTrulyInFiducial(), calib::ThroughgoingSelection::IsTrulyUncontained(), trk::KalmanTrackMerge::JoinTracks(), dt::ViewMerger::JoinTracks(), trk::WindowTrackingAlg::MakeTrack(), airshower::AirSlicer::MakeTrackSlices(), murem::FindParent::MatchToOrigSlice(), numue::NumuEAlg::MCTruthEnergyVariables(), murem::MuonRemove::MuonInfo(), mono::Monopole::n_mc_hits(), dq::FlasherFinder::Nflash(), zcl::FastMonopoleTriggers::NumberOfCellsPerLength(), zcl::FastMMStudy::NumberOfCellsPerLength(), zcl::FastMonopoleTriggers::NumberOfHitsInOverlapPlanesCut(), zcl::FastMMStudy::NumberOfHitsInOverlapPlanesCut(), mono::operator<<(), skim::ParametersNumu::ParametersNumu(), calib::PCHitsList::ProcessTrackForBelowThresholdHits(), calib::PCHitsList::ProcessTrackForFLSHits(), trk::TrkAssn::produce(), slid::Recluster::produce(), numusand::FillSandbox::produce(), hough::MultiHoughT::produce(), cosrej::CosRej::produce(), numue::NumuEnergy::produce(), earms::ElasticArmsHS::produce(), ndreco::NDReco::produce(), vdt::VertexDT::produce(), upmuana::UpMuProb::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), caf::CAFMaker::produce(), cvn::ProngClassify(), sn::SliceRemover::remove(), murem::MuonRemove::RemoveByEfficiency(), trk::WindowTrackingAlg::SetTrackEndPoints(), trk::WindowTrackingAlg::ShortTrack(), cheat::BackTracker::SliceToMCTruth(), cheat::BackTracker::SliceToNeutrinoInteractions(), cosrej::MakeNueCosRej::SparsenessAsymmetry(), zcl::FastMonopoleTriggers::StdevCellsPerPlane(), zcl::FastMMStudy::StdevCellsPerPlane(), htk::Track3D::time_fit(), mono::Track3D::time_fit(), htk::Track3D::Track3D(), mono::Track3D::Track3D(), slid::NuEEnergyAlg::VertexEnergy(), zcl::FastMonopoleTriggers::WeightedCenterCut(), zcl::FastMMStudy::WeightedCenterCut(), moonshadowana::MoonShadowAna::WriteTrackInfo(), moonshadowana::MoonShadowAnaHough::WriteTrackInfo(), rb::Cluster::YCells(), dt::ViewMerger::ZipVerticalTracks(), and ZipWith().

181  {
183  for(size_t c = 0; c < fXCell.size(); ++c) all.push_back(fXCell[c]);
184  for(size_t c = 0; c < fYCell.size(); ++c) all.push_back(fYCell[c]);
185 
186  return all;
187  }
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
void push_back(Ptr< U > const &p)
Definition: PtrVector.h:441
size_type size() const
Definition: PtrVector.h:308
void rb::Track::AppendTrajectoryPoint ( TVector3  pt)
void rb::Track::AppendTrajectoryPoint ( double  pv,
double  pz 
)

Definition at line 120 of file Track.cxx.

References rb::Cluster::fPrecalcTotalGeV, fTraj, rb::Cluster::fView, geo::kX, and geo::kXorY.

121  {
122  fPrecalcTotalGeV = -1; // Invalidate any cached value
123 
124  if(fView == geo::kXorY)
125  throw cet::exception("Track") << "view is geo::kXorY, cannot add a 2D trajectroy point";
126 
127  if(fView == geo::kX)
128  fTraj.push_back(TVector3(pv, 0, pz));
129  else
130  fTraj.push_back(TVector3(0, pv, pz));
131  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
X or Y views.
Definition: PlaneGeo.h:30
Vertical planes which measure X.
Definition: PlaneGeo.h:28
::xsd::cxx::tree::exception< char > exception
Definition: Database.h:225
geo::View_t fView
view this cluster is in
Definition: Cluster.h:316
std::vector< TVector3 > fTraj
Definition: Track.h:160
double rb::Cluster::CalorimetricEnergy ( EEnergyCalcScheme  escheme = kRecomputeEnergy) const
inherited

Simple estimate of neutrino energy.

Uses a simple scale factor to correct for dead material and thresholds, could be more advanced, but this is simple enough to use for preselection etc.

Definition at line 439 of file Cluster.cxx.

References calib::Calibrator::GetGeVToCalorimetricScale(), and rb::Cluster::TotalGeV().

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), tbem::TBRecoAna::analyze(), ncid::CompareByCalEnergy(), cosrej::CompareByCalEnergy(), caf::FillDiFShowerVars(), caf::FillDiFVars(), caf::FillHadClustVars(), caf::FillProngVars(), caf::FillShowerVars(), caf::FillSliceVars(), xsrec::MakeXSecCCPi0Inc::GetPhLL(), numue::NumuEAlg::GetUCMuonENonSingle(), numue::NumuEAlg::GetUCMuonESingle(), SliceLID::BasicProngVars::initBasicVars(), LSTME::BasicProngVars::initBasicVars(), me::MEFinder::MakeSlcME(), me::MEFinder::MakeTrkME(), skim::ParametersNue::ParametersNue(), skim::ParametersNumu::ParametersNumu(), me::MEFinder::PassesMEPresel(), presel::LEMPresel::produce(), numusand::FillSandbox::produce(), presel::NuePresel::produce(), cosrej::CosRej::produce(), cosrej::MakeNueCosRej::produce(), caf::CAFMaker::produce(), showerByEnergyNue(), showerByEnergyNumu(), lem::LEMSummarizer::SliceToLEMInput(), and ncid::NCNNKeras::TransMomFraction().

440  {
442  return cal->GetGeVToCalorimetricScale()*TotalGeV(escheme);
443  }
double GetGeVToCalorimetricScale() const
For use by RecoBase classes.
double TotalGeV(EEnergyCalcScheme escheme=kRecomputeEnergy) const
Simple sum of the estimated GeV of all the hits.
Definition: Cluster.cxx:378
art::Ptr< rb::CellHit > rb::Cluster::Cell ( geo::View_t  view,
unsigned int  viewIdx 
) const
inherited

Get the ith cell from view view.

Definition at line 145 of file Cluster.cxx.

References ana::assert(), geo::kX, geo::kXorY, geo::kY, rb::Cluster::XCell(), and rb::Cluster::YCell().

Referenced by dqsf::DQSpillFlags::AccumulateSyncMetric(), rb::HitMap::Add(), fuzz::FuzzyKVertex::AddProng(), dif::DiFShowerFinder::adjustPlane(), dif::DiFShowerFinder::adjustPlane_end(), tut::TutAnalyzer::analyze(), qeef::QeFinderVal::analyze(), rsim::RecordNoiseSpectrumFile::analyze(), chaninfo::CosmicEff::analyze(), remid::ReMIdValidate::analyze(), comi::CosmicMetrics::analyze(), dprf::ChannelPlots::analyze(), calib::TestParticleCorrections::analyze(), remid::ReMIdTrain::analyze(), mcchk::MonopoleAna::analyze(), dprf::TrackPlots::analyze(), mcchk::RockAna::analyze(), align::Alignment::analyze(), align::SplitTracks::analyze(), murem::MuonRemoveAna::analyze(), pa::ClusterEva::analyze(), vf::TrackEva::analyze(), comi::NumiFilteringAna::analyze(), zcl::FmmTriggerAna::analyze(), tbem::TBRecoAna::analyze(), zcl::FmmTrackerAna::analyze(), zcl::FmmTrackerValidation::analyze(), showere::ShowerEnergyAna::analyze(), bpfit::BPFTmvaTrainer::analyze(), bpf::BPFCVNAna::analyze(), calib::CosmicTrends::analyze(), calib::CalibAna::analyze(), ncs::Xeff::analyze(), ncs::ROCKMRE::analyze(), ncs::NCAna::analyze(), bpfit::DimuonFitter::AnaSlice(), me::MEFinder::BestSlcMatch(), fuzz::ViewMatchAlg::CalcEnergyProfile(), nerd::ViewMatchAlg::CalcEnergyProfile(), trk::KalmanTrackMerge::CalcMatchScore(), slid::ParticleIDAlg::CalcPlaneHits(), trk::KalmanTrackMerge::CanJoinTracks(), slid::NuEEnergyAlg::CellEnergy(), murem::TrackCleanUpAlg::CleanUpTrack(), bpfit::dEdxCalculator::computeDEDX(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), cvn::RegPixelMapProducer::CreateMapGivenBoundary(), cvn::PixelMapProducer::CreateMapGivenBoundary(), cvn::RegPixelMapProducer::CreateMapGivenShowerVertex(), cvn::RegPixelMapProducer::CreateMapGivenVertex(), jmshower::RecoJMShower::DepositEnergy(), evd::RecoBaseDrawer::DrawTrack2D(), skim::ParametersNumu::EarliestLatestHitPos(), jmshower::RecoJMShower::Energy(), dif::DiFShowerFinder::eparm(), rb::Cluster::Exclude(), dt::ViewMerger::Extremes(), caf::FillHadClustVars(), calib::StopperThreshold::FillHist(), bpfit::BreakPoint::FillHitList(), sn::SupernovaAna::FillPlaneSeperations(), dqsf::DQSpillFlags::FillPopulatedDCMs(), caf::FillProngVars(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillSliceInfo(), caf::FillSliceVars(), trk::CosmicTrackAna::FillTrackHistograms(), calib::StopperThreshold::FillTree(), comi::NumiFiltering::filter(), bsf::BremShowerFilter::filter(), showere::ShowerEnergyFilterMC::filter(), cvn::RegPixelMapProducer::FindCenterMedian(), cvn::PixelMapProducer::FindCenterMedian(), airshower::AirSlicer::FindNeighbors(), bsf::BremShowerFilter::findShowerByReco(), dif::DiFShowerFinder::findShowerByReco(), trk::KalmanTrack::FindTracks(), trk::CosmicTrackUtilities::FindTriCells(), cvn::RegPixelMapProducer::FindVertexMaxGap(), cvn::PixelMapProducer::FindVertexMaxGap(), cvn::RegPixelMapProducer::FindVertexWindowThreshold(), cvn::PixelMapProducer::FindVertexWindowThreshold(), bpfit::DimuonFitter::FindVertexZ(), bpfit::BreakPoint::FitTracks(), bpfit::DimuonFitter::FitView(), nuesand::FillNueSandbox::FracAngChanges(), nuesand::FillNueSandbox::FracModalHits(), nuesand::FillNueSandbox::FracNonContiguous(), numusand::NumuSandFxs::getActivity(), numusand::NumuSandFxs::getAveTrackdEdx(), numusand::NumuSandFxs::getAveTrackdEdxLast4Cells(), numusand::NumuSandFxs::getAveTrackdEdxLast6Cells(), numusand::NumuSandFxs::getAveTrackdEdxLast8Cells(), trackinfo::TrackInfoFxs::getAveTrackdEdxLastCells(), cosrej::CosRejFxs::getBBC(), evd::SliceNavigator::GetBounds(), evd::SliceNavigator::GetBox(), evd::RecoBaseDrawer::GetClusterOutlines(), evd::RecoBaseDrawer::GetClusterOutlinesConvexHull(), nuesand::FillNueSandbox::GetdEdx(), cosrej::CosRejFxs::getFits(), jmshower::RecoJMShower::GetPlaneCentroidCell(), jmshower::RecoJMShower::GetPlaneE1Cell(), jmshower::JMShower::GetPlaneHits(), jmshower::RecoJMShower::GetRVPStats(), jmshower::JMShower::GetTransHits(), calib::PCHitsList::GetTrueEnergyPathAndLightForCell(), slid::DeconvolveAlg::GetWeights(), slid::NuEEnergyAlg::HadronicDepEnergy(), rb::HitList::HitList(), cvn::HitNuIndex(), tf::TimingFitAlg::HoughFit(), zcl::FastMonopoleTriggers::is_trigger_by_epoch1_fmmtrigger(), trk::CosmicTrackSelection::IsCalibTrack(), calib::RockMuonStopperSelection::IsContainedStopper(), calib::PCHitsList::IsGoodTrack(), trk::CosmicTrackAlg::IsTrackDownstreamFromTiming(), trk::KalmanTrackMerge::JoinTracks(), fuzz::ViewMatchAlg::MakeTestProng(), nerd::ViewMatchAlg::MakeTestProng(), trk::CosmicTrackAlg::MakeTrack(), me::MEFinder::MakeTrkME(), murem::FindParent::MatchToOrigSlice(), rb::Cluster::MaxCell(), nuesand::FillNueSandbox::MaxGap(), nuesand::FillNueSandbox::MaxHits(), rb::Cluster::MaxPlane(), rb::Cluster::MaxTNS(), rb::Cluster::MeanTNS(), dt::DiscreteTracker::MergeParasiteTracks(), rb::Cluster::MinCell(), nerd::NERDProng::MinHitClusterDist(), me::MEFinder::MinHitSlcDist(), rb::Cluster::MinMaxMeanXYZ(), rb::Cluster::MinPlane(), rb::Cluster::MinTNS(), rb::Cluster::MostContiguousPlanes(), rb::Cluster::MostMissingPlanes(), murem::MuonRemove::MuonInfo(), dif::DiFShowerFinder::muonstub(), rb::Cluster::NCell(), numue::NumuEAlg::NDEnergy(), numue::NumuEAlg::NDTrackEnergySplitting(), rb::Cluster::NMissingPlanes(), zcl::FmmTriggerEvd::NumberOfCellsPerLength(), zcl::FmmTriggerEvd::NumberOfHitsInOverlapPlanesCut(), zcl::FastMonopoleTriggers::NumberOfSurfaceHits(), zcl::FastMMStudy::NumberOfSurfaceHits(), rb::Cluster::OfflineChans(), skim::ParametersNumu::ParametersNumu(), zcl::FastMonopoleTriggers::passed_epoch2_fmmtrigger(), PlaneDirMap(), slid::ParticleIDAlg::PlaneRadius(), calib::PCHitsList::ProcessTrack(), calib::PCHitsList::ProcessTrackTrajectory(), trk::TrkAssn::produce(), vf::VertexFinder::produce(), qeef::QeFinder::produce(), hv::HoughVertex::produce(), nuesand::FillNueSandbox::produce(), slid::Recluster::produce(), presel::NuePresel::produce(), lem::Preselection::produce(), numusand::FillSandbox::produce(), slid::SliceLIDBuilder::produce(), zcl::SPCluster::produce(), lem::MakeLibrary::produce(), earms::ElasticArmsHS::produce(), dt::DiscreteTracker::produce(), zcl::SMMCluster::produce(), zcl::FMMTracker::produce(), zcl::FmmTriggerEvd::produce(), jmshower::NueSel::produce(), dif::DiFShowerFinder::produce(), rvp::RecVarPID::produce(), jmshower::NueSelLID::produce(), bpfit::BPFEnergyEstimator::produce(), bpfit::BPFEnergyEstimatorOnly::produce(), caf::CAFMaker::produce(), slid::ParticleIDAlg::Radius(), jmshower::RecoJMShower::Radius(), jmshower::RecoJMShower::RadiusV(), rb::Cluster::RecoHit(), jmshower::RecoJMShower::RecoShowers(), murem::MuonRemove::RemoveByTruth(), trk::KalmanTrack::RemoveHitsFromSignal(), trk::KalmanTrackMerge::ShiftInterpolationPoints(), lem::MakeLibrary::SliceMeanPosEWeighted(), lem::MakeLibrary::SliceOrigin(), lem::LEMSummarizer::SliceToLEMInput(), zcl::FmmTriggerEvd::StdevCellsPerPlane(), calib::StopperThreshold::testPath(), rb::Cluster::TotalADC(), dt::ViewMerger::TotalChargePerView(), rb::Prong::TotalLength(), rb::Cluster::TotalPE(), trk::CosmicTrackUtilities::TrackResiduals(), trk::KalmanTrackMerge::ViewMergeTracks(), rb::Prong::W(), W(), and rb::Cluster::WeightedHits().

147  {
148  switch(view){
149  case geo::kX: return XCell(viewIdx);
150  case geo::kY: return YCell(viewIdx);
151  case geo::kXorY: return Cell(viewIdx);
152  default: assert(0 && "Unknown view");
153  }
154  }
art::Ptr< rb::CellHit > XCell(unsigned int xIdx) const
Get the ith cell in the x-view.
Definition: Cluster.cxx:157
X or Y views.
Definition: PlaneGeo.h:30
Vertical planes which measure X.
Definition: PlaneGeo.h:28
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
art::Ptr< rb::CellHit > YCell(unsigned int yIdx) const
Get the ith cell in the y-view.
Definition: Cluster.cxx:165
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
assert(nhit_max >=nhit_nbins)
art::Ptr< rb::CellHit > rb::Cluster::Cell ( unsigned int  globalIdx) const
inherited

Get the ith cell from either view.

Definition at line 173 of file Cluster.cxx.

References rb::Cluster::NXCell(), rb::Cluster::XCell(), and rb::Cluster::YCell().

174  {
175  if(globalIdx < NXCell()) return XCell(globalIdx);
176  return YCell(globalIdx-NXCell());
177  }
art::Ptr< rb::CellHit > XCell(unsigned int xIdx) const
Get the ith cell in the x-view.
Definition: Cluster.cxx:157
art::Ptr< rb::CellHit > YCell(unsigned int yIdx) const
Get the ith cell in the y-view.
Definition: Cluster.cxx:165
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
void rb::Cluster::Clear ( )
virtualinherited

Forget about all owned cell hits.

Virtual function because derived classes may have more stuff to clear

Definition at line 279 of file Cluster.cxx.

References art::PtrVector< T >::clear(), rb::Cluster::fPrecalcTotalGeV, rb::Cluster::fXCell, rb::Cluster::fXWeights, rb::Cluster::fYCell, and rb::Cluster::fYWeights.

Referenced by bsf::BremShowerFilter::filter(), mono::Cluster::make(), calib::PCHitsList::ProcessTrackForFLSHits(), nuesand::FillNueSandbox::produce(), cvn::CVNCosmicMapper::produce(), jmshower::RecoJMShower::RecoShowers(), and rb::Cluster::YCells().

280  {
281  fPrecalcTotalGeV = -1; // Invalidate any cached value
282 
283  fXCell.clear();
284  fYCell.clear();
285  fXWeights.clear();
286  fYWeights.clear();
287  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
void clear()
Definition: PtrVector.h:537
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
void rb::Track::ClearTrajectoryPoints ( )

Forget about all trajectory points.

Definition at line 359 of file Track.cxx.

References rb::Cluster::fPrecalcTotalGeV, and fTraj.

Referenced by trk::KalmanTrack::FindTracks(), Trajectory(), and trk::KalmanTrackMerge::ViewMergeTracks().

360  {
361  fPrecalcTotalGeV = -1; // Invalidate any cached value
362 
363  fTraj.clear();
364  fTraj.resize(0);
365  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
std::vector< TVector3 > fTraj
Definition: Track.h:160
virtual TVector3 rb::Prong::Dir ( ) const
inlinevirtualinherited

Unit vector describing prong direction.

For 2D prongs the unmeasured component is zero

Definition at line 77 of file Prong.h.

References rb::Prong::DistanceFromStart(), rb::Prong::fDir, rb::Prong::operator<(), fhicl::other, rb::Prong::SetDir(), rb::Prong::SetStart(), rb::Prong::TotalLength(), rb::Prong::W(), and test::z.

Referenced by dif::DiFShowerFinder::adjustPlane(), dif::DiFShowerFinder::adjustPlane_end(), comi::CosmicMetrics::analyze(), murem::MuonRemoveAna::analyze(), vf::TrackEva::analyze(), calib::HitEfficiency::analyze(), tbem::TBRecoAna::analyze(), trk::KalmanTrackAna::analyze(), bpf::BPFCVNAna::analyze(), calib::CalibAna::analyze(), upmuana::UpMuAnalysis::analyze(), red::EWCosmics::analyze(), slid::ParticleIDAlg::CalcAsymIneria(), slid::ParticleIDAlg::CalcCellPlaneTransverseDedx(), slid::ParticleIDAlg::CalcInterPlaneDedxProb(), slid::ParticleIDAlg::CalcPlaneHits(), slid::ParticleIDAlg::CalcPlaneTransverseDedx(), slid::ParticleIDAlg::CalcTrkHitPath(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxFD::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), murem::TrackCleanUpAlg::DeDxInPlane(), slid::ParticleIDAlg::DedxInverseLongLL(), slid::ParticleIDAlg::DedxLongLL(), dif::DiFShowerFinder::distancefromtrack(), slid::DeconvolveAlg::DistanceToCore(), vf::DOCAInfo::DOCAInfo(), dif::DiFShowerFinder::eparm(), dt::ViewMerger::FakeThirdDimension(), caf::FillDiFShowerVars(), calib::CosmicTrends::FillHistograms(), caf::FillProngVars(), trk::CosmicTrackAna::FillRecoInfo(), fnex::NuMuAnalysisSetup::FillRecoVars(), caf::FillShowerVars(), filter::Filter::FillTrackVariables(), trk::CosmicTrackAna::FillTrueInfo(), comi::NumiFiltering::filter(), bsf::BremShowerFilter::findShowerByReco(), dif::DiFShowerFinder::findShowerByReco(), bsf::BremShowerFilter::findShowerByTruth(), trk::KalmanTrack::FindTracks(), jmshower::RecoJMShower::GetCellTransDedx(), cosrej::CosRejFxs::getCVVars(), nuesand::FillNueSandbox::GetdEdx(), cosrej::CosRejFxs::getFits(), jmshower::RecoJMShower::GetInterPlaneDedxProb(), ndreco::NDRecoFxs::getProngActivity(), ndreco::NDRecoFxs::getProngDedx(), ndreco::NDRecoFxs::getProngProximity(), jmshower::RecoJMShower::GetShwStop(), nuesand::FillNueSandbox::GetTrackAngle(), jmshower::JMShower::GetTransHits(), jmshower::RecoJMShower::GetTrkHitPath(), jmshower::RecoJMShower::GetTrkHitPos(), jmshower::RecoJMShower::GetTrkPlaneCell(), jmshower::RecoJMShower::GetTrkPlaneDistToEdge(), jmshower::RecoJMShower::GetTrkPlanePos(), trk::CosmicTrackSelection::GoodReco(), tf::TimingFitAlg::HoughFit(), LSTME::BasicProngVars::initBasicVars(), trk::CosmicTrackSelection::IsCalibTrack(), calib::PCHitsList::IsGoodTrack(), fuzz::ViewMatchAlg::MakeTestProng(), nerd::ViewMatchAlg::MakeTestProng(), trk::CosmicTrackAlg::MakeTrack(), fuzz::ViewMatchAlg::Matching(), nerd::ViewMatchAlg::Matching(), murem::MuonRemove::MuonInfo(), cosrej::MakeNueCosRej::MuonParentByDist(), cosrej::MakeNueCosRej::MuonParentByTime(), dif::DiFShowerFinder::muonstub(), skim::ParametersNumu::ParametersNumu(), slid::ParticleIDAlg::PlaneHitCell(), slid::ParticleIDAlg::PlaneHitXYZ(), slid::ParticleIDAlg::PlaneRadius(), wsnumu::WSNumu::produce(), presel::CosmicVeto::produce(), nussand::FillNusSandbox::produce(), slid::Recluster::produce(), trackinfo::TrackInfo::produce(), slid::SliceLIDBuilder::produce(), cosrej::CosRej::produce(), ndreco::NDReco::produce(), remid::RecoMuon::produce(), cosrej::MakeNueCosRej::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), slid::ParticleIDAlg::Radius(), jmshower::RecoJMShower::RecoShowers(), trk::WindowTrackingAlg::SetTrackEndPoints(), trk::WindowTrackingAlg::ShortTrack(), trk::WindowTrackingAlg::ShortTrackExtraPlane(), red::OverburdenCalculator::traceBack(), slid::NuEEnergyAlg::VertexEnergy(), and trk::KalmanTrackMerge::ViewMergeTracks().

77 {return fDir;}
TVector3 fDir
Direction at starting point.
Definition: Prong.h:112
double rb::Track::DistanceFromEnd ( double  z) const
virtual

Definition at line 255 of file Track.cxx.

References std::abs(), dist, FindNeighbouringPointIndices(), rb::Prong::fStart, fTraj, MECModelEnuComparisons::i, Unit(), and test::z.

Referenced by trk::CosmicTrackAna::FillTrackHistograms(), cosrej::CosRej::produce(), and Trajectory().

256  {
257  if(fTraj.size() == 1) return std::abs(z-fStart.Z());
258 
259  int i0, i1;
261 
262  // Distance from the end the track to the first of the neighbouring points
263  double dist = 0;
264  for(int i = fTraj.size()-1; i > i1; --i)
265  dist += (fTraj[i]-fTraj[i-1]).Mag();
266 
267  // The extra accumulated between the points. Also correct for the cases
268  // where we're off the start or end of the track.
269 
270  // Skip this step if the two trajectory points have exactly the same
271  // Z. This would happen if the track were exactly vertical, or more likely
272  // if there's a repeated trajectory point somehow.
273  const double denom = (fTraj[i1]-fTraj[i0]).Unit().Z();
274  if(denom != 0)
275  dist += (fTraj[i1].Z()-z) / denom;
276 
277  return dist;
278  }
void FindNeighbouringPointIndices(double z, int &i0, int &i1) const
Definition: Track.cxx:380
float abs(float number)
Definition: d0nt_math.hpp:39
double dist
Definition: runWimpSim.h:113
TVector3 Unit() const
z
Definition: test.py:28
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
std::vector< TVector3 > fTraj
Definition: Track.h:160
double rb::Track::DistanceFromStart ( double  z) const
virtual
Parameters
zz-coordinate to evaluate trajectory at
Returns
Distance from Start measured along the trajectory

Reimplemented from rb::Prong.

Definition at line 229 of file Track.cxx.

References std::abs(), dist, FindNeighbouringPointIndices(), rb::Prong::fStart, fTraj, MECModelEnuComparisons::i, and Unit().

Referenced by calib::PCHitsList::CellHitToPCHit(), cosrej::CosRej::produce(), and Trajectory().

230  {
231  if(fTraj.size() == 1) return std::abs(z-fStart.Z());
232 
233  int i0, i1;
235 
236  // Distance along the track to the first of the neighbouring points
237  double dist = 0;
238  for(int i = 0; i < i0; ++i)
239  dist += (fTraj[i+1]-fTraj[i]).Mag();
240 
241  // The extra accumulated between the points. Also correct for the cases
242  // where we're off the start or end of the track.
243 
244  // Skip this step if the two trajectory points have exactly the same
245  // Z. This would happen if the track were exactly vertical, or more likely
246  // if there's a repeated trajectory point somehow.
247  const double denom = (fTraj[i1]-fTraj[i0]).Unit().Z();
248  if(denom != 0)
249  dist += (z-fTraj[i0].Z()) / denom;
250 
251  return dist;
252  }
void FindNeighbouringPointIndices(double z, int &i0, int &i1) const
Definition: Track.cxx:380
float abs(float number)
Definition: d0nt_math.hpp:39
double dist
Definition: runWimpSim.h:113
TVector3 Unit() const
z
Definition: test.py:28
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
std::vector< TVector3 > fTraj
Definition: Track.h:160
void rb::Cluster::EnsureWeightAlloc ( )
protectedinherited

Helper. Resizes weights vectors to match cell vectors.

Definition at line 712 of file Cluster.cxx.

References rb::Cluster::fXCell, rb::Cluster::fXWeights, rb::Cluster::fYCell, rb::Cluster::fYWeights, and art::PtrVector< T >::size().

Referenced by rb::Cluster::Add(), and rb::Cluster::SetWeight().

713  {
714  if(fXWeights.size() != fXCell.size()) fXWeights.resize(fXCell.size(), 1);
715  if(fYWeights.size() != fYCell.size()) fYWeights.resize(fYCell.size(), 1);
716  }
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
size_type size() const
Definition: PtrVector.h:308
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
rb::Cluster rb::Cluster::Exclude ( const rb::Cluster excl) const
inherited

Create a cluster from this one, but with the hits of excl removed.

Definition at line 233 of file Cluster.cxx.

References rb::Cluster::Add(), rb::Cluster::Cell(), rb::Cluster::fID, rb::Cluster::fNoiseCluster, rb::Cluster::fView, MECModelEnuComparisons::i, calib::j, genie::utils::mec::J(), rb::Cluster::NCell(), runNovaSAM::ret, rb::Cluster::SetNoise(), and rb::Cluster::Weight().

Referenced by mono::MonopoleCluster::filter(), slid::Recluster::produce(), slid::NuEEnergyAlg::VertexEnergy(), and rb::Cluster::YCells().

234  {
236  ret.SetNoise(fNoiseCluster);
237 
238  const unsigned int I = NCell();
239  const unsigned int J = excl->NCell();
240  for(unsigned int i = 0; i < I; ++i){
241  const art::Ptr<rb::CellHit> chit = Cell(i);
242  bool clash = false;
243  for(unsigned int j = 0; j < J; ++j){
244  if(excl->Cell(j) == chit){
245  clash = true;
246  break;
247  }
248  } // end for j
249  if(!clash) ret.Add(chit, Weight(i));
250  }
251 
252  if(ret.NCell() == 0)
253  mf::LogWarning("Cluster") << "Exclude created empty cluster";
254 
255  return ret;
256  }
unsigned int NCell(geo::View_t view) const
Number of cells in view view.
Definition: Cluster.cxx:134
double J(double q0, double q3, double Enu, double ml)
Definition: MECUtils.cxx:141
A collection of associated CellHits.
Definition: Cluster.h:47
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
geo::View_t fView
view this cluster is in
Definition: Cluster.h:316
bool fNoiseCluster
flag for whether this is a noise cluster
Definition: Cluster.h:322
const double j
Definition: BetheBloch.cxx:29
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
int fID
ID for cluster.
Definition: Cluster.h:321
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
unsigned int rb::Cluster::ExtentCell ( geo::View_t  view) const
inherited

Definition at line 570 of file Cluster.cxx.

References rb::Cluster::MaxCell(), and rb::Cluster::MinCell().

Referenced by sn::SNSlicerAna::analyze(), sn::SNSlicer::ClusterIsGood(), and rb::Cluster::ExtentPlane().

571  {
572  return MaxCell(view)-MinCell(view)+1;
573  }
unsigned int MaxCell(geo::View_t view) const
Definition: Cluster.cxx:518
unsigned int MinCell(geo::View_t view) const
Definition: Cluster.cxx:472
unsigned int rb::Cluster::ExtentPlane ( geo::View_t  view = geo::kXorY) const
inlineinherited
double rb::Cluster::ExtentTNS ( ) const
inlineinherited
double rb::Cluster::ExtentV ( geo::View_t  view) const
inlineinherited

Definition at line 246 of file Cluster.h.

References rb::Cluster::MaxV(), and rb::Cluster::MinV().

246 {return MaxV(view)-MinV(view);}
double MinV(geo::View_t view) const
Definition: Cluster.cxx:454
double MaxV(geo::View_t view) const
Definition: Cluster.cxx:500
double rb::Cluster::ExtentX ( ) const
inlineinherited

Definition at line 247 of file Cluster.h.

References rb::Cluster::ExtentXYZ().

247 {return ExtentXYZ().X();}
TVector3 ExtentXYZ() const
Definition: Cluster.h:245
TVector3 rb::Cluster::ExtentXYZ ( ) const
inlineinherited

Definition at line 245 of file Cluster.h.

References rb::Cluster::MaxXYZ(), and rb::Cluster::MinXYZ().

Referenced by rb::Cluster::ExtentX(), rb::Cluster::ExtentY(), and rb::Cluster::ExtentZ().

245 {return MaxXYZ()-MinXYZ();}
TVector3 MaxXYZ() const
Definition: Cluster.cxx:492
TVector3 MinXYZ() const
Definition: Cluster.cxx:446
double rb::Cluster::ExtentY ( ) const
inlineinherited

Definition at line 248 of file Cluster.h.

References rb::Cluster::ExtentXYZ().

248 {return ExtentXYZ().Y();}
TVector3 ExtentXYZ() const
Definition: Cluster.h:245
double rb::Cluster::ExtentZ ( ) const
inlineinherited

Definition at line 249 of file Cluster.h.

References rb::Cluster::ExtentXYZ().

Referenced by air::AirFilter::parallel_muon_slice().

249 {return ExtentXYZ().Z();}
TVector3 ExtentXYZ() const
Definition: Cluster.h:245
void rb::Track::FindNeighbouringPointIndices ( double  z,
int i0,
int i1 
) const
protected

Definition at line 380 of file Track.cxx.

References std::abs(), e, modifyFHiCL::found, fTraj, LOG_DEBUG, getGoodRuns4SAM::n, test::z, and Z.

Referenced by DistanceFromEnd(), DistanceFromStart(), FindNeighbouringPoints(), and Trajectory().

381  {
382  if(fTraj.size() < 2)
383  throw cet::exception("Track") << "attempting to find neighboring points with "
384  << "fewer than 2 trajectory points in track";
385 
386  // Track might be going upstream
387  const int zDir = (fTraj.front().Z() > fTraj.back().Z()) ? -1 : 1;
388 
389  // If hit is off the end of the track extrapolate from the two closest points
390  if( zDir*fTraj.front().Z() >= zDir*z ){
391  i0 = 0;
392  i1 = 1;
393  return;
394  }
395  if( zDir*fTraj.back().Z() <= zDir*z ){
396  i0 = fTraj.size()-2;
397  i1 = fTraj.size()-1;
398  return;
399  }
400 
401  bool found = false;
402 
403  // We could do this more efficiently with std::[upper|lower]_bound, but the
404  // presence of reversed tracks complicates that slightly.
405  for(size_t n = 0; n < fTraj.size()-1; ++n){
406  if( zDir*fTraj[n] .Z() <= zDir*z &&
407  zDir*fTraj[n+1].Z() >= zDir*z ){
408  // If we've already found a pair of neighbours then this new pair is
409  // ambiguous which is bad. Probably it means the track reverses
410  // direction wrt Z.
411  if(found){
412  // But, it might also mean the value passed in was right on a
413  // trajectory point. In which case there isn't really a problem.
414  // Either choice will end up just giving the value at this point.
415  if(std::abs(fTraj[n].Z()-z) > 1e-3 && std::abs(fTraj[n+1].Z()-z) > 1e-3){
416  LOG_DEBUG("Track")
417  << "Choice of neighbouring trajectory points is ambiguous";
418  }
419  }
420  i0 = n;
421  i1 = n+1;
422  found = true;
423  break;
424  }
425  }
426 
427  if(!found)
428  throw cet::exception("Track") << "unable to find neighboring point index";
429  }
#define LOG_DEBUG(stream)
Definition: Messenger.h:149
::xsd::cxx::tree::exception< char > exception
Definition: Database.h:225
float abs(float number)
Definition: d0nt_math.hpp:39
Float_t Z
Definition: plot.C:38
z
Definition: test.py:28
std::vector< TVector3 > fTraj
Definition: Track.h:160
Float_t e
Definition: plot.C:35
void rb::Track::FindNeighbouringPoints ( double  z,
TVector3 &  pt0,
TVector3 &  pt1 
) const
protected

Helper function for W.

Definition at line 432 of file Track.cxx.

References FindNeighbouringPointIndices(), and fTraj.

Referenced by InterpolateDir(), InterpolateXY(), and Trajectory().

434  {
435  int i0, i1;
437  pt0 = fTraj[i0];
438  pt1 = fTraj[i1];
439  }
void FindNeighbouringPointIndices(double z, int &i0, int &i1) const
Definition: Track.cxx:380
z
Definition: test.py:28
std::vector< TVector3 > fTraj
Definition: Track.h:160
const int rb::Cluster::ID ( ) const
inlineinherited
TVector3 rb::Track::InterpolateDir ( double  z) const
virtual
Parameters
zCoordinate at which trajectory is to be evaluated
Returns
The track direction estimated at that point

Definition at line 348 of file Track.cxx.

References a, b, and FindNeighbouringPoints().

Referenced by upmuana::UpMuRecoAna::analyze(), upmuana::UpMuAnalysis::analyze(), PlaneDirMap(), and Trajectory().

349  {
350  // The algorithm here is basically valid for z-directed tracks
351 
352  TVector3 a, b;
353  FindNeighbouringPoints(z, a, b);
354 
355  return (b-a).Unit();
356  }
const double a
void FindNeighbouringPoints(double z, TVector3 &pt0, TVector3 &pt1) const
Helper function for W.
Definition: Track.cxx:432
z
Definition: test.py:28
const hit & b
Definition: hits.cxx:21
void rb::Track::InterpolatePts ( double  z,
const TVector3 &  a,
const TVector3 &  b,
double &  x,
double &  y 
) const
protected

Helper function for InterpolateXY and ZipWith.

Definition at line 336 of file Track.cxx.

References makeHTMLView::dt.

Referenced by InterpolateXY(), and Trajectory().

339  {
340  const double denom = b.Z()-a.Z();
341  const double dt = denom ? (z-a.Z())/denom : 0.5;
342 
343  x = (1-dt)*a.X()+dt*b.X();
344  y = (1-dt)*a.Y()+dt*b.Y();
345  }
Definition: Cand.cxx:23
const double a
z
Definition: test.py:28
const hit & b
Definition: hits.cxx:21
void rb::Track::InterpolateXY ( double  z,
double &  x,
double &  y 
) const
virtual
Parameters
zCoordinate at which trajectory is to be evaluated
[out]xx-position of trajectory at this z
[out]yy-position of trajectory at this z

Definition at line 325 of file Track.cxx.

References a, b, FindNeighbouringPoints(), and InterpolatePts().

Referenced by align::SplitTracks::analyze(), murem::TrackCleanUpAlg::DeDxInPlane(), dt::ViewMerger::FakeThirdDimension(), cosrej::CosRej::produce(), murem::TrackCleanUpAlg::SortByDistFromTrack(), dt::ViewMerger::TotalChargePerView(), Trajectory(), trk::KalmanTrackMerge::ViewMergeTracks(), W(), and ZipWith().

326  {
327  // The algorithm here is basically valid for z-directed tracks
328 
329  TVector3 a, b;
330  FindNeighbouringPoints(z, a, b);
331 
332  InterpolatePts(z, a, b, x, y);
333  }
void InterpolatePts(double z, const TVector3 &a, const TVector3 &b, double &x, double &y) const
Helper function for InterpolateXY and ZipWith.
Definition: Track.cxx:336
const double a
void FindNeighbouringPoints(double z, TVector3 &pt0, TVector3 &pt1) const
Helper function for W.
Definition: Track.cxx:432
z
Definition: test.py:28
const hit & b
Definition: hits.cxx:21
bool rb::Cluster::Is2D ( ) const
inlineinherited
virtual bool rb::Prong::Is3D ( ) const
inlinevirtualinherited
bool rb::Cluster::IsNoise ( ) const
inlineinherited

Is the noise flag set?

Definition at line 163 of file Cluster.h.

References rb::Cluster::fNoiseCluster, rb::Cluster::SetWeight(), rb::Cluster::TotalADC(), rb::Cluster::TotalPE(), and ana::weight.

Referenced by qeef::QeFinderVal::analyze(), rsim::RecordNoiseSpectrumFile::analyze(), tut::RecoValidationTutorial::analyze(), calib::TestParticleCorrections::analyze(), mcchk::MonopoleAna::analyze(), sn::SupernovaAna::analyze(), comi::DataCheck::analyze(), validation::NoiseClusterAnalysis::analyze(), comi::NumiFilteringAna::analyze(), showere::ShowerEnergyAna::analyze(), hough::HoughValidate::analyze(), rockmuon::NDRockMuon::analyze(), ncid::NCNNKerasVal::analyze(), bpf::BPFCVNAna::analyze(), ncs::Xbeam::analyze(), ncs::Xeff::analyze(), ncs::ROCKMRE::analyze(), slid::LIDTraining::analyze(), ncs::NCAna::analyze(), me::MEFinder::BestSlcMatch(), trk::KalmanTrackAna::CheckAssociations(), air::AirKalmanAna::CheckAssociations(), evd::RecoBaseDrawer::DrawCluster2D(), LSTME::FillLSTME::fillEnergies(), SliceLID::FillSliceLID::fillSliceLIDPreds(), filter::Filter::FillSliceVariables(), comi::NumiFiltering::filter(), bsf::BremShowerFilter::filter(), showere::ShowerEnergyFilterMC::filter(), me::MEFinder::GetPhysNoiseSlcs(), mono::HighEnergySliceRemoval::is_high_energy_slice(), novaddt::HorizontalMuonAna::IsHorzMuonTrack(), skim::EvaluatorNue::KeepSlice(), airshower::AirSlicer::MakeTrackSlices(), murem::FindParent::MatchToOrigSlice(), air::AirFilter::parallel_muon_slice(), lem::LEMAssociator::produce(), presel::LEMPresel::produce(), qeef::QeFinder::produce(), hough::HoughT::produce(), hv::HoughVertex::produce(), nuesand::FillNueSandbox::produce(), lem::UnTranspose::produce(), numue::TrackOverlapECalc::produce(), wsnumu::WSNumu::produce(), presel::RockPresel::produce(), lem::LEMSummarizer::produce(), trackinfo::TrackInfo::produce(), slid::Recluster::produce(), nussand::FillNusSandbox::produce(), presel::CosmicVeto::produce(), numusand::FillSandbox::produce(), jmshower::JMTrackMerge::produce(), presel::NuePresel::produce(), lem::Preselection::produce(), presel::CosmicCVNVeto::produce(), hough::MultiHoughT::produce(), cosrej::CosRej::produce(), numue::NumuEnergy::produce(), earms::ElasticArmsHS::produce(), dt::DiscreteTracker::produce(), ndreco::NDReco::produce(), jmshower::JMClusterMerge::produce(), vdt::VertexDT::produce(), ncpi0::MakeNCPi0BkgRej::produce(), jmshower::NueSel::produce(), dif::DiFShowerFinder::produce(), rvp::RecVarPID::produce(), crvtx::CosmicRayVertex::produce(), xnue::XnuePID::produce(), jmshower::NueSelLID::produce(), ncid::MakeNCCosRej::produce(), cosrej::MakeNueCosRej::produce(), ncid::NCNNKeras::produce(), murem::FindParent::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), caf::CAFMaker::produce(), bpfit::DimuonFitter::produce(), jmshower::RecoJMShower::RecoShowers(), and sn::SliceRemover::remove().

163 {return fNoiseCluster;}
bool fNoiseCluster
flag for whether this is a noise cluster
Definition: Cluster.h:322
unsigned int rb::Cluster::MaxCell ( geo::View_t  view) const
inherited

Definition at line 518 of file Cluster.cxx.

References ana::assert(), rb::CellHit::Cell(), rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), and runNovaSAM::ret.

Referenced by align::SplitTracks::analyze(), cvn::PixelMapProducer::DefineBoundary(), rb::Cluster::ExtentCell(), caf::FillHadClustVars(), caf::FillSliceVars(), hough::HoughT::is_good_slice(), rb::Cluster::MaxZ(), lem::MeanCell(), dt::View::View(), trk::KalmanTrackMerge::ViewMergeTracks(), and dt::ViewMerger::ZipVerticalTracks().

519  {
520  assert(NCell(view) > 0);
521  unsigned int ret = 0;
522  for(unsigned int i = 0; i < NCell(view); ++i)
523  if(Cell(view, i)->Cell() > ret) ret = Cell(view, i)->Cell();
524  return ret;
525  }
unsigned short Cell() const
Definition: CellHit.h:40
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
assert(nhit_max >=nhit_nbins)
unsigned int rb::Cluster::MaxPlane ( geo::View_t  view = geo::kXorY) const
inherited

Definition at line 508 of file Cluster.cxx.

References ana::assert(), rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), rb::CellHit::Plane(), and runNovaSAM::ret.

Referenced by dif::DiFShowerFinder::adjustPlane(), dif::DiFShowerFinder::adjustPlane_end(), align::SplitTracks::analyze(), calib::HitEfficiency::analyze(), tbem::TBRecoAna::analyze(), trk::KalmanTrackMerge::CalcMatchScore(), slid::ParticleIDAlg::CalcPlaneHits(), trk::KalmanTrackMerge::CanJoinTracks(), skim::Evaluator::CheckSliceQuality(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), murem::TrackCleanUpAlg::DeDxInPlane(), lem::DefaultVertex(), cvn::PixelMapProducer::DefineBoundary(), dif::DiFShowerFinder::eparm(), rb::Cluster::ExtentPlane(), caf::FillDiFVars(), caf::FillHadClustVars(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillSliceInfo(), caf::FillSliceVars(), bsf::BremShowerFilter::findShowerByReco(), dif::DiFShowerFinder::findShowerByReco(), bsf::BremShowerFilter::findShowerByTruth(), trk::KalmanTrack::FindTracks(), cvn::RegPixelMapProducer::FindVertexWindowThreshold(), cvn::PixelMapProducer::FindVertexWindowThreshold(), hough::HoughT::is_good_slice(), trk::CosmicTrackSelection::IsCalibTrack(), calib::PCHitsList::IsGoodTrack(), trk::KalmanTrackMerge::JoinTracks(), dt::ViewMerger::JoinTracks(), dt::ViewMerger::MatchScore(), murem::FindParent::MatchToOrigSlice(), rb::Cluster::MaxZ(), dif::DiFShowerFinder::muonstub(), skim::ParametersNumu::ParametersNumu(), slid::Recluster::produce(), remid::RecoMuon::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), dt::ViewMerger::ScoreForExtension(), dt::ViewMerger::ScoreForJoinPlusExtension(), trk::WindowTrackingAlg::SetTrackEndPoints(), cosrej::MakeNueCosRej::SparsenessAsymmetry(), slid::NuEEnergyAlg::VertexEnergy(), dt::View::View(), and trk::KalmanTrackMerge::ViewMergeTracks().

509  {
510  assert(NCell(view) > 0);
511  unsigned int ret = 0;
512  for(unsigned int i = 0; i < NCell(view); ++i)
513  if(Cell(view, i)->Plane() > ret) ret = Cell(view, i)->Plane();
514  return ret;
515  }
unsigned short Plane() const
Definition: CellHit.h:39
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
assert(nhit_max >=nhit_nbins)
double rb::Cluster::MaxTNS ( ) const
inherited
double rb::Cluster::MaxV ( geo::View_t  view) const
inherited

Definition at line 500 of file Cluster.cxx.

References ana::assert(), geo::kX, geo::kY, and rb::Cluster::MaxXYZ().

Referenced by rb::Cluster::ExtentV(), rb::Cluster::MinZ(), fuzz::FuzzyKVertex::produce(), and nerd::NERDProng::produce().

501  {
502  assert(view == geo::kX || view == geo::kY);
503  if(view == geo::kX) return MaxXYZ().X();
504  return MaxXYZ().Y();
505  }
Vertical planes which measure X.
Definition: PlaneGeo.h:28
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
TVector3 MaxXYZ() const
Definition: Cluster.cxx:492
assert(nhit_max >=nhit_nbins)
double rb::Cluster::MaxX ( ) const
inlineinherited

Definition at line 217 of file Cluster.h.

References rb::Cluster::MaxXYZ().

Referenced by caf::FillProngVars(), and presel::CosmicVeto::produce().

217 {return MaxXYZ().X();}
TVector3 MaxXYZ() const
Definition: Cluster.cxx:492
TVector3 rb::Cluster::MaxXYZ ( ) const
inherited

Definition at line 492 of file Cluster.cxx.

References hi(), and rb::Cluster::MinMaxMeanXYZ().

Referenced by comi::NumiFilteringAna::analyze(), rb::Cluster::ExtentXYZ(), comi::NumiFiltering::filter(), evd::SliceNavigator::GetBounds(), evd::SliceNavigator::GetBox(), skim::EvaluatorNue::KeepSlice(), rb::Cluster::MaxV(), rb::Cluster::MaxX(), rb::Cluster::MaxY(), rb::Cluster::MaxZ(), rb::Cluster::MinZ(), skim::ParametersNumu::ParametersNumu(), nuesand::FillNueSandbox::produce(), presel::CosmicVeto::produce(), cosrej::CosRej::produce(), and caf::CAFMaker::produce().

493  {
494  TVector3 hi, junk;
495  MinMaxMeanXYZ(junk, hi, junk);
496  return hi;
497  }
TSpline3 hi("hi", xhi, yhi, 18,"0")
void MinMaxMeanXYZ(TVector3 &lo, TVector3 &hi, TVector3 &mean, rb::AveragingScheme scheme=kDefaultScheme) const
Gets the min/max/mean all at once, called by the functions above.
Definition: Cluster.cxx:582
double rb::Cluster::MaxY ( ) const
inlineinherited

Definition at line 218 of file Cluster.h.

References rb::Cluster::MaxXYZ().

Referenced by caf::FillProngVars(), and presel::CosmicVeto::produce().

218 {return MaxXYZ().Y();}
TVector3 MaxXYZ() const
Definition: Cluster.cxx:492
double rb::Cluster::MaxZ ( ) const
inlineinherited
double rb::Cluster::MeanTNS ( rb::AveragingScheme  scheme = kDefaultScheme) const
inherited

Definition at line 554 of file Cluster.cxx.

References ana::assert(), rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::kByEnergy, rb::Cluster::NCell(), rb::CellHit::PE(), runNovaSAM::ret, rb::CellHit::TNS(), w, and rb::Cluster::Weight().

Referenced by me::MEFinder::AddMEHit(), sn::SNSlicerAna::analyze(), tbem::TBRecoAna::analyze(), ncs::NCAna::analyze(), sn::SNMichelAnalyzer::analyze(), me::MEFinder::BestSlcMatch(), skim::Evaluator::CheckTiming(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), caf::FillProngVars(), caf::FillSliceVars(), comi::NumiFiltering::filter(), bsf::BremShowerFilter::filter(), tf::TimingFitAlg::HoughFit(), skim::EvaluatorNue::KeepSlice(), me::MEFinder::MakeSlcME(), me::MEFinder::MakeTrkME(), rb::Cluster::MeanZ(), cosrej::MakeNueCosRej::MuonParentByDist(), cosrej::MakeNueCosRej::MuonParentByTime(), calib::PCHitsList::ProcessTrackForFLSHits(), recodemo::RecoDemo::produce(), hv::HoughVertex::produce(), presel::CosmicVeto::produce(), presel::CosmicCVNVeto::produce(), sn::SupernovaMCCluster::produce(), vdt::VertexDT::produce(), jmshower::NueSel::produce(), dif::DiFShowerFinder::produce(), jmshower::NueSelLID::produce(), and caf::CAFMaker::produce().

555  {
556  assert(NCell() > 0);
557  double ret = 0;
558  double totW = 0;
559  for(unsigned int i = 0; i < NCell(); ++i){
560  double w = Weight(i);
561  if(scheme == kByEnergy) w *= Cell(i)->PE();
562 
563  ret += Cell(i)->TNS()*w;
564  totW += w;
565  }
566  return ret/totW;
567  }
float TNS() const
Definition: CellHit.h:46
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
float PE() const
Definition: CellHit.h:42
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
assert(nhit_max >=nhit_nbins)
Float_t w
Definition: plot.C:20
In addition to the intrinsic weights.
Definition: Cluster.h:30
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
double rb::Cluster::MeanV ( geo::View_t  view,
rb::AveragingScheme  scheme = kDefaultScheme 
) const
inherited

Definition at line 546 of file Cluster.cxx.

References ana::assert(), geo::kX, geo::kY, and rb::Cluster::MeanXYZ().

Referenced by nerd::NERDProng::AddProngs(), rb::Cluster::MaxZ(), and rb::Cluster::W().

547  {
548  assert(view == geo::kX || view == geo::kY);
549  if(view == geo::kX) return MeanXYZ(scheme).X();
550  return MeanXYZ(scheme).Y();
551  }
Vertical planes which measure X.
Definition: PlaneGeo.h:28
TVector3 MeanXYZ(rb::AveragingScheme=kDefaultScheme) const
Definition: Cluster.cxx:538
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
assert(nhit_max >=nhit_nbins)
double rb::Cluster::MeanX ( rb::AveragingScheme  scheme = kDefaultScheme) const
inlineinherited
TVector3 rb::Cluster::MeanXYZ ( rb::AveragingScheme  scheme = kDefaultScheme) const
inherited

Definition at line 538 of file Cluster.cxx.

References extractScale::mean, and rb::Cluster::MinMaxMeanXYZ().

Referenced by sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), jmshower::RecoJMShower::GetRVPStats(), tf::TimingFitAlg::HoughFit(), rb::Cluster::MaxZ(), rb::Cluster::MeanV(), rb::Cluster::MeanX(), rb::Cluster::MeanY(), rb::Cluster::MeanZ(), nuesand::FillNueSandbox::produce(), presel::NuePresel::produce(), lem::Preselection::produce(), and rb::Cluster::TotalGeVFastClusterOnly().

539  {
540  TVector3 mean, junk;
541  MinMaxMeanXYZ(junk, junk, mean, scheme);
542  return mean;
543  }
void MinMaxMeanXYZ(TVector3 &lo, TVector3 &hi, TVector3 &mean, rb::AveragingScheme scheme=kDefaultScheme) const
Gets the min/max/mean all at once, called by the functions above.
Definition: Cluster.cxx:582
double rb::Cluster::MeanY ( rb::AveragingScheme  scheme = kDefaultScheme) const
inlineinherited
double rb::Cluster::MeanZ ( rb::AveragingScheme  scheme = kDefaultScheme) const
inlineinherited
unsigned int rb::Cluster::MinCell ( geo::View_t  view) const
inherited

Definition at line 472 of file Cluster.cxx.

References ana::assert(), rb::CellHit::Cell(), rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), and runNovaSAM::ret.

Referenced by calib::TestParticleCorrections::analyze(), align::SplitTracks::analyze(), cvn::PixelMapProducer::DefineBoundary(), rb::Cluster::ExtentCell(), caf::FillHadClustVars(), caf::FillSliceVars(), hough::HoughT::is_good_slice(), lem::MeanCell(), rb::Cluster::MinZ(), dt::View::View(), trk::KalmanTrackMerge::ViewMergeTracks(), and dt::ViewMerger::ZipVerticalTracks().

473  {
474  assert(NCell(view) > 0);
475  unsigned int ret = UINT_MAX;
476  for(unsigned int i = 0; i < NCell(view); ++i)
477  if(Cell(view, i)->Cell() < ret) ret = Cell(view, i)->Cell();
478  return ret;
479  }
unsigned short Cell() const
Definition: CellHit.h:40
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
assert(nhit_max >=nhit_nbins)
void rb::Cluster::MinMaxMeanXYZ ( TVector3 &  lo,
TVector3 &  hi,
TVector3 &  mean,
rb::AveragingScheme  scheme = kDefaultScheme 
) const
inherited

Gets the min/max/mean all at once, called by the functions above.

Todo:
Won't be quite right in the FD when cells aren't at right angles?

Definition at line 582 of file Cluster.cxx.

References ana::assert(), rb::CellHit::Cell(), rb::Cluster::Cell(), geom(), make_syst_table_plots::h, hi(), MECModelEnuComparisons::i, rb::kByEnergy, geo::kX, geo::kY, lo(), extractScale::mean, getGoodRuns4SAM::n, rb::Cluster::NCell(), rb::CellHit::PE(), rb::CellHit::Plane(), geo::GeometryBase::Plane(), POTSpillRate::view, rb::Cluster::View(), ana::weight, rb::Cluster::Weight(), submit_syst::x, submit_syst::y, and test::z.

Referenced by caf::FillHadClustVars(), caf::FillSliceVars(), rb::Cluster::MaxXYZ(), rb::Cluster::MeanXYZ(), rb::Cluster::MeanZ(), and rb::Cluster::MinXYZ().

584  {
585  // If this becomes a bottleneck we can cache the results
586 
587  /// \todo Won't be quite right in the FD when cells aren't at right angles?
588 
589  assert(NCell() > 0);
590 
592 
593  double Wx = 0;
594  double Wy = 0;
595  for(int n = 0; n < 3; ++n){
596  lo(n) = DBL_MAX;
597  hi(n) = -DBL_MAX;
598  mean(n) = 0;
599  }
600 
601  for(unsigned int i = 0; i < NCell(); ++i){
602  const art::Ptr<rb::CellHit>& h = Cell(i);
603  double xyz[3];
604  geom->Plane(h->Plane())->Cell(h->Cell())->GetCenter(xyz);
605  const double x = xyz[0];
606  const double y = xyz[1];
607  const double z = xyz[2];
608  const geo::View_t view = geom->Plane(h->Plane())->View();
609  double weight = Weight(i);
610  if(scheme == kByEnergy) weight *= h->PE();
611 
612  if(view == geo::kX){
613  if(x < lo.X()) lo.SetX(x);
614  if(x > hi.X()) hi.SetX(x);
615  mean.SetX(mean.X()+x*weight);
616  Wx += weight;
617  }
618  if(view == geo::kY){
619  if(y < lo.Y()) lo.SetY(y);
620  if(y > hi.Y()) hi.SetY(y);
621  mean.SetY(mean.Y()+y*weight);
622  Wy += weight;
623  }
624  if(z < lo.Z()) lo.SetZ(z);
625  if(z > hi.Z()) hi.SetZ(z);
626  mean.SetZ(mean.Z()+z*weight);
627  }
628 
629  if(Wx) mean.SetX(mean.X()/Wx);
630  if(Wy) mean.SetY(mean.Y()/Wy);
631  if(Wx || Wy) mean.SetZ(mean.Z()/(Wx+Wy));
632  }
virtual geo::View_t View() const
kXorY for 3D clusters.
Definition: Cluster.h:99
TSpline3 lo("lo", xlo, ylo, 12,"0")
const Var weight
enum geo::_plane_proj View_t
Enumerate the possible plane projections.
unsigned short Plane() const
Definition: CellHit.h:39
Vertical planes which measure X.
Definition: PlaneGeo.h:28
const PlaneGeo * Plane(unsigned int i) const
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
unsigned short Cell() const
Definition: CellHit.h:40
TSpline3 hi("hi", xhi, yhi, 18,"0")
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
float PE() const
Definition: CellHit.h:42
z
Definition: test.py:28
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
void geom(int which=0)
Definition: geom.C:163
assert(nhit_max >=nhit_nbins)
In addition to the intrinsic weights.
Definition: Cluster.h:30
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
unsigned int rb::Cluster::MinPlane ( geo::View_t  view = geo::kXorY) const
inherited

Definition at line 462 of file Cluster.cxx.

References ana::assert(), rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), rb::CellHit::Plane(), and runNovaSAM::ret.

Referenced by dif::DiFShowerFinder::adjustPlane(), dif::DiFShowerFinder::adjustPlane_end(), align::AlignInspect::analyze(), calib::TestParticleCorrections::analyze(), align::SplitTracks::analyze(), calib::HitEfficiency::analyze(), ncs::ROCKMRE::analyze(), ncs::NCAna::analyze(), trk::KalmanTrackMerge::CalcMatchScore(), slid::ParticleIDAlg::CalcPlaneHits(), trk::KalmanTrackMerge::CanJoinTracks(), skim::Evaluator::CheckSliceQuality(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), murem::TrackCleanUpAlg::DeDxInPlane(), lem::DefaultVertex(), cvn::PixelMapProducer::DefineBoundary(), dif::DiFShowerFinder::eparm(), rb::Cluster::ExtentPlane(), caf::FillDiFVars(), caf::FillHadClustVars(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillSliceInfo(), caf::FillSliceVars(), bsf::BremShowerFilter::findShowerByReco(), dif::DiFShowerFinder::findShowerByReco(), bsf::BremShowerFilter::findShowerByTruth(), trk::KalmanTrack::FindTracks(), cvn::RegPixelMapProducer::FindVertexMaxGap(), cvn::PixelMapProducer::FindVertexMaxGap(), cvn::RegPixelMapProducer::FindVertexWindowThreshold(), cvn::PixelMapProducer::FindVertexWindowThreshold(), jmshower::RecoJMShower::GetRVPStats(), hough::HoughT::is_good_slice(), trk::CosmicTrackSelection::IsCalibTrack(), calib::PCHitsList::IsGoodTrack(), trk::KalmanTrackMerge::JoinTracks(), dt::ViewMerger::JoinTracks(), dt::ViewMerger::MatchScore(), murem::FindParent::MatchToOrigSlice(), rb::Cluster::MinZ(), skim::ParametersNue::ParametersNue(), skim::ParametersNumu::ParametersNumu(), slid::Recluster::produce(), rvp::RecVarPID::produce(), remid::RecoMuon::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), jmshower::RecoJMShower::RecoShowers(), dt::ViewMerger::ScoreForExtension(), dt::ViewMerger::ScoreForJoinPlusExtension(), trk::WindowTrackingAlg::SetTrackEndPoints(), cosrej::MakeNueCosRej::SparsenessAsymmetry(), slid::NuEEnergyAlg::VertexEnergy(), dt::View::View(), trk::KalmanTrackMerge::ViewMergeTracks(), and dt::ViewMerger::ZipVerticalTracks().

463  {
464  assert(NCell(view) > 0);
465  unsigned int ret = UINT_MAX;
466  for(unsigned int i = 0; i < NCell(view); ++i)
467  if(Cell(view, i)->Plane() < ret) ret = Cell(view, i)->Plane();
468  return ret;
469  }
unsigned short Plane() const
Definition: CellHit.h:39
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
assert(nhit_max >=nhit_nbins)
double rb::Cluster::MinTNS ( ) const
inherited

Definition at line 482 of file Cluster.cxx.

References ana::assert(), rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), runNovaSAM::ret, and rb::CellHit::TNS().

Referenced by align::AlignInspect::analyze(), sn::SNSlicerAna::analyze(), tbem::TBRecoAna::analyze(), nnbar::ShowerMuonCoincidence::analyze(), ncs::NCAna::analyze(), rb::CompareTracksByTime(), evd::RecoBaseDrawer::DrawCluster2D(), evd::RecoBaseDrawer::DrawTrack2D(), rb::Cluster::ExtentTNS(), caf::FillProngVars(), caf::FillSliceVars(), bsf::BremShowerFilter::findShowerByTruth(), rb::Cluster::MinZ(), murem::MuonRemove::MuonInfo(), skim::ParametersNumu::ParametersNumu(), trk::TrkAssn::produce(), jmshower::JMTrackMerge::produce(), earms::ElasticArmsHS::produce(), jmshower::JMClusterMerge::produce(), caf::CAFMaker::produce(), sn::TrackActivityRemover::remove(), sn::SortClustersByTime(), and sn::SortTracksByTime().

483  {
484  assert(NCell() > 0);
485  double ret = DBL_MAX;
486  for(unsigned int i = 0; i < NCell(); ++i)
487  if(Cell(i)->TNS() < ret) ret = Cell(i)->TNS();
488  return ret;
489  }
float TNS() const
Definition: CellHit.h:46
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
assert(nhit_max >=nhit_nbins)
double rb::Cluster::MinV ( geo::View_t  view) const
inherited

Definition at line 454 of file Cluster.cxx.

References ana::assert(), geo::kX, geo::kY, and rb::Cluster::MinXYZ().

Referenced by rb::Cluster::ExtentV(), fuzz::FuzzyKVertex::produce(), and nerd::NERDProng::produce().

455  {
456  assert(view == geo::kX || view == geo::kY);
457  if(view == geo::kX) return MinXYZ().X();
458  return MinXYZ().Y();
459  }
Vertical planes which measure X.
Definition: PlaneGeo.h:28
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
TVector3 MinXYZ() const
Definition: Cluster.cxx:446
assert(nhit_max >=nhit_nbins)
double rb::Cluster::MinX ( ) const
inlineinherited

Definition at line 204 of file Cluster.h.

References rb::Cluster::MinXYZ().

Referenced by caf::FillProngVars(), and presel::CosmicVeto::produce().

204 {return MinXYZ().X();}
TVector3 MinXYZ() const
Definition: Cluster.cxx:446
TVector3 rb::Cluster::MinXYZ ( ) const
inherited

Definition at line 446 of file Cluster.cxx.

References lo(), and rb::Cluster::MinMaxMeanXYZ().

Referenced by comi::NumiFilteringAna::analyze(), rb::Cluster::ExtentXYZ(), comi::NumiFiltering::filter(), evd::SliceNavigator::GetBounds(), evd::SliceNavigator::GetBox(), rb::Cluster::MinV(), rb::Cluster::MinX(), rb::Cluster::MinY(), rb::Cluster::MinZ(), skim::ParametersNumu::ParametersNumu(), nuesand::FillNueSandbox::produce(), presel::CosmicVeto::produce(), cosrej::CosRej::produce(), and caf::CAFMaker::produce().

447  {
448  TVector3 lo, junk;
449  MinMaxMeanXYZ(lo, junk, junk);
450  return lo;
451  }
TSpline3 lo("lo", xlo, ylo, 12,"0")
void MinMaxMeanXYZ(TVector3 &lo, TVector3 &hi, TVector3 &mean, rb::AveragingScheme scheme=kDefaultScheme) const
Gets the min/max/mean all at once, called by the functions above.
Definition: Cluster.cxx:582
double rb::Cluster::MinY ( ) const
inlineinherited

Definition at line 205 of file Cluster.h.

References rb::Cluster::MinXYZ().

Referenced by caf::FillProngVars(), and presel::CosmicVeto::produce().

205 {return MinXYZ().Y();}
TVector3 MinXYZ() const
Definition: Cluster.cxx:446
double rb::Cluster::MinZ ( ) const
inlineinherited
int rb::Cluster::MostContiguousPlanes ( geo::View_t  view) const
inherited

Longest run of adjacent planes with hits.

view may be kXorY to require hits on every plane no matter the view

Definition at line 635 of file Cluster.cxx.

References rb::Cluster::Cell(), MECModelEnuComparisons::i, geo::kXorY, std::max(), rb::Cluster::NCell(), and NDAPDHVSetting::plane.

Referenced by ncid::NCNNKerasVal::analyze(), rb::Cluster::ExtentTNS(), caf::FillDiFShowerVars(), caf::FillDiFVars(), caf::FillHadClustVars(), caf::FillProngVars(), caf::FillShowerVars(), caf::FillSliceInfo(), caf::FillSliceVars(), and skim::ParametersNumu::ParametersNumu().

636  {
637  std::set<int> planes;
638 
639  for(unsigned int i = 0; i < NCell(view); ++i)
640  planes.insert(Cell(view, i)->Plane());
641 
642  if(planes.empty()) return 0;
643 
644  // In 3D expect a hit every plane, in 2D only every other plane.
645  //
646  // This isn't right if the planes aren't alternating in views, but
647  // thankfully we stopped building detectors like that.
648  const int expGap = (view == geo::kXorY) ? 1 : 2;
649 
650  int prevPlane = -999;
651  int curRun = 1;
652  int longestRun = 0;
653  for(auto plane: planes){
654  if(plane - prevPlane == expGap){
655  ++curRun;
656  longestRun = std::max(longestRun, curRun);
657  }
658  else{
659  curRun = 1;
660  }
661  prevPlane = plane;
662  } // end for plane
663 
664  return longestRun;
665  }
T max(const caf::Proxy< T > &a, T b)
X or Y views.
Definition: PlaneGeo.h:30
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
int rb::Cluster::MostMissingPlanes ( geo::View_t  view) const
inherited

Longest run of adjacent planes with no hits.

view may be kXorY to allow a hit in either view to end the run

Definition at line 668 of file Cluster.cxx.

References rb::Cluster::Cell(), MECModelEnuComparisons::i, geo::kXorY, std::max(), rb::Cluster::NCell(), and NDAPDHVSetting::plane.

Referenced by rb::Cluster::ExtentTNS(), caf::FillDiFShowerVars(), caf::FillDiFVars(), caf::FillProngVars(), caf::FillShowerVars(), and xsrec::MakeXSecCCPi0Inc::GetPhLL().

669  {
670  std::set<int> planes;
671 
672  for(unsigned int i = 0; i < NCell(view); ++i)
673  planes.insert(Cell(view, i)->Plane());
674 
675  if(planes.empty()) return 0;
676 
677  int maxDiff = 1;
678  int prevPlane = *planes.begin();
679  for(int plane: planes){
680  maxDiff = std::max(maxDiff, plane-prevPlane);
681  prevPlane = plane;
682  }
683 
684  // One plane difference as expected in 3D isn't a gap
685  if(view == geo::kXorY) return maxDiff-1;
686 
687  // Two plane difference in 2D isn't a gap. Beyond that, every two planes
688  // difference only indicates one missing plane of hits.
689  return (maxDiff-2)/2;
690  }
T max(const caf::Proxy< T > &a, T b)
X or Y views.
Definition: PlaneGeo.h:30
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
unsigned int rb::Cluster::NCell ( geo::View_t  view) const
inherited

Number of cells in view view.

Definition at line 134 of file Cluster.cxx.

References ana::assert(), geo::kX, geo::kXorY, geo::kY, rb::Cluster::NCell(), rb::Cluster::NXCell(), and rb::Cluster::NYCell().

Referenced by dqsf::DQSpillFlags::AccumulateSyncMetric(), rb::HitMap::Add(), fuzz::FuzzyKVertex::AddProng(), dif::DiFShowerFinder::adjustPlane(), dif::DiFShowerFinder::adjustPlane_end(), tut::TutAnalyzer::analyze(), qeef::QeFinderVal::analyze(), rsim::RecordNoiseSpectrumFile::analyze(), chaninfo::CosmicEff::analyze(), remid::ReMIdValidate::analyze(), comi::CosmicMetrics::analyze(), align::AlignInspect::analyze(), tut::RecoValidationTutorial::analyze(), calib::TestParticleCorrections::analyze(), dprf::ChannelPlots::analyze(), remid::ReMIdTrain::analyze(), dprf::TrackPlots::analyze(), mcchk::MonopoleAna::analyze(), align::Alignment::analyze(), mcchk::RockAna::analyze(), sn::SNSlicerAna::analyze(), sn::SupernovaAna::analyze(), align::SplitTracks::analyze(), murem::MuonRemoveAna::analyze(), pa::ClusterEva::analyze(), comi::DataCheck::analyze(), vf::TrackEva::analyze(), comi::NumiFilteringAna::analyze(), zcl::FmmTriggerAna::analyze(), tbem::TBRecoAna::analyze(), zcl::FmmTrackerValidation::analyze(), zcl::FmmTrackerAna::analyze(), trk::KalmanTrackAna::analyze(), showere::ShowerEnergyAna::analyze(), hough::HoughValidate::analyze(), rockmuon::NDRockMuon::analyze(), zcl::FastMMStudy::analyze(), bpfit::BPFTmvaTrainer::analyze(), bpf::BPFCVNAna::analyze(), calib::CosmicTrends::analyze(), calib::CalibAna::analyze(), ncs::Xeff::analyze(), moonshadowana::MoonShadowAna::analyze(), ncs::ROCKMRE::analyze(), ncs::NCAna::analyze(), htk::HoughTrack::analyze(), bpfit::DimuonFitter::AnaSlice(), me::MEFinder::BestSlcMatch(), fuzz::ViewMatchAlg::CalcEnergyProfile(), nerd::ViewMatchAlg::CalcEnergyProfile(), trk::KalmanTrackMerge::CalcMatchScore(), slid::ParticleIDAlg::CalcPlaneHits(), trk::KalmanTrackMerge::CanJoinTracks(), trk::KalmanTrackAna::CheckRecoTracks(), murem::TrackCleanUpAlg::CleanUpTrack(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), sn::SNSlicer::ClusterIsGood(), murem::TrackCleanUpAlg::ComputeVertexRegion(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxFD::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), nnbar::NNbarUtilities::correlationTCell(), nnbar::NNbarUtilities::correlationTPlane(), cvn::RegPixelMapProducer::CreateMapGivenBoundary(), cvn::PixelMapProducer::CreateMapGivenBoundary(), cvn::RegPixelMapProducer::CreateMapGivenShowerVertex(), cvn::RegPixelMapProducer::CreateMapGivenVertex(), jmshower::RecoJMShower::DepositEnergy(), evd::RecoBaseDrawer::DrawTrack2D(), skim::ParametersNumu::EarliestLatestHitPos(), jmshower::RecoJMShower::Energy(), dif::DiFShowerFinder::eparm(), rb::Cluster::Exclude(), dt::ViewMerger::Extremes(), numue::NumuEAlg::FDEnergy(), caf::FillDiFShowerVars(), caf::FillDiFVars(), caf::FillHadClustVars(), calib::StopperThreshold::FillHist(), bpfit::BreakPoint::FillHitList(), sn::SupernovaAna::FillPlaneSeperations(), dqsf::DQSpillFlags::FillPopulatedDCMs(), caf::FillProngVars(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillShowerVars(), caf::FillSliceInfo(), filter::Filter::FillSliceVariables(), caf::FillSliceVars(), trk::CosmicTrackAna::FillTrackHistograms(), calib::StopperThreshold::FillTree(), comi::NumiFiltering::filter(), bsf::BremShowerFilter::filter(), showere::ShowerEnergyFilterMC::filter(), mono::MonopoleTrack::filter(), cvn::RegPixelMapProducer::FindCenterMedian(), cvn::PixelMapProducer::FindCenterMedian(), airshower::AirSlicer::FindNeighbors(), bsf::BremShowerFilter::findShowerByReco(), dif::DiFShowerFinder::findShowerByReco(), trk::KalmanTrack::FindTracks(), trk::CosmicTrackUtilities::FindTriCells(), cvn::RegPixelMapProducer::FindVertexMaxGap(), cvn::PixelMapProducer::FindVertexMaxGap(), cvn::RegPixelMapProducer::FindVertexWindowThreshold(), cvn::PixelMapProducer::FindVertexWindowThreshold(), bpfit::DimuonFitter::FindVertexZ(), bpfit::BreakPoint::FitTracks(), bpfit::DimuonFitter::FitView(), nuesand::FillNueSandbox::FracAngChanges(), nuesand::FillNueSandbox::FracModalHits(), nuesand::FillNueSandbox::FracNonContiguous(), cosrej::CosRejFxs::getActivity(), numusand::NumuSandFxs::getActivity(), numusand::NumuSandFxs::getActivityVtx(), numusand::NumuSandFxs::getAveTrackdEdx(), numusand::NumuSandFxs::getAveTrackdEdxLast4Cells(), numusand::NumuSandFxs::getAveTrackdEdxLast6Cells(), numusand::NumuSandFxs::getAveTrackdEdxLast8Cells(), trackinfo::TrackInfoFxs::getAveTrackdEdxLastCells(), cosrej::CosRejFxs::getBBC(), evd::SliceNavigator::GetBounds(), evd::SliceNavigator::GetBox(), xsrec::MakeXSecCCPi0Inc::GetBPI(), evd::RecoBaseDrawer::GetClusterOutlines(), evd::RecoBaseDrawer::GetClusterOutlinesConvexHull(), cosrej::CosRejFxs::getCVVars(), cosrej::CosRejFxs::getFits(), xsrec::MakeXSecCCPi0Inc::GetPhLL(), me::MEFinder::GetPhysNoiseSlcs(), jmshower::RecoJMShower::GetPlaneCentroidCell(), jmshower::RecoJMShower::GetPlaneE1Cell(), ndreco::NDRecoFxs::getProngActivity(), ndreco::NDRecoFxs::getProngDedx(), jmshower::RecoJMShower::GetRVPStats(), ndreco::NDRecoFxs::getTrackActivity(), ndreco::NDRecoFxs::getTrackDedx(), numue::NumuEAlg::GetUCMuonENonSingle(), numue::NumuEAlg::GetUCMuonESingle(), fuzz::FuzzyKValidate::GeVCalc(), slid::NuEEnergyAlg::HadronicDepEnergy(), dt::DiscreteTracker::HighActivity(), nnbar::NNbarUtilities::hitCountInView(), rb::HitList::HitList(), cvn::HitNuIndex(), jmshower::hitSort(), tf::TimingFitAlg::HoughFit(), LSTME::BasicProngVars::initBasicVars(), hough::HoughT::is_good_slice(), zcl::FastMonopoleTriggers::is_trigger_by_epoch1_fmmtrigger(), trk::CosmicTrackSelection::IsCalibTrack(), calib::RockMuonStopperSelection::IsContainedStopper(), calib::PCHitsList::IsGoodTrack(), trk::CosmicTrackAlg::IsTrackDownstreamFromTiming(), trk::KalmanTrackMerge::JoinTracks(), me::MEFinder::MakeSlcME(), fuzz::ViewMatchAlg::MakeTestProng(), nerd::ViewMatchAlg::MakeTestProng(), trk::CosmicTrackAlg::MakeTrack(), trk::WindowTrackingAlg::MakeTrack(), airshower::AirSlicer::MakeTrackSlices(), me::MEFinder::MakeTrkME(), murem::FindParent::MatchToOrigSlice(), nuesand::FillNueSandbox::MaxGap(), nuesand::FillNueSandbox::MaxHits(), dt::DiscreteTracker::MergeParasiteTracks(), nerd::NERDProng::MinHitClusterDist(), me::MEFinder::MinHitSlcDist(), dt::ViewMerger::MissingChargeByExtension(), murem::MuonRemove::MuonInfo(), dif::DiFShowerFinder::muonstub(), numue::NumuEAlg::NDEnergy(), numue::NumuEAlg::NDTrackEnergySplitting(), zcl::FmmTriggerEvd::NumberOfCellsPerLength(), zcl::FastMonopoleTriggers::NumberOfHitsInOverlapPlanesCut(), zcl::FmmTriggerEvd::NumberOfHitsInOverlapPlanesCut(), zcl::FastMMStudy::NumberOfHitsInOverlapPlanesCut(), zcl::FastMonopoleTriggers::NumberOfSurfaceHits(), zcl::FastMMStudy::NumberOfSurfaceHits(), rb::operator<<(), air::AirFilter::parallel_muon_slice(), skim::ParametersNumu::ParametersNumu(), zcl::FastMonopoleTriggers::passed_epoch2_fmmtrigger(), me::MEFinder::PassesMEPresel(), calib::PCHitsList::ProcessTrack(), calib::PCHitsList::ProcessTrackTrajectory(), trk::TrkAssn::produce(), vf::VertexFinder::produce(), qeef::QeFinder::produce(), hv::HoughVertex::produce(), nuesand::FillNueSandbox::produce(), wsnumu::WSNumu::produce(), presel::CosmicVeto::produce(), slid::Recluster::produce(), presel::NuePresel::produce(), presel::CosmicCVNVeto::produce(), numusand::FillSandbox::produce(), lem::Preselection::produce(), slid::SliceLIDBuilder::produce(), zcl::SPCluster::produce(), cosrej::CosRej::produce(), numue::NumuEnergy::produce(), earms::ElasticArmsHS::produce(), lem::MakeLibrary::produce(), dt::DiscreteTracker::produce(), ndreco::NDReco::produce(), calib::PCHitsList::produce(), sn::SNSlicer::produce(), sn::SupernovaMCCluster::produce(), vdt::VertexDT::produce(), zcl::FmmTriggerEvd::produce(), jmshower::NueSel::produce(), rvp::RecVarPID::produce(), dif::DiFShowerFinder::produce(), jmshower::NueSelLID::produce(), bpfit::BPFEnergyEstimator::produce(), bpfit::BPFEnergyEstimatorOnly::produce(), cosrej::MakeNueCosRej::produce(), ncid::NCNNKeras::produce(), murem::MuonRemove::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), caf::CAFMaker::produce(), slid::ParticleIDAlg::Radius(), jmshower::RecoJMShower::Radius(), jmshower::RecoJMShower::RadiusV(), jmshower::RecoJMShower::RecoShowers(), murem::MuonRemove::RemoveByTruth(), trk::KalmanTrack::RemoveHitsFromSignal(), dt::ViewMerger::ScoreForJoinPlusExtension(), trk::KalmanTrackMerge::ShiftInterpolationPoints(), slid::NuEEnergyAlg::ShowerDepEnergy(), lem::MakeLibrary::SliceMeanPosEWeighted(), lem::MakeLibrary::SliceOrigin(), lem::LEMSummarizer::SliceToLEMInput(), remid::ReMIdValidate::SortByHits(), remid::ReMIdTrain::SortByHits(), htk::sortByNCell(), zcl::FmmTriggerEvd::StdevCellsPerPlane(), nnbar::NNbarUtilities::temporalExpand(), calib::StopperThreshold::testPath(), htk::Track3D::time_fit(), mono::Track3D::time_fit(), dt::ViewMerger::TotalChargePerView(), nnbar::NNbarUtilities::totalVisibleEnergyInView(), murem::TrackCleanUpAlg::TrackEinMIP(), zcl::FMMTracker::Tracking2D(), dprf::ChannelPlots::TrackOK(), dprf::TrackPlots::TrackOK(), trk::CosmicTrackUtilities::TrackResiduals(), slid::NuEEnergyAlg::VertexEnergy(), and trk::KalmanTrackMerge::ViewMergeTracks().

135  {
136  switch(view){
137  case geo::kX: return NXCell();
138  case geo::kY: return NYCell();
139  case geo::kXorY: return NCell();
140  default: assert(0 && "Unknown view");
141  }
142  }
X or Y views.
Definition: PlaneGeo.h:30
Vertical planes which measure X.
Definition: PlaneGeo.h:28
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
assert(nhit_max >=nhit_nbins)
unsigned int rb::Cluster::NCell ( ) const
inlineinherited
int rb::Cluster::NMissingPlanes ( geo::View_t  view) const
inherited

Total number of missing planes in cluster.

Put simply, number of planes spanned minus number of hit planes. If track is 2D, only planes in that view are counted.

Definition at line 693 of file Cluster.cxx.

References rb::Cluster::Cell(), MECModelEnuComparisons::i, geo::kXorY, rb::Cluster::NCell(), update_sam_good_runs_metadata::stride, and rb::Cluster::View().

Referenced by bpf::BPFCVNAna::analyze(), rb::Cluster::ExtentTNS(), caf::FillTrackVars(), skim::ParametersNue::ParametersNue(), wsnumu::WSNumu::produce(), and slid::SliceLIDBuilder::produce().

694  {
695  if(view == geo::kXorY) view = View();
696 
697  const int stride = (view == geo::kXorY) ? 1 : 2;
698 
699  std::set<int> planes;
700 
701  for(unsigned int i = 0; i < NCell(view); ++i)
702  planes.insert(Cell(view, i)->Plane());
703 
704  if(planes.empty()) return 0;
705 
706  return (*planes.rbegin() - *planes.begin())/stride - (int)planes.size() + 1;
707 
708  }
virtual geo::View_t View() const
kXorY for 3D clusters.
Definition: Cluster.h:99
X or Y views.
Definition: PlaneGeo.h:30
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
size_t rb::Track::NTrajectoryPoints ( ) const
inline
unsigned int rb::Cluster::NXCell ( ) const
inlineinherited

Number of cells in the x-view.

Definition at line 106 of file Cluster.h.

References rb::Cluster::fXCell, and art::PtrVector< T >::size().

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), chaninfo::CosmicEff::analyze(), comi::CosmicMetrics::analyze(), align::AlignInspect::analyze(), align::Alignment::analyze(), align::SplitTracks::analyze(), sn::SNSlicerAna::analyze(), calib::HitEfficiency::analyze(), calib::PEResponse::analyze(), trk::KalmanTrackAna::analyze(), hough::HoughValidate::analyze(), slid::LIDTraining::analyze(), red::EWCosmics::analyze(), bpfit::DimuonFitter::AnaSlice(), rb::Cluster::Cell(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), sn::SNSlicer::ClusterIsGood(), cvn::PixelMapProducer::CreateMapGivenBoundary(), me::TrkME::DistToTrk(), evd::RecoBaseDrawer::DrawCluster2D(), caf::FillDiFShowerVars(), caf::FillDiFVars(), caf::FillHadClustVars(), caf::FillProngVars(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillShowerVars(), filter::Filter::FillSliceVariables(), caf::FillSliceVars(), sn::SNSlicer::FinalizeCluster(), cvn::Get2DProngEfficiencyByPDG(), cvn::Get2DProngEnergyByPDG(), cvn::Get2DProngPurityByPDG(), jmshower::RecoJMShower::GetCentroid(), cvn::GetProngEfficiencyByPDG(), cvn::GetProngEnergyByPDG(), cvn::GetProngPurityByPDG(), jmshower::RecoJMShower::GetRVPStats(), bpfit::BreakPoint::GoodProng(), LSTME::BasicProngVars::initBasicVars(), trk::CosmicTrackSelection::IsCalibTrack(), calib::PCHitsList::IsGoodTrack(), skim::EvaluatorNue::KeepSlice(), nerd::NERDProng::MakeCluster(), trk::CosmicTrackAlg::MakeTrack(), rb::Cluster::NCell(), skim::ParametersNue::ParametersNue(), skim::ParametersNumu::ParametersNumu(), hough::HoughT::produce(), nuesand::FillNueSandbox::produce(), nussand::FillNusSandbox::produce(), hough::MultiHoughT::produce(), lem::Preselection::produce(), presel::NuePresel::produce(), earms::ElasticArmsHS::produce(), jmshower::JMClusterMerge::produce(), sn::SNSlicer::produce(), sn::SupernovaMCCluster::produce(), vdt::VertexDT::produce(), jmshower::NueSel::produce(), rvp::RecVarPID::produce(), cvntf::CVNProngEvaluatorTF::produce(), jmshower::NueSelLID::produce(), remid::RecoMuon::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), caf::CAFMaker::produce(), cvn::ProngClassify(), jmshower::RecoJMShower::RecoShowers(), rb::Cluster::RemoveHit(), rb::Cluster::SetWeight(), lem::LEMSummarizer::SliceToLEMInput(), rb::Cluster::TotalGeVFastClusterOnly(), dprf::ChannelPlots::TrackOK(), dprf::TrackPlots::TrackOK(), me::MEFinder::TrkMEDist(), rb::Cluster::Weight(), and slicer::MMSlicer::WindowSlice().

106 {return fXCell.size();}
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
size_type size() const
Definition: PtrVector.h:308
unsigned int rb::Cluster::NYCell ( ) const
inlineinherited

Number of cells in the y-view.

Definition at line 108 of file Cluster.h.

References rb::Cluster::fYCell, and art::PtrVector< T >::size().

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), chaninfo::CosmicEff::analyze(), comi::CosmicMetrics::analyze(), align::AlignInspect::analyze(), align::Alignment::analyze(), align::SplitTracks::analyze(), sn::SNSlicerAna::analyze(), calib::HitEfficiency::analyze(), calib::PEResponse::analyze(), trk::KalmanTrackAna::analyze(), hough::HoughValidate::analyze(), slid::LIDTraining::analyze(), red::EWCosmics::analyze(), bpfit::DimuonFitter::AnaSlice(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), sn::SNSlicer::ClusterIsGood(), cvn::PixelMapProducer::CreateMapGivenBoundary(), me::TrkME::DistToTrk(), evd::RecoBaseDrawer::DrawCluster2D(), caf::FillDiFShowerVars(), caf::FillDiFVars(), caf::FillHadClustVars(), caf::FillProngVars(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillShowerVars(), filter::Filter::FillSliceVariables(), caf::FillSliceVars(), sn::SNSlicer::FinalizeCluster(), cvn::Get2DProngEfficiencyByPDG(), cvn::Get2DProngEnergyByPDG(), cvn::Get2DProngPurityByPDG(), jmshower::RecoJMShower::GetCentroid(), cvn::GetProngEfficiencyByPDG(), cvn::GetProngEnergyByPDG(), cvn::GetProngPurityByPDG(), jmshower::RecoJMShower::GetRVPStats(), bpfit::BreakPoint::GoodProng(), LSTME::BasicProngVars::initBasicVars(), trk::CosmicTrackSelection::IsCalibTrack(), calib::PCHitsList::IsGoodTrack(), skim::EvaluatorNue::KeepSlice(), nerd::NERDProng::MakeCluster(), trk::CosmicTrackAlg::MakeTrack(), rb::Cluster::NCell(), skim::ParametersNue::ParametersNue(), skim::ParametersNumu::ParametersNumu(), hough::HoughT::produce(), nuesand::FillNueSandbox::produce(), nussand::FillNusSandbox::produce(), hough::MultiHoughT::produce(), presel::NuePresel::produce(), lem::Preselection::produce(), earms::ElasticArmsHS::produce(), sn::SNSlicer::produce(), jmshower::JMClusterMerge::produce(), sn::SupernovaMCCluster::produce(), vdt::VertexDT::produce(), jmshower::NueSel::produce(), rvp::RecVarPID::produce(), cvntf::CVNProngEvaluatorTF::produce(), jmshower::NueSelLID::produce(), remid::RecoMuon::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), caf::CAFMaker::produce(), cvn::ProngClassify(), jmshower::RecoJMShower::RecoShowers(), rb::Cluster::RemoveHit(), lem::LEMSummarizer::SliceToLEMInput(), rb::Cluster::TotalGeVFastClusterOnly(), dprf::ChannelPlots::TrackOK(), dprf::TrackPlots::TrackOK(), me::MEFinder::TrkMEDist(), and slicer::MMSlicer::WindowSlice().

108 {return fYCell.size();}
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
size_type size() const
Definition: PtrVector.h:308
std::vector< geo::OfflineChan > rb::Cluster::OfflineChans ( ) const
inherited

Positions of all the CellHits.

Definition at line 190 of file Cluster.cxx.

References rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), and runNovaSAM::ret.

Referenced by calib::PCHitsList::ProcessTrack(), calib::PCHitsList::ProcessTrackForBelowThresholdHits(), calib::PCHitsList::ProcessTrackForFLSHits(), and rb::Cluster::YCells().

191  {
192  std::vector<geo::OfflineChan> ret;
193  ret.reserve(NCell());
194  for(unsigned int i = 0; i < NCell(); ++i)
195  ret.push_back(Cell(i)->OfflineChan());
196  return ret;
197  }
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
bool rb::Prong::operator< ( const Prong other) const
inherited

Definition at line 226 of file Prong.cxx.

References rb::Prong::Start().

Referenced by rb::Prong::Dir().

227  {
228  return this->Start().Z() < other.Start().Z();
229  }
virtual TVector3 Start() const
Definition: Prong.h:73
bool rb::Cluster::operator< ( const Cluster other) const
inherited

Definition at line 576 of file Cluster.cxx.

References rb::Cluster::MeanZ().

577  {
578  return this->MeanZ() < other.MeanZ();
579  }
double MeanZ(rb::AveragingScheme scheme=kDefaultScheme) const
Definition: Cluster.h:233
std::map< unsigned int, TVector3 > rb::Track::PlaneDirMap ( ) const

map of the direction cosines at each plane (ie z)

Definition at line 496 of file Track.cxx.

References plot_validation_datamc::c, geo::PlaneGeo::Cell(), rb::Cluster::Cell(), geom(), geo::CellGeo::GetCenter(), InterpolateDir(), rb::Cluster::NCell(), rb::CellHit::Plane(), geo::GeometryBase::Plane(), and NDAPDHVSetting::plane.

Referenced by calib::PCHitsList::ProcessTrack(), calib::PCHitsList::ProcessTrackForBelowThresholdHits(), calib::PCHitsList::ProcessTrackForFLSHits(), Trajectory(), and trk::CosmicTrackUtilities::TriCellPathLength().

497  {
498  std::map<unsigned int, TVector3> planeDirMap;
499 
500  // loop over the planes in the track and get the points on either side
501  // of the plane z
503 
504  // looping over the cells this way does the X and Y
505  // view separately, but the map orders by plane
506  // number using the < operator, so the entries
507  // in the map are linearly increasing, with X and Y
508  // views mixed together.
509  for(size_t c = 0; c < NCell(); ++c){
510  unsigned int plane = Cell(c)->Plane();
511 
512  // check if we already have the direction at this plane
513  // no need to overwrite it if we do.
514  if(planeDirMap.count(plane) > 0) continue;
515 
516  // get the z position for this cell
517  double xyz[3] = {0.};
518  geom->Plane(plane)->Cell(Cell(c)->Cell())->GetCenter(xyz);
519 
520  // find the direction based on the points on either
521  // side of this z location.
522  // set the direction of travel as the direction
523  // at this plane.
524  planeDirMap[plane] = InterpolateDir(xyz[2]);
525 
526  }// end loop over cells
527 
528  return planeDirMap;
529  }
void GetCenter(double *xyz, double localz=0.0) const
Definition: CellGeo.cxx:159
unsigned short Plane() const
Definition: CellHit.h:39
const CellGeo * Cell(int icell) const
Definition: PlaneGeo.h:48
const PlaneGeo * Plane(unsigned int i) const
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
void geom(int which=0)
Definition: geom.C:163
virtual TVector3 InterpolateDir(double z) const
Definition: Track.cxx:348
void rb::Track::PrependTrajectoryPoint ( TVector3  pt)

Support constructing tracks backwards.

Note: This function also sets the track start to pt

Definition at line 134 of file Track.cxx.

References rb::Cluster::fPrecalcTotalGeV, rb::Prong::fStart, fTraj, and gen_flatrecord::pt.

Referenced by trk::WindowTrackingAlg::FindEndPoint(), PrependTrajectoryPoint(), and Track().

135  {
136  fPrecalcTotalGeV = -1; // Invalidate any cached value
137 
138  fTraj.insert(fTraj.begin(), pt);
139 
140  fStart = pt;
141  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
std::vector< TVector3 > fTraj
Definition: Track.h:160
void rb::Track::PrependTrajectoryPoint ( double  pv,
double  pz 
)

Definition at line 144 of file Track.cxx.

References rb::Cluster::fPrecalcTotalGeV, rb::Cluster::fView, geo::kX, geo::kXorY, and PrependTrajectoryPoint().

145  {
146  fPrecalcTotalGeV = -1; // Invalidate any cached value
147 
148  if(fView == geo::kXorY)
149  throw cet::exception("Track") << "view is geo::kXorY, cannot add a 2D trajectroy point";
150 
151  if(fView == geo::kX)
152  PrependTrajectoryPoint(TVector3(pv, 0, pz));
153  else
154  PrependTrajectoryPoint(TVector3(0, pv, pz));
155  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
X or Y views.
Definition: PlaneGeo.h:30
Vertical planes which measure X.
Definition: PlaneGeo.h:28
::xsd::cxx::tree::exception< char > exception
Definition: Database.h:225
geo::View_t fView
view this cluster is in
Definition: Cluster.h:316
void PrependTrajectoryPoint(TVector3 pt)
Support constructing tracks backwards.
Definition: Track.cxx:134
rb::RecoHit rb::Cluster::RecoHit ( const art::Ptr< rb::CellHit > &  chit) const
inherited

Return calibrated hit based on assumed W coordinate.

To calibrate a hit you must know its distance from the readout. This is a convenience function which uses the W function to estimate the position of a CellHit and then uses calib::Calibrator to produce a calibrated hit from that information.

Definition at line 259 of file Cluster.cxx.

References art::Ptr< T >::get(), and calib::Calibrator::MakeRecoHit().

Referenced by dif::DiFShowerFinder::adjustPlane(), dif::DiFShowerFinder::adjustPlane_end(), tut::TutAnalyzer::analyze(), calib::TestParticleCorrections::analyze(), tbem::TBRecoAna::analyze(), trk::KalmanTrackAna::analyze(), showere::ShowerEnergyAna::analyze(), upmuana::UpMuRecoAna::analyze(), upmuana::UpMuAnalysis::analyze(), slid::NuEEnergyAlg::CellEnergy(), murem::TrackCleanUpAlg::CleanUpTrack(), nnbar::NNbarUtilities::correlationTCell(), nnbar::NNbarUtilities::correlationTPlane(), cvn::RegPixelMapProducer::CreateMapGivenBoundary(), cvn::PixelMapProducer::CreateMapGivenBoundary(), cvn::RegPixelMapProducer::CreateMapGivenShowerVertex(), cvn::RegPixelMapProducer::CreateMapGivenVertex(), murem::TrackCleanUpAlg::DeDxInPlane(), nnbar::NNbarUtilities::energyBalancingVertex(), dif::DiFShowerFinder::eparm(), calib::StopperThreshold::FillHist(), trk::CosmicTrackAna::FillTrackHistograms(), calib::StopperThreshold::FillTree(), showere::ShowerEnergyFilterMC::filter(), bsf::BremShowerFilter::findShowerByReco(), dif::DiFShowerFinder::findShowerByReco(), numusand::NumuSandFxs::getActivity(), numusand::NumuSandFxs::getAveTrackdEdx(), numusand::NumuSandFxs::getAveTrackdEdxLast4Cells(), numusand::NumuSandFxs::getAveTrackdEdxLast6Cells(), numusand::NumuSandFxs::getAveTrackdEdxLast8Cells(), trackinfo::TrackInfoFxs::getAveTrackdEdxLastCells(), xsrec::MakeXSecCCPi0Inc::GetBPI(), nnbar::NNbarUtilities::getCoordinateOfHits(), cosrej::CosRejFxs::getFits(), nuesand::FillNueSandbox::GetPlaneEnergy(), fuzz::FuzzyKValidate::GeVCalc(), tf::TimingFitAlg::HoughFit(), dif::DiFShowerFinder::muonstub(), numue::NumuEAlg::NDEnergy(), numue::NumuEAlg::NDTrackEnergySplitting(), nussand::FillNusSandbox::produce(), numusand::FillSandbox::produce(), slid::SliceLIDBuilder::produce(), lem::MakeLibrary::produce(), ndreco::NDReco::produce(), remid::RecoMuon::produce(), upmuana::UpMuProb::produce(), caf::CAFMaker::produce(), rb::Cluster::RecoHit(), lem::MakeLibrary::SliceMeanPosEWeighted(), lem::LEMSummarizer::SliceToLEMInput(), nnbar::NNbarUtilities::temporalExpand(), calib::StopperThreshold::testPath(), dt::ViewMerger::TotalChargePerView(), rb::Cluster::TotalGeV(), nnbar::NNbarUtilities::totalVisibleEnergyInView(), murem::TrackCleanUpAlg::TrackEinMIP(), trk::CosmicTrackUtilities::TrackResiduals(), and rb::Cluster::YCells().

260  {
262  rb::RecoHit rb(cal->MakeRecoHit(*chit, this->W(chit.get())));
263  return rb;
264  }
rb::RecoHit MakeRecoHit(rb::CellHit const &cellhit, double w)
Calibrated quantities relying on position in the orthogonal view. To generate a rb::CellHit from a rb...
Definition: RecoHit.h:19
Perform a "2 point" Hough transform on a collection of hits.
T const * get() const
Definition: Ptr.h:321
rb::RecoHit rb::Cluster::RecoHit ( geo::View_t  view,
unsigned int  viewIdx 
) const
inherited

Definition at line 267 of file Cluster.cxx.

References rb::Cluster::Cell(), and rb::Cluster::RecoHit().

268  {
269  return RecoHit(Cell(view, viewIdx));
270  }
rb::RecoHit RecoHit(const art::Ptr< rb::CellHit > &chit) const
Return calibrated hit based on assumed W coordinate.
Definition: Cluster.cxx:259
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
rb::RecoHit rb::Cluster::RecoHit ( unsigned int  globalIdx) const
inherited

Definition at line 273 of file Cluster.cxx.

References rb::Cluster::Cell(), and rb::Cluster::RecoHit().

274  {
275  return RecoHit(Cell(globalIdx));
276  }
rb::RecoHit RecoHit(const art::Ptr< rb::CellHit > &chit) const
Return calibrated hit based on assumed W coordinate.
Definition: Cluster.cxx:259
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
void rb::Cluster::RemoveHit ( const art::Ptr< rb::CellHit hit)
inherited

Remove hit from current cluster.

Definition at line 290 of file Cluster.cxx.

References art::PtrVector< T >::begin(), art::PtrVector< T >::erase(), rb::Cluster::fPrecalcTotalGeV, rb::Cluster::fXCell, rb::Cluster::fXWeights, rb::Cluster::fYCell, rb::Cluster::fYWeights, MECModelEnuComparisons::i, geo::kX, geo::kY, rb::Cluster::NXCell(), rb::Cluster::NYCell(), and rb::CellHit::View().

Referenced by slid::NuEEnergyAlg::HadronicDepEnergy(), murem::FindParent::MatchToOrigSlice(), slid::Recluster::produce(), sn::SNSlicer::produce(), slid::NuEEnergyAlg::VertexEnergy(), and rb::Cluster::YCells().

291  {
292  fPrecalcTotalGeV = -1; // Invalidate any cached value
293 
294  if(hit->View() == geo::kX){
295  // try to find the hit in the xcells
296  for(unsigned int i = 0;i<NXCell();++i){
297  if(fXCell[i] == hit){
299  if(!fXWeights.empty()) fXWeights.erase(fXWeights.begin()+i);
300  break;
301  }
302  }
303  }
304  else if(hit->View() == geo::kY){
305  // try to find the hit in the ycells
306  for(unsigned int i = 0;i<NYCell();++i){
307  if(fYCell[i] == hit){
309  if(!fYWeights.empty()) fYWeights.erase(fYWeights.begin()+i);
310  break;
311  }
312  }
313  }
314  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
iterator begin()
Definition: PtrVector.h:223
geo::View_t View() const
Definition: CellHit.h:41
Vertical planes which measure X.
Definition: PlaneGeo.h:28
iterator erase(iterator position)
Definition: PtrVector.h:508
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
unsigned int NYCell() const
Number of cells in the y-view.
Definition: Cluster.h:108
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
void rb::Cluster::RemoveHit ( unsigned int  globalIdx)
inherited

Remove the ith hit from current cluster.

Definition at line 317 of file Cluster.cxx.

References ana::assert(), art::PtrVector< T >::begin(), art::PtrVector< T >::erase(), rb::Cluster::fPrecalcTotalGeV, rb::Cluster::fXCell, rb::Cluster::fYCell, rb::Cluster::NCell(), and rb::Cluster::NXCell().

318  {
319  fPrecalcTotalGeV = -1; // Invalidate any cached value
320 
321  assert(globalIdx < NCell());
322  if(globalIdx < NXCell()) fXCell.erase(fXCell.begin()+globalIdx);
323  else fYCell.erase(fYCell.begin()+globalIdx-NXCell());
324  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
iterator begin()
Definition: PtrVector.h:223
iterator erase(iterator position)
Definition: PtrVector.h:508
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
assert(nhit_max >=nhit_nbins)
void rb::Track::RemoveTrajectoryPoint ( unsigned int  i)

Remove the ith trajectory point from the track.

Definition at line 367 of file Track.cxx.

References rb::Cluster::fPrecalcTotalGeV, fTraj, and MECModelEnuComparisons::i.

Referenced by trk::KalmanTrack::FindTracks(), and Trajectory().

368  {
369  fPrecalcTotalGeV = -1; // Invalidate any cached value
370 
371  if(i > fTraj.size())
372  throw cet::exception("Track") << "attepmt to remove trajectory point "
373  << i << " while there are only " << fTraj.size()
374  << " trajectory points";
375 
376  fTraj.erase(fTraj.begin()+i);
377  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
::xsd::cxx::tree::exception< char > exception
Definition: Database.h:225
std::vector< TVector3 > fTraj
Definition: Track.h:160
void rb::Cluster::SavePrecalcTotalGeV ( ESaveGeVMode  savemode)
inherited

Store the current result of TotalGeV / CalorimetricEnergy.

If you intend to lock in the current calibrations, call this method immediately before storing the product in the event. The result can be retrieved by passing kUsePrecalcEnergy to TotalGeV or CalorimetricEnergy.

Multiple calls are considered to be an error. If you really do need to update the energy, pass kResetTotalGeV.

Definition at line 751 of file Cluster.cxx.

References allTimeWatchdog::endl, stan::math::fabs(), rb::Cluster::fPrecalcTotalGeV, rb::Cluster::kRecomputeEnergy, rb::Cluster::kResetTotalGeV, and rb::Cluster::TotalGeV().

752  {
753  const double gev = TotalGeV(kRecomputeEnergy);
754  if(fPrecalcTotalGeV < 0 || savemode == kResetTotalGeV){
755  fPrecalcTotalGeV = gev;
756  }
757  else{
758  if(fabs(gev-fPrecalcTotalGeV) > .01){
759  mf::LogError("rb::Cluster") << "SaveTotalGeV() already called. Old value was " << fPrecalcTotalGeV << ", now " << gev
760  << ". If you intended to reset the stored value, you must pass kResetTotalGeV. Aborting." << std::endl;
761  abort();
762  }
763  else{
764  mf::LogWarning("rb::Cluster") << "Called SaveTotalGeV() twice for the same cluster, which is inefficient." << std::endl;
765  }
766  }
767  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
fvar< T > fabs(const fvar< T > &x)
Definition: fabs.hpp:15
MaybeLogger_< ELseverityLevel::ELsev_error, false > LogError
Altering the already-set value is not an error.
Definition: Cluster.h:283
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
double TotalGeV(EEnergyCalcScheme escheme=kRecomputeEnergy) const
Simple sum of the estimated GeV of all the hits.
Definition: Cluster.cxx:378
Default. Ask Calibrator about each hit, and sum.
Definition: Cluster.h:178
void rb::Prong::SetDir ( TVector3  dir)
virtualinherited

Definition at line 104 of file Prong.cxx.

References rb::Prong::fDir, and rb::Cluster::fPrecalcTotalGeV.

Referenced by slid::ParticleIDAlg::DedxInverseLongLL(), trk::WindowTrackingAlg::DetermineInitialDirection(), rb::Prong::Dir(), bpfit::BreakPoint::FitTracks(), fuzz::ViewMatchAlg::Matching(), nerd::ViewMatchAlg::Matching(), slid::Recluster::produce(), cheat::MCCheater::produce(), rb::Prong::Prong(), jmshower::RecoJMShower::RecoShowers(), and trk::KalmanTrackMerge::ViewMergeTracks().

105  {
106  fPrecalcTotalGeV = -1; // Invalidate any cached value
107 
108  // I've removed this assert to allow for 2D prongs to set a 3D start
109  // direction if they so choose.
110  // assert(fView == geo::kXorY);
111 
112  fDir = dir.Unit(); // Ensure normalized
113  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
TVector3 fDir
Direction at starting point.
Definition: Prong.h:112
TDirectory * dir
Definition: macro.C:5
void rb::Prong::SetDir ( double  dv,
double  dz 
)
virtualinherited
Parameters
dvComponent of prong direction in View coordinate
dzz-component of prong direction

Definition at line 117 of file Prong.cxx.

References ana::assert(), rb::Prong::fDir, rb::Cluster::fPrecalcTotalGeV, rb::Cluster::fView, geo::kX, and geo::kY.

118  {
119  fPrecalcTotalGeV = -1; // Invalidate any cached value
120 
121  assert(fView == geo::kX || fView == geo::kY);
122 
123  if(fView == geo::kX){
124  fDir = TVector3(dv, 0, dz);
125  }
126  else{
127  fDir = TVector3(0, dv, dz);
128  }
129 
130  fDir = fDir.Unit(); // Ensure normalized
131  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
TVector3 fDir
Direction at starting point.
Definition: Prong.h:112
Vertical planes which measure X.
Definition: PlaneGeo.h:28
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
double dz[NP][NC]
geo::View_t fView
view this cluster is in
Definition: Cluster.h:316
assert(nhit_max >=nhit_nbins)
void rb::Cluster::SetID ( int  id)
inlineinherited
void rb::Cluster::SetNoise ( bool  noise)
inlineinherited

Declare the cluster to consist of noise hits or not.

Definition at line 161 of file Cluster.h.

References rb::Cluster::fNoiseCluster.

Referenced by rb::Cluster::Exclude(), slicer::Slicer4D::produce(), airshower::AirSlicer::produce(), jmshower::JMClusterMerge::produce(), tdslicer::TDSlicer::produce(), and slicer::Slicer::WindowSlice().

161 {fNoiseCluster = noise;}
bool fNoiseCluster
flag for whether this is a noise cluster
Definition: Cluster.h:322
void rb::Track::SetStart ( TVector3  start)
virtual

Reimplemented from rb::Prong.

Definition at line 168 of file Track.cxx.

References rb::Prong::fStart, fTraj, and rb::Prong::SetStart().

Referenced by trk::KalmanTrack::FindTracks(), bpfit::BreakPoint::FitTracks(), trk::KalmanTrackMerge::JoinTracks(), cheat::MCCheater::produce(), Trajectory(), and trk::KalmanTrackMerge::ViewMergeTracks().

169  {
171 
172  if(fTraj.empty()) fTraj.resize(1);
173  fTraj[0] = fStart;
174  }
virtual void SetStart(TVector3 start)
Definition: Prong.cxx:75
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
std::vector< TVector3 > fTraj
Definition: Track.h:160
void rb::Track::SetStart ( double  v0,
double  z0 
)
virtual

Reimplemented from rb::Prong.

Definition at line 177 of file Track.cxx.

References rb::Prong::fStart, fTraj, and rb::Prong::SetStart().

178  {
179  Prong::SetStart(v0, z0);
180 
181  if(fTraj.empty()) fTraj.resize(1);
182  fTraj[0] = fStart;
183  }
virtual void SetStart(TVector3 start)
Definition: Prong.cxx:75
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
std::vector< TVector3 > fTraj
Definition: Track.h:160
void rb::Cluster::SetWeight ( unsigned int  globalIdx,
double  weight 
)
inherited

Set weight of the cell at this index.

Definition at line 327 of file Cluster.cxx.

References rb::Cluster::fPrecalcTotalGeV, geo::kX, geo::kY, and rb::Cluster::NXCell().

Referenced by rb::Cluster::IsNoise(), rb::Shower::Shower(), and Track().

328  {
329  fPrecalcTotalGeV = -1; // Invalidate any cached value
330 
331  if(globalIdx < NXCell())
332  SetWeight(geo::kX, globalIdx, weight);
333  else
334  SetWeight(geo::kY, globalIdx-NXCell(), weight);
335  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
const Var weight
Vertical planes which measure X.
Definition: PlaneGeo.h:28
void SetWeight(unsigned int globalIdx, double weight)
Set weight of the cell at this index.
Definition: Cluster.cxx:327
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
void rb::Cluster::SetWeight ( geo::View_t  view,
unsigned int  viewIdx,
double  weight 
)
inherited

Set weight of the cell at this index in this view.

Definition at line 338 of file Cluster.cxx.

References ana::assert(), rb::Cluster::EnsureWeightAlloc(), rb::Cluster::fPrecalcTotalGeV, rb::Cluster::fXCell, rb::Cluster::fXWeights, rb::Cluster::fYCell, rb::Cluster::fYWeights, geo::kX, art::PtrVector< T >::size(), and ana::weight.

340  {
341  fPrecalcTotalGeV = -1; // Invalidate any cached value
342 
343  assert(weight >= 0 && weight <= 1);
344 
345  // Are we optimizing (omitting) the weights storage?
346  const bool optWeights = (weight == 1 && fXWeights.empty() && fYWeights.empty());
347  if(!optWeights) EnsureWeightAlloc();
348 
349  if(view == geo::kX){
350  assert(viewIdx < fXCell.size());
351  if(!optWeights) fXWeights[viewIdx] = weight;
352  }
353  else{
354  assert(viewIdx < fYCell.size());
355  if(!optWeights) fYWeights[viewIdx] = weight;
356  }
357  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
const Var weight
Vertical planes which measure X.
Definition: PlaneGeo.h:28
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
size_type size() const
Definition: PtrVector.h:308
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
assert(nhit_max >=nhit_nbins)
void EnsureWeightAlloc()
Helper. Resizes weights vectors to match cell vectors.
Definition: Cluster.cxx:712
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
void rb::Cluster::StandardSort ( )
inherited

Put the cells in the cluster into a standard order.

Helps ensure that two clusters composed of the same cell hits present in exactly the same way.

Definition at line 731 of file Cluster.cxx.

References art::PtrVector< T >::begin(), om::cerr, art::PtrVector< T >::end(), allTimeWatchdog::endl, rb::Cluster::fXCell, rb::Cluster::fXWeights, rb::Cluster::fYCell, rb::Cluster::fYWeights, and rb::standard_compare().

Referenced by rb::Cluster::ExtentTNS().

732  {
733  //
734  // Unweighted clusters are an easy sorting job
735  //
736  if (fXWeights.size()==0 && fYWeights.size()==0) {
737  sort(fXCell.begin(), fXCell.end(), standard_compare);
738  sort(fYCell.begin(), fYCell.end(), standard_compare);
739  return;
740  }
741  //
742  // \todo Sorting weighted hits requires more complicated code
743  //
744  std::cerr << __FILE__ << ":" << __LINE__
745  << " Sort for weighted hits not implemented"
746  << std::endl;
747  abort();
748  }
iterator begin()
Definition: PtrVector.h:223
OStream cerr
Definition: OStream.cxx:7
art::PtrVector< rb::CellHit > fYCell
collection of y-view cells in cluster
Definition: Cluster.h:318
bool standard_compare(const art::Ptr< rb::CellHit > &a, const art::Ptr< rb::CellHit > &b)
Definition: Cluster.cxx:719
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
iterator end()
Definition: PtrVector.h:237
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
virtual TVector3 rb::Prong::Start ( ) const
inlinevirtualinherited

Definition at line 73 of file Prong.h.

References rb::Prong::fStart.

Referenced by chaninfo::CosmicEff::analyze(), comi::CosmicMetrics::analyze(), align::AlignInspect::analyze(), align::Alignment::analyze(), murem::MuonRemoveAna::analyze(), align::SplitTracks::analyze(), calib::HitEfficiency::analyze(), tbem::TBRecoAna::analyze(), trk::KalmanTrackAna::analyze(), air::AirKalmanAna::analyze(), calib::CalibAna::analyze(), moonshadowana::MoonShadowAna::analyze(), upmuana::UpMuAnalysis::analyze(), red::EWCosmics::analyze(), slid::ParticleIDAlg::CalcAsymIneria(), slid::ParticleIDAlg::CalcDetectorXYRegionIndex(), trk::KalmanTrackMerge::CalcMatchScore(), slid::ParticleIDAlg::CalcTrkHitPath(), trk::KalmanTrackMerge::CanJoinTracks(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), upmuana::UpMuAnalysis::containmentType(), upmuana::UpMuRecoAna::containmentType(), dif::DiFShowerFinder::distancefromtrack(), slid::DeconvolveAlg::DistanceToCore(), vf::DOCAInfo::DOCAInfo(), jmshower::RecoJMShower::Energy(), dt::ViewMerger::FakeThirdDimension(), caf::FillDiFShowerVars(), calib::CosmicTrends::FillHistograms(), caf::FillNumuInfo(), caf::FillProngVars(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillShowerVars(), trk::CosmicTrackAna::FillTrueInfo(), comi::NumiFiltering::filter(), trk::KalmanTrack::FindTracks(), jmshower::RecoJMShower::Gap(), numusand::NumuSandFxs::getActivity(), xsrec::MakeXSecCCPi0Inc::GetBPI(), cosrej::CosRejFxs::getCVVars(), jmshower::RecoJMShower::GetDedxInvLongLL(), jmshower::RecoJMShower::GetDedxLongLL(), jmshower::RecoJMShower::GetDedxTransLL(), cosrej::CosRejFxs::getFits(), slid::ParticleIDAlg::GetGapVertexToShowerStart(), nuesand::FillNueSandbox::GetMincell(), ndreco::NDRecoFxs::getProngActivity(), ndreco::NDRecoFxs::getProngDedx(), ndreco::NDRecoFxs::getProngProximity(), jmshower::RecoJMShower::GetShwStop(), air::AirKalmanAna::GetThetaXYZ(), ndreco::NDRecoFxs::getTrackProximity(), sn::TrackActivityRemover::GetTrackType(), sn::SNMichelAnalyzer::GetTrackType(), jmshower::JMShower::GetTransHits(), jmshower::RecoJMShower::GetTrkHitPath(), jmshower::RecoJMShower::GetTrkHitPos(), jmshower::RecoJMShower::GetTrkPlaneCell(), jmshower::RecoJMShower::GetTrkPlaneDistToEdge(), jmshower::RecoJMShower::GetTrkPlanePos(), trk::CosmicTrackSelection::GoodReco(), LSTME::BasicProngVars::initBasicVars(), trk::CosmicTrackSelection::IsCalibTrack(), calib::EnergyStandardCandles::IsContained(), remid::ReMIdValidate::IsContained(), calib::RockMuonStopperSelection::IsContainedStopper(), calib::StopperSelection::IsContainedStopper(), calib::PCHitsList::IsGoodTrack(), calib::ThroughgoingSelection::IsUncontained(), filter::Filter::isVertexInFiducial(), trk::KalmanTrackMerge::JoinTracks(), trk::WindowTrackingAlg::Make3DTrack(), fuzz::ViewMatchAlg::MakeTestProng(), nerd::ViewMatchAlg::MakeTestProng(), dt::ViewMerger::MissingChargeByExtension(), murem::MuonRemove::MuonInfo(), cosrej::MakeNueCosRej::MuonParentByDist(), cosrej::MakeNueCosRej::MuonParentByTime(), rb::Prong::operator<(), air::AirKalmanAna::OppSignTrkCount(), skim::ParametersNumu::ParametersNumu(), slid::ParticleIDAlg::PlaneHitCell(), slid::ParticleIDAlg::PlaneHitXYZ(), slid::ParticleIDAlg::PlaneRadius(), vf::VertexFinder::produce(), slid::Recluster::produce(), presel::CosmicVeto::produce(), calib::FiberCalibration::produce(), cosrej::CosRej::produce(), calib::TimingCalibration::produce(), jmshower::JMClusterMerge::produce(), remid::RecoMuon::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), slid::ParticleIDAlg::Radius(), jmshower::RecoJMShower::Radius(), jmshower::RecoJMShower::RecoShowers(), dt::ViewMerger::ScoreForJoinPlusExtension(), trk::WindowTrackingAlg::SetTrackEndPoints(), slid::NuEEnergyAlg::ShowerEnergy(), Track(), bsf::BremShowerFilter::trackStartContained(), dif::DiFShowerFinder::trackStartContained(), air::AirKalmanAna::Unitize(), progbar.ProgressBar::Update(), slid::NuEEnergyAlg::VertexEnergy(), moonshadowana::MoonShadowAna::WriteTrackInfo(), and moonshadowana::MoonShadowAnaHough::WriteTrackInfo().

73 {return fStart;}
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
TVector3 rb::Track::Stop ( ) const

Position of the final trajectory point.

Definition at line 186 of file Track.cxx.

References fTraj.

Referenced by chaninfo::CosmicEff::analyze(), comi::CosmicMetrics::analyze(), align::AlignInspect::analyze(), align::Alignment::analyze(), align::SplitTracks::analyze(), calib::HitEfficiency::analyze(), tbem::TBRecoAna::analyze(), trk::KalmanTrackAna::analyze(), bpfit::BreakPointProtonAna::analyze(), air::AirKalmanAna::analyze(), calib::CalibAna::analyze(), moonshadowana::MoonShadowAna::analyze(), upmuana::UpMuAnalysis::analyze(), sn::SNMichelAnalyzer::analyze(), red::EWCosmics::analyze(), trk::KalmanTrackMerge::CalcMatchScore(), trk::KalmanTrackMerge::CanJoinTracks(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxFD::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), upmuana::UpMuAnalysis::containmentType(), upmuana::UpMuRecoAna::containmentType(), me::TrkME::DistToTrk(), calib::CosmicTrends::FillHistograms(), caf::FillNumuInfo(), trk::CosmicTrackAna::FillRecoInfo(), caf::FillTrackVars(), trk::CosmicTrackAna::FillTrueInfo(), comi::NumiFiltering::filter(), trk::KalmanTrack::FindTracks(), calib::StopperThreshold::FindTrajectoryPoints(), numusand::NumuSandFxs::getActivity(), cosrej::CosRejFxs::getCVVars(), cosrej::CosRejFxs::getFits(), nuesand::FillNueSandbox::GetMincell(), air::AirKalmanAna::GetThetaXYZ(), ndreco::NDRecoFxs::getTrackActivity(), ndreco::NDRecoFxs::getTrackProximity(), sn::TrackActivityRemover::GetTrackType(), sn::SNMichelAnalyzer::GetTrackType(), trk::CosmicTrackSelection::GoodReco(), trk::CosmicTrackSelection::IsCalibTrack(), calib::EnergyStandardCandles::IsContained(), remid::ReMIdValidate::IsContained(), calib::RockMuonStopperSelection::IsContainedStopper(), calib::StopperSelection::IsContainedStopper(), calib::PCHitsList::IsGoodTrack(), remid::RecoMuon::IsTrackContained(), calib::ThroughgoingSelection::IsUncontained(), filter::Filter::isVertexInFiducial(), trk::KalmanTrackMerge::JoinTracks(), trk::WindowTrackingAlg::Make3DTrack(), dt::ViewMerger::MissingChargeByExtension(), murem::MuonRemove::MuonInfo(), cosrej::MakeNueCosRej::MuonParentByDist(), cosrej::MakeNueCosRej::MuonParentByTime(), air::AirKalmanAna::OppSignTrkCount(), skim::ParametersNumu::ParametersNumu(), presel::CosmicVeto::produce(), calib::FiberCalibration::produce(), cosrej::CosRej::produce(), calib::TimingCalibration::produce(), jmshower::JMClusterMerge::produce(), remid::RecoMuon::produce(), sn::TrackActivityRemover::remove(), dt::ViewMerger::ScoreForJoinPlusExtension(), trk::WindowTrackingAlg::SetTrackEndPoints(), red::OverburdenCalculator::traceBack(), Trajectory(), air::AirKalmanAna::Unitize(), moonshadowana::MoonShadowAna::WriteTrackInfo(), and moonshadowana::MoonShadowAnaHough::WriteTrackInfo().

187  {
188  return fTraj.back();
189  }
std::vector< TVector3 > fTraj
Definition: Track.h:160
TVector3 rb::Track::StopDir ( ) const
virtual

Get direction at the stop point.

If number of trajectory points is less than 2, then can't figure out directions

Definition at line 193 of file Track.cxx.

References release_diff::diff, NTrajectoryPoints(), and TrajectoryPoint().

Referenced by caf::FillTrackVars(), trk::WindowTrackingAlg::SetTrackEndPoints(), and Trajectory().

194  {
195  const int ntrajectory_points = NTrajectoryPoints();
196 
197  /// If number of trajectory points is less than 2,
198  /// then can't figure out directions
199  if(ntrajectory_points < 2){
200  const TVector3 nullvector3;
201  return nullvector3;
202  }
203 
204  const TVector3 stop_point = TrajectoryPoint(ntrajectory_points - 1);
205  const TVector3 stop_point_m1 = TrajectoryPoint(ntrajectory_points - 2);
206 
207  const TVector3 diff = stop_point - stop_point_m1;
208 
209  return diff.Unit();
210  }
size_t NTrajectoryPoints() const
Definition: Track.h:83
TVector3 TrajectoryPoint(unsigned int i) const
The ith point on the trajectory, a 3-vector in cm.
Definition: Track.cxx:158
double rb::Cluster::TotalADC ( ) const
inherited

Sum of the ADC of all the contained hits.

Definition at line 360 of file Cluster.cxx.

References rawdata::RawDigit::ADC(), rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), runNovaSAM::ret, and rb::Cluster::Weight().

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), sn::SupernovaAna::analyze(), sn::SNSlicerAna::analyze(), tbem::TBRecoAna::analyze(), air::AirKalmanAna::analyze(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), sn::SNSlicer::ClusterIsGood(), mono::HighEnergySliceRemoval::is_high_energy_slice(), rb::Cluster::IsNoise(), rb::operator<<(), air::AirFilter::parallel_muon_slice(), and skim::ParametersNumu::ParametersNumu().

361  {
362  double ret = 0;
363  for(unsigned int i = 0; i < NCell(); ++i)
364  ret += Cell(i)->ADC()*Weight(i);
365  return ret;
366  }
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
int16_t ADC(uint32_t i) const
Definition: RawDigit.cxx:58
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
double rb::Cluster::TotalGeV ( EEnergyCalcScheme  escheme = kRecomputeEnergy) const
inherited

Simple sum of the estimated GeV of all the hits.

WARNING: This is not a sensible energy estimator by itself. If you just want a simple calorimetric estimate look at CalorimetricEnergy. Otherwise, a range of more sophisticated/elaborate estimators are available elsewhere.

Definition at line 378 of file Cluster.cxx.

References allTimeWatchdog::endl, rb::Cluster::fPrecalcTotalGeV, rb::RecoHit::GeV(), MECModelEnuComparisons::i, rb::RecoHit::IsCalibrated(), rb::Cluster::kUsePrecalcEnergy, rb::Cluster::NCell(), rb::Cluster::RecoHit(), runNovaSAM::ret, rb::Cluster::TotalGeVFastClusterOnly(), and rb::Cluster::Weight().

Referenced by calib::TestParticleCorrections::analyze(), sn::SNSlicerAna::analyze(), vf::TrackEva::analyze(), tbem::TBRecoAna::analyze(), bpfit::BPFTmvaTrainer::analyze(), bpf::BPFCVNAna::analyze(), htk::HoughTrack::analyze(), rb::Cluster::CalorimetricEnergy(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), bpf::BPFCVNAna::CompareE(), nnbar::NNbarUtilities::energyBalancingVertex(), numue::NumuEAlg::FDEnergy(), caf::FillNueEnergyVars(), trk::CosmicTrackAna::FillRecoInfo(), fnex::NuEAnalysisSetup::FillRecoVars(), cosrej::CosRejFxs::getActivity(), numusand::NumuSandFxs::getActivityVtx(), ndreco::NDRecoFxs::getProngActivity(), ndreco::NDRecoFxs::getProngDedx(), ndreco::NDRecoFxs::getTrackActivity(), ndreco::NDRecoFxs::getTrackDedx(), mono::MonopoleCluster::is_cosmic_track(), numue::NumuEAlg::NDEnergy(), skim::ParametersNue::ParametersNue(), skim::ParametersNumu::ParametersNumu(), qeef::QeFinder::produce(), numusand::FillSandbox::produce(), slid::SliceLIDBuilder::produce(), cosrej::CosRej::produce(), numue::NumuEnergy::produce(), sn::SupernovaMCCluster::produce(), bpfit::BPFEnergyEstimator::produce(), bpfit::BPFEnergyEstimatorOnly::produce(), cvn::ProngClassify(), and rb::Cluster::SavePrecalcTotalGeV().

379  {
380  if(escheme == kUsePrecalcEnergy){
381  if(fPrecalcTotalGeV >= 0) return fPrecalcTotalGeV;
382 
383  mf::LogWarning("rb::Cluster::TotalGeV()") << "Passed kUsePrecalcEnergy but no energy was cached in the Cluster. Falling back to recomputing." << std::endl;
384  }
385 
386  // Optimization that's only safe for literal Clusters
387  if(typeid(*this) == typeid(rb::Cluster)) return TotalGeVFastClusterOnly();
388 
389  // For derived classes, fall through to the generic implementation
390 
391  double ret = 0;
392  for(unsigned int i = 0; i < NCell(); ++i){
393  const rb::RecoHit rhit = RecoHit(i);
394  if(rhit.IsCalibrated()) ret += rhit.GeV()*Weight(i);
395  }
396  return ret;
397  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
A collection of associated CellHits.
Definition: Cluster.h:47
double TotalGeVFastClusterOnly() const
Optimized form of TotalGeV, only valid for actual Clusters.
Definition: Cluster.cxx:400
Calibrated quantities relying on position in the orthogonal view. To generate a rb::CellHit from a rb...
Definition: RecoHit.h:19
Use a value computed by a previous call to SavePrecalcTotalGeV.
Definition: Cluster.h:179
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
rb::RecoHit RecoHit(const art::Ptr< rb::CellHit > &chit) const
Return calibrated hit based on assumed W coordinate.
Definition: Cluster.cxx:259
bool IsCalibrated() const
You MUST check here before accessing PECorr, MIP or GeV.
Definition: RecoHit.cxx:35
float GeV() const
Definition: RecoHit.cxx:69
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
double rb::Track::TotalLength ( ) const
virtual

Length (cm) of all the track segments.

ie This measure follows any curvature in the track

Reimplemented from rb::Prong.

Definition at line 213 of file Track.cxx.

References dist, fTraj, Mag(), and getGoodRuns4SAM::n.

Referenced by fnex::NuMuAnalysisSetup::Analysis2018Energy(), murem::MuonRemoveAna::analyze(), vf::TrackEva::analyze(), trk::KalmanTrackAna::analyze(), bpf::BPFCVNAna::analyze(), bpfit::BreakPointProtonAna::analyze(), air::AirKalmanAna::analyze(), calib::CalibAna::analyze(), moonshadowana::MoonShadowAna::analyze(), upmuana::UpMuRecoAna::analyze(), upmuana::UpMuAnalysis::analyze(), trk::KalmanTrackAna::CheckRecoTracks(), dt::CompareByLength(), dt::CompareByLengthVM(), murem::TrackCleanUpAlg::DeDxInPlane(), trk::CosmicTrackAna::FillRecoInfo(), numusand::NumuSandFxs::getAveTrackdEdx(), mono::MonopoleCluster::is_cosmic_track(), calib::RockMuonStopperSelection::IsContainedStopper(), novaddt::HorizontalMuonAna::IsHorzMuonTrack(), nuesand::FillNueSandbox::produce(), trackinfo::TrackInfo::produce(), numusand::FillSandbox::produce(), cosrej::CosRej::produce(), rvp::RecVarPID::produce(), remid::RecoMuon::produce(), trk::CosmicTrackUtilities::RangeMomentum(), fnex::NuMuAnalysisSetup::SecondAnalysisEnergy(), caf::CAFMaker::sortRBTrackLength(), fnex::NuMuAnalysisSetup::ThirdAnalysisEnergy(), and Trajectory().

214  {
215  if(fTraj.size() == 1) return 0;
216 
217  // We take the sum of the straight lines between the control points
218  double dist = 0;
219 
220  const int N = fTraj.size();
221  for(int n = 0; n < N-1; ++n){
222  dist += (fTraj[n+1]-fTraj[n]).Mag();
223  }
224 
225  return dist;
226  }
double dist
Definition: runWimpSim.h:113
float Mag() const
std::vector< TVector3 > fTraj
Definition: Track.h:160
double rb::Cluster::TotalPE ( ) const
inherited

Sum of the PE value of all the contained hits.

Definition at line 369 of file Cluster.cxx.

References rb::Cluster::Cell(), MECModelEnuComparisons::i, rb::Cluster::NCell(), rb::CellHit::PE(), runNovaSAM::ret, and rb::Cluster::Weight().

Referenced by rb::Cluster::IsNoise().

370  {
371  double ret = 0;
372  for(unsigned int i = 0; i < NCell(); ++i)
373  ret += Cell(i)->PE()*Weight(i);
374  return ret;
375  }
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
float PE() const
Definition: CellHit.h:42
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
double rb::Cluster::TotalWeight ( ) const
inherited

Sum of all the weights. The effective number of hits.

Definition at line 430 of file Cluster.cxx.

References rb::Cluster::NCell(), runNovaSAM::ret, and rb::Cluster::Weight().

431  {
432  double ret = 0;
433  for(unsigned int cellIdx = 0; cellIdx < NCell(); ++cellIdx)
434  ret += Weight(cellIdx);
435  return ret;
436  }
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
std::vector<TVector3> const& rb::Track::Trajectory ( ) const
inline
TVector3 rb::Track::TrajectoryPoint ( unsigned int  i) const

The ith point on the trajectory, a 3-vector in cm.

Definition at line 158 of file Track.cxx.

References fTraj, and MECModelEnuComparisons::i.

Referenced by trk::KalmanTrackAna::analyze(), trk::KalmanTrackMerge::CalcMatchScore(), trk::KalmanTrackMerge::CanJoinTracks(), trk::WindowTrackingAlg::CheckTrackDirectionInY(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxFD::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), trk::WindowTrackingAlg::DetermineInitialDirection(), evd::RecoBaseDrawer::DrawTrack2D(), dt::ViewMerger::FakeThirdDimension(), calib::StopperThreshold::FillHist(), calib::StopperThreshold::FillTree(), trk::KalmanTrack::FindTracks(), calib::StopperThreshold::FindTrajectoryPoints(), cosrej::CosRejFxs::FScatterEstim(), numusand::NumuSandFxs::getScatt(), cosrej::CosRejFxs::getScatt(), ndreco::NDRecoFxs::getTrackDedx(), ndreco::NDRecoFxs::getTrackScatt(), trk::CosmicTrackSelection::GoodSteps(), calib::PCHitsList::GoodSteps(), remid::RecoMuon::IsTrackContained(), trk::KalmanTrackMerge::JoinTracks(), dt::ViewMerger::JoinTracks(), numue::NumuEAlg::NDTrackLength(), cosrej::CosRej::produce(), remid::RecoMuon::produce(), trk::KalmanTrackMerge::ShiftInterpolationPoints(), StopDir(), bsf::BremShowerFilter::trackEndContained(), dif::DiFShowerFinder::trackEndContained(), Trajectory(), and trk::KalmanTrackMerge::ViewMergeTracks().

159  {
160  if(i > fTraj.size())
161  throw cet::exception("Track") << "attempt to get trajectory point "
162  << i << " is out of range: " << fTraj.size();
163 
164  return fTraj[i];
165  }
::xsd::cxx::tree::exception< char > exception
Definition: Database.h:225
std::vector< TVector3 > fTraj
Definition: Track.h:160
virtual geo::View_t rb::Cluster::View ( ) const
inlinevirtualinherited
double rb::Track::W ( const rb::CellHit chit) const
virtual

Estimate the unmeasured coordinate of chit.

For Track, this is calculated by taking the position of the straight line defined by the two neighbouring trajectory points at the z-coordinate of the cell. In the case of a hit beyond the end of the track, the line defined by the two hits at the end is extrapolated.

Parameters
chitAny CellHit, not necessarily owned by this container
Returns
Estimated unmeasured coordinate of this hit (cm) assuming it to be associated with this reconstructed object.
Todo:
CJB: do we want to allow the case with only one hit?

Reimplemented from rb::Prong.

Definition at line 281 of file Track.cxx.

References rb::CellHit::Cell(), rb::Cluster::Cell(), geo::GeometryBase::DetId(), fTraj, geom(), InterpolateXY(), novadaq::cnv::kTESTBEAM, geo::kX, rb::CellHit::Plane(), geo::GeometryBase::Plane(), rb::CellHit::View(), and rb::Prong::W().

Referenced by calib::PCHitsList::CellHitToPCHit(), bpfit::dEdxCalculator::computeDEDX(), evd::RecoBaseDrawer::DrawTrack2D(), calib::PCHitsList::ProcessTrack(), calib::PCHitsList::ProcessTrackTrajectory(), and Trajectory().

282  {
283  if(fTraj.empty()) return 0;
284  /// \todo CJB: do we want to allow the case with only one hit?
285  if(fTraj.size() == 1) return Prong::W(chit);
286 
288  double xyz[3];
289  geom->Plane(chit->Plane())->Cell(chit->Cell())->GetCenter(xyz);
290 
291  InterpolateXY(xyz[2], xyz[0], xyz[1]);
292 
293  if(chit->View() == geo::kX) return xyz[1];
294  if(geom->DetId() == novadaq::cnv::kTESTBEAM) return -xyz[0]; // TB horizontal modules (Y-view) have readout on opposite end as ND/FD
295  return xyz[0];
296  /*
297  // Find the points before and after. This part does still assume that
298  // searching along Z is the best way to find such points.
299  TVector3 prev, next;
300  FindNeighbouringPoints(xyz[2], prev, next);
301 
302  // Solve the problem of the closest approach of the trajectory to the line
303  // made by the cell by projecting down to a 2D trajectory and 2D point for
304  // the cell.
305  TVector3 start2D = prev;
306  TVector3 dir2D = next-prev;
307  TVector3 pt2D(xyz);
308  const int otherView = 1-chit->View();
309  start2D[otherView] = dir2D[otherView] = pt2D[otherView] = 0;
310 
311  // Actually find the closest point
312  TVector3 closest;
313  geo::ClosestApproach(pt2D, start2D, dir2D, closest);
314 
315  // Need to solve for the W position of the line, the exact part that we
316  // projected away above. So just figure out Z and evaluate the original
317  // curve there.
318  const double dt = (closest.Z()-prev.Z())/(next-prev).Z();
319 
320  return ((1-dt)*prev+dt*next)[otherView];
321  */
322  }
virtual double W(const rb::CellHit *chit) const
Estimate the unmeasured coordinate of chit.
Definition: Prong.cxx:135
unsigned short Plane() const
Definition: CellHit.h:39
geo::View_t View() const
Definition: CellHit.h:41
Vertical planes which measure X.
Definition: PlaneGeo.h:28
const PlaneGeo * Plane(unsigned int i) const
unsigned short Cell() const
Definition: CellHit.h:40
novadaq::cnv::DetId DetId() const
Prefer ds::DetectorService::DetId() instead.
Definition: GeometryBase.h:243
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
void geom(int which=0)
Definition: geom.C:163
std::vector< TVector3 > fTraj
Definition: Track.h:160
virtual void InterpolateXY(double z, double &x, double &y) const
Definition: Track.cxx:325
double rb::Cluster::Weight ( unsigned int  globalIdx) const
inherited

Weight assigned to the cell.

Definition at line 209 of file Cluster.cxx.

References rb::Cluster::fXWeights, rb::Cluster::fYWeights, geo::kX, geo::kY, and rb::Cluster::NXCell().

Referenced by fuzz::ViewMatchAlg::CalcEnergyProfile(), nerd::ViewMatchAlg::CalcEnergyProfile(), slid::NuEEnergyAlg::CellEnergy(), skim::SkimmingUtils::CopySlice(), rb::Cluster::Exclude(), trk::CosmicTrackAna::FillRecoInfo(), fuzz::FuzzyKValidate::GeVCalc(), fuzz::ViewMatchAlg::MakeTestProng(), nerd::ViewMatchAlg::MakeTestProng(), rb::Cluster::MeanTNS(), rb::Cluster::MinMaxMeanXYZ(), nussand::FillNusSandbox::produce(), rb::Cluster::TotalADC(), rb::Cluster::TotalGeV(), rb::Cluster::TotalGeVFastClusterOnly(), rb::Cluster::TotalPE(), rb::Cluster::TotalWeight(), murem::TrackCleanUpAlg::TrackEinMIP(), rb::Cluster::WeightedHits(), and rb::Cluster::YCells().

210  {
211  if(fXWeights.empty() && fYWeights.empty()) return 1;
212 
213  if(globalIdx < NXCell()) return Weight(geo::kX, globalIdx);
214  return Weight(geo::kY, globalIdx-NXCell());
215  }
Vertical planes which measure X.
Definition: PlaneGeo.h:28
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
unsigned int NXCell() const
Number of cells in the x-view.
Definition: Cluster.h:106
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
double rb::Cluster::Weight ( geo::View_t  view,
unsigned int  viewIdx 
) const
inherited

Weight assigned to the cell.

Definition at line 218 of file Cluster.cxx.

References ana::assert(), rb::Cluster::fXWeights, rb::Cluster::fYWeights, and geo::kX.

219  {
220  if(fXWeights.empty() && fYWeights.empty()) return 1;
221 
222  if(view == geo::kX){
223  assert(viewIdx < fXWeights.size());
224  return fXWeights[viewIdx];
225  }
226  else{
227  assert(viewIdx < fYWeights.size());
228  return fYWeights[viewIdx];
229  }
230  }
Vertical planes which measure X.
Definition: PlaneGeo.h:28
std::vector< double > fXWeights
Weights, matching cell indexing.
Definition: Cluster.h:319
assert(nhit_max >=nhit_nbins)
std::vector< double > fYWeights
May be empty, means all weights are 1.
Definition: Cluster.h:320
std::vector< rb::WeightedHit > rb::Cluster::WeightedHits ( ) const
inherited

Get all hits from both views, with weights attached.

Definition at line 200 of file Cluster.cxx.

References rb::Cluster::Cell(), rb::Cluster::NCell(), and rb::Cluster::Weight().

Referenced by rb::Cluster::YCells().

201  {
202  std::vector<rb::WeightedHit> all;
203  for(unsigned int cellIdx = 0; cellIdx < NCell(); ++cellIdx)
204  all.push_back(rb::WeightedHit(Cell(cellIdx), Weight(cellIdx)));
205  return all;
206  }
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
Simple hit+weight pair, returned from rb::Cluster::WeightedHits.
Definition: WeightedHit.h:18
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
art::Ptr< rb::CellHit > rb::Cluster::XCell ( unsigned int  xIdx) const
inherited
const art::PtrVector<rb::CellHit>& rb::Cluster::XCells ( ) const
inlineinherited

Get all cells from the x-view.

Definition at line 124 of file Cluster.h.

References rb::Cluster::fXCell.

Referenced by upmuana::UpMuAnalysis::analyze(), caf::FillDiFShowerVars(), caf::FillDiFVars(), caf::FillProngVars(), caf::FillShowerVars(), mono::MonopoleCluster::find_isolated_hits(), zcl::FMMTracker::produce(), cvn::ProngClassify(), and mono::Track3D::Track3D().

124 { return fXCell; }
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
art::Ptr< rb::CellHit > rb::Cluster::YCell ( unsigned int  yIdx) const
inherited
const art::PtrVector<rb::CellHit>& rb::Cluster::YCells ( ) const
inlineinherited
rb::Track rb::Track::ZipWith ( const rb::Track trk) const

Combine with a 2D track from the other view to make a 3D track.

Definition at line 442 of file Track.cxx.

References a, rb::Cluster::AllCells(), b, fTraj, InterpolateXY(), rb::Cluster::Is2D(), geo::kX, geo::kY, NTrajectoryPoints(), gen_flatrecord::pt, runNovaSAM::ret, std::swap(), rb::Cluster::View(), submit_syst::x, and submit_syst::y.

Referenced by trk::WindowTrackingAlg::Make3DTrack(), Trajectory(), and dt::ViewMerger::ZipTracks().

443  {
444  if(!Is2D() || !trk.Is2D())
445  throw cet::exception("Track") << "attempting to zip a tracks with unknown dimensions; this track: "
446  << this->View() << " zipping track: " << trk.View();
447 
448  if(this->NTrajectoryPoints() < 2 || trk.NTrajectoryPoints() < 2)
449  throw cet::exception("Track") << "too few points to attempt ZipWith: "
450  << this->NTrajectoryPoints() << " "
451  << trk.NTrajectoryPoints();
452 
453  const rb::Track* xtrk = this;
454  const rb::Track* ytrk = &trk;
455 
456  if(this->View() != geo::kX) std::swap(xtrk, ytrk);
457 
458  if(xtrk->View() != geo::kX || ytrk->View() != geo::kY)
459  throw cet::exception("Track") << "views of 2D tracks are wrong";
460 
461 
462  std::vector<TVector3> zipTraj;
463  zipTraj.reserve(xtrk->NTrajectoryPoints() + ytrk->NTrajectoryPoints());
464  // Give each point a 3rd coordinate interpolated from the other track
465  for(const TVector3& pt: xtrk->fTraj){
466  double junk, y;
467  ytrk->InterpolateXY(pt.Z(), junk, y);
468  zipTraj.emplace_back(pt.X(), y, pt.Z());
469  }
470  for(const TVector3& pt: ytrk->fTraj){
471  double junk, x;
472  xtrk->InterpolateXY(pt.Z(), x, junk);
473  zipTraj.emplace_back(x, pt.Y(), pt.Z());
474  }
475 
476  // Sort output points upstream to downstream. User could reverse result if
477  // they wanted.
478  std::sort(zipTraj.begin(), zipTraj.end(),
479  [](const TVector3& a, const TVector3& b)
480  {
481  return a.Z() < b.Z();
482  });
483 
484  Track ret(xtrk->AllCells(), zipTraj[0], zipTraj[1]-zipTraj[0]);
485  ret.Add(ytrk->AllCells());
486 
487  // First point is already stored as the vertex
488  for(size_t p = 1; p < zipTraj.size(); ++p){
489  ret.AppendTrajectoryPoint(zipTraj[p]);
490  }
491 
492  return ret;
493  }
Track()
Definition: Track.h:27
virtual geo::View_t View() const
kXorY for 3D clusters.
Definition: Cluster.h:99
size_t NTrajectoryPoints() const
Definition: Track.h:83
bool Is2D() const
Definition: Cluster.h:96
const char * p
Definition: xmltok.h:285
Vertical planes which measure X.
Definition: PlaneGeo.h:28
::xsd::cxx::tree::exception< char > exception
Definition: Database.h:225
A rb::Prong with full reconstructed trajectory.
Definition: Track.h:20
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
art::PtrVector< rb::CellHit > AllCells() const
Get all cells from both views.
Definition: Cluster.cxx:180
void swap(art::HLTGlobalStatus &lhs, art::HLTGlobalStatus &rhs)
const double a
const hit & b
Definition: hits.cxx:21
std::vector< TVector3 > fTraj
Definition: Track.h:160
virtual void InterpolateXY(double z, double &x, double &y) const
Definition: Track.cxx:325

Member Data Documentation

TVector3 rb::Prong::fDir
protectedinherited

Direction at starting point.

Definition at line 112 of file Prong.h.

Referenced by rb::Prong::Dir(), rb::Prong::DistanceFromStart(), rb::Prong::SetDir(), rb::Shower::Stop(), rb::Prong::TotalLength(), and rb::Prong::W().

int rb::Cluster::fID
protectedinherited

ID for cluster.

Definition at line 321 of file Cluster.h.

Referenced by rb::Cluster::Exclude(), rb::Cluster::ID(), and rb::Cluster::SetID().

bool rb::Cluster::fNoiseCluster
protectedinherited

flag for whether this is a noise cluster

Definition at line 322 of file Cluster.h.

Referenced by rb::Cluster::Exclude(), rb::Cluster::IsNoise(), and rb::Cluster::SetNoise().

double rb::Cluster::fPrecalcTotalGeV
protectedinherited
TVector3 rb::Prong::fStart
protectedinherited
std::vector<TVector3> rb::Track::fTraj
protected
geo::View_t rb::Cluster::fView
protectedinherited
art::PtrVector<rb::CellHit> rb::Cluster::fXCell
protectedinherited
std::vector<double> rb::Cluster::fXWeights
protectedinherited
art::PtrVector<rb::CellHit> rb::Cluster::fYCell
protectedinherited
std::vector<double> rb::Cluster::fYWeights
protectedinherited

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