Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
LArPandoraShowerAlg.h
Go to the documentation of this file.
1#ifndef LArPandoraShowerAlg_hxx
2#define LArPandoraShowerAlg_hxx
3
4namespace reco::shower {
5 class ShowerElementHolder;
6}
7
8namespace detinfo {
9 class DetectorClocksData;
10 class DetectorPropertiesData;
11}
12
13#include "larcore/Geometry/Geometry.h"
14
15namespace recob {
16 class Hit;
17 class PFParticle;
18 class SpacePoint;
19}
20
21namespace spacecharge {
22 class SpaceCharge;
23}
24
25#include "art/Framework/Principal/fwd.h"
26#include "art/Framework/Services/Registry/ServiceHandle.h"
27#include "art_root_io/TFileService.h"
28#include "canvas/Persistency/Common/FindManyP.h"
29#include "canvas/Persistency/Common/Ptr.h"
30#include "canvas/Utilities/InputTag.h"
31
32//C++ Includes
33#include <string>
34#include <vector>
35
36namespace shower {
38}
39
41public:
42 explicit LArPandoraShowerAlg(const fhicl::ParameterSet& pset);
43
44 void OrderShowerHits(detinfo::DetectorPropertiesData const& detProp,
45 std::vector<art::Ptr<recob::Hit>>& hits,
46 geo::Point_t const& ShowerPosition,
47 geo::Vector_t const& ShowerDirection) const;
48
49 void OrderShowerSpacePointsPerpendicular(std::vector<art::Ptr<recob::SpacePoint>>& showersps,
50 geo::Point_t const& vertex,
51 geo::Vector_t const& direction) const;
52
53 void OrderShowerSpacePoints(std::vector<art::Ptr<recob::SpacePoint>>& showersps,
54 geo::Point_t const& vertex,
55 geo::Vector_t const& direction) const;
56
57 void OrderShowerSpacePoints(std::vector<art::Ptr<recob::SpacePoint>>& showersps,
58 geo::Point_t const& vertex) const;
59
60 geo::Point_t ShowerCentre(std::vector<art::Ptr<recob::SpacePoint>> const& showersps) const;
61
62 geo::Point_t ShowerCentre(detinfo::DetectorClocksData const& clockData,
63 detinfo::DetectorPropertiesData const& detProp,
64 std::vector<art::Ptr<recob::SpacePoint>> const& showersps,
65 art::FindManyP<recob::Hit> const& fmh,
66 float& totalCharge) const;
67
68 geo::Point_t ShowerCentre(detinfo::DetectorClocksData const& clockData,
69 detinfo::DetectorPropertiesData const& detProp,
70 std::vector<art::Ptr<recob::SpacePoint>> const& showerspcs,
71 art::FindManyP<recob::Hit> const& fmh) const;
72
73 double DistanceBetweenSpacePoints(art::Ptr<recob::SpacePoint> const& sp_a,
74 art::Ptr<recob::SpacePoint> const& sp_b) const;
75
76 double SpacePointCharge(art::Ptr<recob::SpacePoint> const& sp,
77 art::FindManyP<recob::Hit> const& fmh) const;
78
79 double SpacePointTime(art::Ptr<recob::SpacePoint> const& sp,
80 art::FindManyP<recob::Hit> const& fmh) const;
81
82 TVector2 HitCoordinates(detinfo::DetectorPropertiesData const& detProp,
83 art::Ptr<recob::Hit> const& hit) const;
84
85 double SpacePointProjection(art::Ptr<recob::SpacePoint> const& sp,
86 geo::Point_t const& vertex,
87 geo::Vector_t const& direction) const;
88
89 double SpacePointPerpendicular(art::Ptr<recob::SpacePoint> const& sp,
90 geo::Point_t const& vertex,
91 geo::Vector_t const& direction) const;
92
93 double SpacePointPerpendicular(art::Ptr<recob::SpacePoint> const& sp,
94 geo::Point_t const& vertex,
95 geo::Vector_t const& direction,
96 double proj) const;
97
98 double RMSShowerGradient(std::vector<art::Ptr<recob::SpacePoint>>& sps,
99 const geo::Point_t& ShowerCentre,
100 const geo::Vector_t& Direction,
101 const unsigned int nSegments) const;
102
103 double CalculateRMS(const std::vector<float>& perps) const;
104
105 // The SCE service requires thing in geo::Point/Vector form, so overload and be nice
106 double SCECorrectPitch(double const& pitch,
107 geo::Point_t const& pos,
108 geo::Vector_t const& dir,
109 unsigned int const& TPC) const;
110
111 double SCECorrectEField(double const& EField, geo::Point_t const& pos) const;
112
113 std::map<art::Ptr<recob::Hit>, std::vector<art::Ptr<recob::Hit>>> OrganizeHits(
114 const std::vector<art::Ptr<recob::Hit>>& hits) const;
115
116 void DebugEVD(art::Ptr<recob::PFParticle> const& pfparticle,
117 art::Event const& Event,
118 const reco::shower::ShowerElementHolder& ShowerEleHolder,
119 std::string const& evd_disp_name_append = "") const;
120
121private:
123 art::InputTag fPFParticleLabel;
124 bool fSCEXFlip; // If a (legacy) flip is needed in x componant of spatial SCE correction
125
126 spacecharge::SpaceCharge const* fSCE;
127 art::ServiceHandle<geo::Geometry const> fGeom;
128 art::ServiceHandle<art::TFileService> tfs;
129
130 const std::string fInitialTrackInputLabel;
132 const std::string fShowerDirectionInputLabel;
134};
135
136#endif
art::ServiceHandle< geo::Geometry const > fGeom
const std::string fShowerStartPositionInputLabel
void OrderShowerSpacePoints(std::vector< art::Ptr< recob::SpacePoint > > &showersps, geo::Point_t const &vertex, geo::Vector_t const &direction) const
void OrderShowerSpacePointsPerpendicular(std::vector< art::Ptr< recob::SpacePoint > > &showersps, geo::Point_t const &vertex, geo::Vector_t const &direction) const
double SpacePointCharge(art::Ptr< recob::SpacePoint > const &sp, art::FindManyP< recob::Hit > const &fmh) const
const std::string fShowerDirectionInputLabel
double SCECorrectPitch(double const &pitch, geo::Point_t const &pos, geo::Vector_t const &dir, unsigned int const &TPC) const
geo::Point_t ShowerCentre(std::vector< art::Ptr< recob::SpacePoint > > const &showersps) const
const std::string fInitialTrackSpacePointsInputLabel
double SpacePointTime(art::Ptr< recob::SpacePoint > const &sp, art::FindManyP< recob::Hit > const &fmh) const
const std::string fInitialTrackInputLabel
TVector2 HitCoordinates(detinfo::DetectorPropertiesData const &detProp, art::Ptr< recob::Hit > const &hit) const
double SpacePointPerpendicular(art::Ptr< recob::SpacePoint > const &sp, geo::Point_t const &vertex, geo::Vector_t const &direction) const
double DistanceBetweenSpacePoints(art::Ptr< recob::SpacePoint > const &sp_a, art::Ptr< recob::SpacePoint > const &sp_b) const
void DebugEVD(art::Ptr< recob::PFParticle > const &pfparticle, art::Event const &Event, const reco::shower::ShowerElementHolder &ShowerEleHolder, std::string const &evd_disp_name_append="") const
double RMSShowerGradient(std::vector< art::Ptr< recob::SpacePoint > > &sps, const geo::Point_t &ShowerCentre, const geo::Vector_t &Direction, const unsigned int nSegments) const
void OrderShowerHits(detinfo::DetectorPropertiesData const &detProp, std::vector< art::Ptr< recob::Hit > > &hits, geo::Point_t const &ShowerPosition, geo::Vector_t const &ShowerDirection) const
spacecharge::SpaceCharge const * fSCE
art::ServiceHandle< art::TFileService > tfs
double SCECorrectEField(double const &EField, geo::Point_t const &pos) const
double SpacePointProjection(art::Ptr< recob::SpacePoint > const &sp, geo::Point_t const &vertex, geo::Vector_t const &direction) const
std::map< art::Ptr< recob::Hit >, std::vector< art::Ptr< recob::Hit > > > OrganizeHits(const std::vector< art::Ptr< recob::Hit > > &hits) const
double CalculateRMS(const std::vector< float > &perps) const