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

A collection of associated CellHits. More...

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

Inheritance diagram for rb::Cluster:
jmshower::PCluster jmshower::TCCluster me::MichelECluster me::SlcME me::SliceMEFCluster rb::Prong me::TrkME rb::Shower rb::Track rb::WeightedProng jmshower::JMShower cheat::SimTrack

Public Types

enum  ESaveGeVMode { kInitializeTotalGeV = 0, kResetTotalGeV = 1 }
 

Public Member Functions

virtual ~Cluster ()
 
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
 
virtual double W (const rb::CellHit *chit) const
 Estimate the unmeasured coordinate of chit. More...
 
virtual bool Is3D () 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 cluster constructors
 Cluster ()
 
 Cluster (const art::PtrVector< rb::CellHit > &cells, int id=0)
 
2D cluster constructors
 Cluster (geo::View_t view, int id=0)
 
 Cluster (geo::View_t view, const art::PtrVector< rb::CellHit > &cells, int id=0)
 
 Cluster (geo::View_t view, const std::vector< art::Ptr< rb::CellHit > > &cells, int id=0)
 
Cell counts
unsigned int NCell (geo::View_t view) const
 Number of cells in view 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...
 
unsigned int NCell () const
 Number of cells in either 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::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...
 
art::Ptr< rb::CellHitCell (unsigned int globalIdx) const
 Get the ith cell from either 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 Attributes

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...
 

Friends

std::ostream & operator<< (std::ostream &o, const Cluster &c)
 

Totals

enum  EEnergyCalcScheme { kRecomputeEnergy = 0, kUsePrecalcEnergy = 1 }
 
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...
 

Internal helpers

void EnsureWeightAlloc ()
 Helper. Resizes weights vectors to match cell vectors. More...
 
double TotalGeVFastClusterOnly () const
 Optimized form of TotalGeV, only valid for actual Clusters. More...
 

Detailed Description

A collection of associated CellHits.

A Cluster is simply a "bag" of CellHits which have been reconstructed to be associated with each other in some way.

A cluster may be created as either 2D or 3D (ie containing hits from one or both views).

This class also contains various utility functions for obtaining the bulk properties of these hits.

It forms the basis of the reconstruction inheritance hierarchy, with the derived classes adding additional information about the hits.

Definition at line 47 of file Cluster.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
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::Cluster::Cluster ( )

Definition at line 25 of file Cluster.cxx.

26  : fView(geo::kXorY)
27  , fID(0)
28  , fNoiseCluster(false)
29  , fPrecalcTotalGeV(-1)
30  {
31  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
X or Y views.
Definition: PlaneGeo.h:30
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
int fID
ID for cluster.
Definition: Cluster.h:321
rb::Cluster::Cluster ( const art::PtrVector< rb::CellHit > &  cells,
int  id = 0 
)
explicit

Definition at line 34 of file Cluster.cxx.

References Add(), MECModelEnuComparisons::i, and art::PtrVector< T >::size().

35  : fView(geo::kXorY)
36  , fID(id)
37  , fNoiseCluster(false)
38  , fPrecalcTotalGeV(-1)
39  {
40  for(unsigned int i = 0; i < cells.size(); ++i) Add(cells[i]);
41  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
X or Y views.
Definition: PlaneGeo.h:30
virtual void Add(const art::Ptr< rb::CellHit > &cell, double weight=1)
Definition: Cluster.cxx:84
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
size_type size() const
Definition: PtrVector.h:308
int fID
ID for cluster.
Definition: Cluster.h:321
rb::Cluster::Cluster ( geo::View_t  view,
int  id = 0 
)

Definition at line 44 of file Cluster.cxx.

45  : fView(view)
46  , fID(id)
47  , fNoiseCluster(false)
48  , fPrecalcTotalGeV(-1)
49  {
50  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
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
int fID
ID for cluster.
Definition: Cluster.h:321
rb::Cluster::Cluster ( geo::View_t  view,
const art::PtrVector< rb::CellHit > &  cells,
int  id = 0 
)

Definition at line 53 of file Cluster.cxx.

References Add(), ana::assert(), art::PtrVector< T >::empty(), fView, fXCell, fYCell, MECModelEnuComparisons::i, geo::kX, geo::kY, and art::PtrVector< T >::size().

54  : fView(view)
55  , fID(id)
56  , fNoiseCluster(false)
57  , fPrecalcTotalGeV(-1)
58  {
59  for(unsigned int i = 0; i < cells.size(); ++i) Add(cells[i]);
60 
61  assert((fView == geo::kX && fYCell.empty()) ||
62  (fView == geo::kY && fXCell.empty()));
63  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
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
virtual void Add(const art::Ptr< rb::CellHit > &cell, double weight=1)
Definition: Cluster.cxx:84
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
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
bool empty() const
Definition: PtrVector.h:336
size_type size() const
Definition: PtrVector.h:308
int fID
ID for cluster.
Definition: Cluster.h:321
assert(nhit_max >=nhit_nbins)
rb::Cluster::Cluster ( geo::View_t  view,
const std::vector< art::Ptr< rb::CellHit > > &  cells,
int  id = 0 
)

Definition at line 66 of file Cluster.cxx.

References Add(), ana::assert(), art::PtrVector< T >::empty(), fView, fXCell, fYCell, MECModelEnuComparisons::i, geo::kX, and geo::kY.

67  : fView(view)
68  , fID(id)
69  , fNoiseCluster(false)
70  , fPrecalcTotalGeV(-1)
71  {
72  for(unsigned int i = 0; i < cells.size(); ++i) Add(cells[i]);
73 
74  assert((fView == geo::kX && fYCell.empty()) ||
75  (fView == geo::kY && fXCell.empty()));
76  }
double fPrecalcTotalGeV
-1 = uninitialized
Definition: Cluster.h:324
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
virtual void Add(const art::Ptr< rb::CellHit > &cell, double weight=1)
Definition: Cluster.cxx:84
art::PtrVector< rb::CellHit > fXCell
collection of x-view cells in cluster
Definition: Cluster.h:317
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
bool empty() const
Definition: PtrVector.h:336
int fID
ID for cluster.
Definition: Cluster.h:321
assert(nhit_max >=nhit_nbins)
rb::Cluster::~Cluster ( )
virtual

Definition at line 79 of file Cluster.cxx.

80  {
81  }

Member Function Documentation

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

Definition at line 84 of file Cluster.cxx.

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

Referenced by Add(), fuzz::FuzzyKVertex::AddProng(), bpfit::BPFTmvaTrainer::analyze(), bpf::BPFCVNAna::analyze(), htk::HoughTrack::analyze(), Cluster(), ddthelpers::cluster_hits(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), tdslicer::TDSlicer::DBSCAN(), slicemergeviews::SliceMergeViews::DoMerge(), 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>() 
)
virtual

Definition at line 107 of file Cluster.cxx.

References 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

Get all cells from both views.

Definition at line 180 of file Cluster.cxx.

References plot_validation_datamc::c, fXCell, 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(), validation::NoiseClusterAnalysis::analyze(), calib::HitEfficiency::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(), 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

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 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

Get the ith cell from view view.

Definition at line 145 of file Cluster.cxx.

References ana::assert(), geo::kX, geo::kXorY, geo::kY, XCell(), and 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(), dprf::TrackPlots::analyze(), mcchk::MonopoleAna::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(), 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(), MaxCell(), nuesand::FillNueSandbox::MaxGap(), nuesand::FillNueSandbox::MaxHits(), MaxPlane(), MaxTNS(), MeanTNS(), dt::DiscreteTracker::MergeParasiteTracks(), MinCell(), nerd::NERDProng::MinHitClusterDist(), me::MEFinder::MinHitSlcDist(), MinMaxMeanXYZ(), MinPlane(), MinTNS(), MostContiguousPlanes(), MostMissingPlanes(), murem::MuonRemove::MuonInfo(), dif::DiFShowerFinder::muonstub(), NCell(), numue::NumuEAlg::NDEnergy(), numue::NumuEAlg::NDTrackEnergySplitting(), NMissingPlanes(), zcl::FmmTriggerEvd::NumberOfCellsPerLength(), zcl::FmmTriggerEvd::NumberOfHitsInOverlapPlanesCut(), zcl::FastMonopoleTriggers::NumberOfSurfaceHits(), zcl::FastMMStudy::NumberOfSurfaceHits(), 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(), rvp::RecVarPID::produce(), dif::DiFShowerFinder::produce(), jmshower::NueSelLID::produce(), bpfit::BPFEnergyEstimator::produce(), bpfit::BPFEnergyEstimatorOnly::produce(), caf::CAFMaker::produce(), slid::ParticleIDAlg::Radius(), jmshower::RecoJMShower::Radius(), jmshower::RecoJMShower::RadiusV(), 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(), TotalADC(), dt::ViewMerger::TotalChargePerView(), rb::Prong::TotalLength(), TotalPE(), trk::CosmicTrackUtilities::TrackResiduals(), trk::KalmanTrackMerge::ViewMergeTracks(), rb::Prong::W(), rb::Track::W(), and 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

Get the ith cell from either view.

Definition at line 173 of file Cluster.cxx.

References NXCell(), XCell(), and 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 ( )
virtual

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(), fPrecalcTotalGeV, fXCell, fXWeights, fYCell, and fYWeights.

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

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

Helper. Resizes weights vectors to match cell vectors.

Definition at line 712 of file Cluster.cxx.

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

Referenced by Add(), and 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

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

Definition at line 233 of file Cluster.cxx.

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

Referenced by mono::MonopoleCluster::filter(), slid::Recluster::produce(), slid::NuEEnergyAlg::VertexEnergy(), and 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

Definition at line 570 of file Cluster.cxx.

References MaxCell(), and MinCell().

Referenced by sn::SNSlicerAna::analyze(), sn::SNSlicer::ClusterIsGood(), and 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
inline
double rb::Cluster::ExtentTNS ( ) const
inline
double rb::Cluster::ExtentV ( geo::View_t  view) const
inline

Definition at line 246 of file Cluster.h.

References MaxV(), and 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
inline

Definition at line 247 of file Cluster.h.

References ExtentXYZ().

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

Definition at line 245 of file Cluster.h.

References MaxXYZ(), and MinXYZ().

Referenced by ExtentX(), ExtentY(), and ExtentZ().

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

Definition at line 248 of file Cluster.h.

References ExtentXYZ().

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

Definition at line 249 of file Cluster.h.

References 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
inline
bool rb::Cluster::Is2D ( ) const
inline
virtual bool rb::Cluster::Is3D ( ) const
inlinevirtual

Reimplemented in rb::Prong.

Definition at line 95 of file Cluster.h.

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

Referenced by Is2D(), rb::operator<<(), and dif::DiFShowerFinder::produce().

95 {return ((fXCell.size() > 0) && (fYCell.size() > 0));}
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
bool rb::Cluster::IsNoise ( ) const
inline

Is the noise flag set?

Definition at line 163 of file Cluster.h.

References fNoiseCluster, SetWeight(), TotalADC(), 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(), lem::LEMSummarizer::produce(), presel::RockPresel::produce(), trackinfo::TrackInfo::produce(), slid::Recluster::produce(), nussand::FillNusSandbox::produce(), presel::CosmicVeto::produce(), lem::Preselection::produce(), hough::MultiHoughT::produce(), numusand::FillSandbox::produce(), jmshower::JMTrackMerge::produce(), presel::CosmicCVNVeto::produce(), presel::NuePresel::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(), rvp::RecVarPID::produce(), dif::DiFShowerFinder::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

Definition at line 518 of file Cluster.cxx.

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

Referenced by align::SplitTracks::analyze(), cvn::PixelMapProducer::DefineBoundary(), ExtentCell(), caf::FillHadClustVars(), caf::FillSliceVars(), hough::HoughT::is_good_slice(), 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

Definition at line 508 of file Cluster.cxx.

References ana::assert(), Cell(), MECModelEnuComparisons::i, 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(), 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(), 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

Definition at line 528 of file Cluster.cxx.

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

Referenced by align::AlignInspect::analyze(), nnbar::ShowerMuonCoincidence::analyze(), ncs::NCAna::analyze(), evd::RecoBaseDrawer::DrawCluster2D(), evd::RecoBaseDrawer::DrawTrack2D(), ExtentTNS(), caf::FillProngVars(), caf::FillSliceVars(), bsf::BremShowerFilter::findShowerByTruth(), MaxZ(), skim::ParametersNumu::ParametersNumu(), trk::TrkAssn::produce(), jmshower::JMTrackMerge::produce(), jmshower::JMClusterMerge::produce(), caf::CAFMaker::produce(), and sn::TrackActivityRemover::remove().

529  {
530  assert(NCell() > 0);
531  double ret = -DBL_MAX;
532  for(unsigned int i = 0; i < NCell(); ++i)
533  if(Cell(i)->TNS() > ret) ret = Cell(i)->TNS();
534  return ret;
535  }
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::MaxV ( geo::View_t  view) const

Definition at line 500 of file Cluster.cxx.

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

Referenced by ExtentV(), 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
inline

Definition at line 217 of file Cluster.h.

References 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

Definition at line 492 of file Cluster.cxx.

References hi(), and MinMaxMeanXYZ().

Referenced by comi::NumiFilteringAna::analyze(), ExtentXYZ(), comi::NumiFiltering::filter(), evd::SliceNavigator::GetBounds(), evd::SliceNavigator::GetBox(), skim::EvaluatorNue::KeepSlice(), MaxV(), MaxX(), MaxY(), MaxZ(), 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
inline

Definition at line 218 of file Cluster.h.

References 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
inline

Definition at line 219 of file Cluster.h.

References geo::kXorY, MaxCell(), MaxPlane(), MaxTNS(), MaxXYZ(), MeanV(), and MeanXYZ().

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

219 {return MaxXYZ().Z();}
TVector3 MaxXYZ() const
Definition: Cluster.cxx:492
double rb::Cluster::MeanTNS ( rb::AveragingScheme  scheme = kDefaultScheme) const

Definition at line 554 of file Cluster.cxx.

References ana::assert(), Cell(), MECModelEnuComparisons::i, rb::kByEnergy, NCell(), rb::CellHit::PE(), runNovaSAM::ret, rb::CellHit::TNS(), w, and 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(), MeanZ(), cosrej::MakeNueCosRej::MuonParentByDist(), cosrej::MakeNueCosRej::MuonParentByTime(), calib::PCHitsList::ProcessTrackForFLSHits(), recodemo::RecoDemo::produce(), hv::HoughVertex::produce(), presel::CosmicVeto::produce(), presel::CosmicCVNVeto::produce(), vdt::VertexDT::produce(), sn::SupernovaMCCluster::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

Definition at line 546 of file Cluster.cxx.

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

Referenced by nerd::NERDProng::AddProngs(), MaxZ(), and 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
inline
TVector3 rb::Cluster::MeanXYZ ( rb::AveragingScheme  scheme = kDefaultScheme) const

Definition at line 538 of file Cluster.cxx.

References extractScale::mean, and MinMaxMeanXYZ().

Referenced by sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), jmshower::RecoJMShower::GetRVPStats(), tf::TimingFitAlg::HoughFit(), MaxZ(), MeanV(), MeanX(), MeanY(), MeanZ(), nuesand::FillNueSandbox::produce(), presel::NuePresel::produce(), lem::Preselection::produce(), and 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
inline
double rb::Cluster::MeanZ ( rb::AveragingScheme  scheme = kDefaultScheme) const
inline
unsigned int rb::Cluster::MinCell ( geo::View_t  view) const

Definition at line 472 of file Cluster.cxx.

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

Referenced by calib::TestParticleCorrections::analyze(), align::SplitTracks::analyze(), cvn::PixelMapProducer::DefineBoundary(), ExtentCell(), caf::FillHadClustVars(), caf::FillSliceVars(), hough::HoughT::is_good_slice(), lem::MeanCell(), 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

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(), Cell(), geom(), make_syst_table_plots::h, hi(), MECModelEnuComparisons::i, rb::kByEnergy, geo::kX, geo::kY, lo(), extractScale::mean, getGoodRuns4SAM::n, NCell(), rb::CellHit::PE(), rb::CellHit::Plane(), geo::GeometryBase::Plane(), POTSpillRate::view, View(), ana::weight, Weight(), submit_syst::x, submit_syst::y, and test::z.

Referenced by caf::FillHadClustVars(), caf::FillSliceVars(), MaxXYZ(), MeanXYZ(), MeanZ(), and 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

Definition at line 462 of file Cluster.cxx.

References ana::assert(), Cell(), MECModelEnuComparisons::i, 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(), 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(), 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

Definition at line 482 of file Cluster.cxx.

References ana::assert(), Cell(), MECModelEnuComparisons::i, 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(), ExtentTNS(), caf::FillProngVars(), caf::FillSliceVars(), bsf::BremShowerFilter::findShowerByTruth(), 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

Definition at line 454 of file Cluster.cxx.

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

Referenced by 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
inline

Definition at line 204 of file Cluster.h.

References 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

Definition at line 446 of file Cluster.cxx.

References lo(), and MinMaxMeanXYZ().

Referenced by comi::NumiFilteringAna::analyze(), ExtentXYZ(), comi::NumiFiltering::filter(), evd::SliceNavigator::GetBounds(), evd::SliceNavigator::GetBox(), MinV(), MinX(), MinY(), 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
inline

Definition at line 205 of file Cluster.h.

References 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
inline

Definition at line 206 of file Cluster.h.

References geo::kXorY, MaxV(), MaxXYZ(), MinCell(), MinPlane(), MinTNS(), and MinXYZ().

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

206 {return MinXYZ().Z();}
TVector3 MinXYZ() const
Definition: Cluster.cxx:446
int rb::Cluster::MostContiguousPlanes ( geo::View_t  view) const

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 Cell(), MECModelEnuComparisons::i, geo::kXorY, std::max(), NCell(), and NDAPDHVSetting::plane.

Referenced by ncid::NCNNKerasVal::analyze(), 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

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 Cell(), MECModelEnuComparisons::i, geo::kXorY, std::max(), NCell(), and NDAPDHVSetting::plane.

Referenced by 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

Number of cells in view view.

Definition at line 134 of file Cluster.cxx.

References ana::assert(), geo::kX, geo::kXorY, geo::kY, NCell(), NXCell(), and 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::FmmTrackerValidation::analyze(), zcl::FmmTrackerAna::analyze(), trk::KalmanTrackAna::analyze(), showere::ShowerEnergyAna::analyze(), hough::HoughValidate::analyze(), rockmuon::NDRockMuon::analyze(), zcl::FastMMStudy::analyze(), bpfit::BPFTmvaTrainer::analyze(), bpf::BPFCVNAna::analyze(), calib::CosmicTrends::analyze(), calib::CalibAna::analyze(), ncs::Xeff::analyze(), moonshadowana::MoonShadowAna::analyze(), ncs::ROCKMRE::analyze(), ncs::NCAna::analyze(), htk::HoughTrack::analyze(), bpfit::DimuonFitter::AnaSlice(), me::MEFinder::BestSlcMatch(), fuzz::ViewMatchAlg::CalcEnergyProfile(), nerd::ViewMatchAlg::CalcEnergyProfile(), trk::KalmanTrackMerge::CalcMatchScore(), slid::ParticleIDAlg::CalcPlaneHits(), trk::KalmanTrackMerge::CanJoinTracks(), trk::KalmanTrackAna::CheckRecoTracks(), murem::TrackCleanUpAlg::CleanUpTrack(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), sn::SNSlicer::ClusterIsGood(), murem::TrackCleanUpAlg::ComputeVertexRegion(), remid::ReMIdTrain::ContainedEvent(), remid::ReMIdDedx::ContainedEvent(), remid::ReMIdDedxFD::ContainedEvent(), remid::ReMIdDedxRock::ContainedEvent(), remid::ReMIdDedxStudies::ContainedEvent(), nnbar::NNbarUtilities::correlationTCell(), nnbar::NNbarUtilities::correlationTPlane(), cvn::RegPixelMapProducer::CreateMapGivenBoundary(), cvn::PixelMapProducer::CreateMapGivenBoundary(), cvn::RegPixelMapProducer::CreateMapGivenShowerVertex(), cvn::RegPixelMapProducer::CreateMapGivenVertex(), jmshower::RecoJMShower::DepositEnergy(), evd::RecoBaseDrawer::DrawTrack2D(), skim::ParametersNumu::EarliestLatestHitPos(), jmshower::RecoJMShower::Energy(), dif::DiFShowerFinder::eparm(), 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::CosmicCVNVeto::produce(), presel::NuePresel::produce(), numusand::FillSandbox::produce(), slid::SliceLIDBuilder::produce(), cosrej::CosRej::produce(), zcl::SPCluster::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(), dif::DiFShowerFinder::produce(), rvp::RecVarPID::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
inline

Number of cells in either view.

Definition at line 110 of file Cluster.h.

References Cell(), NXCell(), NYCell(), XCell(), and YCell().

Referenced by Exclude(), jmshower::JMShower::GetPlaneHits(), jmshower::JMShower::GetTransHits(), MaxCell(), MaxPlane(), MaxTNS(), MeanTNS(), MinCell(), MinMaxMeanXYZ(), MinPlane(), MinTNS(), MostContiguousPlanes(), MostMissingPlanes(), NCell(), NMissingPlanes(), OfflineChans(), rb::Track::PlaneDirMap(), RemoveHit(), TotalADC(), TotalGeV(), rb::Prong::TotalLength(), TotalPE(), TotalWeight(), View(), and WeightedHits().

110 {return NXCell()+NYCell();}
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
int rb::Cluster::NMissingPlanes ( geo::View_t  view) const

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 Cell(), MECModelEnuComparisons::i, geo::kXorY, NCell(), update_sam_good_runs_metadata::stride, and View().

Referenced by bpf::BPFCVNAna::analyze(), 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
inline

Number of cells in the x-view.

Definition at line 106 of file Cluster.h.

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

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), chaninfo::CosmicEff::analyze(), comi::CosmicMetrics::analyze(), align::AlignInspect::analyze(), align::Alignment::analyze(), sn::SNSlicerAna::analyze(), align::SplitTracks::analyze(), calib::HitEfficiency::analyze(), calib::PEResponse::analyze(), trk::KalmanTrackAna::analyze(), hough::HoughValidate::analyze(), slid::LIDTraining::analyze(), red::EWCosmics::analyze(), bpfit::DimuonFitter::AnaSlice(), 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(), 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(), sn::SNSlicer::produce(), jmshower::JMClusterMerge::produce(), sn::SupernovaMCCluster::produce(), vdt::VertexDT::produce(), jmshower::NueSel::produce(), cvntf::CVNProngEvaluatorTF::produce(), rvp::RecVarPID::produce(), jmshower::NueSelLID::produce(), remid::RecoMuon::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), caf::CAFMaker::produce(), cvn::ProngClassify(), jmshower::RecoJMShower::RecoShowers(), RemoveHit(), SetWeight(), lem::LEMSummarizer::SliceToLEMInput(), TotalGeVFastClusterOnly(), dprf::ChannelPlots::TrackOK(), dprf::TrackPlots::TrackOK(), me::MEFinder::TrkMEDist(), 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
inline

