LArSoft  v07_13_02
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 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_
 
TrackStatePropagator prop
 
trkf::TrackKalmanFitter kalmanFitter
 
trkf::TrackMomentumCalculator tmc {}
 
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 209 of file KalmanFilterFinalTrackFitter_module.cc.

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

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

290 {
291 
292  auto outputTracks = std::make_unique<std::vector<recob::Track> >();
293  auto outputHitsMeta = std::make_unique<art::Assns<recob::Track, recob::Hit, recob::TrackHitMeta> >();
294  auto outputHits = std::make_unique<art::Assns<recob::Track, recob::Hit> >();
295  auto outputHitInfo = std::make_unique<std::vector<std::vector<recob::TrackFitHitInfo> > >();
296 
297  auto const tid = getProductID<std::vector<recob::Track> >();
298  auto const tidgetter = e.productGetter(tid);
299 
300  auto outputSpacePoints = std::make_unique<std::vector<recob::SpacePoint> >();
301  auto outputHitSpacePointAssn = std::make_unique<art::Assns<recob::Hit, recob::SpacePoint> >();
302  auto const spid = getProductID<std::vector<recob::SpacePoint> >();
303  auto const spidgetter = e.productGetter(spid);
304 
305  //FIXME, eventually remove this (ok only for single particle MC)
306  double pMC = -1.;
307  TVector3 mcdir;
308  if (p_().options().pFromMC() || p_().options().dirFromMC()) {
309  art::ValidHandle<std::vector<sim::MCTrack> > simTracks = e.getValidHandle<std::vector<sim::MCTrack> >(simTrackInputTag);
310  for (unsigned int iMC = 0; iMC < simTracks->size(); ++iMC) {
311  const sim::MCTrack& mctrack = simTracks->at(iMC);
312  //fiducial cuts on MC tracks
313  if (mctrack.PdgCode()!=13) continue;
314  if (mctrack.Process()!="primary") continue;
315  pMC = mctrack.Start().Momentum().P()*0.001;
316  mcdir = TVector3(mctrack.Start().Momentum().X()*0.001/pMC,mctrack.Start().Momentum().Y()*0.001/pMC,mctrack.Start().Momentum().Z()*0.001/pMC);
317  break;
318  }
319  //std::cout << "mc momentum value = " << pval << " GeV" << std::endl;
320  }
321 
322  if (inputFromPF) {
323 
324  auto outputPFAssn = std::make_unique<art::Assns<recob::PFParticle, recob::Track> >();
325 
326  auto inputPFParticle = e.getValidHandle<std::vector<recob::PFParticle> >(pfParticleInputTag);
327  if (p_().options().trackFromPF()) assocTracks = std::make_unique<art::FindManyP<recob::Track>>(inputPFParticle, e, pfParticleInputTag);
328  if (p_().options().showerFromPF()) assocShowers = std::make_unique<art::FindManyP<recob::Shower>>(inputPFParticle, e, showerInputTag);
329  assocVertices = std::make_unique<art::FindManyP<recob::Vertex>>(inputPFParticle, e, pfParticleInputTag);
330 
331  for (unsigned int iPF = 0; iPF < inputPFParticle->size(); ++iPF) {
332 
333  if (p_().options().trackFromPF()) {
334  const std::vector<art::Ptr<recob::Track> >& tracks = assocTracks->at(iPF);
335  auto const& tkHitsAssn = *e.getValidHandle<art::Assns<recob::Track, recob::Hit> >(pfParticleInputTag);
336  const std::vector<art::Ptr<recob::Vertex> >& vertices = assocVertices->at(iPF);
337 
338  if (p_().options().pFromCalo()) {
339  trackCalo = std::make_unique<art::FindManyP<anab::Calorimetry>>(tracks, e, caloInputTag);
340  }
341 
342  for (unsigned int iTrack = 0; iTrack < tracks.size(); ++iTrack) {
343 
344  const recob::Track& track = *tracks[iTrack];
345  art::Ptr<recob::Track> ptrack = tracks[iTrack];
346  const int pId = setPId(iTrack, trackId, inputPFParticle->at(iPF).PdgCode());
347  const double mom = setMomValue(ptrack, trackCalo, pMC, pId);
348  const bool flipDir = setDirFlip(track, mcdir, &vertices);
349 
350  //this is not computationally optimal, but at least preserves the order unlike FindManyP
351  std::vector<art::Ptr<recob::Hit> > inHits;
352  for (auto it = tkHitsAssn.begin(); it!=tkHitsAssn.end(); ++it) {
353  if (it->first == ptrack) inHits.push_back(it->second);
354  else if (inHits.size()>0) break;
355  }
356 
357  recob::Track outTrack;
358  std::vector<art::Ptr<recob::Hit> > outHits;
359  trkmkr::OptionalOutputs optionals;
360  if (p_().options().produceTrackFitHitInfo()) optionals.initTrackFitInfos();
361  bool fitok = kalmanFitter.fitTrack(track.Trajectory(),track.ID(),
363  inHits, mom, pId, flipDir, outTrack, outHits, optionals);
364  if (!fitok) continue;
365 
366  if (p_().options().keepInputTrajectoryPoints()) {
367  restoreInputPoints(track.Trajectory().Trajectory(),inHits,outTrack,outHits);
368  }
369 
370  outputTracks->emplace_back(std::move(outTrack));
371  art::Ptr<recob::Track> aptr(tid, outputTracks->size()-1, tidgetter);
372  unsigned int ip = 0;
373  for (auto const& trhit: outHits) {
374  //the fitter produces collections with 1-1 match between hits and point
375  recob::TrackHitMeta metadata(ip,-1);
376  outputHitsMeta->addSingle(aptr, trhit, metadata);
377  outputHits->addSingle(aptr, trhit);
378  ip++;
379  }
380  outputPFAssn->addSingle(art::Ptr<recob::PFParticle>(inputPFParticle, iPF), aptr);
381  outputHitInfo->emplace_back(optionals.trackFitHitInfos());
382  }
383  }
384 
385  if (p_().options().showerFromPF()) {
386  art::Ptr<recob::PFParticle> pPF(inputPFParticle, iPF);
387  const std::vector<art::Ptr<recob::Shower> >& showers = assocShowers->at(iPF);
388  if (showers.size()==0) continue;
389  auto const& pfClustersAssn = *e.getValidHandle<art::Assns<recob::PFParticle, recob::Cluster> >(showerInputTag);
390  auto const& clHitsAssn = *e.getValidHandle<art::Assns<recob::Cluster, recob::Hit> >(showerInputTag);
391  std::vector<art::Ptr<recob::Hit> > inHits;
392  for (auto itpf = pfClustersAssn.begin(); itpf!=pfClustersAssn.end(); ++itpf) {
393  if (itpf->first == pPF) {
394  art::Ptr<recob::Cluster> clust = itpf->second;
395  for (auto it = clHitsAssn.begin(); it!=clHitsAssn.end(); ++it) {
396  if (it->first == clust) inHits.push_back(it->second);
397  }
398  } else if (inHits.size()>0) break;
399  }
400  //auto const& shHitsAssn = *e.getValidHandle<art::Assns<recob::Shower, recob::Hit> >(showerInputTag);
401  for (unsigned int iShower = 0; iShower < showers.size(); ++iShower) {
402  //
403  const recob::Shower& shower = *showers[iShower];
404  // art::Ptr<recob::Shower> pshower = showers[iShower];
405  // //this is not computationally optimal, but at least preserves the order unlike FindManyP
406  // std::vector<art::Ptr<recob::Hit> > inHits;
407  // for (auto it = shHitsAssn.begin(); it!=shHitsAssn.end(); ++it) {
408  // if (it->first == pshower) inHits.push_back(it->second);
409  // else if (inHits.size()>0) break;
410  // }
411 
412  recob::Track outTrack;
413  std::vector<art::Ptr<recob::Hit> > outHits;
414  trkmkr::OptionalOutputs optionals;
415  if (p_().options().produceTrackFitHitInfo()) optionals.initTrackFitInfos();
416  Point_t pos(shower.ShowerStart().X(),shower.ShowerStart().Y(),shower.ShowerStart().Z());
417  Vector_t dir(shower.Direction().X(),shower.Direction().Y(),shower.Direction().Z());
418  auto cov = SMatrixSym55();
419  auto pid = p_().options().pdgId();
420  auto mom = p_().options().pval();
421  bool fitok = kalmanFitter.fitTrack(pos, dir, cov, inHits, std::vector<recob::TrajectoryPointFlags>(),
422  shower.ID(), mom, pid,
423  outTrack, outHits, optionals);
424  if (!fitok) continue;
425 
426  outputTracks->emplace_back(std::move(outTrack));
427  art::Ptr<recob::Track> aptr(tid, outputTracks->size()-1, tidgetter);
428  unsigned int ip = 0;
429  for (auto const& trhit: outHits) {
430  // the fitter produces collections with 1-1 match between hits and point
431  recob::TrackHitMeta metadata(ip,-1);
432  outputHitsMeta->addSingle(aptr, trhit, metadata);
433  outputHits->addSingle(aptr, trhit);
434  if (p_().options().produceSpacePoints() && outputTracks->back().HasValidPoint(ip)) {
435  auto& tp = outputTracks->back().Trajectory().LocationAtPoint(ip);
436  double fXYZ[3] = {tp.X(),tp.Y(),tp.Z()};
437  double fErrXYZ[6] = {0};
438  recob::SpacePoint sp(fXYZ, fErrXYZ, -1.);
439  outputSpacePoints->emplace_back(std::move(sp));
440  art::Ptr<recob::SpacePoint> apsp(spid, outputSpacePoints->size()-1, spidgetter);
441  outputHitSpacePointAssn->addSingle(trhit, apsp);
442  }
443  ip++;
444  }
445  outputPFAssn->addSingle(art::Ptr<recob::PFParticle>(inputPFParticle, iPF), aptr);
446  outputHitInfo->emplace_back(optionals.trackFitHitInfos());
447  }
448  }
449 
450  }
451  e.put(std::move(outputTracks));
452  e.put(std::move(outputHitsMeta));
453  e.put(std::move(outputHits));
454  e.put(std::move(outputPFAssn));
455  if (p_().options().produceTrackFitHitInfo()) {
456  e.put(std::move(outputHitInfo));
457  }
458  if (p_().options().produceSpacePoints()) {
459  e.put(std::move(outputSpacePoints));
460  e.put(std::move(outputHitSpacePointAssn));
461  }
462  } else {
463 
464  art::ValidHandle<std::vector<recob::Track> > inputTracks = e.getValidHandle<std::vector<recob::Track> >(trackInputTag);
465  auto const& tkHitsAssn = *e.getValidHandle<art::Assns<recob::Track, recob::Hit> >(trackInputTag);
466 
467  if (p_().options().pFromCalo()) {
468  trackCalo = std::make_unique<art::FindManyP<anab::Calorimetry>>(inputTracks, e, caloInputTag);
469  }
470 
471  if (p_().options().idFromCollection()) {
472  trackId = std::make_unique<art::FindManyP<anab::ParticleID>>(inputTracks, e, pidInputTag);
473  }
474 
475  for (unsigned int iTrack = 0; iTrack < inputTracks->size(); ++iTrack) {
476 
477  const recob::Track& track = inputTracks->at(iTrack);
478  art::Ptr<recob::Track> ptrack(inputTracks, iTrack);
479  const int pId = setPId(iTrack, trackId);
480  const double mom = setMomValue(ptrack, trackCalo, pMC, pId);
481  const bool flipDir = setDirFlip(track, mcdir);
482 
483  //this is not computationally optimal, but at least preserves the order unlike FindManyP
484  std::vector<art::Ptr<recob::Hit> > inHits;
485  for (auto it = tkHitsAssn.begin(); it!=tkHitsAssn.end(); ++it) {
486  if (it->first == ptrack) inHits.push_back(it->second);
487  else if (inHits.size()>0) break;
488  }
489 
490  recob::Track outTrack;
491  std::vector<art::Ptr<recob::Hit> > outHits;
492  trkmkr::OptionalOutputs optionals;
493  if (p_().options().produceTrackFitHitInfo()) optionals.initTrackFitInfos();
494  bool fitok = kalmanFitter.fitTrack(track.Trajectory(),track.ID(),
496  inHits, mom, pId, flipDir, outTrack, outHits, optionals);
497  if (!fitok) continue;
498 
499  if (p_().options().keepInputTrajectoryPoints()) {
500  restoreInputPoints(track.Trajectory().Trajectory(),inHits,outTrack,outHits);
501  }
502 
503  outputTracks->emplace_back(std::move(outTrack));
504  art::Ptr<recob::Track> aptr(tid, outputTracks->size()-1, tidgetter);
505  unsigned int ip = 0;
506  for (auto const& trhit: outHits) {
507  //the fitter produces collections with 1-1 match between hits and point
508  recob::TrackHitMeta metadata(ip,-1);
509  outputHitsMeta->addSingle(aptr, trhit, metadata);
510  outputHits->addSingle(aptr, trhit);
511  if (p_().options().produceSpacePoints() && outputTracks->back().HasValidPoint(ip)) {
512  auto& tp = outputTracks->back().Trajectory().LocationAtPoint(ip);
513  double fXYZ[3] = {tp.X(),tp.Y(),tp.Z()};
514  double fErrXYZ[6] = {0};
515  recob::SpacePoint sp(fXYZ, fErrXYZ, -1.);
516  outputSpacePoints->emplace_back(std::move(sp));
517  art::Ptr<recob::SpacePoint> apsp(spid, outputSpacePoints->size()-1, spidgetter);
518  outputHitSpacePointAssn->addSingle(trhit, apsp);
519  }
520  ip++;
521  }
522  outputHitInfo->emplace_back(optionals.trackFitHitInfos());
523  }
524  e.put(std::move(outputTracks));
525  e.put(std::move(outputHitsMeta));
526  e.put(std::move(outputHits));
527  if (p_().options().produceTrackFitHitInfo()) {
528  e.put(std::move(outputHitInfo));
529  }
530  if (p_().options().produceSpacePoints()) {
531  e.put(std::move(outputSpacePoints));
532  e.put(std::move(outputHitSpacePointAssn));
533  }
534  }
535 }
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:101
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
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:201
const SMatrixSym55 & EndCovarianceLocal5D() const
Accessors to track parameters and covariance matrices in Local5D and Global6D coordinates.
Definition: Track.h:210
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:209
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:52
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 537 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().

537  {
538  const auto np = outTrack.NumberTrajectoryPoints();
539  std::vector<Point_t> positions(np);
540  std::vector<Vector_t> momenta(np);
541  std::vector<recob::TrajectoryPointFlags> outFlags(np);
542  //
543  for (unsigned int p=0; p<np; ++p) {
544  auto flag = outTrack.FlagsAtPoint(p);
545  auto mom = outTrack.VertexMomentum();
546  auto op = flag.fromHit();
547  positions[op] = track.LocationAtPoint(op);
548  momenta[op] = mom*track.DirectionAtPoint(op);
549  auto mask = flag.mask();
551  outFlags[op] = recob::TrajectoryPointFlags(op,mask);
552  }
553  auto covs = outTrack.Covariances();
554  outTrack = recob::Track(recob::TrackTrajectory(std::move(positions),std::move(momenta),std::move(outFlags),true),
555  outTrack.ParticleId(),outTrack.Chi2(),outTrack.Ndof(),std::move(covs.first),std::move(covs.second),outTrack.ID());
556  //
557  outHits.clear();
558  for (auto h : inHits) outHits.push_back(h);
559 }
double VertexMomentum() const
Definition: Track.h:145
static constexpr Flag_t NoPoint
The trajectory point is not defined.
int ParticleId() const
Access to various track properties.
Definition: Track.h:174
float Chi2() const
Access to various track properties.
Definition: Track.h:171
size_t NumberTrajectoryPoints() const
Various functions related to the presence and the number of (valid) points.
Definition: Track.h:105
std::pair< SMatrixSym55, SMatrixSym55 > Covariances() const
Access to position, momentum or covariance at the start and end of the track.
Definition: Track.h:165
Vector_t DirectionAtPoint(size_t i) const
Computes and returns the direction of the trajectory at a point.
Definition: Trajectory.cxx:118
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:242
int Ndof() const
Access to various track properties.
Definition: Track.h:173
int ID() const
Definition: Track.h:201
PointFlags_t const & FlagsAtPoint(size_t i) const
Access to i-th TrajectoryPoint or its Flags.
Definition: Track.h:121
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 605 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().

