81 if (
evt.isRealData())
return;
96 std::unordered_map<int,double> trkide;
104 if(!showerListHandle.
isValid()){
105 std::cerr <<
"Shower handle is not valid!" <<
std::endl;
110 std::cerr <<
"Hit handle is not valid!" <<
std::endl;
114 auto const& showerList(*showerListHandle);
118 for(
size_t i_t=0; i_t<showerList.size(); ++i_t){
123 std::vector< art::Ptr<recob::Hit> > allHits = fmtht.at(i_t);
125 std::vector<anab::BackTrackerHitMatchingData const*> bthmd_vec;
126 std::vector< art::Ptr<simb::MCParticle> > matchedParticlePtrs;
128 art::FindManyP<simb::MCParticle,anab::BackTrackerHitMatchingData>
131 for(
size_t i_h=0; i_h<allHits.size(); ++i_h){
132 bthmd_vec.clear(); matchedParticlePtrs.clear();
133 particles_per_hit.get(allHits[i_h].
key(),matchedParticlePtrs,bthmd_vec);
135 for(
size_t i_p=0; i_p<matchedParticlePtrs.size(); ++i_p){
136 trkide[ matchedParticlePtrs[i_p]->TrackId() ] += bthmd_vec[i_p]->energy;
137 tote += bthmd_vec[i_p]->energy;
138 if( trkide[ matchedParticlePtrs[i_p]->TrackId() ] > maxe ){
139 maxe = trkide[ matchedParticlePtrs[i_p]->TrackId() ];
140 maxp = matchedParticlePtrs[i_p];
148 MCPartShowerassn->addSingle(shwPtr, maxp, btdata);
art::InputTag fHitModuleLabel
bool isValid() const noexcept
art::InputTag fShowerHitAssnLabel
art::InputTag fHitParticleAssnLabel
art::InputTag fShowerModuleLabel
QTextStream & endl(QTextStream &s)