Number of cells in the y-view.

Definition at line 108 of file Cluster.h.

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

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), chaninfo::CosmicEff::analyze(), comi::CosmicMetrics::analyze(), align::AlignInspect::analyze(), align::Alignment::analyze(), sn::SNSlicerAna::analyze(), align::SplitTracks::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(), NCell(), skim::ParametersNue::ParametersNue(), skim::ParametersNumu::ParametersNumu(), hough::HoughT::produce(), nuesand::FillNueSandbox::produce(), nussand::FillNusSandbox::produce(), hough::MultiHoughT::produce(), presel::NuePresel::produce(), lem::Preselection::produce(), earms::ElasticArmsHS::produce(), sn::SNSlicer::produce(), jmshower::JMClusterMerge::produce(), sn::SupernovaMCCluster::produce(), vdt::VertexDT::produce(), jmshower::NueSel::produce(), cvntf::CVNProngEvaluatorTF::produce(), rvp::RecVarPID::produce(), jmshower::NueSelLID::produce(), remid::RecoMuon::produce(), fuzz::FuzzyKVertex::produce(), nerd::NERDProng::produce(), caf::CAFMaker::produce(), cvn::ProngClassify(), jmshower::RecoJMShower::RecoShowers(), RemoveHit(), lem::LEMSummarizer::SliceToLEMInput(), 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

