10 #include "art/Utilities/ToolMacros.h"
17 namespace ShowerRecoTools {
44 , fVerbose(pset.
get<int>(
"Verbose"))
45 , fUsePandoraVertex(pset.
get<
bool>(
"UsePandoraVertex"))
46 , fInitialTrackSpacePointsInputLabel(pset.
get<
std::string>(
"InitialTrackSpacePointsInputLabel"))
47 , fShowerStartPositionInputLabel(pset.
get<
std::string>(
"ShowerStartPositionInputLabel"))
48 , fInitialTrackInputLabel(pset.
get<
std::string>(
"InitialTrackInputLabel"))
49 , fShowerDirectionOutputLabel(pset.
get<
std::string>(
"ShowerDirectionOutputLabel"))
54 const art::Ptr<recob::PFParticle>& pfparticle,
62 mf::LogError(
"ShowerTrackSpacePointDirection")
63 <<
"Initial track spacepoints not set" << std::endl;
70 mf::LogError(
"ShowerTrackSpacePointDirection")
71 <<
"Start position not set, returning " << std::endl;
76 TVector3 StartPosition = {-999, -999, -999};
84 mf::LogError(
"ShowerTrackSpacePointDirection") <<
"Initial track not set" << std::endl;
90 StartPosition = {Start_point.X(), Start_point.Y(), Start_point.Z()};
94 std::vector<art::Ptr<recob::SpacePoint>> intitaltrack_sp;
98 float sumX = 0, sumX2 = 0;
99 float sumY = 0, sumY2 = 0;
100 float sumZ = 0, sumZ2 = 0;
103 for (
auto const& sp : intitaltrack_sp) {
107 if (pos.Mag() == 0) {
continue; }
110 sumX2 += pos.X() * pos.X();
112 sumY2 += pos.Y() * pos.Y();
114 sumZ2 += pos.Z() * pos.Z();
117 float NumSps = intitaltrack_sp.size();
118 TVector3 Mean = {sumX / NumSps, sumY / NumSps, sumZ / NumSps};
124 if (sumX2 / NumSps - ((sumX / NumSps) * ((sumX / NumSps))) > 0) {
125 RMSX = std::sqrt(sumX2 / NumSps - ((sumX / NumSps) * ((sumX / NumSps))));
127 if (sumY2 / NumSps - ((sumY / NumSps) * ((sumY / NumSps))) > 0) {
128 RMSY = std::sqrt(sumY2 / NumSps - ((sumY / NumSps) * ((sumY / NumSps))));
130 if (sumZ2 / NumSps - ((sumZ / NumSps) * ((sumZ / NumSps))) > 0) {
131 RMSZ = std::sqrt(sumZ2 / NumSps - ((sumZ / NumSps) * ((sumZ / NumSps))));
135 TVector3 Direction_Mean = {0, 0, 0};
137 for (
auto const sp : intitaltrack_sp) {
140 if ((
std::abs((Direction - Mean).
X()) < 1 * RMSX) &&
141 (
std::abs((Direction - Mean).Y()) < 1 * RMSY) &&
142 (
std::abs((Direction - Mean).Z()) < 1 * RMSZ)) {
143 if (Direction.Mag() == 0) {
continue; }
145 Direction_Mean += Direction;
151 TVector3 Direction = Direction_Mean.Unit();
156 mf::LogError(
"ShowerTrackSpacePointDirection")
157 <<
"None of the points are within 1 sigma" << std::endl;
double std(const std::vector< short > &wf, const double ped_mean, size_t start, size_t nsample)
void SetElement(T &dataproduct, const std::string &Name, bool checktag=false)
then echo echo For and will not be changed by echo further linking echo echo B echo The symbol is in the uninitialized data multiple common symbols may appear with the echo same name If the symbol is defined the common echo symbols are treated as undefined references For more echo details on common see the discussion of warn common echo in *Note Linker see the discussion of warn common echo in *Note Linker such as a global int variable echo as opposed to a large global array echo echo I echo The symbol is an indirect reference to another symbol This echo is a GNU extension to the a out object file format which is echo rarely used echo echo N echo The symbol is a debugging symbol echo echo R echo The symbol is in a read only data section echo echo S echo The symbol is in an uninitialized data section for small echo objects echo echo T echo The symbol is in the the normal defined echo symbol is used with no error When a weak undefined symbol echo is linked and the symbol is not the value of the echo weak symbol becomes zero with no error echo echo W echo The symbol is a weak symbol that has not been specifically echo tagged as a weak object symbol When a weak defined symbol echo is linked with a normal defined the normal defined echo symbol is used with no error When a weak undefined symbol echo is linked and the symbol is not the value of the echo weak symbol becomes zero with no error echo echo echo The symbol is a stabs symbol in an a out object file In echo this the next values printed are the stabs other echo the stabs desc and the stab type Stabs symbols are echo used to hold debugging information For more echo see *Note or object file format specific echo echo For Mac OS X
Point_t const & Start() const
Access to track position at different points.
bool CheckElement(const std::string &Name) const
int GetElement(const std::string &Name, T &Element) const
Provides recob::Track data product.
process_name largeant stream1 can override from command line with o or output physics producers generator N
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
Track from a non-cascading particle.A recob::Track consists of a recob::TrackTrajectory, plus additional members relevant for a "fitted" track:
TVector3 SpacePointPosition(art::Ptr< recob::SpacePoint > const &sp) const