LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
DataStructs.h
Go to the documentation of this file.
1 //
3 //
4 // TCAlg data structs
5 //
6 // Bruce Baller
7 //
9 #ifndef TRAJCLUSTERALGDATASTRUCT_H
10 #define TRAJCLUSTERALGDATASTRUCT_H
11 
12 // C/C++ standard libraries
13 #include <array>
14 #include <bitset>
15 #include <vector>
16 
17 // LArSoft libraries
21 
22 namespace TMVA {
23  class Reader;
24 }
25 namespace calo {
26  class CalorimetryAlg;
27 }
28 namespace geo {
29  class GeometryCore;
30 }
31 
32 namespace tca {
33 
34  namespace detail {
35  struct SortEntry {
36  unsigned int index;
37  float val;
38  };
39  }
40 
41  using Point3_t = std::array<double, 3>;
42  using Vector3_t = std::array<double, 3>;
43  using Point2_t = std::array<float, 2>;
44  using Vector2_t = std::array<double, 2>;
45 
46  // some functions to handle the CTP_t type
47  typedef unsigned int CTP_t;
48  constexpr unsigned int Tpad = 10; // alignment for CTP sub-items - TPC
49  constexpr unsigned int Cpad = 10000; // alignment for CTP sub-items - Cryostat
50 
51  inline CTP_t EncodeCTP(unsigned int cryo, unsigned int tpc, unsigned int plane)
52  {
53  return cryo * Cpad + tpc * Tpad + plane;
54  }
55  inline CTP_t EncodeCTP(const geo::PlaneID& planeID)
56  {
57  return EncodeCTP(planeID.Cryostat, planeID.TPC, planeID.Plane);
58  }
59  inline CTP_t EncodeCTP(const geo::WireID& wireID)
60  {
61  return EncodeCTP(wireID.Cryostat, wireID.TPC, wireID.Plane);
62  }
63  geo::PlaneID DecodeCTP(CTP_t CTP);
64 
67 
69  struct VtxStore {
70  Point2_t Pos{{0, 0}};
71  Point2_t PosErr{{2, 1}};
72  unsigned short NTraj{0};
73  unsigned short Pass{0}; // Pass in which this vertex was created
74  float ChiDOF{0};
75  // Topo: 0 = end0-end0, 1 = end0(1)-end1(0), 2 = end1-end1, 3 = CI3DV,
76  // 4 = C3DIVIG, 5 = FHV, 6 = FHV2, 7 = SHCH, 8 = CTBC, 9 = Junk, 10 = HamBragg, 11 = neutral decay (pizero)
77  // 12 = BraggSplit, 13 = Not Used, 14 = Reconcile2VTs
78  short Topo{0};
79  CTP_t CTP{0};
80  int ID{0};
81  int UID{0};
82  int Vx3ID{0};
83  float Score{0};
84  float TjChgFrac{0};
85  std::bitset<16> Stat{0};
86  };
87 
88  typedef enum {
98  } VtxBit_t;
99 
101  struct Vtx3Store {
102  float X{0}; // x position
103  float XErr{0.5}; // x position error
104  float Y{0}; // y position
105  float YErr{0.5}; // y position error
106  float Z{0}; // z position
107  float ZErr{0.5}; // z position error
108  float Score{0};
109  int Wire{-1}; // wire number for an incomplete 3D vertex
111  std::vector<int> Vx2ID; // List of 2D vertex IDs in each plane
112  int ID{0}; // 0 = obsolete vertex
113  int UID{0};
114  bool Primary{false};
115  bool Neutrino{false};
116  };
117 
118  // The (y,z) position of a valid wire intersection of two wires on two planes +
119  // + the (y,z) position variation for a one wire change in pln1 and pln2
121  unsigned short pln1;
122  unsigned short pln2;
123  float wir1;
124  float wir2;
125  double y;
126  double z;
127  double dydw1;
128  double dzdw1;
129  double dydw2;
130  double dzdw2;
131  unsigned int tpc;
132  };
133 
134  // A temporary struct for matching trajectory points; 1 struct for each TP for
135  // each trajectory. These are put into mallTraj which is then sorted by increasing xlo
136  struct Tj2Pt {
137  unsigned int wire;
138  // x range spanned by hits on the TP
139  float xlo;
140  float xhi;
141  unsigned short plane;
142  // the Trajectory ID
143  unsigned short id;
144  unsigned short ipt; // The trajectory point
145  // the number of points in the Tj so that the minimum Tj length cut (MatchCuts[2]) can be made
146  unsigned short npts;
147  };
148 
149  struct TrajPoint {
150  CTP_t CTP{0};
151  Point2_t HitPos{{0, 0}}; // Charge weighted position of hits in wire equivalent units
152  Point2_t Pos{{0, 0}}; // Trajectory position in wire equivalent units
153  Vector2_t Dir{{0, 0}}; // Direction cosines in the StepDir direction
154  double HitPosErr2{0}; // Uncertainty^2 of the hit position perpendiclar to the direction
155  // HitPosErr2 < 0 = HitPos not defined because no hits used
156  double Ang{0}; // Trajectory angle (-pi, +pi)
157  double AngErr{0.1}; // Trajectory angle error
158  float KinkSig{-1}; // kink significance = delta angle / angle error
159  float Chg{0}; // Chargetj2pt
160  float AveChg{-1}; // Average charge of last ~20 TPs
161  float ChgPull{0.1}; // = (Chg - AveChg) / ChgRMS
162  float Delta{0}; // Deviation between trajectory and hits (WSE)
163  float DeltaRMS{0.02}; // RMS of Deviation between trajectory and hits (WSE)
164  float FitChi{0}; // Chi/DOF of the fit
165  int InPFP{0}; // ID of the PFParticle that owns this TP
166  unsigned short NTPsFit{2}; // Number of trajectory points fitted to make this point
167  unsigned short Step{0}; // Step number at which this TP was created
168  unsigned short AngleCode{0}; // 0 = small angle, 1 = large angle, 2 = very large angle
169  std::vector<unsigned int> Hits; // vector of fHits indices
170  std::bitset<16> UseHit{0}; // set true if the hit is used in the fit
171  std::bitset<8> Environment{0}; // TPEnvironment_t bitset that describes the environment
172  };
173 
174  // struct filled by FitPar which fits TP Chg, Delta, etc
175  struct ParFit {
176  Point2_t Pos{{0, 0}}; // position origin of the fit
177  float Par0;
178  float AvePar;
179  float ParErr;
180  float ParSlp; // slope relative to the origin
181  float ParSlpErr;
182  float ChiDOF;
183  unsigned short nPtsFit;
184  };
185 
186  // Global information for the trajectory
187  struct Trajectory {
188  std::vector<TrajPoint> Pts;
189  CTP_t CTP{0};
190  std::bitset<128> AlgMod;
191  int WorkID{0};
192  int ParentID{
193  -1};
194  float AveChg{0};
195  float TotChg{0};
196  float ChgRMS{0.5};
197  short MCSMom{0}; //< Crude 2D estimate to use for shower-like vs track-like discrimination
198  Point2_t dEdx{{0, 0}};
199  std::array<unsigned short, 2> VtxID{{0, 0}};
200  std::array<unsigned short, 2> EndPt{
201  {0, 0}};
202  int ID;
203  int UID;
204  int SSID{0};
205  unsigned short PDGCode{0};
206  unsigned short Pass{0};
207  short StepDir{0};
208  short StartEnd{-1};
209  std::array<std::bitset<8>, 2> EndFlag{}; // Bitset that encodes the reason for stopping
210  std::bitset<8> Strategy{};
211  bool NeedsUpdate{false};
212  bool IsGood{true};
213  bool MaskedLastTP{false};
214  };
215 
216  struct TjForecast {
217  unsigned short nextForecastUpdate{
218  0};
219  float showerLikeFraction{
220  0};
221  float outlook{-1};
222  float chgSlope{0};
223  float chgSlopeErr{0};
224  float chgFitChiDOF{0};
225  float chgRMS{0};
226  short MCSMom{0};
227  bool leavesBeforeEnd{false};
228  bool foundShower{false};
229  bool endBraggPeak{false};
230  };
231 
232  // Temporary 3D trajectory points composed of triplet or doublet wire intersections
233  struct TrajPoint3 {
234  Point3_t Pos{{0.0, 0.0, 0.0}};
235  Vector3_t Dir{{0.0, 0.0, 0.0}};
236  std::vector<Tj2Pt> Tj2Pts; // list of trajectory points
237  };
238 
239  struct SectionFit {
240  Point3_t Pos{{-10.0, 0.0, 0.0}};
241  Vector3_t Dir{{0.0, 0.0, 0.0}};
242  Vector3_t DirErr{{0.0, 0.0, 0.0}};
243  float ChiDOF{-1};
244  unsigned short NPts{0};
245  bool NeedsUpdate{true};
246  };
247 
248  // a 3D trajectory point composed of a 3D point & direction and a single TP
249  struct TP3D {
250  Point3_t Pos{{-10.0, -10.0, -10.0}};
251  Vector3_t Dir{{0.0, 0.0, 0.0}};
252  double TPX{-10};
253  double TPXErr2{1};
254  float Wire{-1};
255  float along{1E6};
256  int TjID{0};
257  CTP_t CTP;
258  unsigned short TPIndex{USHRT_MAX};
259  unsigned short SFIndex{USHRT_MAX};
260  std::bitset<8> Flags; //< see TP3DFlags_t
261  };
262 
263  typedef enum {
264  kTP3DGood, // Is good for fitting and calorimetry
265  kTP3DBad, // Should be removed from the trajectory
266  kTP3DHiDEdx // Has high dE/dx
267  } TP3DFlags_t;
268 
269  // Struct for 3D trajectory matching
270  struct MatchStruct {
271  // IDs of Trajectories that match in all planes
272  std::vector<int> TjIDs;
273  // Count of the number of X-matched hits and de-weight by angle
274  float Count{0}; // Set to 0 if matching failed
275  };
276 
277  constexpr unsigned int pAlgModSize = 6; // alignment for CTP sub-items - TPC
278 
279  struct PFPStruct {
280  std::vector<int> TjIDs; // used to reference Tjs within a slice
281  std::vector<int> TjUIDs; // used to reference Tjs in any slice
282  std::vector<TP3D> TP3Ds; // vector of 3D trajectory points
283  std::vector<SectionFit> SectionFits;
284  // Start is 0, End is 1
285  std::array<std::vector<float>, 2> dEdx;
286  std::array<std::vector<float>, 2> dEdxErr;
287  std::array<int, 2> Vx3ID{{0, 0}};
288  int BestPlane{-1};
289  int PDGCode{-1};
290  std::vector<int> DtrUIDs;
291  size_t ParentUID{0}; // Parent PFP UID (or 0 if no parent exists)
293  float CosmicScore{0};
294  int ID{0};
295  int UID{0}; // unique global ID
296  unsigned short MVI; // matVec index for detailed debugging
297  std::bitset<8> Flags; //< see PFPFlags_t
298  std::array<std::bitset<8>, 2> EndFlag{}; // Uses the same enum as Trajectory EndFlag
299  std::bitset<pAlgModSize> AlgMod; //< Allocate the first set of bits in AlgBit_t for 3D algs
300  };
301 
303 
304  struct ShowerPoint {
305  Point2_t Pos; // Hit Position in the normal coordinate system
306  Point2_t
307  RotPos; // Position rotated into the shower coordinate system (0 = along, 1 = transverse)
308  float Chg{0}; // Charge of this point
309  unsigned int HitIndex; // the hit index
310  unsigned short
311  TID; // The ID of the tj the point (hit) is in. TODO eliminate this redundant variable
312  };
313 
314  // A temporary structure that defines a 2D shower-like cluster of trajectories
315  struct ShowerStruct {
316  CTP_t CTP;
317  int ShowerTjID{0}; // ID of the shower Trajectory composed of many InShower Tjs
318  std::vector<int> TjIDs; // list of InShower Tjs
319  std::vector<int> NearTjIDs; // list of Tjs that are not InShower but satisfy the maxSep cut
320  std::vector<ShowerPoint> ShPts; // Trajectory points inside the shower
321  float Angle{0}; // Angle of the shower axis
322  float AngleErr{3}; // Error
323  float AspectRatio{1}; // The ratio of charge weighted transverse/longitudinal positions
324  float DirectionFOM{1};
325  std::vector<Point2_t> Envelope; // Vertices of a polygon that encompasses the shower
326  float EnvelopeArea{0};
327  float ChgDensity{0}; // Charge density inside the Envelope
328  float Energy{0};
329  float ParentFOM{10};
330  int ID{0};
331  int UID{0};
332  int ParentID{0}; // The ID of a parent Tj - the one at the start of the shower
333  int TruParentID{0};
334  int SS3ID{0}; // ID of a ShowerStruct3D to which this 2D shower is matched
335  bool NeedsUpdate{true}; // Needs to be updated (e.g. after adding a tj, defining a parent, etc)
336  };
337 
338  // Shower variables filled in MakeShowers. These are in cm and radians
339  struct ShowerStruct3D {
341  Vector3_t
342  DirErr; // DirErr is hijacked to store the shower rms at the start, center and end sections
344  Point3_t StartErr; // PosErr is hijacked to temporarily store the charge in the three sections
345  Point3_t ChgPos; // position of the center of charge
346  Point3_t End; // end position
347  double Len{1};
348  double OpenAngle{0.12};
349  std::vector<double> Energy;
350  std::vector<double> EnergyErr;
351  std::vector<double> MIPEnergy;
352  std::vector<double> MIPEnergyErr;
353  std::vector<double> dEdx;
354  std::vector<double> dEdxErr;
356  std::vector<int> CotIDs; // list of indices of 2D showers in tjs.cots
357  std::vector<unsigned int> Hits;
359  int ID;
360  int UID{0};
361  int ParentID{0}; // The ID of a track-like pfp at the start of the shower, e.g. an electron
362  float MatchFOM;
363  unsigned short PFPIndex{USHRT_MAX}; // The index of the pfp for this shower
364  int Vx3ID{0};
365  bool NeedsUpdate{true}; // This is set true whenever the shower needs to be updated
366  bool Cheat{false};
367  };
368 
370  std::array<int, 2>
371  TjIDs; // pairs of Tjs that shouldn't be clustered in shower reconstruction because...
372  int Vx2ID; // they share a 2D vertex that may be matched to...
373  int Vx3ID; // a high-score 3D vertex
374  };
375 
376  struct ShowerTreeVars {
377  // run, subrun, and event are also saved to this tree
378 
379  std::vector<float> BeginWir; // begin wire
380  std::vector<float> BeginTim; // begin tick
381  std::vector<float> BeginAng; // begin angle
382  std::vector<float> BeginChg; // beginning average charge
383  std::vector<short> BeginVtx; // ID of begin vertex
384  std::vector<float> EndWir; // end wire
385  std::vector<float> EndTim; // end tick
386  std::vector<float> EndAng; // end angle
387  std::vector<float> EndChg; // ending average charge
388  std::vector<short> EndVtx; //ID of end vertex
389 
390  std::vector<short> MCSMom;
391 
392  std::vector<short> PlaneNum;
393 
394  std::vector<int> TjID;
395  std::vector<int> IsShowerTj; // indicates tj is an shower trajectory
396  std::vector<int> ShowerID; // shower ID associated w/ trajectory. -1 = no shower
397  std::vector<int> IsShowerParent; // this tj was chosen as a parent tj
398  std::vector<int> StageNum; // stage of reconstruction
399  std::vector<std::string> StageName; // stage name
400 
401  // envelope information
402  std::vector<float> Envelope;
403  std::vector<int> EnvPlane;
404  std::vector<int> EnvStage;
405  std::vector<int> EnvShowerID;
406 
407  int nStages{0};
408  unsigned short nPlanes{0};
409  };
410 
411  struct CRTreeVars {
412  std::vector<int> cr_origin;
413  std::vector<float> cr_pfpxmin;
414  std::vector<float> cr_pfpxmax;
415  std::vector<float> cr_pfpyzmindis;
416  };
417 
418  // Algorithm modification bits
419  typedef enum {
420  kFillGaps3D, // 3D algorithms for PFPs (bitset size limited to 8 bits)
425  kMat3D, // 2D algorithms for Tjs here and below
490  } AlgBit_t;
491 
492  typedef enum {
497  } Strategy_t;
498 
499  // Stop flag bits
500  typedef enum {
509  } EndFlag_t;
510 
511  // Environment near a trajectory point
512  typedef enum {
520  } TPEnvironment_t;
521 
522  // TrajClusterAlg configuration bits
523  typedef enum {
534  } TCModes_t;
535 
536  extern const std::vector<std::string> AlgBitNames;
537  extern const std::vector<std::string> EndFlagNames;
538  extern const std::vector<std::string> VtxBitNames;
539  extern const std::vector<std::string> StrategyBitNames;
540 
541  // struct for configuration - used in all slices
542  struct TCConfig {
543  std::vector<float> vtx2DCuts;
544  std::vector<float> vtx3DCuts;
545  std::vector<float> vtxScoreWeights;
546  std::vector<float> neutralVxCuts;
547  std::vector<short> deltaRayTag;
548  std::vector<short> muonTag;
549  std::vector<float> electronTag;
550  std::vector<float> chkStopCuts;
551  std::vector<float> showerTag;
552  std::vector<float> kinkCuts;
553  std::vector<float> match3DCuts;
554  // std::vector<float> matchTruth; ///< Match to MC truth
555  std::vector<float> chargeCuts;
556  std::vector<float> qualityCuts;
557  std::vector<float> pfpStitchCuts;
558  std::vector<unsigned short> minPtsFit;
559  std::vector<unsigned short> minPts;
560  std::vector<unsigned short> maxAngleCode;
561  std::vector<short> minMCSMom;
562  std::vector<float> angleRanges;
563  float wirePitch;
564  float unitsPerTick;
565  std::vector<float> maxPos0;
566  std::vector<float> maxPos1;
567  float multHitSep;
568  float maxChi;
571  TMVA::Reader* showerParentReader;
572  std::vector<float> showerParentVars;
573  float hitErrFac;
577  float VLAStepSize;
578  float JTMaxHitSep2;
579  std::bitset<128> useAlg;
580  std::bitset<128> dbgAlg;
581  short recoSlice{0};
582  short recoTPC{-1};
583  bool dbgSlc{true};
584  bool dbgStp{false};
585  bool dbgMrg{false};
586  bool dbg2V{false};
587  bool dbgVxNeutral{false};
588  bool dbgVxMerge{false};
589  bool dbgVxJunk{false};
590  bool dbg3V{false};
591  bool dbgPFP{false};
592  bool dbgDeltaRayTag{false};
593  bool dbgMuonTag{false};
594  bool dbg2S{false};
595  bool dbg3S{false};
596  bool dbgStitch{false};
597  bool dbgSummary{false};
598  bool dbgDump{false};
599  short nPtsAve;
600  std::bitset<16> modes;
601  bool doForecast{true};
602  bool useChannelStatus{true};
603  };
604 
605  struct TCHit {
606  unsigned int allHitsIndex; // index into fHits
607  int InTraj{
608  0}; // ID of the trajectory this hit is used in, 0 = none, < 0 = Tj under construction
609  };
610 
611  // hit collection for all slices, TPCs and cryostats + event information
612  // Note: Ideally this hit collection would be the FULL hit collection before cosmic removal
613  struct TCEvent {
615  std::vector<recob::Hit> const* allHits = nullptr;
616  std::vector<recob::Hit> const* srcHits = nullptr;
617  // hit Range for the allHits collection in the current TPCID
618  // plane wire firstHit, lastHit
619  std::vector<std::vector<std::pair<unsigned int, unsigned int>>> wireHitRange;
620  // hit range for the srcHits collection
621  std::vector<std::pair<unsigned int, unsigned int>> tpcSrcHitRange;
622  // list of good wires in the current TPCID
623  std::vector<std::vector<bool>> goodWire;
624  std::vector<recob::SpacePoint> const* sptHandle =
625  nullptr;
626  std::vector<std::array<unsigned int, 3>> sptHits;
627  unsigned int event;
628  unsigned int run;
629  unsigned int subRun;
630  unsigned int eventsProcessed;
631  std::vector<float> aveHitRMS;
632  std::vector<TCWireIntersection> wireIntersections;
633  int WorkID;
640  bool aveHitRMSValid{false};
641  bool expectSlicedHits{
642  false};
643  };
644 
645  struct TCSlice {
646  std::vector<unsigned int> nWires;
647  std::vector<unsigned int> firstWire;
648  std::vector<unsigned int> lastWire;
649  float xLo; // fiducial volume of the current tpc
650  float xHi;
651  float yLo;
652  float yHi;
653  float zLo;
654  float zHi;
656  unsigned short nPlanes;
657  int ID;
658  // The variables below do change in size from event to event
659 
660  // Save histograms to develop cosmic removal tools
662  std::vector<TCHit> slHits;
663  std::vector<Trajectory> tjs;
664  std::vector<Tj2Pt> mallTraj;
665  // vector of pairs of first (.first) and last+1 (.second) hit on each wire
666  // in the range fFirstWire to fLastWire. A value of UINT_MAX indicates that there
667  // are no hits on the wire.
668  std::vector<std::vector<std::pair<unsigned int, unsigned int>>> wireHitRange;
669  std::vector<VtxStore> vtxs;
670  std::vector<Vtx3Store> vtx3s;
671  std::vector<PFPStruct> pfps;
672  std::vector<ShowerStruct> cots; // Clusters of Trajectories that define 2D showers
673  std::vector<DontClusterStruct>
674  dontCluster; // pairs of Tjs that shouldn't clustered in one shower
675  std::vector<ShowerStruct3D> showers; // 3D showers
676  bool isValid{false}; // set false if this slice failed reconstruction
677  };
678 
679  extern TCEvent evt;
680  extern TCConfig tcc;
681  extern ShowerTreeVars stv;
682  extern std::vector<TjForecast> tjfs;
683 
684  // vector of hits, tjs, etc in each slice
685  extern std::vector<TCSlice> slices;
686  // vector of seed TPs
687  extern std::vector<TrajPoint> seeds;
688 
689 } // namespace tca
690 
691 #endif // ifndef TRAJCLUSTERALGDATASTRUCT_H
Expect tracks entering from the front face. Don&#39;t create neutrino PFParticles.
Definition: DataStructs.h:525
calo::CalorimetryAlg * caloAlg
Definition: DataStructs.h:570
std::vector< int > EnvStage
Definition: DataStructs.h:404
short MCSMom(const TCSlice &slc, const std::vector< int > &tjIDs)
Definition: Utils.cxx:3380
std::vector< int > IsShowerParent
Definition: DataStructs.h:397
std::vector< Trajectory > tjs
vector of all trajectories in each plane
Definition: DataStructs.h:663
std::vector< float > cr_pfpyzmindis
Definition: DataStructs.h:415
std::array< std::vector< float >, 2 > dEdxErr
Definition: DataStructs.h:286
std::vector< float > kinkCuts
kink finder algorithm
Definition: DataStructs.h:552
unsigned int event
Definition: DataStructs.h:627
geo::TPCID TPCID
Definition: DataStructs.h:614
float ParSlpErr
Definition: DataStructs.h:181
std::vector< float > EndWir
Definition: DataStructs.h:384
struct of temporary 2D vertices (end points)
Definition: DataStructs.h:69
FindVtxTraj algorithm tried.
Definition: DataStructs.h:89
std::vector< float > EndAng
Definition: DataStructs.h:386
const std::vector< std::string > AlgBitNames
Definition: DataStructs.cxx:16
std::vector< ShowerStruct > cots
Definition: DataStructs.h:672
unsigned int run
Definition: DataStructs.h:628
std::vector< double > dEdxErr
Definition: DataStructs.h:354
std::vector< float > maxPos0
Definition: DataStructs.h:565
std::vector< unsigned short > minPtsFit
Reconstruct in several passes.
Definition: DataStructs.h:558
std::vector< float > cr_pfpxmax
Definition: DataStructs.h:414
std::vector< int > NearTjIDs
Definition: DataStructs.h:319
std::array< double, 3 > Point3_t
Definition: DataStructs.h:41
std::vector< ShowerStruct3D > showers
Definition: DataStructs.h:675
std::vector< float > vtx3DCuts
2D vtx -> 3D vtx matching cuts
Definition: DataStructs.h:544
std::vector< float > qualityCuts
Min points/wire, min consecutive pts after a gap.
Definition: DataStructs.h:556
std::vector< float > BeginTim
Definition: DataStructs.h:380
std::array< int, 2 > TjIDs
Definition: DataStructs.h:371
std::vector< Point2_t > Envelope
Definition: DataStructs.h:325
tagged as a vertex between Tjs that are matched to MC truth neutrino interaction particles ...
Definition: DataStructs.h:93
TCConfig tcc
Definition: DataStructs.cxx:9
unsigned short id
Definition: DataStructs.h:143
vertex position fixed manually - no fitting done
Definition: DataStructs.h:90
std::vector< int > TjIDs
Definition: DataStructs.h:272
Declaration of signal hit object.
std::vector< float > BeginAng
Definition: DataStructs.h:381
std::bitset< pAlgModSize > AlgMod
Definition: DataStructs.h:299
Float_t Y
Definition: plot.C:37
std::vector< std::vector< std::pair< unsigned int, unsigned int > > > wireHitRange
Definition: DataStructs.h:668
std::vector< int > Vx2ID
Definition: DataStructs.h:111
The data type to uniquely identify a Plane.
Definition: geo_types.h:463
matched to a high-score 3D vertex
Definition: DataStructs.h:92
std::vector< unsigned int > Hits
Definition: DataStructs.h:169
std::vector< double > MIPEnergy
Definition: DataStructs.h:351
step from US -> DS (true) or DS -> US (false)
Definition: DataStructs.h:524
std::vector< int > TjIDs
Definition: DataStructs.h:318
VtxBit_t
Definition: DataStructs.h:88
TP3DFlags_t
Definition: DataStructs.h:263
float maxWireSkipWithSignal
max number of wires to skip with a signal on them
Definition: DataStructs.h:575
call study functions to develop cuts, etc
Definition: DataStructs.h:529
CryostatID_t Cryostat
Index of cryostat.
Definition: geo_types.h:211
std::vector< std::pair< unsigned int, unsigned int > > tpcSrcHitRange
Definition: DataStructs.h:621
std::vector< Tj2Pt > Tj2Pts
Definition: DataStructs.h:236
std::vector< float > electronTag
Definition: DataStructs.h:549
a general purpose flag bit used in 3D matching
Definition: DataStructs.h:519
std::vector< unsigned int > lastWire
the last wire with a hit
Definition: DataStructs.h:648
float AvePar
Definition: DataStructs.h:178
unsigned int eventsProcessed
Definition: DataStructs.h:630
std::vector< int > CotIDs
Definition: DataStructs.h:356
std::vector< std::array< unsigned int, 3 > > sptHits
SpacePoint -> Hits assns by plane.
Definition: DataStructs.h:626
std::vector< ShowerPoint > ShPts
Definition: DataStructs.h:320
Strategy_t
Definition: DataStructs.h:492
AlgBit_t
Definition: DataStructs.h:419
CRTreeVars crt
Definition: DataStructs.h:661
std::vector< float > angleRanges
list of max angles for each angle range
Definition: DataStructs.h:562
const std::vector< std::string > EndFlagNames
Definition: DataStructs.cxx:87
std::vector< float > showerTag
shower-like trajectory tagging + shower reconstruction
Definition: DataStructs.h:551
don&#39;t mess with this line
Definition: DataStructs.h:97
Float_t Z
Definition: plot.C:37
std::vector< float > EndTim
Definition: DataStructs.h:385
unsigned short plane
Definition: DataStructs.h:141
std::vector< int > ShowerID
Definition: DataStructs.h:396
ShowerTreeVars stv
Definition: DataStructs.cxx:11
unsigned short npts
Definition: DataStructs.h:146
unsigned short TID
Definition: DataStructs.h:311
std::vector< unsigned short > maxAngleCode
max allowed angle code for each pass
Definition: DataStructs.h:560
std::bitset< 8 > Flags
Definition: DataStructs.h:297
float projectionErrFactor
Definition: DataStructs.h:576
std::vector< int > TjUIDs
Definition: DataStructs.h:281
save shower tree
Definition: DataStructs.h:533
constexpr unsigned int Tpad
Definition: DataStructs.h:48
unsigned short ipt
Definition: DataStructs.h:144
std::vector< DontClusterStruct > dontCluster
Definition: DataStructs.h:674
const std::vector< std::string > StrategyBitNames
Definition: DataStructs.cxx:98
std::vector< std::string > StageName
Definition: DataStructs.h:399
CTP_t CTP
Definition: DataStructs.h:257
struct of temporary 3D vertices
Definition: DataStructs.h:101
geo::TPCID TPCID
Definition: DataStructs.h:292
short nPtsAve
dump trajectory points
Definition: DataStructs.h:599
std::vector< int > TjID
Definition: DataStructs.h:394
std::vector< Tj2Pt > mallTraj
vector of trajectory points ordered by increasing X
Definition: DataStructs.h:664
std::array< float, 2 > Point2_t
Definition: DataStructs.h:43
std::vector< float > maxPos1
Definition: DataStructs.h:566
don&#39;t mess with this line
Definition: DataStructs.h:508
float unitsPerTick
scale factor from Tick to WSE equivalent units
Definition: DataStructs.h:564
use the slowing-down strategy
Definition: DataStructs.h:496
std::vector< short > minMCSMom
Min MCSMom for each pass.
Definition: DataStructs.h:561
std::vector< short > BeginVtx
Definition: DataStructs.h:383
geo::TPCID TPCID
Definition: DataStructs.h:110
TP is near a hit in the srcHit collection but no allHit hit exists (DUNE disambiguation error) ...
Definition: DataStructs.h:518
unsigned int wire
Definition: DataStructs.h:137
the environment near the vertex was checked - See UpdateVxEnvironment
Definition: DataStructs.h:96
std::vector< float > aveHitRMS
average RMS of an isolated hit
Definition: DataStructs.h:631
std::vector< TrajPoint > Pts
Trajectory points.
Definition: DataStructs.h:188
TMVA::Reader * showerParentReader
Definition: DataStructs.h:571
std::vector< std::vector< bool > > goodWire
Definition: DataStructs.h:623
std::vector< float > showerParentVars
Definition: DataStructs.h:572
std::vector< float > neutralVxCuts
Definition: DataStructs.h:546
std::vector< short > EndVtx
Definition: DataStructs.h:388
unsigned short pln2
Definition: DataStructs.h:122
std::bitset< 8 > Flags
Definition: DataStructs.h:260
std::vector< VtxStore > vtxs
2D vertices
Definition: DataStructs.h:669
std::vector< int > cr_origin
Definition: DataStructs.h:412
std::vector< float > match3DCuts
3D matching cuts
Definition: DataStructs.h:553
std::vector< SectionFit > SectionFits
Definition: DataStructs.h:283
std::vector< float > Envelope
Definition: DataStructs.h:402
call study functions to develop cuts, etc
Definition: DataStructs.h:530
const geo::GeometryCore * geom
Definition: DataStructs.h:569
std::vector< unsigned short > minPts
min number of Pts required to make a trajectory
Definition: DataStructs.h:559
int UID
a unique ID for all slices
Definition: DataStructs.h:203
The data type to uniquely identify a TPC.
Definition: geo_types.h:381
PlaneID_t Plane
Index of the plane within its TPC.
Definition: geo_types.h:481
Description of geometry of one entire detector.
Definition: GeometryCore.h:119
constexpr unsigned int pAlgModSize
Definition: DataStructs.h:277
std::array< double, 2 > Vector2_t
Definition: DataStructs.h:44
Definition of data types for geometry description.
std::vector< unsigned int > Hits
Definition: DataStructs.h:357
float dEdx(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, TP3D &tp3d)
Definition: PFPUtils.cxx:2675
std::vector< unsigned int > firstWire
the first wire with a hit
Definition: DataStructs.h:647
float ChiDOF
Definition: DataStructs.h:182
std::vector< float > BeginChg
Definition: DataStructs.h:382
int ID
ID that is local to one slice.
Definition: DataStructs.h:202
std::vector< TCSlice > slices
Definition: DataStructs.cxx:13
float ParentFOM(std::string inFcnLabel, TCSlice &slc, PFPStruct &pfp, ShowerStruct3D &ss3, bool prt)
Definition: TCShower.cxx:2051
vertex quality is suspect - No requirement made on chg btw it and the Tj
Definition: DataStructs.h:95
std::bitset< 16 > modes
number of points to find AveChg
Definition: DataStructs.h:600
std::vector< TCHit > slHits
Definition: DataStructs.h:662
std::vector< float > chargeCuts
Definition: DataStructs.h:555
EndFlag_t
Definition: DataStructs.h:500
std::vector< int > EnvPlane
Definition: DataStructs.h:403
std::vector< TrajPoint > seeds
Definition: DataStructs.cxx:14
float ParSlp
Definition: DataStructs.h:180
float maxWireSkipNoSignal
max number of wires to skip w/o a signal on them
Definition: DataStructs.h:574
std::vector< short > MCSMom
Definition: DataStructs.h:390
const std::vector< std::string > VtxBitNames
Definition: DataStructs.cxx:89
std::vector< double > EnergyErr
Definition: DataStructs.h:350
std::vector< double > MIPEnergyErr
Definition: DataStructs.h:352
std::vector< float > vtxScoreWeights
Definition: DataStructs.h:545
unsigned int CTP_t
Definition: DataStructs.h:47
std::vector< Vtx3Store > vtx3s
3D vertices
Definition: DataStructs.h:670
geo::TPCID TPCID
Definition: DataStructs.h:655
TCModes_t
Definition: DataStructs.h:523
std::vector< int > StageNum
Definition: DataStructs.h:398
std::vector< TjForecast > tjfs
Definition: DataStructs.cxx:10
std::bitset< 128 > useAlg
Max hit separation for making junk trajectories. < 0 to turn off.
Definition: DataStructs.h:579
CTP_t EncodeCTP(const geo::WireID &wireID)
Definition: DataStructs.h:59
std::vector< float > pfpStitchCuts
cuts for stitching between TPCs
Definition: DataStructs.h:557
std::vector< short > deltaRayTag
Definition: DataStructs.h:547
save cosmic ray tree
Definition: DataStructs.h:531
float ParErr
Definition: DataStructs.h:179
float VLAStepSize
Definition: DataStructs.h:577
std::bitset< 128 > AlgMod
Bit set if algorithm AlgBit_t modifed the trajectory.
Definition: DataStructs.h:190
call study functions to develop cuts, etc
Definition: DataStructs.h:528
std::vector< double > Energy
Definition: DataStructs.h:349
std::vector< short > muonTag
Definition: DataStructs.h:548
std::vector< float > BeginWir
Definition: DataStructs.h:379
geo::PlaneID DecodeCTP(CTP_t CTP)
std::vector< float > EndChg
Definition: DataStructs.h:387
std::vector< int > TjIDs
Definition: DataStructs.h:280
PFPFlags_t
Definition: DataStructs.h:302
std::bitset< 128 > dbgAlg
Allow user to turn on debug printing in algorithms (that print...)
Definition: DataStructs.h:580
std::vector< TCWireIntersection > wireIntersections
Definition: DataStructs.h:632
unsigned int HitIndex
Definition: DataStructs.h:309
std::vector< unsigned int > nWires
Definition: DataStructs.h:646
use the stiff electron strategy
Definition: DataStructs.h:494
std::array< double, 3 > Vector3_t
Definition: DataStructs.h:42
std::vector< float > chkStopCuts
Bragg peak finder configuration.
Definition: DataStructs.h:550
std::vector< TP3D > TP3Ds
Definition: DataStructs.h:282
int ID
ID of the recob::Slice (not the sub-slice)
Definition: DataStructs.h:657
std::array< std::vector< float >, 2 > dEdx
Definition: DataStructs.h:285
std::vector< float > cr_pfpxmin
Definition: DataStructs.h:413
unsigned int subRun
Definition: DataStructs.h:629
std::vector< float > vtx2DCuts
Max position pull, max Position error rms.
Definition: DataStructs.h:543
unsigned short pln1
Definition: DataStructs.h:121
unsigned short nPlanes
Definition: DataStructs.h:656
std::vector< PFPStruct > pfps
Definition: DataStructs.h:671
float multHitSep
preferentially "merge" hits with < this separation
Definition: DataStructs.h:567
float JTMaxHitSep2
Definition: DataStructs.h:578
std::vector< int > EnvShowerID
Definition: DataStructs.h:405
TPEnvironment_t
Definition: DataStructs.h:512
TCEvent evt
Definition: DataStructs.cxx:8
call study functions to develop cuts, etc (see TCTruth.cxx)
Definition: DataStructs.h:527
unsigned int allHitsIndex
Definition: DataStructs.h:606
unsigned short MVI
Definition: DataStructs.h:296
TPCID_t TPC
Index of the TPC within its cryostat.
Definition: geo_types.h:399
std::vector< int > IsShowerTj
Definition: DataStructs.h:395
constexpr unsigned int Cpad
Definition: DataStructs.h:49
unsigned short nPtsFit
Definition: DataStructs.h:183
std::vector< double > dEdx
Definition: DataStructs.h:353
Float_t X
Definition: plot.C:37
std::vector< short > PlaneNum
Definition: DataStructs.h:392
std::vector< std::vector< std::pair< unsigned int, unsigned int > > > wireHitRange
Definition: DataStructs.h:619
Namespace collecting geometry-related classes utilities.
master switch for turning on debug mode
Definition: DataStructs.h:526
Definition: Step.hh:40
tag cosmic rays
Definition: DataStructs.h:532
don&#39;t mess with this line
Definition: DataStructs.h:489
std::vector< int > DtrUIDs
Definition: DataStructs.h:290
calorimetry
use the stiff muon strategy
Definition: DataStructs.h:495
unsigned int index
Definition: DataStructs.h:36