25 WriteMsg(
const char* fcn)
51 std::vector<util::PxLine> seedlines,
57 std::map<int, std::vector<art::Ptr<recob::Hit>>> hits_to_save;
59 double KineticEnergy = 0;
62 for (
size_t imod = 0; imod < recoOpt->
fHitLabels.size(); ++imod) {
69 it != hits_to_save.end();
103 std::vector<art::Ptr<recob::Hit>> hits_to_save;
114 double x = xin * gser.WireToCm();
115 double x1 = x1in * gser.WireToCm();
116 double y = yin * gser.TimeToCm();
117 double y1 = y1in * gser.TimeToCm();
121 if ((x - x1) != 0) lslope = (y - y1) / (x - x1);
123 for (
size_t imod = 0; imod < recoOpt->
fHitLabels.size(); ++imod) {
126 std::vector<art::Ptr<recob::Hit>> hitlist;
130 for (
unsigned int ii = 0; ii < HitListHandle->size(); ++ii) {
132 if (hit->
WireID().
Plane == plane) hitlist.push_back(hit);
137 std::vector<util::PxHit> pxhitlist;
139 std::vector<unsigned int> pxhitlist_local_index;
140 std::vector<util::PxHit> pxhitlist_local;
141 pxhitlist_local.clear();
144 startHit.
plane = pxhitlist.at(0).plane;
145 startHit.
w = (x +
x1) / 2;
146 startHit.
t = (y + y1) / 2;
148 double orttemp =
std::hypot(y1 - y, x1 - x) / 2;
150 gser.SelectLocalHitlistIndex(
151 pxhitlist, pxhitlist_local_index, startHit, orttemp, distance, lslope);
153 for (
unsigned int idx = 0; idx < pxhitlist_local_index.size(); idx++) {
154 hits_to_save.push_back(hitlist.at(pxhitlist_local_index.at(idx)));
155 pxhitlist_local.push_back(pxhitlist.at(pxhitlist_local_index.at(idx)));
158 auto const hit_index = gser.FindClosestHitIndex(pxhitlist_local, x, y);
197 std::vector<art::Ptr<recob::Hit>> hits_saved;
198 std::vector<art::Ptr<recob::Hit>> hitlist;
200 double x = xin * gser.WireToCm();
201 double y = yin * gser.TimeToCm();
205 for (
size_t imod = 0; imod < recoOpt->
fHitLabels.size(); ++imod) {
209 for (
unsigned int ii = 0; ii < HitListHandle->size(); ++ii) {
211 if (hit->
WireID().
Plane == plane) hitlist.push_back(hit);
215 std::vector<util::PxHit> pxhitlist;
218 unsigned int hitindex = gser.FindClosestHitIndex(pxhitlist, x, y);
219 if (hitlist[hitindex].isNull() || (hitindex > hitlist.size())) {
220 WriteMsg(
"no luck finding hit in evd, please try again");
227 for (
unsigned int jj = 0; jj < hits_saved.size(); ++jj) {
228 if (hitlist[hitindex]->PeakTime() == hits_saved[jj]->PeakTime()) {
229 if (hitlist[hitindex]->Channel() == hits_saved[jj]->Channel()) {
231 hits_saved.erase(hits_saved.begin() + jj);
237 if (found_it != 1) { hits_saved.push_back(hitlist[hitindex]); }
254 std::vector<art::Ptr<recob::Hit>>
261 std::vector<const recob::Hit*>
264 std::vector<art::Ptr<recob::Hit>> hits_saved;
265 std::vector<const recob::Hit*> hits_to_draw;
270 for (
unsigned int i = 0; i < hits_saved.size(); i++)
271 hits_to_draw.push_back(hits_saved[i].get());
285 std::vector<recob::Seed>&
void SetTestFlag(int value)
MaybeLogger_< ELseverityLevel::ELsev_info, true > LogVerbatim
std::vector< art::Ptr< recob::Hit > > GetSelectedHitPtrs(unsigned int plane)
void SaveHits(const art::Event &evt, unsigned int plane, double x, double y, double x1, double y1, double distance, bool good_plane=true)
void ClearSelectedHitList(int plane)
geo::WireID WireID() const
WireID_t Wire
Index of the wire within its plane.
void SetStartHitCoords(unsigned int plane, std::vector< double > starthitin)
art framework interface to geometry description
std::enable_if_t< std::is_arithmetic_v< T >, T > hypot(T x, T y)
std::vector< std::vector< double > > starthitout
void GeneratePxHit(const std::vector< unsigned int > &hit_index, const std::vector< art::Ptr< recob::Hit >> hits, std::vector< PxHit > &pxhits) const
Generate: from 1 set of hits => 1 set of PxHits using indexes (association)
bool getByLabel(std::string const &label, std::string const &instance, Handle< PROD > &result) const
void ClearHitList(unsigned int plane)
Class to perform operations needed to select hits and pass them to a cluster.
void SetHitList(unsigned int p, std::vector< art::Ptr< recob::Hit > > hits_to_save)
std::vector< const recob::Hit * > GetSelectedHits(unsigned int plane)
double distance(double x1, double y1, double z1, double x2, double y2, double z2)
PlaneID_t Plane
Index of the plane within its TPC.
std::vector< recob::Seed > fSeedVector
Detector simulation of raw signals on wires.
void ChangeHit(const art::Event &evt, unsigned int plane, double x, double y)
void SetEvtNumber(int value)
float PeakTime() const
Time of the signal peak, in tick units.
std::vector< art::Ptr< recob::Hit > > GetSelectedHitList(unsigned int plane)
void SetSeedList(std::vector< util::PxLine > seedlines)
EventNumber_t event() const
void SetEndHitCoords(unsigned int plane, std::vector< double > endhitin)
double SaveSeedLines(const art::Event &evt, std::vector< util::PxLine > seedline, double distance)
2D representation of charge deposited in the TDC/wire plane
std::vector< art::InputTag > fHitLabels
module labels that produced hits
std::vector< std::vector< double > > endhitout
LArSoft geometry interface.
std::vector< recob::Seed > & SeedVector()