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

A Cluster with defined start position and direction. More...

#include "/cvmfs/nova-development.opensciencegrid.org/novasoft/releases/N20-09-26/RecoBase/Prong.h"

Inheritance diagram for rb::Prong:
rb::Cluster rb::Shower rb::Track rb::WeightedProng jmshower::JMShower cheat::SimTrack

Public Types

enum  ESaveGeVMode { kInitializeTotalGeV = 0, kResetTotalGeV = 1 }
 

Public Member Functions

 Prong ()
 
virtual ~Prong ()
 
virtual bool Is3D () const
 
virtual TVector3 Start () const
 
virtual TVector3 Dir () const
 Unit vector describing prong direction. More...
 
virtual void SetStart (TVector3 start)
 
virtual void SetStart (double v0, double z0)
 
virtual void SetDir (TVector3 dir)
 
virtual void SetDir (double dv, double dz)
 
virtual double W (const rb::CellHit *chit) const
 Estimate the unmeasured coordinate of chit. More...
 
virtual double TotalLength () const
 Distance along prong to reach last cell hit. More...
 
virtual double DistanceFromStart (double z) const
 
bool operator< (const Prong &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...
 
bool operator< (const Cluster &other) const
 
3D prong constructors
 Prong (const art::PtrVector< rb::CellHit > &cells, TVector3 start, TVector3 dir, int id=0)
 
 Prong (const rb::Cluster &clust, TVector3 start, TVector3 dir, int id=0)
 
2D prong constructors
 Prong (const art::PtrVector< rb::CellHit > &cells, geo::View_t view, double v0, double z0, double dv, double dz, int id=0)
 
 Prong (const std::vector< art::Ptr< rb::CellHit > > &cells, geo::View_t view, double v0, double z0, double dv, double dz, int id=0)
 
 Prong (const rb::Cluster &clust, double v0, double z0, double dv, double dz, int id=0)
 
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

Internal helpers
void EnsureWeightAlloc ()
 Helper. Resizes weights vectors to match cell vectors. More...
 

Protected Attributes

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 Cluster with defined start position and direction.

Definition at line 19 of file Prong.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::Prong::Prong ( )
inline

Definition at line 22 of file Prong.h.

References dir, dz, febshutoff_auto::start, POTSpillRate::view, and ~Prong().

22 {}
rb::Prong::Prong ( const art::PtrVector< rb::CellHit > &  cells,
TVector3  start,
TVector3  dir,
int  id = 0 
)
Parameters
cellsCellHits associated with this prong
start3D position of the prong vertex
dirReconstructed prong direction. Automatically normalized

Definition at line 21 of file Prong.cxx.

References SetDir(), and SetStart().

23  : rb::Cluster(cells, id)
24  {
25  SetStart(start);
26  SetDir(dir);
27  }
A collection of associated CellHits.
Definition: Cluster.h:47
virtual void SetStart(TVector3 start)
Definition: Prong.cxx:75
virtual void SetDir(TVector3 dir)
Definition: Prong.cxx:104
TDirectory * dir
Definition: macro.C:5
rb::Prong::Prong ( const rb::Cluster clust,
TVector3  start,
TVector3  dir,
int  id = 0 
)
Parameters
clustCluster holding CellHits associated with this prong
start3D position of the prong vertex
dirReconstructed prong direction. Automatically normalized

Definition at line 29 of file Prong.cxx.

References SetDir(), rb::Cluster::SetID(), and SetStart().

31  : rb::Cluster(clust)
32  {
33  SetID(id);
34  SetStart(start);
35  SetDir(dir);
36  }
A collection of associated CellHits.
Definition: Cluster.h:47
virtual void SetStart(TVector3 start)
Definition: Prong.cxx:75
virtual void SetDir(TVector3 dir)
Definition: Prong.cxx:104
void SetID(int id)
Definition: Cluster.h:74
TDirectory * dir
Definition: macro.C:5
rb::Prong::Prong ( const art::PtrVector< rb::CellHit > &  cells,
geo::View_t  view,
double  v0,
double  z0,
double  dv,
double  dz,
int  id = 0 
)
Parameters
cellsCellHits associated with this prong
viewView this prong is defined in
v0Vertex position in coordinate matching view
z0Vertex z-position
dvComponent of prong direction in view coordinate
dzz-component of prong direction

Definition at line 40 of file Prong.cxx.

References SetDir(), and SetStart().

42  : rb::Cluster(view, cells, id)
43  {
44  SetStart(v0, z0);
45  SetDir(dv, dz);
46  }
A collection of associated CellHits.
Definition: Cluster.h:47
virtual void SetStart(TVector3 start)
Definition: Prong.cxx:75
double dz[NP][NC]
virtual void SetDir(TVector3 dir)
Definition: Prong.cxx:104
rb::Prong::Prong ( const std::vector< art::Ptr< rb::CellHit > > &  cells,
geo::View_t  view,
double  v0,
double  z0,
double  dv,
double  dz,
int  id = 0 
)
Parameters
cellsCellHits associated with this prong
viewView this prong is defined in
v0Vertex position in coordinate matching view
z0Vertex z-position
dvComponent of prong direction in view coordinate
dzz-component of prong direction

Definition at line 50 of file Prong.cxx.

References SetDir(), and SetStart().

52  : rb::Cluster(view, cells, id)
53  {
54  SetStart(v0, z0);
55  SetDir(dv, dz);
56  }
A collection of associated CellHits.
Definition: Cluster.h:47
virtual void SetStart(TVector3 start)
Definition: Prong.cxx:75
double dz[NP][NC]
virtual void SetDir(TVector3 dir)
Definition: Prong.cxx:104
rb::Prong::Prong ( const rb::Cluster clust,
double  v0,
double  z0,
double  dv,
double  dz,
int  id = 0 
)
Parameters
clustCluster holding CellHits associated with this prong
v0Vertex position in coordinate matching Cluster's view
z0Vertex z-position
dvComponent of prong direction in the Cluster's view
dzz-component of prong direction

Definition at line 58 of file Prong.cxx.

References SetDir(), rb::Cluster::SetID(), and SetStart().

60  : rb::Cluster(clust)
61  {
62  SetID(id);
63  SetStart(v0, z0);
64  SetDir(dv, dz);
65  }
A collection of associated CellHits.
Definition: Cluster.h:47
virtual void SetStart(TVector3 start)
Definition: Prong.cxx:75
double dz[NP][NC]
virtual void SetDir(TVector3 dir)
Definition: Prong.cxx:104
void SetID(int id)
Definition: Cluster.h:74
rb::Prong::~Prong ( )
virtual

Definition at line 69 of file Prong.cxx.

Referenced by Prong().

70  {
71  }

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(), zcl::FMMTracker::produce(), sn::SupernovaMCCluster::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(), ndreco::NDReco::produce(), earms::ElasticArmsHS::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 rb::Track::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
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(), tbem::TBRecoAna::analyze(), zcl::FmmTriggerAna::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(), 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(), rb::Track::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(), numusand::FillSandbox::produce(), lem::Preselection::produce(), slid::SliceLIDBuilder::produce(), zcl::SPCluster::produce(), earms::ElasticArmsHS::produce(), lem::MakeLibrary::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(), TotalLength(), rb::Cluster::TotalPE(), trk::CosmicTrackUtilities::TrackResiduals(), trk::KalmanTrackMerge::ViewMergeTracks(), W(), rb::Track::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
virtual TVector3 rb::Prong::Dir ( ) const
inlinevirtual

Unit vector describing prong direction.

For 2D prongs the unmeasured component is zero

Definition at line 77 of file Prong.h.

References DistanceFromStart(), fDir, operator<(), fhicl::other, SetDir(), SetStart(), TotalLength(), 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(), trackinfo::TrackInfo::produce(), presel::CosmicVeto::produce(), nussand::FillNusSandbox::produce(), slid::Recluster::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(), slid::NuEEnergyAlg::VertexEnergy(), and trk::KalmanTrackMerge::ViewMergeTracks().

77 {return fDir;}
TVector3 fDir
Direction at starting point.
Definition: Prong.h:112
double rb::Prong::DistanceFromStart ( double  z) const
virtual
Parameters
zz-coordinate to evaluate trajectory at
Returns
Distance from Start measured along the trajectory

Reimplemented in rb::Track.

Definition at line 214 of file Prong.cxx.

References fDir, and fStart.

Referenced by Dir().

215  {
216  // A prong is a straight line so this is easy
217 
218  // For a completely vertical track any answer is nonsense
219  if(fDir.Z() == 0) return 0;
220 
221  return (z-fStart.Z())/fDir.Z();
222  }
TVector3 fDir
Direction at starting point.
Definition: Prong.h:112
z
Definition: test.py:28
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
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
const int rb::Cluster::ID ( ) const
inlineinherited
bool rb::Cluster::Is2D ( ) const
inlineinherited
virtual bool rb::Prong::Is3D ( ) const
inlinevirtual
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(), presel::NuePresel::produce(), lem::Preselection::produce(), hough::MultiHoughT::produce(), numusand::FillSandbox::produce(), presel::CosmicCVNVeto::produce(), jmshower::JMTrackMerge::produce(), cosrej::CosRej::produce(), numue::NumuEnergy::produce(), ndreco::NDReco::produce(), earms::ElasticArmsHS::produce(), dt::DiscreteTracker::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(), tbem::TBRecoAna::analyze(), zcl::FmmTriggerAna::analyze(), zcl::FmmTrackerAna::analyze(), zcl::FmmTrackerValidation::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(), slid::Recluster::produce(), presel::CosmicVeto::produce(), lem::Preselection::produce(), presel::NuePresel::produce(), presel::CosmicCVNVeto::produce(), numusand::FillSandbox::produce(), slid::SliceLIDBuilder::produce(), zcl::SPCluster::produce(), cosrej::CosRej::produce(), numue::NumuEnergy::produce(), earms::ElasticArmsHS::produce(), lem::MakeLibrary::produce(), dt::DiscreteTracker::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
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(), vdt::VertexDT::produce(), sn::SupernovaMCCluster::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(), lem::Preselection::produce(), hough::MultiHoughT::produce(), presel::NuePresel::produce(), earms::ElasticArmsHS::produce(), sn::SNSlicer::produce(), jmshower::JMClusterMerge::produce(), vdt::VertexDT::produce(), sn::SupernovaMCCluster::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

Definition at line 226 of file Prong.cxx.

References Start().

Referenced by 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
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(), showere::ShowerEnergyAna::analyze(), trk::KalmanTrackAna::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(), 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::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)
virtual

Definition at line 104 of file Prong.cxx.

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

Referenced by slid::ParticleIDAlg::DedxInverseLongLL(), trk::WindowTrackingAlg::DetermineInitialDirection(), Dir(), bpfit::BreakPoint::FitTracks(), fuzz::ViewMatchAlg::Matching(), nerd::ViewMatchAlg::Matching(), slid::Recluster::produce(), cheat::MCCheater::produce(), 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 
)
virtual
Parameters
dvComponent of prong direction in View coordinate
dzz-component of prong direction

Definition at line 117 of file Prong.cxx.

References ana::assert(), 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::Prong::SetStart ( TVector3  start)
virtual

Reimplemented in rb::Track.

Definition at line 75 of file Prong.cxx.

References rb::Cluster::fPrecalcTotalGeV, fStart, and febshutoff_auto::start.

Referenced by slid::ParticleIDAlg::DedxInverseLongLL(), Dir(), fuzz::ViewMatchAlg::Matching(), nerd::ViewMatchAlg::Matching(), slid::Recluster::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), Prong(), jmshower::RecoJMShower::RecoShowers(), and rb::Track::SetStart().

76  {
77  fPrecalcTotalGeV = -1; // Invalidate any cached value
78 
79  // I've removed this assert to allow for 2D prongs to set a 3D start
80  // point if they so choose.
81  // assert(fView == geo::kXorY);
82 
83  fStart = start;
84  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
void rb::Prong::SetStart ( double  v0,
double  z0 
)
virtual

Reimplemented in rb::Track.

Definition at line 88 of file Prong.cxx.

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

89  {
90  fPrecalcTotalGeV = -1; // Invalidate any cached value
91 
92  assert(fView == geo::kX || fView == geo::kY);
93 
94  if(fView == geo::kX){
95  fStart = TVector3(v0, 0, z0);
96  }
97  else{
98  fStart = TVector3(0, v0, z0);
99  }
100  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
Vertical planes which measure X.
Definition: PlaneGeo.h:28
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
geo::View_t fView
view this cluster is in
Definition: Cluster.h:316
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
assert(nhit_max >=nhit_nbins)
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 rb::Track::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
inlinevirtual

Definition at line 73 of file Prong.h.

References 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(), 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(), rb::Track::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
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::Prong::TotalLength ( ) const
virtual

Distance along prong to reach last cell hit.

Overridden by Track and Shower

Reimplemented in rb::Track, and rb::Shower.

Definition at line 186 of file Prong.cxx.

References rb::CellHit::Cell(), rb::Cluster::Cell(), cellMax, geo::ClosestApproach(), dist, fDir, fStart, geom(), geo::kX, std::max(), rb::Cluster::NCell(), rb::CellHit::Plane(), geo::GeometryBase::Plane(), runNovaSAM::ret, and rb::CellHit::View().

Referenced by bpf::BPFCVNAna::analyze(), Dir(), caf::FillNumuInfo(), caf::FillProngVars(), nuesand::FillNueSandbox::GetdEdx(), ndreco::NDRecoFxs::getProngActivity(), ndreco::NDRecoFxs::getProngDedx(), ndreco::NDRecoFxs::getProngProximity(), jmshower::RecoJMShower::GetShwStop(), SliceLID::BasicProngVars::initBasicVars(), LSTME::BasicProngVars::initBasicVars(), cosrej::MakeNueCosRej::MuonParentByDist(), cosrej::MakeNueCosRej::MuonParentByTime(), slid::Recluster::produce(), cvntf::CVNProngEvaluatorTF::produce(), fnex::prongByLength(), prongByLengthNue(), prongByLengthNumu(), murem::MuonRemove::RemoveByProngCVN(), LSTME::sortByLength(), SliceLID::sortByLength(), and caf::CAFMaker::sortRBProngLength().

187  {
189 
190  double ret = 0;
191 
192  const unsigned int cellMax = NCell();
193 
194  for(unsigned int cellIdx = 0; cellIdx < cellMax; ++cellIdx){
195  const art::Ptr<rb::CellHit> chit = Cell(cellIdx);
196 
197  TVector3 xyz;
198  geom->Plane(chit->Plane())->Cell(chit->Cell())->GetCenter(xyz);
199 
200  const TVector3 dxyz = (chit->View() == geo::kX) ? TVector3(0, 1, 0)
201  : TVector3(1, 0, 0);
202 
203  double dist;
205  xyz, xyz+dxyz,
206  &dist);
207 
208  ret = std::max(ret, dist);
209  }
210  return ret;
211  }
T max(const caf::Proxy< T > &a, T b)
TVector3 fDir
Direction at starting point.
Definition: Prong.h:112
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
double dist
Definition: runWimpSim.h:113
unsigned short Cell() const
Definition: CellHit.h:40
unsigned int NCell() const
Number of cells in either view.
Definition: Cluster.h:110
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
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 ClosestApproach(const double point[], const double intercept[], const double slopes[], double closest[])
Find the distance of closest approach between point and line.
Definition: Geo.cxx:222
const int cellMax
void geom(int which=0)
Definition: geom.C:163
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
virtual geo::View_t rb::Cluster::View ( ) const
inlinevirtualinherited
double rb::Prong::W ( const rb::CellHit chit) const
virtual

Estimate the unmeasured coordinate of chit.

For Prong, this is calculated by taking the position of the straight line defined by Start and Dir at the z-coordinate of the cell.

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 - we're just moving the point in the XY plane to get it on the line. Maybe we should take the route perpendicular to the line instead. Similarly for Track

Reimplemented from rb::Cluster.

Reimplemented in rb::Track.

Definition at line 135 of file Prong.cxx.

References rb::CellHit::Cell(), rb::Cluster::Cell(), geo::GeometryBase::DetId(), fDir, fStart, geom(), novadaq::cnv::kTESTBEAM, geo::kX, rb::CellHit::Plane(), geo::GeometryBase::Plane(), and rb::CellHit::View().

Referenced by fuzz::ViewMatchAlg::CalcEnergyProfile(), nerd::ViewMatchAlg::CalcEnergyProfile(), slid::NuEEnergyAlg::CellEnergy(), Dir(), and rb::Track::W().

136  {
137 
138  //TODO: If the prong is 2D, return a position of 0
139  //for the opposite view. This is in line with what happens
140  //in the w method for a track and cluster. In the future
141  //trying to do this should fail in all cases. This patch
142  //keeps anything from breaking until there is a long-term fix.
143 
144  // Removing this line so that 2D prongs can get a sensible W value.
145  // if (chit->View() == fView) return 0;
146 
148 
149  double xyz[3];
150  geom->Plane(chit->Plane())->Cell(chit->Cell())->GetCenter(xyz);
151  const double z1 = xyz[2];
152 
153  /// \todo CJB - we're just moving the point in the XY plane to get
154  /// it on the line. Maybe we should take the route perpendicular
155  /// to the line instead. Similarly for Track
156 
157  const double dt = (z1-fStart.Z())/fDir.Z();
158 
159  if(chit->View() == geo::kX) return fStart.Y()+dt*fDir.Y();
160  if(geom->DetId() == novadaq::cnv::kTESTBEAM) return -(fStart.X()+dt*fDir.X()); // TB horizontal modules (Y-view) have readout on opposite end as ND/FD
161  return fStart.X()+dt*fDir.X();
162 
163  /*
164  // Solve the problem of the closest approach of the trajectory to the line
165  // made by the cell by projecting down to a 2D trajectory and 2D point for
166  // the cell.
167  TVector3 start2D = fStart;
168  TVector3 dir2D = fDir;
169  TVector3 pt2D(xyz);
170  const int otherView = 1-chit->View();
171  start2D[otherView] = dir2D[otherView] = pt2D[otherView] = 0;
172 
173  // Actually find the closest point
174  TVector3 closest;
175  geo::ClosestApproach(pt2D, start2D, dir2D, closest);
176 
177  // Need to solve for the W position of the line, the exact part that we
178  // projected away above. So just figure out Z and evaluate the prong there.
179  const double dt = (closest.Z()-fStart.Z())/fDir.Z();
180 
181  return (fStart+dt*fDir)[otherView];
182  */
183  }
TVector3 fDir
Direction at starting point.
Definition: Prong.h:112
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
Definition: Cand.cxx:23
novadaq::cnv::DetId DetId() const
Prefer ds::DetectorService::DetId() instead.
Definition: GeometryBase.h:243
TVector3 fStart
Start location (xyz, cm)
Definition: Prong.h:111
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
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

Member Data Documentation

TVector3 rb::Prong::fDir
protected

Direction at starting point.

Definition at line 112 of file Prong.h.

Referenced by Dir(), DistanceFromStart(), SetDir(), rb::Shower::Stop(), TotalLength(), and 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
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: