Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
zcl::FMMTracker Class Reference
Inheritance diagram for zcl::FMMTracker:
art::EDProducer art::ProducerBase art::Consumer art::EngineCreator art::ProductRegistryHelper

Public Types

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

Public Member Functions

 FMMTracker (fhicl::ParameterSet const &pset)
 
virtual ~FMMTracker ()
 
void produce (art::Event &evt)
 
bool Tracking2D (art::ServiceHandle< geo::Geometry > const &geom, const art::PtrVector< rb::CellHit > &hitlist, int view, rb::Track &track, std::vector< TVector3 > &poslist)
 
double recoT (TVector3 position, std::vector< TVector3 > &poslist, std::vector< double > &PEs, std::vector< double > &tlist)
 
double calcW (double z, double w1, double w2, double z1, double z2)
 
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< Tconsumes (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< Tconsumes (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< TconsumesView (InputTag const &it)
 
template<typename T , BranchType = InEvent>
ProductToken< TmayConsume (InputTag const &)
 
template<typename T , art::BranchType BT>
art::ProductToken< TmayConsume (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< TmayConsumeView (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 Attributes

std::string fClusterInput
 Input folder from cluster reco. More...
 
double _dSqrMax
 
int _PEcut
 
unsigned _minHits
 

Detailed Description

Definition at line 48 of file FMMTracker_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

zcl::FMMTracker::FMMTracker ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 78 of file FMMTracker_module.cc.

78  :
79  fClusterInput (p.get< std::string > ("ClusterInput") ),
80  _dSqrMax (200),
81  _PEcut (500),
82  _minHits (3)//, //At least 3 hits on each view
83  // _deltaT (1500), //ns
84  // _deltaZ (30) //cm
85 {
86  // Call appropriate Produces<>() functions here.
87  produces< std::vector<rb::Track> >();
88 }
const char * p
Definition: xmltok.h:285
std::string fClusterInput
Input folder from cluster reco.
enum BeamMode string
zcl::FMMTracker::~FMMTracker ( )
virtual

Definition at line 90 of file FMMTracker_module.cc.

91 {
92  // Clean up dynamic memory and other resources here.
93 }

Member Function Documentation

double zcl::FMMTracker::calcW ( double  z,
double  w1,
double  w2,
double  z1,
double  z2 
)

Definition at line 307 of file FMMTracker_module.cc.

References DEFINE_ART_MODULE(), and w.

Referenced by produce().

307  {
308  double w = (w2*(z-z1)+w1*(z2-z))/(z2-z1);
309  if (w > 761) w = 761;
310  else if (w < -761) w = -761;
311 
312  return w;
313 }
z
Definition: test.py:28
Float_t w
Definition: plot.C:20
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 146 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

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

Definition at line 161 of file Consumer.h.

References T.

162 {
163  if (!moduleContext_)
164  return;
165 
166  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
167 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
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 171 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

172 {
173  if (!moduleContext_)
174  return ViewToken<T>::invalid();
175 
176  consumables_[BT].emplace_back(ConsumableType::ViewElement,
177  TypeID{typeid(T)},
178  it.label(),
179  it.instance(),
180  it.process());
181  return ViewToken<T>{it};
182 }
set< int >::iterator it
static ViewToken< Element > invalid()
Definition: ProductToken.h:75
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make 
)
inherited
base_engine_t& art::EngineCreator::createEngine ( seed_t  seed,
std::string const &  kind_of_engine_to_make,
label_t const &  engine_label 
)
inherited
CurrentProcessingContext const* art::EDProducer::currentContext ( ) const
protectedinherited
seed_t art::EngineCreator::get_seed_value ( fhicl::ParameterSet const &  pset,
char const  key[] = "seed",
seed_t const  implicit_seed = -1 
)
inherited
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_.

Referenced by skim::NueSkimmer::CopyMichelSlice(), and skim::NueSkimmer::CopyMichelTrack().

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 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  }
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 189 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

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

Definition at line 204 of file Consumer.h.

References T.

205 {
206  if (!moduleContext_)
207  return;
208 
209  consumables_[BT].emplace_back(ConsumableType::Many, TypeID{typeid(T)});
210 }
ConsumableProducts consumables_
Definition: Consumer.h:137
double T
Definition: Xdiff_gwt.C:5
bool moduleContext_
Definition: Consumer.h:135
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 214 of file Consumer.h.

References art::InputTag::instance(), PandAna.reco_validation.prod5_pid_validation::invalid, art::InputTag::label(), art::InputTag::process(), and T.

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

Definition at line 40 of file ProducerBase.h.

References art::ProducerBase::getProductID(), and string.

41  {
42  return true;
43  }
static cet::exempt_ptr<Consumer> art::Consumer::non_module_context ( )
staticinherited
void art::Consumer::prepareForJob ( fhicl::ParameterSet const &  pset)
protectedinherited
void zcl::FMMTracker::produce ( art::Event evt)
virtual

Implements art::EDProducer.

Definition at line 95 of file FMMTracker_module.cc.

References rb::Cluster::Add(), rb::Track::AppendTrajectoryPoint(), calcW(), rb::Cluster::Cell(), fClusterInput, geom(), art::DataViewImpl::getByLabel(), MECModelEnuComparisons::i, calib::Calibrator::MakeRecoHit(), std::max(), std::min(), rb::CellHit::Plane(), art::Event::put(), art::PtrVector< T >::size(), rb::CellHit::TNS(), Tracking2D(), X, rb::Cluster::XCells(), Y, and rb::Cluster::YCells().

96 {
99 
100  //Now, start reco tracks!
102  evt.getByLabel(fClusterInput, slices);
103  std::unique_ptr< std::vector<rb::Track> > trackcol(new std::vector<rb::Track>);
104 
105  //Instead of splitting the hits into 2 views, just directly take the entire 3D slice:
106  for (unsigned sliceIdx = 0; sliceIdx != slices->size(); ++sliceIdx) {
107  const rb::Cluster& slice = (*slices)[sliceIdx];
108 
109  const art::PtrVector<rb::CellHit>& Xhitlist = slice.XCells();
110  //During the stage of the MMSlicer, the hits should already be sorted by plane number
111  const art::PtrVector<rb::CellHit>& Yhitlist = slice.YCells();
112 
113  int px_min = 999;
114  int px_max = -999;
115  double tx_min = 9e9;
116  double tx_max = -9e9;
117 
118  for (unsigned i=0; i!= Xhitlist.size(); ++i) {
119  const art::Ptr<rb::CellHit> chit = Xhitlist[i];
120  if (tx_min > chit->TNS()) tx_min = chit->TNS();
121  if (tx_max < chit->TNS()) tx_max = chit->TNS();
122  if (px_min > chit->Plane()) px_min = chit->Plane();
123  if (px_max < chit->Plane()) px_max = chit->Plane();
124  }
125 
126  int py_min = 999;
127  int py_max = -999;
128  double ty_min = 9e9;
129  double ty_max = -9e9;
130 
131  for (unsigned i=0; i!= Yhitlist.size(); ++i) {
132  const art::Ptr<rb::CellHit> chit = Yhitlist[i];
133  if (ty_min > chit->TNS()) ty_min = chit->TNS();
134  if (ty_max < chit->TNS()) ty_max = chit->TNS();
135  if (py_min > chit->Plane()) py_min = chit->Plane();
136  if (py_max < chit->Plane()) py_max = chit->Plane();
137  }
138 
139  //Matching test:
140  if (std::min(tx_max, ty_max) - std::max(tx_min,ty_min) < 0) continue;
141  if (std::min(px_max, py_max) - std::max(px_min,py_min) < 3) continue;
142 
143  // rb::SortByPlane(Yhitlist);
144  rb::Track xtrack, ytrack;
145  // TVector3 pX1, pX2, pY1, pY2;
146  std::vector<TVector3> Xp_list,Yp_list; //X(Y),Z
147  std::vector<TVector3> trjList; //X,Y,Z
148  std::vector<double> t_list;
149 
150  //Either X or Y track is not reconstructed, just skip to the next slice
151  // geom: hitlist: view: track: positions list:
152  if (!Tracking2D(geom,Xhitlist,0,xtrack,Xp_list) )
153  continue;
154 
155  if (!Tracking2D(geom,Yhitlist,1,ytrack,Yp_list) )
156  continue;
157 
158  //Merging: and setting W position for each reco hit, to get the calibrated time and energy
159  rb::Track FMMtrack3D;
160  //Reconstruct the 3D info of the start and end points
161 
162  TVector3 lowZ_P, highZ_P;
163  // double lowZ_T, highZ_T;
164 
165  unsigned nxhits_RC = Xp_list.size();
166  unsigned nyhits_RC = Yp_list.size();
167 
168  for (unsigned i=0; i!= nxhits_RC; ++i) {
169  const art::Ptr<rb::CellHit> chit = xtrack.Cell(i);
170 
171  rb::RecoHit rhit(calib->MakeRecoHit(*chit,
172  calcW(Xp_list[i].Y(),
173  Yp_list[0].X(),
174  Yp_list[nyhits_RC-1].X(),
175  Yp_list[0].Y(),
176  Yp_list[nyhits_RC-1].Y() ) ) );
177  if (!rhit.IsCalibrated() )
178  continue;
179 
180  trjList.emplace_back(TVector3(rhit.X(),rhit.Y(),rhit.Z()));
181  t_list.emplace_back(rhit.T());
182  FMMtrack3D.AppendTrajectoryPoint(TVector3(rhit.X(),rhit.Y(),rhit.Z()) );
183 
184  // std::cout<<"Xview: "<<"X: "<<rhit.X()<<" Y:"<<rhit.Y()<<" Z: "<<rhit.Z()<<std::endl;
185 
186  FMMtrack3D.Add(chit);
187  }
188 
189  //X view finished, predetermine the lowZ and highZ:
190  /*
191  lowZ_P = trjList[0];
192  lowZ_T = t_list[0];
193  highZ_P = trjList[nxhits_RC-1];
194  highZ_T = t_list[nxhits_RC-1];
195  */
196  // std::cout<<"Y hits on track: "<<Yp_list.size()<<std::endl;
197  for (unsigned i=0; i!= nyhits_RC; ++i) {
198  const art::Ptr<rb::CellHit> chit = ytrack.Cell(i);
199  rb::RecoHit rhit(calib->MakeRecoHit(*chit,
200  calcW(Yp_list[i].Y(),
201  Xp_list[0].X(),
202  Xp_list[nxhits_RC-1].X(),
203  Xp_list[0].Y(),
204  Xp_list[nxhits_RC-1].Y() ) ) );
205 
206  if (!rhit.IsCalibrated() )
207  continue;
208  // std::cout<<"Yview: "<<"X: "<<rhit.X()<<" Y:"<<rhit.Y()<<" Z: "<<rhit.Z()<<std::endl;
209 
210  trjList.emplace_back(TVector3(rhit.X(),rhit.Y(),rhit.Z()));
211  t_list.emplace_back(rhit.T());
212  FMMtrack3D.AppendTrajectoryPoint(TVector3(rhit.X(),rhit.Y(),rhit.Z()) );
213  FMMtrack3D.Add(chit);
214  }
215  /*
216  if (lowZ_P.Z() > trjList[nxhits_RC].Z()) {
217  lowZ_P = trjList[nxhits_RC];
218  lowZ_T = t_list[nxhits_RC];
219  }
220 
221  if (highZ_P.Z() < trjList[nxhits_RC+nyhits_RC-1].Z()) {
222  highZ_P = trjList[nxhits_RC+nyhits_RC-1];
223  highZ_T = t_list[nxhits_RC+nyhits_RC-1];
224  }
225 
226  //Now, determine the start and end time (simultaneously you know which is the start point):
227  lowZ_T = recoT(lowZ_P,trjList,pe_list,t_list);
228  highZ_T = recoT(highZ_P,trjList,pe_list,t_list);
229 
230 
231  if (lowZ_T < highZ_T) {
232  FMMtrack3D.SetStart(lowZ_P);
233  FMMtrack3D.SetDir((highZ_P-lowZ_P).Unit());
234  }
235  else {
236  FMMtrack3D.SetStart(highZ_P);
237  FMMtrack3D.SetDir((lowZ_P-highZ_P).Unit());
238  }
239  */
240  trackcol->emplace_back(FMMtrack3D);
241  // std::cout<<"reconstructed 3D tracks: "<<trackcol->size()<<std::endl;
242  }
243  evt.put(std::move(trackcol));
244 } //end production function
float TNS() const
Definition: CellHit.h:46
T max(const caf::Proxy< T > &a, T b)
bool Tracking2D(art::ServiceHandle< geo::Geometry > const &geom, const art::PtrVector< rb::CellHit > &hitlist, int view, rb::Track &track, std::vector< TVector3 > &poslist)
const art::PtrVector< rb::CellHit > & XCells() const
Get all cells from the x-view.
Definition: Cluster.h:124
unsigned short Plane() const
Definition: CellHit.h:39
rb::RecoHit MakeRecoHit(rb::CellHit const &cellhit, double w)
A collection of associated CellHits.
Definition: Cluster.h:47
A rb::Prong with full reconstructed trajectory.
Definition: Track.h:20
Float_t Y
Definition: plot.C:38
Calibrated quantities relying on position in the orthogonal view. To generate a rb::CellHit from a rb...
Definition: RecoHit.h:19
std::string fClusterInput
Input folder from cluster reco.
virtual void Add(const art::Ptr< rb::CellHit > &cell, double weight=1)
Definition: Cluster.cxx:84
ProductID put(std::unique_ptr< PROD > &&product)
Definition: Event.h:102
CDPStorage service.
const art::PtrVector< rb::CellHit > & YCells() const
Get all cells from the x-view.
Definition: Cluster.h:126
void AppendTrajectoryPoint(TVector3 pt)
Definition: Track.cxx:112
size_type size() const
Definition: PtrVector.h:308
art::Ptr< rb::CellHit > Cell(geo::View_t view, unsigned int viewIdx) const
Get the ith cell from view view.
Definition: Cluster.cxx:145
bool getByLabel(std::string const &label, std::string const &productInstanceName, Handle< PROD > &result) const
Definition: DataViewImpl.h:344
void geom(int which=0)
Definition: geom.C:163
double calcW(double z, double w1, double w2, double z1, double z2)
T min(const caf::Proxy< T > &a, T b)
Float_t X
Definition: plot.C:38
double zcl::FMMTracker::recoT ( TVector3  position,
std::vector< TVector3 > &  poslist,
std::vector< double > &  PEs,
std::vector< double > &  tlist 
)

Definition at line 290 of file FMMTracker_module.cc.

References _PEcut, stan::math::exp(), MECModelEnuComparisons::i, Mag2(), T, and ana::weight.

294 {
295  double T = 0;
296  double wt = 0;
297  for (unsigned i=0; i!= PEs.size(); ++i) {
298  if (PEs[i] < _PEcut) continue;
299  double weight = exp(-(poslist[i]-position).Mag2());
300  T = weight*tlist[i];
301  wt += weight;
302  }
303  T = T/wt;
304  return T;
305 }
const Var weight
fvar< T > exp(const fvar< T > &x)
Definition: exp.hpp:10
float Mag2() const
double T
Definition: Xdiff_gwt.C:5
void art::Consumer::showMissingConsumes ( ) const
protectedinherited

Referenced by art::RootOutput::endJob().

bool zcl::FMMTracker::Tracking2D ( art::ServiceHandle< geo::Geometry > const &  geom,
const art::PtrVector< rb::CellHit > &  hitlist,
int  view,
rb::Track track,
std::vector< TVector3 > &  poslist 
)

Definition at line 248 of file FMMTracker_module.cc.

References _dSqrMax, _minHits, rawdata::RawDigit::ADC(), rb::Cluster::Add(), rb::CellHit::Cell(), geo::DsqrToLine(), MECModelEnuComparisons::i, geo::LinFitMinDperp(), rb::Cluster::NCell(), rb::CellHit::Plane(), geo::GeometryBase::Plane(), art::PtrVector< T >::size(), confusionMatrixTree::t, rb::CellHit::TNS(), w, submit_syst::x, x1, submit_syst::x2, submit_syst::y, y1, and submit_syst::y2.

Referenced by produce().

254 {
255  double xyz[3];
256  std::vector<double> x,y,w,t;
257 
258  if (hitlist.size()<_minHits) return false;
259 
260  //First time loop: store xyw
261  for (unsigned i=0; i!= hitlist.size(); ++i) {
262  const art::Ptr<rb::CellHit> chit = hitlist[i];
263 
264 
265  w.emplace_back(chit->ADC() );
266  geom->Plane(chit->Plane())->Cell(chit->Cell())->GetCenter(xyz);
267  x.emplace_back(xyz[2]);
268  y.emplace_back(xyz[view]);
269  t.emplace_back(chit->TNS());
270  }
271  //Doing Linfit to determine the start and end position:
272  //But actually I just use this to drop non-in-line hits in the cluster
273  double x1,y1,x2,y2,dSq;
274  dSq=geo::LinFitMinDperp(x,y,w,&x1,&x2,&y1,&y2);
275 
276  //Second time loop: drop hits not on the line
277  for (unsigned i=0; i!= hitlist.size(); ++i) {
278  dSq = geo::DsqrToLine(x[i],y[i],x1,x2,y1,y2);
279  if (dSq<_dSqrMax) {
280  track.Add(hitlist[i]);
281  plist.emplace_back( TVector3(y[i], x[i], t[i]) );
282  }
283  }
284 
285  if (track.NCell()<_minHits) return false;
286  else return true;
287 
288 }
float TNS() const
Definition: CellHit.h:46
unsigned int NCell(geo::View_t view) const
Number of cells in view view.
Definition: Cluster.cxx:134
Float_t y1[n_points_granero]
Definition: compare.C:5
unsigned short Plane() const
Definition: CellHit.h:39
Float_t x1[n_points_granero]
Definition: compare.C:5
const PlaneGeo * Plane(unsigned int i) const
virtual void Add(const art::Ptr< rb::CellHit > &cell, double weight=1)
Definition: Cluster.cxx:84
unsigned short Cell() const
Definition: CellHit.h:40
double LinFitMinDperp(const std::vector< double > &x, const std::vector< double > &y, const std::vector< double > &w, double *x1, double *y1, double *x2, double *y2)
Find the best-fit line to a collection of points in 2-D by minimizing the squared perpendicular dista...
Definition: Geo.cxx:449
double DsqrToLine(double x0, double y0, double x1, double y1, double x2, double y2)
In two dimensions, return the perpendicular distance from a point (x0,y0) to a line defined by end po...
Definition: Geo.cxx:338
size_type size() const
Definition: PtrVector.h:308
int16_t ADC(uint32_t i) const
Definition: RawDigit.cxx:58
Float_t w
Definition: plot.C:20
void art::Consumer::validateConsumedProduct ( BranchType const  bt,
ProductInfo const &  pi 
)
protectedinherited

Member Data Documentation

double zcl::FMMTracker::_dSqrMax
private

Definition at line 70 of file FMMTracker_module.cc.

Referenced by Tracking2D().

unsigned zcl::FMMTracker::_minHits
private

Definition at line 72 of file FMMTracker_module.cc.

Referenced by Tracking2D().

int zcl::FMMTracker::_PEcut
private

Definition at line 71 of file FMMTracker_module.cc.

Referenced by recoT().

std::string zcl::FMMTracker::fClusterInput
private

Input folder from cluster reco.

Definition at line 69 of file FMMTracker_module.cc.

Referenced by produce().


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