605  {
606  bool result = false;
607  if (p_().options().alwaysInvertDir()) {
608  return true;
609  } else if (p_().options().dirFromMC()) {
610  auto tdir = track.VertexDirection();
611  if ( (mcdir.X()*tdir.X() + mcdir.Y()*tdir.Y() + mcdir.Z()*tdir.Z())<0. ) result = true;
612  } else if (p_().options().dirFromVec()) {
613  std::array<float, 3> dir = p_().options().dirVec();
614  auto tdir = track.VertexDirection();
615  if ( (dir[0]*tdir.X() + dir[1]*tdir.Y() + dir[2]*tdir.Z())<0. ) result = true;
616  } else if (p_().options().trackFromPF() && p_().options().dirFromVtxPF() && vertices->size()>0) {
617  //if track end is closer to first vertex then track vertex, flip direction
618  double xyz[3];
619  (*vertices)[0]->XYZ(xyz);
620  auto& tv = track.Trajectory().Vertex();
621  auto& te = track.Trajectory().End();
622  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())) >
623  ((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;
624  }
625  return result;
626 }
const recob::TrackTrajectory & Trajectory() const
Access to the stored recob::TrackTrajectory.
Definition: Track.h:101
Vector_t VertexDirection() const
Access to track direction at different points.
Definition: Track.h:135
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 561 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().

561  {
562  double result = p_().options().pval();
563  if (p_().options().pFromMSChi2()) {
564  result = tmc.GetMomentumMultiScatterChi2(ptrack);
565  } else if (p_().options().pFromLength()) {
566  result = tmc.GetTrackMomentum(ptrack->Length(), pId);
567  } else if (p_().options().pFromCalo()) {
568  //take average energy from available views
569  const std::vector<art::Ptr<anab::Calorimetry> >& calo = trackCalo->at(ptrack.key());
570  double sumenergy = 0.;
571  int nviews = 0.;
572  for (auto caloit : calo) {
573  if (caloit->KineticEnergy()>0.) {
574  sumenergy+=caloit->KineticEnergy();
575  nviews+=1;
576  }
577  }
578  if (nviews!=0 && sumenergy!=0.) {
579  //protect against problematic cases
580  result = sumenergy/(nviews*1000.);
581  }
582  } else if (p_().options().pFromMC() && pMC>0.) {
583  result = pMC;
584  }
585  return result;
586 }
key_type key() const
Definition: Ptr.h:356
double GetMomentumMultiScatterChi2(art::Ptr< recob::Track > const &trk)
double Length(size_t p=0) const
Access to various track properties.
Definition: Track.h:170
calorimetry
double GetTrackMomentum(double trkrange, int pdg) const
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 588 of file KalmanFilterFinalTrackFitter_module.cc.

References p_, and trackId.

Referenced by produce().

588  {
589  int result = p_().options().pdgId();
590  if (p_().options().trackFromPF() && p_().options().idFromPF()) {
591  result = pfPid;
592  } else if (p_().options().idFromCollection()) {
593  //take the pdgId corresponding to the minimum chi2 (should we give preference to the majority? fixme)
594  double minChi2 = -1.;
595  for (auto idit : trackId->at(iTrack)) {
596  if ( idit->MinChi2()>0. && (minChi2<0. || idit->MinChi2()<minChi2) ) {
597  result = idit->Pdg();
598  minChi2 = idit->MinChi2();
599  }
600  }
601  }
602  return result;
603 }
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 198 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce().

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

Definition at line 197 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce().

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

Definition at line 199 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 {}
mutableprivate

Definition at line 185 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by setMomValue().

std::unique_ptr<art::FindManyP<anab::Calorimetry> > trkf::KalmanFilterFinalTrackFitter::trackCalo
private

Definition at line 195 of file KalmanFilterFinalTrackFitter_module.cc.

Referenced by produce(), and setMomValue().

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

Definition at line 196 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: