LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
trkf::KalmanFilterFinalTrackFitter Class Reference
Inheritance diagram for trkf::KalmanFilterFinalTrackFitter:
art::EDProducer art::ProducerBase art::Consumer art::EngineCreator art::ProductRegistryHelper

Classes

struct  Config
 
struct  Inputs
 
struct  Options
 

Public Types

using Parameters = art::EDProducer::Table< Config >
 
using ModuleType = EDProducer
 
using WorkerType = WorkerT< EDProducer >
 
template<typename UserConfig , typename KeysToIgnore = void>
using Table = ProducerBase::Table< UserConfig, KeysToIgnore >
 

Public Member Functions

 KalmanFilterFinalTrackFitter (Parameters const &p)
 
 ~KalmanFilterFinalTrackFitter ()
 
 KalmanFilterFinalTrackFitter (KalmanFilterFinalTrackFitter const &)=delete
 
 KalmanFilterFinalTrackFitter (KalmanFilterFinalTrackFitter &&)=delete
 
KalmanFilterFinalTrackFitteroperator= (KalmanFilterFinalTrackFitter const &)=delete
 
KalmanFilterFinalTrackFitteroperator= (KalmanFilterFinalTrackFitter &&)=delete
 
void produce (art::Event &e) override
 
template<typename PROD , BranchType B = InEvent>
ProductID getProductID (std::string const &instanceName={}) const
 
template<typename PROD , BranchType B>
ProductID getProductID (ModuleDescription const &moduleDescription, std::string const &instanceName) const
 
bool modifiesEvent () const
 
template<typename T , BranchType = InEvent>
ProductToken< T > consumes (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< T > consumes (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void consumesMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > consumesView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< T > consumesView (InputTag const &it)
 
template<typename T , BranchType = InEvent>
ProductToken< T > mayConsume (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< T > mayConsume (InputTag const &it)
 
template<typename T , BranchType = InEvent>
void mayConsumeMany ()
 
template<typename Element , BranchType = InEvent>
ViewToken< Element > mayConsumeView (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ViewToken< T > mayConsumeView (InputTag const &it)
 
base_engine_tcreateEngine (seed_t seed)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make)
 
base_engine_tcreateEngine (seed_t seed, std::string const &kind_of_engine_to_make, label_t const &engine_label)
 
seed_t get_seed_value (fhicl::ParameterSet const &pset, char const key[]="seed", seed_t const implicit_seed=-1)
 

Static Public Member Functions

static cet::exempt_ptr< Consumernon_module_context ()
 

Protected Member Functions

CurrentProcessingContext const * currentContext () const
 
void validateConsumedProduct (BranchType const bt, ProductInfo const &pi)
 
void prepareForJob (fhicl::ParameterSet const &pset)
 
void showMissingConsumes () const
 

Private Member Functions

double setMomValue (art::Ptr< recob::Track > ptrack, const std::unique_ptr< art::FindManyP< anab::Calorimetry > > &trackCalo, const double pMC, const int pId) const
 
int setPId (const unsigned int iTrack, const std::unique_ptr< art::FindManyP< anab::ParticleID > > &trackId, const int pfPid=0) const
 
bool setDirFlip (const recob::Track &track, TVector3 &mcdir, const std::vector< art::Ptr< recob::Vertex > > *vertices=0) const
 
void restoreInputPoints (const recob::Trajectory &track, const std::vector< art::Ptr< recob::Hit > > &inHits, recob::Track &outTrack, std::vector< art::Ptr< recob::Hit > > &outHits) const
 

Private Attributes

Parameters p_
 
trkf::TrackKalmanFitterkalmanFitter
 
TrackStatePropagatorprop
 
trkf::TrackMomentumCalculatortmc
 
bool inputFromPF
 
art::InputTag pfParticleInputTag
 
art::InputTag trackInputTag
 
art::InputTag showerInputTag
 
art::InputTag caloInputTag
 
art::InputTag pidInputTag
 
art::InputTag simTrackInputTag
 
std::unique_ptr< art::FindManyP< anab::Calorimetry > > trackCalo
 
std::unique_ptr< art::FindManyP< anab::ParticleID > > trackId
 
std::unique_ptr< art::FindManyP< recob::Track > > assocTracks
 
std::unique_ptr< art::FindManyP< recob::Shower > > assocShowers
 
std::unique_ptr< art::FindManyP< recob::Vertex > > assocVertices
 

Detailed Description

Definition at line 45 of file KalmanFilterFinalTrackFitter_module.cc.

Member Typedef Documentation

using art::EDProducer::ModuleType = EDProducer
inherited

Definition at line 34 of file EDProducer.h.

template<typename UserConfig , typename KeysToIgnore = void>
using art::EDProducer::Table = ProducerBase::Table<UserConfig, KeysToIgnore>
inherited

Definition at line 43 of file EDProducer.h.

using art::EDProducer::WorkerType = WorkerT<EDProducer>
inherited

Definition at line 35 of file EDProducer.h.

Constructor & Destructor Documentation

KalmanFilterFinalTrackFitter::KalmanFilterFinalTrackFitter ( Parameters const &  p)
explicit

Definition at line 210 of file KalmanFilterFinalTrackFitter_module.cc.

References caloInputTag, inputFromPF, kalmanFitter, p_, pfParticleInputTag, pidInputTag, prop, showerInputTag, simTrackInputTag, tmc, and trackInputTag.

211  : p_(p)
212 {
213 
214  prop = new TrackStatePropagator(p_().propagator);
217 
218  inputFromPF = ( p_().options().trackFromPF() || p_().options().showerFromPF() );
219 
220  if (inputFromPF) {
221  pfParticleInputTag = art::InputTag(p_().inputs().inputPFParticleLabel());
222  if (p_().options().showerFromPF()) showerInputTag = art::InputTag(p_().inputs().inputShowersLabel());
223  } else {
224  trackInputTag = art::InputTag(p_().inputs().inputTracksLabel());
225  if (p_().options().idFromCollection()) pidInputTag = art::InputTag(p_().inputs().inputPidLabel());
226  }
227  if (p_().options().pFromCalo()) caloInputTag = art::InputTag(p_().inputs().inputCaloLabel());
228  if (p_().options().pFromMC() || p_().options().dirFromMC()) simTrackInputTag = art::InputTag(p_().inputs().inputMCLabel());
229 
230  produces<std::vector<recob::Track> >();
231  produces<art::Assns<recob::Track, recob::Hit, recob::TrackHitMeta> >();
232  produces<art::Assns<recob::Track, recob::Hit> >();
233  if (inputFromPF) {
234  produces<art::Assns<recob::PFParticle, recob::Track> >();
235  }
236  if (p_().options().produceTrackFitHitInfo()) {
237  produces<std::vector<std::vector<recob::TrackFitHitInfo> > >();
238  }
239  if (p_().options().produceSpacePoints()) {
240  produces<std::vector<recob::SpacePoint> >();
241  produces<art::Assns<recob::Hit, recob::SpacePoint> >();
242  }
243 
244  //throw expections to avoid possible silent failures due to incompatible configuration options
245  if (p_().options().trackFromPF()==0 && p_().options().idFromPF())
246  throw cet::exception("KalmanFilterFinalTrackFitter") << "Incompatible configuration parameters: cannot use idFromPF=true with trackFromPF=false." << "\n";
247  if (p_().options().trackFromPF()==0 && p_().options().dirFromVtxPF())
248  throw cet::exception("KalmanFilterFinalTrackFitter") << "Incompatible configuration parameters: cannot use dirFromVtxPF=true with trackFromPF=false." << "\n";
249 
250  unsigned int nIds = 0;
251  if (p_().options().idFromPF()) nIds++;
252  if (p_().options().idFromCollection()) nIds++;
253  if (nIds>1) {
254  throw cet::exception("KalmanFilterFinalTrackFitter")
255  << "Incompatible configuration parameters: only at most one can be set to true among idFromPF and idFromCollection." << "\n";
256  }
257 
258  unsigned int nDirs = 0;
259  if (p_().options().dirFromVtxPF()) nDirs++;
260  if (p_().options().dirFromMC()) nDirs++;
261  if (p_().options().dirFromVec()) nDirs++;
262  if (p_().options().alwaysInvertDir()) nDirs++;
263  if (nDirs>1) {
264  throw cet::exception("KalmanFilterFinalTrackFitter")
265  << "Incompatible configuration parameters: only at most one can be set to true among dirFromVtxPF, dirFromMC, dirFromVec, and alwaysInvertDir." << "\n";
266  }
267 
268  unsigned int nPFroms = 0;
269  if (p_().options().pFromCalo()) nPFroms++;
270  if (p_().options().pFromMSChi2()) nPFroms++;
271  if (p_().options().pFromLength()) nPFroms++;
272  if (p_().options().pFromMC()) nPFroms++;
273  if (nPFroms>1) {
274  throw cet::exception("KalmanFilterFinalTrackFitter")
275  << "Incompatible configuration parameters: only at most one can be set to true among pFromCalo, pFromMSChi2, pFromLength, and pFromMC." << "\n";
276  }
277 
278  if (p_().options().keepInputTrajectoryPoints()) {
279  if (p_().fitter().sortHitsByPlane() || p_().fitter().sortOutputHitsMinLength() || p_().fitter().skipNegProp()) {
280  throw cet::exception("KalmanFilterTrajectoryFitter")
281  << "Incompatible configuration parameters: keepInputTrajectoryPoints needs the following fitter options all set to false: sortHitsByPlane, sortOutputHitsMinLength, skipNegProp." << "\n";
282  }
283  }
284 
285  if (p_().options().showerFromPF()) {
286  if (nPFroms>0 || nIds>0 || nDirs>0) {
287  throw cet::exception("KalmanFilterTrajectoryFitter")
288  << "Incompatible configuration parameters: showerFromPF currently does not support optional momentum values, particle hypotheses and directions." << "\n";
289  }
290  }
291 }
Fit tracks using Kalman Filter fit+smooth.
cet::coded_exception< error, detail::translate > exception
Definition: exception.h:33
KalmanFilterFinalTrackFitter::~KalmanFilterFinalTrackFitter ( )

Definition at line 293 of file KalmanFilterFinalTrackFitter_module.cc.

References kalmanFitter, prop, and tmc.

293  {
294  delete prop;
295  delete kalmanFitter;
296  delete tmc;
297 }
trkf::KalmanFilterFinalTrackFitter::KalmanFilterFinalTrackFitter ( KalmanFilterFinalTrackFitter const &  )
delete
trkf::KalmanFilterFinalTrackFitter::KalmanFilterFinalTrackFitter ( KalmanFilterFinalTrackFitter &&  )
delete

Member Function Documentation

template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::consumes ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::consumes ( InputTag const &  it)
inherited

Definition at line 147 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

148 {
149  if (!moduleContext_)
150  return ProductToken<T>::invalid();
151 
152  consumables_[BT].emplace_back(ConsumableType::Product,
153  TypeID{typeid(T)},
154  it.label(),
155  it.instance(),
156  it.process());
157  return ProductToken<T>{it};
158 }
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename T , art::BranchType BT>
void art::Consumer::consumesMany ( )
inherited

Definition at line 162 of file Consumer.h.

163 {
164  if (!moduleContext_)
165  return;
166 
167  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
168 }
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::consumesView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::consumesView ( InputTag const &  it)
inherited

Definition at line 172 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

173 {
174  if (!moduleContext_)
175  return ViewToken<T>::invalid();
176 
177  consumables_[BT].emplace_back(ConsumableType::ViewElement,
178  TypeID{typeid(T)},
179  it.label(),
180  it.instance(),
181  it.process());
182  return ViewToken<T>{it};
183 }
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
EngineCreator::base_engine_t & EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make 
)
inherited

Definition at line 32 of file EngineCreator.cc.

References art::EngineCreator::rng().

34 {
35  return rng()->createEngine(
36  placeholder_schedule_id(), seed, kind_of_engine_to_make);
37 }
long seed
Definition: chem4.cc:68
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
EngineCreator::base_engine_t & EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make,
label_t const &  engine_label 
)
inherited

Definition at line 40 of file EngineCreator.cc.

References art::EngineCreator::rng().

43 {
44  return rng()->createEngine(
45  placeholder_schedule_id(), seed, kind_of_engine_to_make, engine_label);
46 }
long seed
Definition: chem4.cc:68
static art::ServiceHandle< art::RandomNumberGenerator > & rng()
CurrentProcessingContext const * art::EDProducer::currentContext ( ) const
protectedinherited

Definition at line 120 of file EDProducer.cc.

References art::EDProducer::current_context_.

121  {
122  return current_context_.get();
123  }
CPC_exempt_ptr current_context_
Definition: EDProducer.h:116
EngineCreator::seed_t EngineCreator::get_seed_value ( fhicl::ParameterSet const &  pset,
char const  key[] = "seed",
seed_t const  implicit_seed = -1 
)
inherited

Definition at line 49 of file EngineCreator.cc.

References fhicl::ParameterSet::get().

Referenced by art::MixFilter< T >::initEngine_().

52 {
53  auto const& explicit_seeds = pset.get<std::vector<int>>(key, {});
54  return explicit_seeds.empty() ? implicit_seed : explicit_seeds.front();
55 }
template<typename PROD , BranchType B>
ProductID art::EDProducer::getProductID ( std::string const &  instanceName = {}) const
inlineinherited

Definition at line 123 of file EDProducer.h.

References art::EDProducer::moduleDescription_.

124  {
125  return ProducerBase::getProductID<PROD, B>(moduleDescription_,
126  instanceName);
127  }
ModuleDescription moduleDescription_
Definition: EDProducer.h:115
template<typename PROD , BranchType B>
ProductID art::ProducerBase::getProductID ( ModuleDescription const &  moduleDescription,
std::string const &  instanceName 
) const
inherited

Definition at line 56 of file ProducerBase.h.

References B, and art::ModuleDescription::moduleLabel().

Referenced by art::ProducerBase::modifiesEvent().

58  {
59  auto const& pd =
60  get_ProductDescription<PROD>(B, md.moduleLabel(), instanceName);
61  return pd.productID();
62  }
Int_t B
Definition: plot.C:25
template<typename T , BranchType = InEvent>
ProductToken<T> art::Consumer::mayConsume ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ProductToken<T> art::Consumer::mayConsume ( InputTag const &  it)
inherited

Definition at line 190 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

191 {
192  if (!moduleContext_)
193  return ProductToken<T>::invalid();
194 
195  consumables_[BT].emplace_back(ConsumableType::Product,
196  TypeID{typeid(T)},
197  it.label(),
198  it.instance(),
199  it.process());
200  return ProductToken<T>{it};
201 }
static ProductToken< T > invalid()
Definition: ProductToken.h:47
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename T , art::BranchType BT>
void art::Consumer::mayConsumeMany ( )
inherited

Definition at line 205 of file Consumer.h.

206 {
207  if (!moduleContext_)
208  return;
209 
210  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
211 }
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
template<typename Element , BranchType = InEvent>
ViewToken<Element> art::Consumer::mayConsumeView ( InputTag const &  )
inherited
template<typename T , art::BranchType BT>
art::ViewToken<T> art::Consumer::mayConsumeView ( InputTag const &  it)
inherited

Definition at line 215 of file Consumer.h.

References art::InputTag::instance(), art::InputTag::label(), and art::InputTag::process().

216 {
217  if (!moduleContext_)
218  return ViewToken<T>::invalid();
219 
220  consumables_[BT].emplace_back(ConsumableType::ViewElement,
221  TypeID{typeid(T)},
222  it.label(),
223  it.instance(),
224  it.process());
225  return ViewToken<T>{it};
226 }
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
bool art::ProducerBase::modifiesEvent ( ) const
inlineinherited

Definition at line 40 of file ProducerBase.h.

References art::ProducerBase::getProductID().

41  {
42  return true;
43  }
KalmanFilterFinalTrackFitter& trkf::KalmanFilterFinalTrackFitter::operator= ( KalmanFilterFinalTrackFitter const &  )
delete
KalmanFilterFinalTrackFitter& trkf::KalmanFilterFinalTrackFitter::operator= ( KalmanFilterFinalTrackFitter &&  )
delete
void art::Consumer::prepareForJob ( fhicl::ParameterSet const &  pset)
protectedinherited

Definition at line 89 of file Consumer.cc.

References fhicl::ParameterSet::get_if_present().

Referenced by art::EDProducer::doBeginJob(), art::EDFilter::doBeginJob(), and art::EDAnalyzer::doBeginJob().

90 {
91  if (!moduleContext_)
92  return;
93 
94  pset.get_if_present("errorOnMissingConsumes", requireConsumes_);
95  for (auto& consumablesPerBranch : consumables_) {
96  cet::sort_all(consumablesPerBranch);
97  }
98 }
bool requireConsumes_
Definition: Consumer.h:137
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
void KalmanFilterFinalTrackFitter::produce ( art::Event e)
overridevirtual

Implements art::EDProducer.

Definition at line 299 of file KalmanFilterFinalTrackFitter_module.cc.

References assocShowers, assocTracks, assocVertices, art::Assns< L, R, D >::begin(), caloInputTag, dir, recob::Shower::Direction(), e, art::Assns< L, R, D >::end(), recob::Track::EndCovarianceLocal5D(), trkf::TrackKalmanFitter::fitTrack(), art::DataViewImpl::getValidHandle(), recob::Shower::ID(), recob::Track::ID(), trkmkr::OptionalOutputs::initTrackFitInfos(), inputFromPF, kalmanFitter, sim::MCStep::Momentum(), p_, sim::MCTrack::PdgCode(), pfParticleInputTag, pidInputTag, sim::MCTrack::Process(), art::Event::productGetter(), art::Event::put(), restoreInputPoints(), setDirFlip(), setMomValue(), setPId(), showerInputTag, recob::Shower::ShowerStart(), simTrackInputTag, art::Assns< L, R, D >::size(), sim::MCTrack::Start(), track, trackCalo, trkmkr::OptionalOutputs::trackFitHitInfos(), trackId, trackInputTag, recob::Track::Trajectory(), recob::TrackTrajectory::Trajectory(), and recob::Track::VertexCovarianceLocal5D().

300 {
301 
302  auto outputTracks = std::make_unique<std::vector<recob::Track> >();
303  auto outputHitsMeta = std::make_unique<art::Assns<recob::Track, recob::Hit, recob::TrackHitMeta> >();
304  auto outputHits = std::make_unique<art::Assns<recob::Track, recob::Hit> >();
305  auto outputHitInfo = std::make_unique<std::vector<std::vector<recob::TrackFitHitInfo> > >();
306 
307  auto const tid = getProductID<std::vector<recob::Track> >();
308  auto const tidgetter = e.productGetter(tid);
309 
310  auto outputSpacePoints = std::make_unique<std::vector<recob::SpacePoint> >();
311  auto outputHitSpacePointAssn = std::make_unique<art::Assns<recob::Hit, recob::SpacePoint> >();
312  auto const spid = getProductID<std::vector<recob::SpacePoint> >();
313  auto const spidgetter = e.productGetter(spid);
314 
315  //FIXME, eventually remove this (ok only for single particle MC)
316  double pMC = -1.;
317  TVector3 mcdir;
318  if (p_().options().pFromMC() || p_().options().dirFromMC()) {
319  art::ValidHandle<std::vector<sim::MCTrack> > simTracks = e.getValidHandle<std::vector<sim::MCTrack> >(simTrackInputTag);
320  for (unsigned int iMC = 0; iMC < simTracks->size(); ++iMC) {
321  const sim::MCTrack& mctrack = simTracks->at(iMC);
322  //fiducial cuts on MC tracks
323  if (mctrack.PdgCode()!=13) continue;
324  if (mctrack.Process()!="primary") continue;
325  pMC = mctrack.Start().Momentum().P()*0.001;
326  mcdir = TVector3(mctrack.Start().Momentum().X()*0.001/pMC,mctrack.Start().Momentum().Y()*0.001/pMC,mctrack.Start().Momentum().Z()*0.001/pMC);
327  break;
328  }
329  //std::cout << "mc momentum value = " << pval << " GeV" << std::endl;
330  }
331 
332  if (inputFromPF) {
333 
334  auto outputPFAssn = std::make_unique<art::Assns<recob::PFParticle, recob::Track> >();
335 
336  art::ValidHandle<std::vector<recob::PFParticle> > inputPFParticle = e.getValidHandle<std::vector<recob::PFParticle> >(pfParticleInputTag);
337  if (p_().options().trackFromPF()) assocTracks = std::unique_ptr<art::FindManyP<recob::Track> >(new art::FindManyP<recob::Track>(inputPFParticle, e, pfParticleInputTag));
338  if (p_().options().showerFromPF()) assocShowers = std::unique_ptr<art::FindManyP<recob::Shower> >(new art::FindManyP<recob::Shower>(inputPFParticle, e, showerInputTag));
339  assocVertices = std::unique_ptr<art::FindManyP<recob::Vertex> >(new art::FindManyP<recob::Vertex>(inputPFParticle, e, pfParticleInputTag));
340 
341  for (unsigned int iPF = 0; iPF < inputPFParticle->size(); ++iPF) {
342 
343  if (p_().options().trackFromPF()) {
344  const std::vector<art::Ptr<recob::Track> >& tracks = assocTracks->at(iPF);
346  const std::vector<art::Ptr<recob::Vertex> >& vertices = assocVertices->at(iPF);
347 
348  if (p_().options().pFromCalo()) {
349  trackCalo = std::unique_ptr<art::FindManyP<anab::Calorimetry> >(new art::FindManyP<anab::Calorimetry>(tracks, e, caloInputTag));
350  }
351 
352  for (unsigned int iTrack = 0; iTrack < tracks.size(); ++iTrack) {
353 
354  const recob::Track& track = *tracks[iTrack];
355  art::Ptr<recob::Track> ptrack = tracks[iTrack];
356  const int pId = setPId(iTrack, trackId, inputPFParticle->at(iPF).PdgCode());
357  const double mom = setMomValue(ptrack, trackCalo, pMC, pId);
358  const bool flipDir = setDirFlip(track, mcdir, &vertices);
359 
360  //this is not computationally optimal, but at least preserves the order unlike FindManyP
361  std::vector<art::Ptr<recob::Hit> > inHits;
362  for (auto it = tkHitsAssn.begin(); it!=tkHitsAssn.end(); ++it) {
363  if (it->first == ptrack) inHits.push_back(it->second);
364  else if (inHits.size()>0) break;
365  }
366 
367  recob::Track outTrack;
368  std::vector<art::Ptr<recob::Hit> > outHits;
369  trkmkr::OptionalOutputs optionals;
370  if (p_().options().produceTrackFitHitInfo()) optionals.initTrackFitInfos();
371  bool fitok = kalmanFitter->fitTrack(track.Trajectory(),track.ID(),
373  inHits, mom, pId, flipDir, outTrack, outHits, optionals);
374  if (!fitok) continue;
375 
376  if (p_().options().keepInputTrajectoryPoints()) {
377  restoreInputPoints(track.Trajectory().Trajectory(),inHits,outTrack,outHits);
378  }
379 
380  outputTracks->emplace_back(std::move(outTrack));
381  art::Ptr<recob::Track> aptr(tid, outputTracks->size()-1, tidgetter);
382  unsigned int ip = 0;
383  for (auto const& trhit: outHits) {
384  //the fitter produces collections with 1-1 match between hits and point
385  recob::TrackHitMeta metadata(ip,-1);
386  outputHitsMeta->addSingle(aptr, trhit, metadata);
387  outputHits->addSingle(aptr, trhit);
388  ip++;
389  }
390  outputPFAssn->addSingle(art::Ptr<recob::PFParticle>(inputPFParticle, iPF), aptr);
391  outputHitInfo->emplace_back(optionals.trackFitHitInfos());
392  }
393  }
394 
395  if (p_().options().showerFromPF()) {
396  art::Ptr<recob::PFParticle> pPF(inputPFParticle, iPF);
397  const std::vector<art::Ptr<recob::Shower> >& showers = assocShowers->at(iPF);
398  if (showers.size()==0) continue;
401  std::vector<art::Ptr<recob::Hit> > inHits;
402  for (auto itpf = pfClustersAssn.begin(); itpf!=pfClustersAssn.end(); ++itpf) {
403  if (itpf->first == pPF) {
404  art::Ptr<recob::Cluster> clust = itpf->second;
405  for (auto it = clHitsAssn.begin(); it!=clHitsAssn.end(); ++it) {
406  if (it->first == clust) inHits.push_back(it->second);
407  }
408  } else if (inHits.size()>0) break;
409  }
410  //auto const& shHitsAssn = *e.getValidHandle<art::Assns<recob::Shower, recob::Hit> >(showerInputTag);
411  for (unsigned int iShower = 0; iShower < showers.size(); ++iShower) {
412  //
413  const recob::Shower& shower = *showers[iShower];
414  // art::Ptr<recob::Shower> pshower = showers[iShower];
415  // //this is not computationally optimal, but at least preserves the order unlike FindManyP
416  // std::vector<art::Ptr<recob::Hit> > inHits;
417  // for (auto it = shHitsAssn.begin(); it!=shHitsAssn.end(); ++it) {
418  // if (it->first == pshower) inHits.push_back(it->second);
419  // else if (inHits.size()>0) break;
420  // }
421 
422  recob::Track outTrack;
423  std::vector<art::Ptr<recob::Hit> > outHits;
424  trkmkr::OptionalOutputs optionals;
425  if (p_().options().produceTrackFitHitInfo()) optionals.initTrackFitInfos();
426  Point_t pos(shower.ShowerStart().X(),shower.ShowerStart().Y(),shower.ShowerStart().Z());
427  Vector_t dir(shower.Direction().X(),shower.Direction().Y(),shower.Direction().Z());
428  auto cov = SMatrixSym55();
429  auto pid = p_().options().pdgId();
430  auto mom = p_().options().pval();
431  bool fitok = kalmanFitter->fitTrack(pos, dir, cov, inHits, std::vector<recob::TrajectoryPointFlags>(),
432  shower.ID(), mom, pid,
433  outTrack, outHits, optionals);
434  if (!fitok) continue;
435 
436  outputTracks->emplace_back(std::move(outTrack));
437  art::Ptr<recob::Track> aptr(tid, outputTracks->size()-1, tidgetter);
438  unsigned int ip = 0;
439  for (auto const& trhit: outHits) {
440  // the fitter produces collections with 1-1 match between hits and point
441  recob::TrackHitMeta metadata(ip,-1);
442  outputHitsMeta->addSingle(aptr, trhit, metadata);
443  outputHits->addSingle(aptr, trhit);
444  if (p_().options().produceSpacePoints() && outputTracks->back().HasValidPoint(ip)) {
445  auto& tp = outputTracks->back().Trajectory().LocationAtPoint(ip);
446  double fXYZ[3] = {tp.X(),tp.Y(),tp.Z()};
447  double fErrXYZ[6] = {0};
448  recob::SpacePoint sp(fXYZ, fErrXYZ, -1.);
449  outputSpacePoints->emplace_back(std::move(sp));
450  art::Ptr<recob::SpacePoint> apsp(spid, outputSpacePoints->size()-1, spidgetter);
451  outputHitSpacePointAssn->addSingle(trhit, apsp);
452  }
453  ip++;
454  }
455  outputPFAssn->addSingle(art::Ptr<recob::PFParticle>(inputPFParticle, iPF), aptr);
456  outputHitInfo->emplace_back(optionals.trackFitHitInfos());
457  }
458  }
459 
460  }
461  e.put(std::move(outputTracks));
462  e.put(std::move(outputHitsMeta));
463  e.put(std::move(outputHits));
464  e.put(std::move(outputPFAssn));
465  if (p_().options().produceTrackFitHitInfo()) {
466  e.put(std::move(outputHitInfo));
467  }
468  if (p_().options().produceSpacePoints()) {
469  e.put(std::move(outputSpacePoints));
470  e.put(std::move(outputHitSpacePointAssn));
471  }
472  } else {
473 
474  art::ValidHandle<std::vector<recob::Track> > inputTracks = e.getValidHandle<std::vector<recob::Track> >(trackInputTag);
476 
477  if (p_().options().pFromCalo()) {
478  trackCalo = std::unique_ptr<art::FindManyP<anab::Calorimetry> >(new art::FindManyP<anab::Calorimetry>(inputTracks, e, caloInputTag));
479  }
480 
481  if (p_().options().idFromCollection()) {
482  trackId = std::unique_ptr<art::FindManyP<anab::ParticleID> >(new art::FindManyP<anab::ParticleID>(inputTracks, e, pidInputTag));
483  }
484 
485  for (unsigned int iTrack = 0; iTrack < inputTracks->size(); ++iTrack) {
486 
487  const recob::Track& track = inputTracks->at(iTrack);
488  art::Ptr<recob::Track> ptrack(inputTracks, iTrack);
489  const int pId = setPId(iTrack, trackId);
490  const double mom = setMomValue(ptrack, trackCalo, pMC, pId);
491  const bool flipDir = setDirFlip(track, mcdir);
492 
493  //this is not computationally optimal, but at least preserves the order unlike FindManyP
494  std::vector<art::Ptr<recob::Hit> > inHits;
495  for (auto it = tkHitsAssn.begin(); it!=tkHitsAssn.end(); ++it) {
496  if (it->first == ptrack) inHits.push_back(it->second);
497  else if (inHits.size()>0) break;
498  }
499 
500  recob::Track outTrack;
501  std::vector<art::Ptr<recob::Hit> > outHits;
502  trkmkr::OptionalOutputs optionals;
503  if (p_().options().produceTrackFitHitInfo()) optionals.initTrackFitInfos();
504  bool fitok = kalmanFitter->fitTrack(track.Trajectory(),track.ID(),
506  inHits, mom, pId, flipDir, outTrack, outHits, optionals);
507  if (!fitok) continue;
508 
509  if (p_().options().keepInputTrajectoryPoints()) {
510  restoreInputPoints(track.Trajectory().Trajectory(),inHits,outTrack,outHits);
511  }
512 
513  outputTracks->emplace_back(std::move(outTrack));
514  art::Ptr<recob::Track> aptr(tid, outputTracks->size()-1, tidgetter);
515  unsigned int ip = 0;
516  for (auto const& trhit: outHits) {
517  //the fitter produces collections with 1-1 match between hits and point
518  recob::TrackHitMeta metadata(ip,-1);
519  outputHitsMeta->addSingle(aptr, trhit, metadata);
520  outputHits->addSingle(aptr, trhit);
521  if (p_().options().produceSpacePoints() && outputTracks->back().HasValidPoint(ip)) {
522  auto& tp = outputTracks->back().Trajectory().LocationAtPoint(ip);
523  double fXYZ[3] = {tp.X(),tp.Y(),tp.Z()};
524  double fErrXYZ[6] = {0};
525  recob::SpacePoint sp(fXYZ, fErrXYZ, -1.);
526  outputSpacePoints->emplace_back(std::move(sp));
527  art::Ptr<recob::SpacePoint> apsp(spid, outputSpacePoints->size()-1, spidgetter);
528  outputHitSpacePointAssn->addSingle(trhit, apsp);
529  }
530  ip++;
531  }
532  outputHitInfo->emplace_back(optionals.trackFitHitInfos());
533  }
534  e.put(std::move(outputTracks));
535  e.put(std::move(outputHitsMeta));
536  e.put(std::move(outputHits));
537  if (p_().options().produceTrackFitHitInfo()) {
538  e.put(std::move(outputHitInfo));
539  }
540  if (p_().options().produceSpacePoints()) {
541  e.put(std::move(outputSpacePoints));
542  e.put(std::move(outputHitSpacePointAssn));
543  }
544  }
545 }
size_type size() const
Definition: Assns.h:440
const TVector3 & ShowerStart() const
Definition: Shower.h:192
Trajectory_t const & Trajectory() const
Returns the plain trajectory of this object.
void initTrackFitInfos()
initialize the output vector of TrackFitHitInfos
Definition: TrackMaker.h:102
const recob::TrackTrajectory & Trajectory() const
Access to the stored recob::TrackTrajectory.
Definition: Track.h:105
recob::tracking::SMatrixSym55 SMatrixSym55
Definition: TrackState.h:15
Data related to recob::Hit associated with recob::Track.The purpose is to collect several variables t...
Definition: TrackHitMeta.h:43
void restoreInputPoints(const recob::Trajectory &track, const std::vector< art::Ptr< recob::Hit > > &inHits, recob::Track &outTrack, std::vector< art::Ptr< recob::Hit > > &outHits) const
bool fitTrack(const recob::TrackTrajectory &traj, int tkID, const SMatrixSym55 &covVtx, const SMatrixSym55 &covEnd, const std::vector< art::Ptr< recob::Hit > > &hits, const double pval, const int pdgid, const bool flipDirection, recob::Track &outTrack, std::vector< art::Ptr< recob::Hit > > &outHits, trkmkr::OptionalOutputs &optionals) const
Fit track starting from TrackTrajectory.
EDProductGetter const * productGetter(ProductID const) const
Definition: Event.cc:64
std::unique_ptr< art::FindManyP< recob::Vertex > > assocVertices
recob::tracking::Point_t Point_t
const_iterator begin() const
Definition: Assns.h:447
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
bool setDirFlip(const recob::Track &track, TVector3 &mcdir, const std::vector< art::Ptr< recob::Vertex > > *vertices=0) const
double setMomValue(art::Ptr< recob::Track > ptrack, const std::unique_ptr< art::FindManyP< anab::Calorimetry > > &trackCalo, const double pMC, const int pId) const
std::unique_ptr< art::FindManyP< anab::ParticleID > > trackId
const TVector3 & Direction() const
Definition: Shower.h:189
int PdgCode() const
Definition: MCTrack.h:41
const TLorentzVector & Momentum() const
Definition: MCStep.h:38
const_iterator end() const
Definition: Assns.h:454
int ID() const
Definition: Track.h:205
const SMatrixSym55 & EndCovarianceLocal5D() const
Accessors to track parameters and covariance matrices in Local5D and Global6D coordinates.
Definition: Track.h:214
std::vector< recob::TrackFitHitInfo > trackFitHitInfos()
get the output vector of TrackFitHitInfos by releasing and moving
Definition: TrackMaker.h:114
TDirectory * dir
Definition: macro.C:5
std::unique_ptr< art::FindManyP< anab::Calorimetry > > trackCalo
std::unique_ptr< art::FindManyP< recob::Shower > > assocShowers
const std::string & Process() const
Definition: MCTrack.h:43
int setPId(const unsigned int iTrack, const std::unique_ptr< art::FindManyP< anab::ParticleID > > &trackId, const int pfPid=0) const
const MCStep & Start() const
Definition: MCTrack.h:44
ValidHandle< PROD > getValidHandle(InputTag const &tag) const
Float_t e
Definition: plot.C:34
Float_t track
Definition: plot.C:34
recob::tracking::Vector_t Vector_t
int ID() const
Definition: Shower.h:187
const SMatrixSym55 & VertexCovarianceLocal5D() const
Accessors to track parameters and covariance matrices in Local5D and Global6D coordinates.
Definition: Track.h:213
Struct holding optional TrackMaker outputs.
Definition: TrackMaker.h:73
Track from a non-cascading particle.A recob::Track consists of a recob::TrackTrajectory, plus additional members relevant for a "fitted" track:
Definition: Track.h:51
std::unique_ptr< art::FindManyP< recob::Track > > assocTracks
void KalmanFilterFinalTrackFitter::restoreInputPoints ( const recob::Trajectory track,
const std::vector< art::Ptr< recob::Hit > > &  inHits,
recob::Track outTrack,
std::vector< art::Ptr< recob::Hit > > &  outHits 
) const
private

Definition at line 547 of file KalmanFilterFinalTrackFitter_module.cc.

References recob::Track::Chi2(), recob::Track::Covariances(), recob::Trajectory::DirectionAtPoint(), recob::Track::FlagsAtPoint(), recob::Track::ID(), recob::Trajectory::LocationAtPoint(), recob::Track::Ndof(), recob::TrajectoryPointFlagTraits::NoPoint, recob::Track::NumberTrajectoryPoints(), recob::Track::ParticleId(), and recob::Track::VertexMomentum().

Referenced by produce().

547  {
548  const auto np = outTrack.NumberTrajectoryPoints();
549  std::vector<Point_t> positions(np);
550  std::vector<Vector_t> momenta(np);
551  std::vector<recob::TrajectoryPointFlags> outFlags(np);
552  //
553  for (unsigned int p=0; p<np; ++p) {
554  auto flag = outTrack.FlagsAtPoint(p);
555  auto mom = outTrack.VertexMomentum();
556  auto op = flag.fromHit();
557  positions[op] = track.LocationAtPoint(op);
558  momenta[op] = mom*track.DirectionAtPoint(op);
559  auto mask = flag.mask();
561  outFlags[op] = recob::TrajectoryPointFlags(op,mask);
562  }
563  auto covs = outTrack.Covariances();
564  outTrack = recob::Track(recob::TrackTrajectory(std::move(positions),std::move(momenta),std::move(outFlags),true),
565  outTrack.ParticleId(),outTrack.Chi2(),outTrack.Ndof(),std::move(covs.first),std::move(covs.second),outTrack.ID());
566  //
567  outHits.clear();
568  for (auto h : inHits) outHits.push_back(h);
569 }
double VertexMomentum() const
Definition: Track.h:149
static constexpr Flag_t NoPoint
The trajectory point is not defined.
int ParticleId() const
Access to various track properties.
Definition: Track.h:178
float Chi2() const
Access to various track properties.
Definition: Track.h:175
size_t NumberTrajectoryPoints() const
Various functions related to the presence and the number of (valid) points.
Definition: Track.h:109
std::pair< SMatrixSym55, SMatrixSym55 > Covariances() const
Access to position, momentum or covariance at the start and end of the track.
Definition: Track.h:169
Vector_t DirectionAtPoint(size_t i) const
Computes and returns the direction of the trajectory at a point.
Definition: Trajectory.cxx:157
A trajectory in space reconstructed from hits.
Point_t const & LocationAtPoint(size_t i) const
Returns the position at the specified trajectory point.
Definition: Trajectory.h:255
int Ndof() const
Access to various track properties.
Definition: Track.h:177
int ID() const
Definition: Track.h:205
PointFlags_t const & FlagsAtPoint(size_t i) const
Access to i-th TrajectoryPoint or its Flags.
Definition: Track.h:125
TrackCollectionProxyElement< TrackCollProxy > Track
Proxy to an element of a proxy collection of recob::Track objects.
Definition: Track.h:1035
Set of flags pertaining a point of the track.
bool KalmanFilterFinalTrackFitter::setDirFlip ( const recob::Track track,
TVector3 &  mcdir,
const std::vector< art::Ptr< recob::Vertex > > *  vertices = 0 
) const
private

Definition at line 615 of file KalmanFilterFinalTrackFitter_module.cc.

References DEFINE_ART_MODULE, dir, recob::TrackTrajectory::End(), p_, recob::Track::Trajectory(), recob::TrackTrajectory::Vertex(), and recob::Track::VertexDirection().

Referenced by produce().

615  {
616  bool result = false;
617  if (p_().options().alwaysInvertDir()) {
618  return true;
619  } else if (p_().options().dirFromMC()) {
620  auto tdir = track.VertexDirection();
621  if ( (mcdir.X()*tdir.X() + mcdir.Y()*tdir.Y() + mcdir.Z()*tdir.Z())<0. ) result = true;
622  } else if (p_().options().dirFromVec()) {
623  std::array<float, 3> dir = p_().options().dirVec();
624  auto tdir = track.VertexDirection();
625  if ( (dir[0]*tdir.X() + dir[1]*tdir.Y() + dir[2]*tdir.Z())<0. ) result = true;
626  } else if (p_().options().trackFromPF() && p_().options().dirFromVtxPF() && vertices->size()>0) {
627  //if track end is closer to first vertex then track vertex, flip direction
628  double xyz[3];
629  (*vertices)[0]->XYZ(xyz);
630  auto& tv = track.Trajectory().Vertex();
631  auto& te = track.Trajectory().End();
632  if ( ((xyz[0]-te.X())*(xyz[0]-te.X()) + (xyz[1]-te.Y())*(xyz[1]-te.Y()) + (xyz[2]-te.Z())*(xyz[2]-te.Z())) >
633  ((xyz[0]-tv.X())*(xyz[0]-tv.X()) + (xyz[1]-tv.Y())*(xyz[1]-tv.Y()) + (xyz[2]-tv.Z())*(xyz[2]-tv.Z())) ) result = true;
634  }
635  return result;
636 }
TVector3 VertexDirection() const
Covariance matrices are either set or not.
Definition: Track.h:247
const recob::TrackTrajectory & Trajectory() const
Access to the stored recob::TrackTrajectory.
Definition: Track.h:105
Point_t const & Vertex() const
Returns the position of the first valid point of the trajectory [cm].
TDirectory * dir
Definition: macro.C:5
Point_t const & End() const
Returns the position of the last valid point of the trajectory [cm].
double KalmanFilterFinalTrackFitter::setMomValue ( art::Ptr< recob::Track ptrack,
const std::unique_ptr< art::FindManyP< anab::Calorimetry > > &  trackCalo,
const double  pMC,
const int  pId 
) const
private

Definition at line 571 of file KalmanFilterFinalTrackFitter_module.cc.

References trkf::TrackMomentumCalculator::GetMomentumMultiScatterChi2(), trkf::TrackMomentumCalculator::GetTrackMomentum(), art::Ptr< T >::key(), recob::Track::Length(), p_, tmc, and trackCalo.

Referenced by produce().

571  {
572  double result = p_().options().pval();
573  if (p_().options().pFromMSChi2()) {
574  result = tmc->GetMomentumMultiScatterChi2(ptrack);
575  } else if (p_().options().pFromLength()) {
576  result = tmc->GetTrackMomentum(ptrack->Length(), pId);
577  } else if (p_().options().pFromCalo()) {
578  //take average energy from available views
579  const std::vector<art::Ptr<anab::Calorimetry> >& calo = trackCalo->at(ptrack.key());
580  double sumenergy = 0.;
581  int nviews = 0.;
582  for (auto caloit : calo) {
583  if (caloit->KineticEnergy()>0.) {
584  sumenergy+=caloit->KineticEnergy();
585  nviews+=1;
586  }
587  }
588  if (nviews!=0 && sumenergy!=0.) {
589  //protect against problematic cases
590  result = sumenergy/(nviews*1000.);
591  }
592  } else if (p_().options().pFromMC() && pMC>0.) {
593  result = pMC;
594  }
595  return result;
596 }
key_type key() const
Definition: Ptr.h:356
Double_t GetMomentumMultiScatterChi2(const art::Ptr< recob::Track > &trk)
double Length(size_t p=0) const
Access to various track properties.
Definition: Track.h:174
double GetTrackMomentum(double trkrange, int pdg)
calorimetry
int KalmanFilterFinalTrackFitter::setPId ( const unsigned int  iTrack,
const std::unique_ptr< art::FindManyP< anab::ParticleID > > &  trackId,
const int  pfPid = 0 
) const
private

Definition at line 598 of file KalmanFilterFinalTrackFitter_module.cc.

References p_, and trackId.

Referenced by produce().

598  {
599  int result = p_().options().pdgId();
600  if (p_().options().trackFromPF() && p_().options().idFromPF()) {
601  result = pfPid;
602  } else if (p_().options().idFromCollection()) {
603  //take the pdgId corresponding to the minimum chi2 (should we give preference to the majority? fixme)
604  double minChi2 = -1.;
605  for (auto idit : trackId->at(iTrack)) {
606  if ( idit->MinChi2()>0. && (minChi2<0. || idit->MinChi2()<minChi2) ) {
607  result = idit->Pdg();
608  minChi2 = idit->MinChi2();
609  }
610  }
611  }
612  return result;
613 }
void art::Consumer::showMissingConsumes ( ) const
protectedinherited

Definition at line 125 of file Consumer.cc.

Referenced by art::EDProducer::doEndJob(), art::EDFilter::doEndJob(), art::EDAnalyzer::doEndJob(), and art::RootOutput::endJob().

126 {
127  if (!moduleContext_)
128  return;
129 
130  // If none of the branches have missing consumes statements, exit early.
131  if (std::all_of(cbegin(missingConsumes_),
132  cend(missingConsumes_),
133  [](auto const& perBranch) { return perBranch.empty(); }))
134  return;
135 
136  constexpr cet::HorizontalRule rule{60};
137  mf::LogPrint log{"MTdiagnostics"};
138  log << '\n'
139  << rule('=') << '\n'
140  << "The following consumes (or mayConsume) statements are missing from\n"
141  << module_context(moduleDescription_) << '\n'
142  << rule('-') << '\n';
143 
144  cet::for_all_with_index(
145  missingConsumes_, [&log](std::size_t const i, auto const& perBranch) {
146  for (auto const& pi : perBranch) {
147  log << " "
148  << assemble_consumes_statement(static_cast<BranchType>(i), pi)
149  << '\n';
150  }
151  });
152  log << rule('=');
153 }
cet::exempt_ptr< ModuleDescription const > moduleDescription_
Definition: Consumer.h:140
constexpr T pi()
Returns the constant pi (up to 35 decimal digits of precision)
bool moduleContext_
Definition: Consumer.h:136
ConsumableProductSets missingConsumes_
Definition: Consumer.h:139
void art::Consumer::validateConsumedProduct ( BranchType const  bt,
ProductInfo const &  pi 
)
protectedinherited

Definition at line 101 of file Consumer.cc.

References art::errors::ProductRegistrationFailure.

103 {
104  // Early exits if consumes tracking has been disabled or if the
105  // consumed product is an allowed consumable.
106  if (!moduleContext_)
107  return;
108 
109  if (cet::binary_search_all(consumables_[bt], pi))
110  return;
111 
112  if (requireConsumes_) {
114  "Consumer: an error occurred during validation of a "
115  "retrieved product\n\n")
116  << "The following consumes (or mayConsume) statement is missing from\n"
117  << module_context(moduleDescription_) << ":\n\n"
118  << " " << assemble_consumes_statement(bt, pi) << "\n\n";
119  }
120 
121  missingConsumes_[bt].insert(pi);
122 }
cet::exempt_ptr< ModuleDescription const > moduleDescription_
Definition: Consumer.h:140
bool requireConsumes_
Definition: Consumer.h:137
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
constexpr T pi()
Returns the constant pi (up to 35 decimal digits of precision)
ConsumableProducts consumables_
Definition: Consumer.h:138
bool moduleContext_
Definition: Consumer.h:136
ConsumableProductSets missingConsumes_
Definition: Consumer.h:139

