LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
Todo List
Member AcceptFindNeighbors::isNear (const BoundingBox &b) const
activating these should throw a warning or something
Member cheat::RecoCheckAna::CheckRecoEvents (art::Event const &evt, std::string const &label, art::Handle< std::vector< recob::Event >> const &evtcol, std::vector< art::Ptr< recob::Hit >> const &allhits)
need to divy it up in the case where there is more than 1 true interaction in a spill
Member cluster::ClusterCheater::produce (art::Event &evt) override
: The above encoding of the ID probably won't work for DUNE and should be revisited
Class cluster::ClusterCreator
Add the example!
Member cluster::DBcluster::produce (art::Event &evt)
: need to define start and end positions for this cluster and slopes for dTdW, dQdW
Member cluster::DBScanAlg::getSimilarity (const std::vector< double > v1, const std::vector< double > v2)
this code assumes that all planes have the same wire pitch
Member cluster::DBScanAlg::getSimilarity2 (const std::vector< double > v1, const std::vector< double > v2)
this code assumes all planes have the same wire pitch
Member cluster::HoughBaseAlg::FastTransform (detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, std::vector< art::Ptr< recob::Hit >> const &clusIn, std::vector< art::PtrVector< recob::Hit >> &clusHitsOut, CLHEP::HepRandomEngine &engine, std::vector< double > &slope, std::vector< ChargeInfo_t > &totalQ)

explain where the 0.001 comes from

: the collection plane's characteristic hit width's are,

: on average, about 5 time samples wider than the induction plane's.

: this is hard-coded for now.

should it really be wire_pitch[0] in the if statements below, or the pitch for the plane of the hit?

Member cluster::HoughBaseAlg::Transform (detinfo::DetectorPropertiesData const &detProp, std::vector< art::Ptr< recob::Hit >> const &hits, double &slope, double &intercept)

could eventually refine this method to throw out hits that are

far from the hough line and refine the fit

Member cluster::LazyClusterParamsAlg::Width (util::GeometryUtilities const &) override
provide a description of the algorithm by words
Member cluster::LineMerger::EndpointCompatibility (float sclstartwire, float sclstarttime, float sclendwire, float sclendtime, float cl2startwire, float cl2starttime, float cl2endwire, float cl2endtime)
13.5 ticks/wire. need to make this detector agnostic–spitz
Member cluster::StandardClusterParamsAlg::Width (util::GeometryUtilities const &gser) override
provide a description of the algorithm by words
Class details::PointerToData_t< T >
Document this code and make it into a library
Member detinfo::DetectorTimings::startTick () const
The example is not even supported yet!
Member detinfo::LArPropertiesServiceStandard::LArPropertiesServiceStandard (Parameters const &params, art::ActivityRegistry &reg)
these values should eventually come from a database
Member detsim::DriftElectronstoPlane::produce (art::Event &evt) override

think about effects of drift between planes.

think about effects of drift between planes

Member detsim::SimDriftElectrons::produce (art::Event &evt) override

think about effects of drift between planes.

think about effects of drift between planes

check on what happens if we allow the tdc value to be

beyond the end of the expected number of ticks

Member detsim::WienerFilterAna::analyze (const art::Event &evt)
Need to change hardcoded values to an automatic determination of noise vs. signal
File electromagnetism.h
Also belong here: ampere, volt, farad, ohm...
File energy.h
Also belong here: joule, watt, eV/c, eV/c^2
Member evd::GraphCluster::produce (art::Event &evt)

This method appears to produce a recob::Cluster really as it is

a collection of 2D clusters from single planes

Member evd::RecoBaseDrawer::EndPoint2D (const art::Event &evt, evdb::View2D *view, unsigned int plane)
- have to verify that we are in the right TPC, but to do that we
Member evd::RecoBaseDrawer::Event3D (const art::Event &evt, evdb::View3D *view)
need a better way to grab the vertex module labels,
Member evd::RecoDrawingOptions::fCaloPSet
Why are calorimetry related drawing options in RecoDrawingOptions instead of a separate service?
Member evd::TQPad::BookHistogram ()
decide if ndivraw and ndivreco are useful
Member evd::TWireProjPad::Draw (const char *opt=0)
: Why is kSelectedColor hard coded?
Member evd::TWQProjectionView::SelectHit (int plane)
What the heck is this all about???
Member evgb::CRYHelper::Sample (simb::MCTruth &mctruth, double const &surfaceY, double const &detectorLength, double *w, double rantime=0)
Check if this time slice passes selection criteria
Member filter::MuonFilter::filter (art::Event &evt) override

: the delta wire numbers seem a bit magic,

: should also change to using Geometry::ChannelsIntersect method

Member geo::AuxDetGeometryCore::AuxDet (unsigned int const ad=0) const

what happens if it does not exist?

remove the default parameter?

Member geo::AuxDetGeometryCore::FindAuxDetAtPosition (Point_t const &worldLoc, double tolerance=0) const
replace with numeric_limits<>?
Member geo::AuxDetGeometryCore::NAuxDets () const

use a AutDetID_t instead of unsigned int?

Change return type to size_t

Member geo::AuxDetGeometryCore::PositionToAuxDet (Point_t const &worldLoc, unsigned int &ad, double tolerance=0) const
what happens if it does not exist?
Member geo::AuxDetGeometryCore::PositionToAuxDetSensitive (Point_t const &worldLoc, size_t &ad, size_t &sv, double tolerance=0) const
what happens if it does not exist?
Member geo::GeometryCore::AuxDet (unsigned int const ad=0) const

what happens if it does not exist?

remove the default parameter?

Member geo::GeometryCore::ChannelsIntersect (raw::ChannelID_t c1, raw::ChannelID_t c2, double &y, double &z) const

what happens for channels from different TPCs?

what happens for channels with multiple intersection points?

Member geo::GeometryCore::cryostat_zero
Make the cryostat number mandatory (as CryostatID)
Member geo::GeometryCore::DefaultWiggle () const
Confirm the definition of wiggle: this one is taken from other doc
Member geo::GeometryCore::DetHalfHeight (TPCID const &tpcid=tpc_zero) const

deprecate this function

rename the function

Member geo::GeometryCore::DetHalfWidth (TPCID const &tpcid=tpc_zero) const

deprecate this function

rename the function

Member geo::GeometryCore::DetLength (TPCID const &tpcid=tpc_zero) const

deprecate this function

rename the function

Member geo::GeometryCore::GetCryostatVolumeName (CryostatID const &cid) const

Use a cryostat ID instead

What if it does not exist?

Member geo::GeometryCore::GetLArTPCVolumeName (TPCID const &tpcid=tpc_zero) const
What if it does not exist?
Member geo::GeometryCore::NAuxDets () const

use a AutDetID_t instead of unsigned int?

Change return type to size_t

Change return type to size_t

Change return type to size_t

Change return type to size_t

Member geo::GeometryCore::Ncryostats () const
Change return type to size_t
Member geo::GeometryCore::NOpChannels () const
add explanation of the different IDs
Member geo::GeometryCore::Nplanes (TPCID const &tpcid=tpc_zero) const
Change return type to size_t
Member geo::GeometryCore::NTPC (CryostatID const &cryoid=cryostat_zero) const
Change return type to size_t
Member geo::GeometryCore::Nviews () const
Change return type to size_t
Member geo::GeometryCore::Nwires (PlaneID const &planeid) const
Change return type to size_t
Member geo::GeometryCore::OpDetGeoName (CryostatID const &cid=cryostat_zero) const
Change to use CryostatID
Member geo::GeometryCore::plane_zero

add a version with wire IDs

deprecate this function

document what will happen (in the future methods) with wires on different planes

Member geo::GeometryCore::PlanePitch (TPCID const &tpcid, PlaneID::PlaneID_t p1=0, PlaneID::PlaneID_t p2=1) const

add a version with plane IDs

deprecate this function

add a default version for a given TPCID

add a version with two plane indices for a given TPCID

return the absolute value of the distance (makes the order unimportant)

document what will happen (in the future methods) with planes on different TPCs

Member geo::GeometryCore::PlaneWireToChannel (WireID const &wireid) const
Verify the raw::InvalidChannelID part
Member geo::GeometryCore::PositionToAuxDet (Point_t const &point, unsigned int &ad, double tolerance=0) const
what happens if it does not exist?
Member geo::GeometryCore::PositionToAuxDetSensitive (Point_t const &point, size_t &ad, size_t &sv, double tolerance=0) const
what happens if it does not exist?
Member geo::GeometryCore::SignalType (PlaneID const &pid) const
verify that kMysteryType is returned on invalid plane
Member geo::GeometryCore::SignalType (raw::ChannelID_t const channel) const
verify that kMysteryType is returned on invalid channel
Member geo::GeometryCore::SurfaceY () const
check that this is actually how it is used
Member geo::GeometryCore::VolumeName (Point_t const &point) const

what happens if none?

Unify the coordinates type

Member geo::PlaneGeo::NearestWireID (geo::Point_t const &pos) const
When the ID is out of range, instead of throwing an exception, return an invalid wire ID with the wire number set to the non-existing wire which would be the nearest to pos.
Member geo::PlaneGeo::WidthDepthProjection_t
the following should be a PositionVector2D
Class geo::vect::CoordConstIterator< Vector >
Not fully unit-tested yet!
Member geo::WireID::planeID () const
Remove the instances of geo::WireID::planeID() in the code
File HelpMenu.cxx
This needs a lot of work if it is to actually provide help...
Member hit::DisambigCheater::InitHitToWids (detinfo::DetectorClocksData const &clockData, const std::vector< art::Ptr< recob::Hit >> &ChHits)

: Why would an IDE xyz position be outside of a TPC?

: Why would an IDE ossociated with a hit return a nearest wire not on the hit's channel? Usually only one off.

Member hit::DisambigCheater::produce (art::Event &e) override
: Decide how to handle the hits with multiple-wid activity. For now, randomly choose.
Member hit::FFTHitFinder::produce (art::Event &evt) override

- just get the integral from the fit for totSig

need to have a disambiguation algorithm somewhere in here

- multiplicity and local_index have to be determined

Member lar::double_fwd_const_iterator
write documentation about how to use it
Class lar::sparse_vector< T >
backward iteration; reverse iterators; iterator on non-void elements only; iterator on non-void elements only, returning a pair (index;value)
Member lar::util::TrackProjectedLength (recob::Track const &track, geo::View_t view)

CAREFUL: using view to determine projected length does not work for DUNE. Need to think more about this.

is this right, or should it be dist*cosgamma???

is this right, or should it be dist*cosgamma???

Member lar::util::ValueInRange (double value, double min, double max)

Use wiggle instead of 10^-6

resort source code for a bit of speed up

Member larg4::G4BadIdeaAction::SteppingAction (const G4Step *)

Do not copy the code below. Contact Brian Rebel, Eric Church,

Bill Seligman and Andrzej Szelc for reasons why not to!

Member larg4::LArVoxelReadout::DriftIonizationElectrons (detinfo::DetectorClocksData const &clockData, G4ThreeVector stepMidPoint, const double simTime, int trackID, unsigned short int cryostat, unsigned short int tpc, int origTrackID)

think about effects of drift between planes

think about effects of drift between planes

check on what happens if we allow the tdc value to be

beyond the end of the expected number of ticks

Class proxy::details::OneTo01Data< Main, Aux, Metadata, Tag >
Metadata for proxy::details::OneTo01Data is not supported yet.
Member proxy::withZeroOrOneMeta (Args &&...args)
Metadata is not supported yet (the interface is apparently there though).
Member proxy::withZeroOrOneMetaAs (Args &&...args)
Metadata is not supported yet.
File RawDataDrawer.cxx
There are probably a number of glitches and shortcuts in the current preprocessing implementation. If they become a problem, they can probably be fixed on demand. Examples include:
  • no alignment of the boxes with the wire and tick numbers
  • possible border effects
  • the fact that only the maximum charge is displayed on each box , and no dynamic charge range detection is in place
  • the first drawing is performed with a grid that is not the final one (because for some reason the frame starts larger than it should and is resized later)
  • the drawing honours the zoom region the user selected, even if the viewport ends up being larger (that is, if upstream decides that the zoom region is too small and a larger area will be drawn, the additional area will be blank)
Member shwf::ShowerCheater::produce (art::Event &evt) override
figure out the max transverse width of the shower in the x and y directions
Member shwf::ShowerFinder::produce (art::Event &evt)

This method appears to produce a recob::Cluster really as it is

a collection of 2D clusters from single planes

NEED TO TAKE OUT THE HOUGH LINES FROM THE PROTOSHOWERS!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

check if protoshower from further vertex is also contained in vertex nearer...

Member shwf::ShowerReco::beginJob ()
the call to geo->Nplanes() assumes this is a single cryostat and single TPC detector; need to generalize to multiple cryostats and TPCs
Member shwf::ShowerReco::produce (art::Event &evt)
really need to determine the values of the arguments of the recob::Shower ctor
File StatusBar.h
Currently unimplemented...
Member trkf::SpacePointAlg::makeSpacePoints (detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const art::PtrVector< recob::Hit > &hits, std::vector< recob::SpacePoint > &spts, bool useMC) const

Why are we still checking on whether this is MC or not?

Such checks should not be in reconstruction code.

Member trkf::SpacePts::produce (art::Event &evt)
really should fill the direction cosines with unique values
Member trkf::Track3DKalman::produce (art::Event &evt) override
: remove this statement, there is no place for checks on isRealData in reconstruction code
Member trkf::Track3DKalmanSPS::produce (art::Event &evt)

Should never test whether the event is real data in reconstruction algorithms

as that introduces potential data/MC differences that are very hard to track down

Remove this test as soon as possible please

Should never test whether the event is real data in reconstruction algorithms

as that introduces potential data/MC differences that are very hard to track down

Remove this test as soon as possible please

Member trkf::Track3Dreco::produce (art::Event &evt) override
: This is very bad practice and should be changed ASAP
Member util::GeometryUtilities::Get2DPointProjection (geo::Point_t const &xyz, unsigned int plane) const
: this should use the cryostat and tpc as well in the NearestWire method
Member util::GeometryUtilities::Get2DPointProjectionCM (double const *xyz, unsigned int plane) const
: this should use the cryostat and tpc as well in the NearestWire method
Member util::GeometryUtilities::Get2DPointProjectionCM (std::vector< double > const &xyz, unsigned int plane) const
: this should use the cryostat and tpc as well in the NearestWire method
Member util::GeometryUtilities::PitchInView (unsigned int plane, double phi, double theta) const

switch to using new Geometry::WireAngleToVertical(geo::View_t)

and Geometry::WirePitch(geo::View_t) methods

Member vertex::PrimaryVertexFinder::produce (art::Event &evt)
replace with the real query when this module is updated to look for showers too
Member vertex::VertexFinder2D::produce (art::Event &evt) override

should really get the actual vector of hits corresponding to end point

for now will get all hits from the current cluster

need to actually make tracks and showers to go into 3D vertex

currently just passing empty collections to the ctor