diff --git a/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.cc b/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.cc index 1abf5cc7f..eb9a3b810 100644 --- a/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.cc +++ b/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.cc @@ -357,18 +357,32 @@ namespace blip { if (evt.getByLabel(fGeantProducer,pHandle)) art::fill_ptr_vector(plist, pHandle); - // -- SimEnergyDeposits - art::Handle > sedHandle; - std::vector > sedlist; - if (evt.getByLabel(fSimDepProducer,sedHandle)){ - art::fill_ptr_vector(sedlist, sedHandle); - } - + // -- SimEnergyDeposits (usually dropped in reco + //art::Handle > sedHandle; + std::vector sedlist; + //if (evt.getByLabel(fSimDepProducer,sedHandle)){ + // art::fill_ptr_vector(sedlist, sedHandle); + // } // -- SimChannels (usually dropped in reco) art::Handle > simchanHandle; std::vector > simchanlist; - if (evt.getByLabel(fSimChanProducer,simchanHandle)) + if (evt.getByLabel(fSimChanProducer,simchanHandle)) + { art::fill_ptr_vector(simchanlist, simchanHandle); + //Loop over channels to get full sedlist + for(int chIndex=0; chIndex wids = wireReadoutGeom->Get().ChannelToWire( (*(simchanlist[chIndex])).Channel() ); //Not sure why this is a vector, but it should have len 1 + const geo::PlaneID& planeID = wids[0].planeID(); + if(int(planeID.Plane) != fCaloPlane) continue; //only take calorimetry plane IDE values + std::vector< sim::IDE > TempChIDE = (*simchanlist[chIndex]).TrackIDsAndEnergies(0, 999999999); + for(int ideIndex=0; ideIndex > hitHandle; diff --git a/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.h b/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.h index 4ba2e61ad..59d125999 100644 --- a/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.h +++ b/sbndcode/BlipRecoSBND/Alg/BlipRecoAlg.h @@ -36,6 +36,7 @@ #include "lardataobj/AnalysisBase/BackTrackerMatchingData.h" #include "larsim/MCCheater/ParticleInventoryService.h" #include "larcore/Geometry/Geometry.h" +#include "larcorealg/Geometry/WireReadoutGeom.h" #include "larcorealg/Geometry/GeometryCore.h" #include "larreco/Calorimetry/CalorimetryAlg.h" #include "art/Framework/Principal/Event.h" @@ -117,6 +118,7 @@ namespace blip { float kDriftVelocity; float kTickPeriod; int kNumChannels; + int fCaloPlane; private: @@ -172,7 +174,7 @@ namespace blip { bool fKeepAllClusts[kNplanes]; // --- Calorimetry configs --- - int fCaloPlane; + //int fCaloPlane; float fCalodEdx; float fESTAR_p0; float fESTAR_p1; diff --git a/sbndcode/BlipRecoSBND/BlipRecoProducer_module.cc b/sbndcode/BlipRecoSBND/BlipRecoProducer_module.cc index f7f366b9a..962367af5 100644 --- a/sbndcode/BlipRecoSBND/BlipRecoProducer_module.cc +++ b/sbndcode/BlipRecoSBND/BlipRecoProducer_module.cc @@ -88,6 +88,7 @@ BlipRecoProducer::BlipRecoProducer(fhicl::ParameterSet const & pset) produces< std::vector< recob::SpacePoint > >(); produces< art::Assns < recob::Hit, recob::SpacePoint> >(); produces< std::vector< blip::Blip > >(); + produces< std::vector >(); //produces< art::Assns < blip::Blip, recob::SpacePoint > >(); produces< art::Assns < blip::Blip, recob::Hit> >(); @@ -124,6 +125,7 @@ void BlipRecoProducer::produce(art::Event & evt) std::unique_ptr< art::Assns > assn_blip_hit_v(std::make_unique >() ); std::unique_ptr< std::vector< recob::SpacePoint> > SpacePoint_v(std::make_unique>()); std::unique_ptr< art::Assns > assn_hit_sps_v(std::make_unique>() ); + std::unique_ptr< std::vector< blip::HitClust> > collection_hitclust(std::make_unique>()); art::PtrMaker makeBlipPtr(evt); @@ -180,6 +182,12 @@ void BlipRecoProducer::produce(art::Event & evt) } } + //adding all the collection hit clusters + for(int iclust=0; iclusthitclust.size()); iclust++) + { + if( (fBlipAlg->hitclust)[iclust].Plane != fBlipAlg->fCaloPlane) continue; + collection_hitclust->push_back((fBlipAlg->hitclust)[iclust]); + } //=========================================== // Put them on the event @@ -189,6 +197,7 @@ void BlipRecoProducer::produce(art::Event & evt) evt.put(std::move(blip_v)); //evt.put(std::move(assn_blip_sps_v)); evt.put(std::move(assn_blip_hit_v)); + evt.put(std::move(collection_hitclust)); }//END EVENT LOOP DEFINE_ART_MODULE(BlipRecoProducer) diff --git a/sbndcode/BlipRecoSBND/Utils/BlipUtils.cc b/sbndcode/BlipRecoSBND/Utils/BlipUtils.cc index 1b1e674f0..e1b8b1b48 100644 --- a/sbndcode/BlipRecoSBND/Utils/BlipUtils.cc +++ b/sbndcode/BlipRecoSBND/Utils/BlipUtils.cc @@ -61,12 +61,11 @@ namespace BlipUtils { pinfo.depEnergy = 0; pinfo.depElectrons = 0; for(auto& sed : sedvec ) { - if( sed->TrackID() == part.TrackId() ) { - pinfo.depEnergy += sed->Energy(); - pinfo.depElectrons += sed->NumElectrons(); + if( -1*sed.trackID == part.TrackId() || sed.trackID == part.TrackId() ) { + pinfo.depEnergy += sed.energy; + pinfo.depElectrons += sed.numElectrons; } } - return; } @@ -86,7 +85,7 @@ namespace BlipUtils { //std::cout<<"Making true blip for "<> SEDVec_t; +typedef std::vector SEDVec_t; geo::View_t kViews[3]={geo::kU, geo::kV, geo::kW}; diff --git a/sbndcode/BlipRecoSBND/Utils/classes_def.xml b/sbndcode/BlipRecoSBND/Utils/classes_def.xml index c5492251c..f737c0046 100644 --- a/sbndcode/BlipRecoSBND/Utils/classes_def.xml +++ b/sbndcode/BlipRecoSBND/Utils/classes_def.xml @@ -3,6 +3,8 @@ + + diff --git a/sbndcode/BlipRecoSBND/blipreco_configs.fcl b/sbndcode/BlipRecoSBND/blipreco_configs.fcl index 48de2f0ee..16e0b6fcd 100644 --- a/sbndcode/BlipRecoSBND/blipreco_configs.fcl +++ b/sbndcode/BlipRecoSBND/blipreco_configs.fcl @@ -9,7 +9,7 @@ sbnd_blipalg: TrkProducer: "pandoraTrack" #// input recob::Tracks to use for blip reconstruction GeantProducer: "largeant" #// input sim::MCParticles (getting true particle info) SimEDepProducer: "ionandscint" #// input sim::SimEnergyDeposits (getting energy/electrons deposited) - SimChanProducer: "simdrift" #// label for sim::SimChannels (getting drifted charge; optional) + SimChanProducer: "simtpc2d:simpleSC:DetSim" #// label for sim::SimChannels (getting drifted charge; optional) MaxHitTrkLength: 5.0 #// hits in trks > this length will be vetoed [cm] DoHitFiltering: false #// filter hits based on amp, width, RMS HitClustWireRange: 1 #// clustering wire width