Member Data Documentation

std::unique_ptr<art::FindManyP<recob::Shower> > trkf::KalmanFilterFinalTrackFitter::assocShowers
private

Definition at line 199 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce().

std::unique_ptr<art::FindManyP<recob::Track> > trkf::KalmanFilterFinalTrackFitter::assocTracks
private

Definition at line 198 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce().

std::unique_ptr<art::FindManyP<recob::Vertex> > trkf::KalmanFilterFinalTrackFitter::assocVertices
private

Definition at line 200 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce().

art::InputTag trkf::KalmanFilterFinalTrackFitter::caloInputTag
private
bool trkf::KalmanFilterFinalTrackFitter::inputFromPF
private
trkf::TrackKalmanFitter* trkf::KalmanFilterFinalTrackFitter::kalmanFitter
private
Parameters trkf::KalmanFilterFinalTrackFitter::p_
private
art::InputTag trkf::KalmanFilterFinalTrackFitter::pfParticleInputTag
private
art::InputTag trkf::KalmanFilterFinalTrackFitter::pidInputTag
private
TrackStatePropagator* trkf::KalmanFilterFinalTrackFitter::prop
private
art::InputTag trkf::KalmanFilterFinalTrackFitter::showerInputTag
private
art::InputTag trkf::KalmanFilterFinalTrackFitter::simTrackInputTag
private
trkf::TrackMomentumCalculator* trkf::KalmanFilterFinalTrackFitter::tmc
private
std::unique_ptr<art::FindManyP<anab::Calorimetry> > trkf::KalmanFilterFinalTrackFitter::trackCalo
private

Definition at line 196 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce(), and setMomValue().

std::unique_ptr<art::FindManyP<anab::ParticleID> > trkf::KalmanFilterFinalTrackFitter::trackId
private

Definition at line 197 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce(), and setPId().

art::InputTag trkf::KalmanFilterFinalTrackFitter::trackInputTag
private

The documentation for this class was generated from the following file: