96 produces<std::vector<recob::Shower> >();
97 produces<art::Assns<recob::Shower, recob::Hit> >();
98 produces<art::Assns<recob::Slice, recob::Shower> >();
104 std::unique_ptr<std::vector<recob::Shower> > showers(
new std::vector<recob::Shower>);
110 std::vector<art::Ptr<recob::Slice> > slicelist;
114 int foundShower = -1;
116 if (slicelist.size()) {
117 for (
size_t i = 0; i < slicelist.size(); ++i) {
118 std::cout <<
"---------- slice " << i <<
" ----------" << std::endl;
123 std::cout <<
"FOUND SHOWER " << foundShower << std::endl;
127 showers->back().set_id(showers->size()-1);
130 util::CreateAssn(*
this, evt, *showers, slicelist[i], *sliceShowerAssociations );
140 showers->back().set_id(showers->size()-1);
148 evt.
put(std::move(showers));
149 evt.
put(std::move(hitShowerAssociations));
150 evt.
put(std::move(sliceShowerAssociations));
181 std::vector<art::Ptr<recob::Hit> > hitlist;
182 std::vector<art::Ptr<recob::Cluster> > clusterlist;
183 std::vector<art::Ptr<recob::Vertex> > vertexlist;
184 std::vector<art::Ptr<recob::EndPoint2D> > vx2list;
187 hitlist = hitslice_fm.at(thisslice.
key());
190 clusterlist = clsslice_fm.at(thisslice.
key());
192 std::vector<art::Ptr<recob::PFParticle> > pfplist = pfpslice_fm.at(thisslice.
key());
194 for (
size_t i = 0; i < pfplist.size(); ++i) {
196 std::vector<art::Ptr<recob::Vertex> > thisvtxlist = vtxpfp_fm.at(pfplist[i].key());
198 for (
size_t j = 0; j < thisvtxlist.size(); ++j) {
199 vertexlist.push_back(thisvtxlist[j]);
212 return fTCAlg.
makeShowers(pfplist, vertexlist, clusterlist, hitlist, cls_fm, clspfp_fm, vtxpfp_fm, hit_fm, hitcls_fm, trkpfp_fm, fmcal);
221 std::vector<art::Ptr<recob::PFParticle> > pfplist;
226 std::vector<art::Ptr<recob::Hit> > hitlist;
231 std::vector<art::Ptr<recob::Cluster> > clusterlist;
236 std::vector<art::Ptr<recob::Vertex> > vertexlist;
253 return fTCAlg.
makeShowers(pfplist, vertexlist, clusterlist, hitlist, cls_fm, clspfp_fm, vtxpfp_fm, hit_fm, hitcls_fm, trkpfp_fm, fmcal);
shower::TCShowerAlg fTCAlg
std::vector< double > totalEnergyErr
int getShowersWithoutSlices(art::Event &evt)
std::vector< double > dEdx
Declaration of signal hit object.
std::string fVertexModuleLabel
std::vector< art::Ptr< recob::Hit > > showerHits
TCShower(fhicl::ParameterSet const &p)
std::string fSliceModuleLabel
TCShower & operator=(TCShower const &)=delete
std::string fTrackModuleLabel
ProductID put(std::unique_ptr< PROD > &&product)
#define DEFINE_ART_MODULE(klass)
Provides recob::Track data product.
void produce(art::Event &e) override
std::string fHitModuleLabel
std::string fClusterModuleLabel
bool CreateAssn(PRODUCER const &prod, art::Event &evt, std::vector< T > const &a, art::Ptr< U > const &b, art::Assns< U, T > &assn, std::string a_instance, size_t indx=UINT_MAX)
Creates a single one-to-one association.
Declaration of cluster object.
Utility object to perform functions of association.
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
std::string fCalorimetryModuleLabel
std::vector< double > totalEnergy
int makeShowers(std::vector< art::Ptr< recob::PFParticle > > pfplist, std::vector< art::Ptr< recob::Vertex > > vertexlist, std::vector< art::Ptr< recob::Cluster > > clusterlist, std::vector< art::Ptr< recob::Hit > > hitlist, art::FindManyP< recob::Hit > cls_fm, art::FindManyP< recob::Cluster > clspfp_fm, art::FindManyP< recob::Vertex > vtxpfp_fm, art::FindManyP< recob::PFParticle > hit_fm, art::FindManyP< recob::Cluster > hitcls_fm, art::FindManyP< recob::Track > trkpfp_fm, art::FindManyP< anab::Calorimetry > fmcal)
void fill_ptr_vector(std::vector< Ptr< T >> &ptrs, H const &h)
std::vector< double > dEdxErr
art framework interface to geometry description
int getShowersWithSlices(art::Event &evt, art::Ptr< recob::Slice > thisslice)