Positions of all the CellHits.

Definition at line 190 of file Cluster.cxx.

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

Referenced by calib::PCHitsList::ProcessTrack(), calib::PCHitsList::ProcessTrackForBelowThresholdHits(), calib::PCHitsList::ProcessTrackForFLSHits(), and 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::Cluster::operator< ( const Cluster other) const

Definition at line 576 of file Cluster.cxx.

References 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

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(), RecoHit(), lem::MakeLibrary::SliceMeanPosEWeighted(), lem::LEMSummarizer::SliceToLEMInput(), nnbar::NNbarUtilities::temporalExpand(), calib::StopperThreshold::testPath(), dt::ViewMerger::TotalChargePerView(), TotalGeV(), nnbar::NNbarUtilities::totalVisibleEnergyInView(), murem::TrackCleanUpAlg::TrackEinMIP(), trk::CosmicTrackUtilities::TrackResiduals(), and 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

Definition at line 267 of file Cluster.cxx.

References Cell(), and 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

Definition at line 273 of file Cluster.cxx.

References Cell(), and 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)

Remove hit from current cluster.

Definition at line 290 of file Cluster.cxx.

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

Referenced by slid::NuEEnergyAlg::HadronicDepEnergy(), murem::FindParent::MatchToOrigSlice(), slid::Recluster::produce(), sn::SNSlicer::produce(), slid::NuEEnergyAlg::VertexEnergy(), and 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)

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(), fPrecalcTotalGeV, fXCell, fYCell, NCell(), and 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)

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(), fPrecalcTotalGeV, kRecomputeEnergy, kResetTotalGeV, and 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::Cluster::SetID ( int  id)
inline
void rb::Cluster::SetNoise ( bool  noise)
inline

Declare the cluster to consist of noise hits or not.

Definition at line 161 of file Cluster.h.

References fNoiseCluster.

Referenced by 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::Cluster::SetWeight ( unsigned int  globalIdx,
double  weight 
)

Set weight of the cell at this index.

Definition at line 327 of file Cluster.cxx.

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

Referenced by 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 
)

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

Definition at line 338 of file Cluster.cxx.

References ana::assert(), EnsureWeightAlloc(), fPrecalcTotalGeV, fXCell, fXWeights, fYCell, 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 ( )

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, fXCell, fXWeights, fYCell, fYWeights, and rb::standard_compare().

Referenced by 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
double rb::Cluster::TotalADC ( ) const

Sum of the ADC of all the contained hits.

Definition at line 360 of file Cluster.cxx.

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

Referenced by caf::AddSlcMEToVec(), caf::AddTrkMEToVec(), sn::SNSlicerAna::analyze(), sn::SupernovaAna::analyze(), tbem::TBRecoAna::analyze(), air::AirKalmanAna::analyze(), sn::SNMichelAnalyzer::ClusterAroundTrackEnds(), sn::SNSlicer::ClusterIsGood(), mono::HighEnergySliceRemoval::is_high_energy_slice(), 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

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, fPrecalcTotalGeV, rb::RecoHit::GeV(), MECModelEnuComparisons::i, rb::RecoHit::IsCalibrated(), kUsePrecalcEnergy, NCell(), RecoHit(), runNovaSAM::ret, TotalGeVFastClusterOnly(), and Weight().

Referenced by calib::TestParticleCorrections::analyze(), sn::SNSlicerAna::analyze(), vf::TrackEva::analyze(), tbem::TBRecoAna::analyze(), bpfit::BPFTmvaTrainer::analyze(), bpf::BPFCVNAna::analyze(), htk::HoughTrack::analyze(), 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 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::Cluster::TotalGeVFastClusterOnly ( ) const
private

Optimized form of TotalGeV, only valid for actual Clusters.

Definition at line 400 of file Cluster.cxx.

References ana::assert(), rb::RecoHit::GeV(), MECModelEnuComparisons::i, rb::RecoHit::IsCalibrated(), geo::kX, geo::kY, calib::Calibrator::MakeRecoHit(), extractScale::mean, MeanXYZ(), NXCell(), NYCell(), Weight(), XCell(), and YCell().

Referenced by TotalGeV().

401  {
402  // This is only safe for objects that return the same W for all hits in the
403  // same view. We only know that's the case for Cluster. It's definitely not
404  // correct for Prong and Track.
405  assert(typeid(*this) == typeid(rb::Cluster));
406 
408 
409  double gev = 0;
410 
411  // We just use the mean position for the W estimate in all cases.
412  // Precalculate once up front, instead of NCell() times as we would
413  // otherwise.
414  const TVector3 mean = MeanXYZ();
415 
416  // X and Y cells have the mean of the opposite view as their W
417  for(unsigned int i = 0; i < NXCell(); ++i){
418  const rb::RecoHit rhit(cal->MakeRecoHit(*(XCell(i)), mean.Y()));
419  if(rhit.IsCalibrated()) gev += rhit.GeV()*Weight(geo::kX, i);
420  }
421  for(unsigned int i = 0; i < NYCell(); ++i){
422  const rb::RecoHit rhit(cal->MakeRecoHit(*(YCell(i)), mean.X()));
423  if(rhit.IsCalibrated()) gev += rhit.GeV()*Weight(geo::kY, i);
424  }
425 
426  return gev;
427  }
art::Ptr< rb::CellHit > XCell(unsigned int xIdx) const
Get the ith cell in the x-view.
Definition: Cluster.cxx:157
Vertical planes which measure X.
Definition: PlaneGeo.h:28
rb::RecoHit MakeRecoHit(rb::CellHit const &cellhit, double w)
A collection of associated CellHits.
Definition: Cluster.h:47
TVector3 MeanXYZ(rb::AveragingScheme=kDefaultScheme) const
Definition: Cluster.cxx:538
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
Calibrated quantities relying on position in the orthogonal view. To generate a rb::CellHit from a rb...
Definition: RecoHit.h:19
art::Ptr< rb::CellHit > YCell(unsigned int yIdx) const
Get the ith cell in the y-view.
Definition: Cluster.cxx:165
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)
double Weight(unsigned int globalIdx) const
Weight assigned to the cell.
Definition: Cluster.cxx:209
double rb::Cluster::TotalPE ( ) const

Sum of the PE value of all the contained hits.

Definition at line 369 of file Cluster.cxx.

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

Referenced by 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

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

Definition at line 430 of file Cluster.cxx.

References NCell(), runNovaSAM::ret, and 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
inlinevirtual
double rb::Cluster::W ( const rb::CellHit chit) const
virtual

Estimate the unmeasured coordinate of chit.

The nomenclature for the coordinates is that XYZ are the physical coordinates. Whichever of XY is measured by the cell is "V", the direction along the cell is "W". The origin of VW space is the same as the origin of XY space, the detector centreline.

This method should be overridden in all descendants of Cluster which have additional information to make this determination.

For Cluster, this is simply the average coordinate of all hits in the view in question.

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.

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

Definition at line 121 of file Cluster.cxx.

References geo::GeometryBase::DetId(), geom(), novadaq::cnv::kTESTBEAM, geo::kX, geo::kY, MeanV(), and rb::CellHit::View().

Referenced by ncs::Xeff::analyze(), ncs::ROCKMRE::analyze(), slid::LIDTraining::analyze(), ncs::NCAna::analyze(), caf::FillHadClustVars(), caf::FillSliceVars(), bpfit::DimuonFitter::FitView(), jmshower::RecoJMShower::GetRVPStats(), ID(), nuesand::FillNueSandbox::produce(), lem::Preselection::produce(), presel::NuePresel::produce(), jmshower::NueSel::produce(), rvp::RecVarPID::produce(), jmshower::NueSelLID::produce(), jmshower::RecoJMShower::RecoShowers(), and lem::LEMSummarizer::SliceToLEMInput().

122  {
123  geo::View_t otherView = geo::kX;
124  if(hit->View() == geo::kX) otherView = geo::kY;
125 
126  // TB horizontal modules (Y-view) have readout on opposite end as ND/FD
128  if(geom->DetId() == novadaq::cnv::kTESTBEAM && hit->View() == geo::kY) return -MeanV(otherView);
129 
130  return MeanV(otherView);
131  }
enum geo::_plane_proj View_t
Enumerate the possible plane projections.
Vertical planes which measure X.
Definition: PlaneGeo.h:28
double MeanV(geo::View_t view, rb::AveragingScheme scheme=kDefaultScheme) const
Definition: Cluster.cxx:546
Horizontal planes which measure Y.
Definition: PlaneGeo.h:29
novadaq::cnv::DetId DetId() const
Prefer ds::DetectorService::DetId() instead.
Definition: GeometryBase.h:243
Definition: event.h:1
void geom(int which=0)
Definition: geom.C:163
double rb::Cluster::Weight ( unsigned int  globalIdx) const

Weight assigned to the cell.

Definition at line 209 of file Cluster.cxx.

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

Referenced by fuzz::ViewMatchAlg::CalcEnergyProfile(), nerd::ViewMatchAlg::CalcEnergyProfile(), slid::NuEEnergyAlg::CellEnergy(), skim::SkimmingUtils::CopySlice(), Exclude(), trk::CosmicTrackAna::FillRecoInfo(), fuzz::FuzzyKValidate::GeVCalc(), fuzz::ViewMatchAlg::MakeTestProng(), nerd::ViewMatchAlg::MakeTestProng(), MeanTNS(), MinMaxMeanXYZ(), nussand::FillNusSandbox::produce(), TotalADC(), TotalGeV(), TotalGeVFastClusterOnly(), TotalPE(), TotalWeight(), murem::TrackCleanUpAlg::TrackEinMIP(), WeightedHits(), and 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

Weight assigned to the cell.

Definition at line 218 of file Cluster.cxx.

References ana::assert(), fXWeights, 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

Get all hits from both views, with weights attached.

Definition at line 200 of file Cluster.cxx.

References Cell(), NCell(), and Weight().

Referenced by 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
const art::PtrVector<rb::CellHit>& rb::Cluster::XCells ( ) const
inline

Get all cells from the x-view.

Definition at line 124 of file Cluster.h.

References 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
const art::PtrVector<rb::CellHit>& rb::Cluster::YCells ( ) const
inline

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  o,
const Cluster c 
)
friend

Definition at line 770 of file Cluster.cxx.

771  {
772  o << std::setiosflags(std::ios::fixed) << std::setprecision(2);
773  o << "View = " << std::setw(1) << std::right << c.View()
774  << " ID = " << std::setw(1) << std::right << c.ID()
775  << " #Cells = " << std::setw(3) << std::right << c.NCell()
776  << " Is3D = " << std::setw(1) << std::right << c.Is3D()
777  << " TotalADC = " << std::setw(5) << std::right << c.TotalADC();
778 
779  return o;
780  }
constexpr auto const & right(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
Definition: AssnsIter.h:112

Member Data Documentation

int rb::Cluster::fID
protected

ID for cluster.

Definition at line 321 of file Cluster.h.

Referenced by Exclude(), ID(), and SetID().

bool rb::Cluster::fNoiseCluster
protected

flag for whether this is a noise cluster

Definition at line 322 of file Cluster.h.

Referenced by Exclude(), IsNoise(), and SetNoise().

double rb::Cluster::fPrecalcTotalGeV
protected
geo::View_t rb::Cluster::fView
protected
art::PtrVector<rb::CellHit> rb::Cluster::fXCell
protected

collection of x-view cells in cluster

Definition at line 317 of file Cluster.h.

Referenced by Add(), AllCells(), Clear(), Cluster(), EnsureWeightAlloc(), Is3D(), NXCell(), RemoveHit(), SetWeight(), StandardSort(), XCell(), and XCells().

std::vector<double> rb::Cluster::fXWeights
protected

Weights, matching cell indexing.

Definition at line 319 of file Cluster.h.

Referenced by Add(), Clear(), EnsureWeightAlloc(), RemoveHit(), SetWeight(), StandardSort(), and Weight().

art::PtrVector<rb::CellHit> rb::Cluster::fYCell
protected

collection of y-view cells in cluster

Definition at line 318 of file Cluster.h.

Referenced by Add(), AllCells(), Clear(), Cluster(), EnsureWeightAlloc(), Is3D(), NYCell(), RemoveHit(), SetWeight(), StandardSort(), YCell(), and YCells().

std::vector<double> rb::Cluster::fYWeights
protected

May be empty, means all weights are 1.

Definition at line 320 of file Cluster.h.

Referenced by Add(), Clear(), EnsureWeightAlloc(), RemoveHit(), SetWeight(), StandardSort(), and Weight().


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