LArSoft  v06_85_00
Liquid Argon Software toolkit - http://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 
13 // C/C++ standard libraries
14 #include <array>
15 #include <vector>
16 #include <bitset>
17 
18 // LArSoft libraries
30 
31 #include "TMVA/Reader.h"
32 
33 namespace tca {
34 
35  using Point3_t = std::array<double, 3>;
36  using Vector3_t = std::array<double, 3>;
37  using Point2_t = std::array<float, 2>;
38  using Vector2_t = std::array<double, 2>;
39 
40  // some functions to handle the CTP_t type
41  typedef unsigned int CTP_t;
42  constexpr unsigned int Tpad = 10; // alignment for CTP sub-items - TPC
43  constexpr unsigned int Cpad = 10000; // alignment for CTP sub-items - Cryostat
44 
45  inline CTP_t EncodeCTP(unsigned int cryo, unsigned int tpc, unsigned int plane) { return cryo * Cpad + tpc * Tpad + plane; }
46  inline CTP_t EncodeCTP(const geo::PlaneID& planeID) { return EncodeCTP(planeID.Cryostat, planeID.TPC, planeID.Plane); }
47  inline CTP_t EncodeCTP(const geo::WireID& wireID) { return EncodeCTP(wireID.Cryostat, wireID.TPC, wireID.Plane); }
48  geo::PlaneID DecodeCTP(CTP_t CTP);
49 
52 
53 /*
54  Associations
55  Hit.InTraj <-> tj.Pts.Hits
56  Tj.ParentID -> ID of parent tj
57  PFParticle.TjIDs -> IDs of tjs in each plane that define the PFParticle
58  PFParticle.ParentID -> PFParticle ID of parent
59  Shower.TjIDs -> IDs of InShower tjs, (tj.AlgMod[kInShower] set true)
60  Shower.ShowerTjID -> ID of the shower tj (3 pts for start, chg center, end) (tj.AlgMod[kShowerTj] set true)
61  Shower.ParentID -> ID of the tj identified as the shower parent (tj.AlgMod[kShwrParent] set true)
62 */
63 
65  struct ClusterStore {
66  int ID {0}; // Cluster ID. ID < 0 = abandoned cluster
67  CTP_t CTP {0}; // Cryostat/TPC/Plane code
68  unsigned short PDGCode {0}; // PDG-like code shower-like or line-like
69  float BeginWir {0}; // begin wire
70  float BeginTim {0}; // begin tick
71  float BeginAng {0}; // begin angle
72  float BeginChg {0}; // beginning average charge
73  short BeginVtx {-1}; // ID of the Begin vertex
74  float EndWir {0}; // end wire
75  float EndTim {0}; // end tick
76  float EndAng {0}; // end angle
77  float EndChg {0}; // ending average charge
78  short EndVtx {-1}; // ID of the end vertex
79  std::vector<unsigned int> tclhits; // hits on the cluster
80  }; // ClusterStore
81 
83  struct VtxStore {
84  Point2_t Pos {{0,0}};
85  Point2_t PosErr {{2,1}};
86  unsigned short NTraj {0};
87  unsigned short Pass {0}; // Pass in which this vertex was created
88  float ChiDOF {0};
89  // Topo: 0 = end0-end0, 1 = end0(1)-end1(0), 2 = end1-end1, 3 = CI3DV,
90  // 4 = C3DIVIG, 5 = FHV, 6 = FHV2, 7 = SHCH, 8 = CTBC, 9 = Junk, 10 = 3D split, 11 = neutral decay (pizero)
91  short Topo {0};
92  CTP_t CTP {0};
93  int ID {0};
94  int Vx3ID {0};
95  float Score {0};
96  float TjChgFrac {0};
97  std::bitset<16> Stat {0};
98  };
99 
100  typedef enum {
108  } VtxBit_t;
109 
111  struct Vtx3Store {
112  float X {0}; // x position
113  float XErr {0.5}; // x position error
114  float Y {0}; // y position
115  float YErr {0.5}; // y position error
116  float Z {0}; // z position
117  float ZErr {0.5}; // z position error
118  float Score {0};
119  short Wire {-1}; // wire number for an incomplete 3D vertex
121  std::array<int, 3> Vx2ID {{0}}; // List of 2D vertex IDs in each plane
122  int ID {0}; // 0 = obsolete vertex
123  bool Primary {false};
124  bool Neutrino {false};
125  };
126 
127  // A temporary struct for matching trajectory points; 1 struct for each TP for
128  // each trajectory. These are put into mallTraj which is then sorted by increasing xlo
129  struct Tj2Pt{
130  std::array<double, 2> dir;
131  unsigned int wire;
132  // x range spanned by hits on the TP
133  float xlo;
134  float xhi;
135  CTP_t ctp;
136  // the Trajectory ID
137  unsigned short id;
138  unsigned short ipt; // The trajectory point
139  // the number of points in the Tj so that the minimum Tj length cut (MatchCuts[2]) can be made
140  unsigned short npts;
141  short score; // 0 = Tj with nice vertex, 1 = high quality Tj, 2 = normal, -1 = already matched
142  };
143 
144  struct TrajPoint {
145  CTP_t CTP {0};
146  Point2_t HitPos {{0,0}}; // Charge weighted position of hits in wire equivalent units
147  Point2_t Pos {{0,0}}; // Trajectory position in wire equivalent units
148  std::array<double, 2> Dir {{0,0}}; // Direction cosines in the StepDir direction
149  double HitPosErr2 {0}; // Uncertainty^2 of the hit position perpendiclar to the direction
150  // HitPosErr2 < 0 = HitPos not defined because no hits used
151  double Ang {0}; // Trajectory angle (-pi, +pi)
152  double AngErr {0.1}; // Trajectory angle error
153  float Chg {0}; // Chargetj2pt
154  float AveChg {-1}; // Average charge of last ~20 TPs
155  float ChgPull {0.1}; // = (Chg - AveChg) / ChgRMS
156  float Delta {0}; // Deviation between trajectory and hits (WSE)
157  float DeltaRMS {0.02}; // RMS of Deviation between trajectory and hits (WSE)
158  float FitChi {0}; // Chi/DOF of the fit
159  unsigned short NTPsFit {2}; // Number of trajectory points fitted to make this point
160  unsigned short Step {0}; // Step number at which this TP was created
161  unsigned short AngleCode {0}; // 0 = small angle, 1 = large angle, 2 = very large angle
162  std::vector<unsigned int> Hits; // vector of fHits indices
163  std::bitset<16> UseHit {0}; // set true if the hit is used in the fit
164  std::bitset<8> Environment {0}; // TPEnvironment_t bitset that describes the environment, e.g. nearby showers or other Tjs
165  };
166 
167  // Global information for the trajectory
168  struct Trajectory {
169  std::vector<TrajPoint> Pts;
170  CTP_t CTP {0};
171  std::bitset<64> AlgMod;
172  int WorkID {0};
173  int ParentID {-1};
174  float AveChg {0};
175  float TotChg {0};
176  float ChgRMS {0.5};
177  float DirFOM {0.5};
178  short MCSMom {0}; //< Crude 2D estimate to use for shower-like vs track-like discrimination
179  float EffPur {0};
180  Point2_t dEdx {{0,0}};
181  std::array<unsigned short, 2> VtxID {{0,0}};
182  std::array<unsigned short, 2> EndPt {{0,0}};
183  int ID;
184  int SSID {0};
185  unsigned short PDGCode {0};
186  unsigned int ClusterIndex {USHRT_MAX};
187  unsigned short Pass {0};
188  short StepDir {0};
189  unsigned int MCPartListIndex {UINT_MAX};
190  std::array<std::bitset<8>, 2> StopFlag {}; // Bitset that encodes the reason for stopping
191  bool NeedsUpdate {false};
192  };
193 
194  // Local version of recob::Hit
195  struct TCHit {
196  raw::TDCtick_t StartTick {0};
197  raw::TDCtick_t EndTick {0};
198  float PeakTime {0};
199  float SigmaPeakTime {1};
200  float PeakAmplitude {1};
201  float SigmaPeakAmp {1};
202  float Integral {1};
203  float SigmaIntegral {1};
204  float RMS {1};
205  float GoodnessOfFit {0};
207  unsigned short NDOF {0};
208  unsigned short Multiplicity {1};
209  unsigned short LocalIndex {0};
210  int InTraj {0};
211  unsigned int MCPartListIndex {UINT_MAX};
212  };
213 
214  // struct used for TrajCluster 3D trajectory points
215  struct TrajPoint3 {
216  // BUG the double brace syntax is required to work around clang bug 21629
217  // (https://bugs.llvm.org/show_bug.cgi?id=21629)
218  Point3_t Pos {{ 0.0, 0.0, 0.0 }};
219  Vector3_t Dir {{ 0.0, 0.0, 0.0 }};
220  std::vector<Tj2Pt> Tj2Pts; // list of trajectory points
221  float dEdx {0}; // The charge is stored here before dE/dx is calculated
222  Point2_t AlongTrans; // Longitudinal & transverse position (cm) relative to the trajectory
223  };
224 
225  // Struct for 3D trajectory matching
226  struct MatchStruct {
227  // IDs of Trajectories that match in all planes
228  std::vector<int> TjIDs;
229  std::vector<float> TjCompleteness; // fraction of TP points that are 3D-matched
230  // Count of the number of X-matched hits and de-weight by angle
231  float Count {0}; // Set to 0 if matching failed
232  Point3_t Pos; // Position center using 3D-matched points on the Tjs - 3D fit
233  Vector3_t Dir; // Direction using 3D-matched points on the Tjs - 3D fit
234  };
235 
236  struct PFPStruct {
237  std::vector<int> TjIDs;
238  std::vector<float> TjCompleteness; // fraction of TP points that are 3D-matched
239  std::vector<TrajPoint3> Tp3s; // TrajCluster 3D trajectory points
240  // Start is 0, End is 1
241  std::array<Point3_t, 2> XYZ; // XYZ position at both ends (cm)
242  std::array<Vector3_t, 2> Dir;
243  std::array<Vector3_t, 2> DirErr;
244  std::array<std::vector<float>, 2> dEdx;
245  std::array<std::vector<float>, 2> dEdxErr;
246  std::array<int, 2> Vx3ID {{ 0, 0 }};
247  int BestPlane {-1};
248  // stuff for constructing the PFParticle
249  int PDGCode {-1};
250  std::vector<int> DtrIDs;
251  size_t ParentID {0}; // Parent PFP ID (or 0 if no parent exists)
253  float EffPur {0};
254  unsigned int MCPartListIndex {UINT_MAX};
255  unsigned short MatchVecIndex {USHRT_MAX};
256  float CosmicScore{0};
257  int ID {0};
258  std::array<std::bitset<8>, 2> StopFlag {}; // Bitset that encodes the reason for stopping
259  bool Primary; // PFParticle is attached to a primary vertex
260  bool NeedsUpdate {true}; // Set true if the PFParticle needs to be (re-)defined
261  };
262 
263  struct ShowerPoint {
264  Point2_t Pos; // Hit Position in the normal coordinate system
265  Point2_t RotPos; // Position rotated into the shower coordinate system (0 = along, 1 = transverse)
266  float Chg {0}; // Charge of this point
267  unsigned int HitIndex; // the hit index
268  unsigned short TID; // The ID of the tj the point (hit) is in. TODO eliminate this redundant variable
269  };
270 
271  // A temporary structure that defines a 2D shower-like cluster of trajectories
272  struct ShowerStruct {
273  CTP_t CTP;
274  int ShowerTjID {0}; // ID of the shower Trajectory composed of many InShower Tjs
275  std::vector<int> TjIDs; // list of InShower Tjs
276  std::vector<int> NearTjIDs; // list of Tjs that are not InShower but satisfy the maxSep cut
277  std::vector<ShowerPoint> ShPts; // Trajectory points inside the shower
278  float Angle {0}; // Angle of the shower axis
279  float AngleErr {3}; // Error
280  float AspectRatio {1}; // The ratio of charge weighted transverse/longitudinal positions
281  float DirectionFOM {1};
282  std::vector<Point2_t> Envelope; // Vertices of a polygon that encompasses the shower
283  float EnvelopeArea {0};
284  float ChgDensity {0}; // Charge density inside the Envelope
285  float Energy {0};
286  float ParentFOM {10};
287  int ID {0};
288  int ParentID {0}; // The ID of a parent Tj - the one at the start of the shower
289  int TruParentID {0};
290  int SS3ID {0}; // ID of a ShowerStruct3D to which this 2D shower is matched
291  bool NeedsUpdate {true}; // Needs to be updated (e.g. after adding a tj, defining a parent, etc)
292  bool Cheat {false}; // This is a cheated MC shower. TjIDs is empty but ShPts is filled
293  };
294 
295  // Shower variables filled in MakeShowers. These are in cm and radians
296  struct ShowerStruct3D {
298  Vector3_t DirErr; // DirErr is hijacked to store the shower rms at the start, center and end sections
300  Point3_t StartErr; // PosErr is hijacked to temporarily store the charge in the three sections
301  Point3_t ChgPos; // position of the center of charge
302  Point3_t End; // end position
303  double Len {1};
304  double OpenAngle {0.12};
305  std::vector<double> Energy;
306  std::vector<double> EnergyErr;
307  std::vector<double> MIPEnergy;
308  std::vector<double> MIPEnergyErr;
309  std::vector<double> dEdx;
310  std::vector<double> dEdxErr;
312  std::vector<int> CotIDs; // list of indices of 2D showers in tjs.cots
313  std::vector<unsigned int> Hits;
315  int ID;
316  int ParentID {0}; // The ID of a track-like pfp at the start of the shower, e.g. an electron
317  float MatchFOM;
318  unsigned short PFPIndex {USHRT_MAX}; // The index of the pfp for this shower
319  int Vx3ID {0};
320  bool NeedsUpdate {true}; // This is set true whenever the shower needs to be updated
321  bool Cheat {false};
322  };
323 
325  std::array<int, 2> TjIDs; // pairs of Tjs that shouldn't be clustered in shower reconstruction because...
326  int Vx2ID; // they share a 2D vertex that may be matched to...
327  int Vx3ID; // a high-score 3D vertex
328  };
329 
330  struct ShowerTreeVars {
331  // run, subrun, and event are also saved to this tree
332 
333  std::vector<float> BeginWir; // begin wire
334  std::vector<float> BeginTim; // begin tick
335  std::vector<float> BeginAng; // begin angle
336  std::vector<float> BeginChg; // beginning average charge
337  std::vector<short> BeginVtx; // ID of begin vertex
338  std::vector<float> EndWir; // end wire
339  std::vector<float> EndTim; // end tick
340  std::vector<float> EndAng; // end angle
341  std::vector<float> EndChg; // ending average charge
342  std::vector<short> EndVtx; //ID of end vertex
343 
344  std::vector<short> MCSMom;
345 
346  std::vector<short> PlaneNum;
347 
348  std::vector<int> TjID;
349  std::vector<int> IsShowerTj; // indicates tj is an shower trajectory
350  std::vector<int> ShowerID; // shower ID associated w/ trajectory. -1 = no shower
351  std::vector<int> IsShowerParent; // this tj was chosen as a parent tj
352  std::vector<int> StageNum; // stage of reconstruction
353  std::vector<std::string> StageName; // stage name
354 
355  // envelope information
356  std::vector<float> Envelope;
357  std::vector<int>EnvPlane;
358  std::vector<int>EnvStage;
359  std::vector<int>EnvShowerID;
360 
361  int nStages {0};
362  unsigned short nPlanes {0};
363 
364  };
365 
366  struct CRTreeVars {
367  std::vector<int> cr_origin;
368  std::vector<float> cr_pfpxmin;
369  std::vector<float> cr_pfpxmax;
370  std::vector<float> cr_pfpyzmindis;
371  };
372 
373  // Algorithm modification bits
374  typedef enum {
387  kHED, // High End Delta
440  } AlgBit_t;
441 
442  // Stop flag bits
443  typedef enum {
451  } StopFlag_t;
452 
453  typedef enum {
460  } TPEnvironment_t;
461 
462  extern const std::vector<std::string> AlgBitNames;
463  extern const std::vector<std::string> StopFlagNames;
464  extern const std::vector<std::string> VtxBitNames;
465 
466  struct TjStuff {
467  // These variables don't change in size from event to event
468  float UnitsPerTick;
470  std::vector<unsigned int> NumWires;
471  std::vector<float> MaxPos0;
472  std::vector<float> MaxPos1;
473  std::vector<unsigned int> FirstWire;
474  std::vector<unsigned int> LastWire;
475  unsigned short NumPlanes;
476  float XLo; // fiducial volume of the current tpc
477  float XHi;
478  float YLo;
479  float YHi;
480  float ZLo;
481  float ZHi;
482  float WirePitch;
483  std::vector<float> AveHitRMS;
484  // The variables below do change in size from event to event
487 
488  // Save histograms to develop cosmic removal tools
492 
493  std::vector<Trajectory> allTraj;
494  std::vector<Tj2Pt> mallTraj;
495  std::vector<TCHit> fHits;
496  // vector of pairs of first (.first) and last+1 (.second) hit on each wire
497  // in the range fFirstWire to fLastWire. A value of -2 indicates that there
498  // are no hits on the wire. A value of -1 indicates that the wire is dead
499  std::vector<std::vector< std::pair<int, int>>> WireHitRange;
500  std::vector<float> AngleRanges;
501  std::vector< ClusterStore > tcl;
502  std::vector< VtxStore > vtx;
503  std::vector< Vtx3Store > vtx3;
504  std::vector<MatchStruct> matchVec;
505  std::vector<PFPStruct> pfps;
506  std::vector<ShowerStruct> cots; // Clusters of Trajectories that define 2D showers
507  std::vector<DontClusterStruct> dontCluster; // pairs of Tjs that shouldn't clustered in one shower
508  std::vector<ShowerStruct3D> showers; // 3D showers
509  std::vector<float> Vertex2DCuts;
510  std::vector<float> Vertex3DCuts;
511  std::vector<float> VertexScoreWeights;
512  std::vector<float> NeutralVxCuts;
513  std::vector<short> DeltaRayTag;
514  std::vector<short> MuonTag;
515  std::vector<float> ShowerTag;
516  std::vector<float> KinkCuts;
517  std::vector<float> Match3DCuts;
518  std::vector<float> MatchTruth;
519  std::vector<float> ChargeCuts;
520  std::vector<simb::MCParticle*> MCPartList;
521  unsigned int EventsProcessed;
522  unsigned int Run;
523  unsigned int SubRun;
524  unsigned int Event;
525  std::bitset<64> UseAlg;
529  TMVA::Reader* ShowerParentReader;
530  std::vector<float> ShowerParentVars;
531  short StepDir;
532  short NPtsAve;
533  bool SelectEvent;
534  bool TestBeam;
535  bool DebugMode;
536  };
537 
538 } // namespace tca
539 
540 #endif // ifndef TRAJCLUSTERALGDATASTRUCT_H
Point2_t AlongTrans
Definition: DataStructs.h:222
don&#39;t mess with this line
Definition: DataStructs.h:450
std::vector< int > EnvStage
Definition: DataStructs.h:358
unsigned short MatchVecIndex(const TjStuff &tjs, int tjID)
Definition: Utils.cxx:1058
std::vector< int > IsShowerParent
Definition: DataStructs.h:351
bool SelectEvent
number of points to find AveChg
Definition: DataStructs.h:533
std::vector< float > cr_pfpyzmindis
Definition: DataStructs.h:370
std::array< std::vector< float >, 2 > dEdxErr
Definition: DataStructs.h:245
std::vector< unsigned int > tclhits
Definition: DataStructs.h:79
std::vector< float > Vertex2DCuts
Max position pull, max Position error rms.
Definition: DataStructs.h:509
std::vector< float > ChargeCuts
Definition: DataStructs.h:519
std::vector< float > EndWir
Definition: DataStructs.h:338
struct of temporary 2D vertices (end points)
Definition: DataStructs.h:83
FindVtxTraj algorithm tried.
Definition: DataStructs.h:101
std::vector< float > EndAng
Definition: DataStructs.h:340
const std::vector< std::string > AlgBitNames
Definition: DataStructs.cxx:4
std::vector< double > dEdxErr
Definition: DataStructs.h:310
art::Ptr< recob::Hit > ArtPtr
Definition: DataStructs.h:206
unsigned short PDGCode
Definition: DataStructs.h:68
std::vector< float > cr_pfpxmax
Definition: DataStructs.h:369
std::vector< int > NearTjIDs
Definition: DataStructs.h:276
std::array< double, 3 > Point3_t
Definition: DataStructs.h:35
std::bitset< 64 > AlgMod
Bit set if algorithm AlgBit_t modifed the trajectory.
Definition: DataStructs.h:171
std::vector< float > BeginTim
Definition: DataStructs.h:334
std::array< int, 2 > TjIDs
Definition: DataStructs.h:325
std::vector< Point2_t > Envelope
Definition: DataStructs.h:282
unsigned short id
Definition: DataStructs.h:137
std::vector< float > ShowerParentVars
Definition: DataStructs.h:530
vertex position fixed manually - no fitting done
Definition: DataStructs.h:102
std::vector< float > AveHitRMS
average RMS of an isolated hit
Definition: DataStructs.h:483
std::vector< int > TjIDs
Definition: DataStructs.h:228
Declaration of signal hit object.
std::vector< float > BeginAng
Definition: DataStructs.h:335
std::vector< float > MaxPos1
Definition: DataStructs.h:472
std::vector< float > TjCompleteness
Definition: DataStructs.h:238
Float_t Y
Definition: plot.C:39
The data type to uniquely identify a Plane.
Definition: geo_types.h:250
std::vector< PFPStruct > pfps
Definition: DataStructs.h:505
matched to a high-score 3D vertex
Definition: DataStructs.h:104
std::vector< unsigned int > Hits
Definition: DataStructs.h:162
std::vector< double > MIPEnergy
Definition: DataStructs.h:307
unsigned int SubRun
Definition: DataStructs.h:523
std::vector< int > TjIDs
Definition: DataStructs.h:275
VtxBit_t
Definition: DataStructs.h:100
CRTreeVars crt
Definition: DataStructs.h:489
unsigned int Run
Definition: DataStructs.h:522
CryostatID_t Cryostat
Index of cryostat.
Definition: geo_types.h:130
ShowerTreeVars stv
Definition: DataStructs.h:485
std::vector< ShowerStruct3D > showers
Definition: DataStructs.h:508
std::vector< Tj2Pt > Tj2Pts
Definition: DataStructs.h:220
a general purpose flag bit used in 3D matching
Definition: DataStructs.h:459
StopFlag_t
Definition: DataStructs.h:443
unsigned int Event
Definition: DataStructs.h:524
unsigned short NumPlanes
Definition: DataStructs.h:475
Particle class.
std::vector< int > CotIDs
Definition: DataStructs.h:312
don&#39;t mess with this line
Definition: DataStructs.h:107
std::vector< ShowerPoint > ShPts
Definition: DataStructs.h:277
std::vector< TrajPoint3 > Tp3s
Definition: DataStructs.h:239
AlgBit_t
Definition: DataStructs.h:374
calo::CalorimetryAlg * caloAlg
Definition: DataStructs.h:528
int TDCtick_t
Type representing a TDC tick.
Definition: RawTypes.h:24
Float_t Z
Definition: plot.C:39
std::vector< float > EndTim
Definition: DataStructs.h:339
std::vector< int > ShowerID
Definition: DataStructs.h:350
TMVA::Reader * ShowerParentReader
Definition: DataStructs.h:529
unsigned short npts
Definition: DataStructs.h:140
unsigned short TID
Definition: DataStructs.h:268
tagged as a vertex between Tjs that are matched to MC truth neutrino interaction particles ...
Definition: DataStructs.h:105
std::vector< ShowerStruct > cots
Definition: DataStructs.h:506
std::vector< float > ShowerTag
[min MCSMom, max separation, min # Tj < separation] for a shower tag
Definition: DataStructs.h:515
constexpr unsigned int Tpad
Definition: DataStructs.h:42
unsigned short ipt
Definition: DataStructs.h:138
std::vector< std::string > StageName
Definition: DataStructs.h:353
struct of temporary 3D vertices
Definition: DataStructs.h:111
unsigned int EventsProcessed
Definition: DataStructs.h:521
geo::TPCID TPCID
Definition: DataStructs.h:252
std::vector< int > TjID
Definition: DataStructs.h:348
std::vector< float > TjCompleteness
Definition: DataStructs.h:229
std::array< float, 2 > Point2_t
Definition: DataStructs.h:37
std::array< Point3_t, 2 > XYZ
Definition: DataStructs.h:241
const geo::GeometryCore * geom
Definition: DataStructs.h:526
std::vector< short > BeginVtx
Definition: DataStructs.h:337
geo::TPCID TPCID
Definition: DataStructs.h:120
std::vector< unsigned int > LastWire
the last wire with a hit
Definition: DataStructs.h:474
std::array< Vector3_t, 2 > DirErr
Definition: DataStructs.h:243
std::vector< VtxStore > vtx
2D vertices
Definition: DataStructs.h:502
unsigned int wire
Definition: DataStructs.h:131
const std::vector< std::string > StopFlagNames
Definition: DataStructs.cxx:71
std::vector< TrajPoint > Pts
Trajectory points.
Definition: DataStructs.h:169
float AspectRatio(TjStuff &tjs, std::vector< int > &tjids, CTP_t inCTP)
std::vector< float > NeutralVxCuts
Definition: DataStructs.h:512
std::array< Vector3_t, 2 > Dir
Definition: DataStructs.h:242
std::vector< Trajectory > allTraj
vector of all trajectories in each plane
Definition: DataStructs.h:493
std::vector< short > EndVtx
Definition: DataStructs.h:342
std::bitset< 64 > UseAlg
Allow user to mask off specific algorithms.
Definition: DataStructs.h:525
std::vector< int > cr_origin
Definition: DataStructs.h:367
std::vector< float > MaxPos0
Definition: DataStructs.h:471
std::vector< unsigned int > FirstWire
the first wire with a hit
Definition: DataStructs.h:473
bool SaveShowerTree
Definition: DataStructs.h:486
std::vector< float > Envelope
Definition: DataStructs.h:356
the charge fraction is small near this point
Definition: DataStructs.h:458
std::vector< MatchStruct > matchVec
3D matching vector
Definition: DataStructs.h:504
bool TestBeam
Expect tracks entering from the front face. Don&#39;t create neutrino PFParticles.
Definition: DataStructs.h:534
float ParentFOM(std::string inFcnLabel, TjStuff &tjs, PFPStruct &pfp, unsigned short pend, ShowerStruct3D &ss3, bool prt)
Definition: TCShower.cxx:2238
float UnitsPerTick
scale factor from Tick to WSE equivalent units
Definition: DataStructs.h:468
The data type to uniquely identify a TPC.
Definition: geo_types.h:195
PlaneID_t Plane
Index of the plane within its TPC.
Definition: geo_types.h:258
Description of geometry of one entire detector.
std::array< double, 2 > Vector2_t
Definition: DataStructs.h:38
Definition of data types for geometry description.
geo::TPCID TPCID
Definition: DataStructs.h:469
std::vector< unsigned int > Hits
Definition: DataStructs.h:313
std::vector< float > BeginChg
Definition: DataStructs.h:336
std::vector< float > MatchTruth
Match to MC truth.
Definition: DataStructs.h:518
short MCSMom(const TjStuff &tjs, const std::vector< int > &tjIDs)
Definition: Utils.cxx:2837
std::vector< int > DtrIDs
Definition: DataStructs.h:250
std::vector< DontClusterStruct > dontCluster
Definition: DataStructs.h:507
std::vector< Vtx3Store > vtx3
3D vertices
Definition: DataStructs.h:503
std::vector< int > EnvPlane
Definition: DataStructs.h:357
std::vector< short > MCSMom
Definition: DataStructs.h:344
const std::vector< std::string > VtxBitNames
Definition: DataStructs.cxx:80
std::vector< double > EnergyErr
Definition: DataStructs.h:306
std::vector< double > MIPEnergyErr
Definition: DataStructs.h:308
std::vector< short > MuonTag
min length and min MCSMom for a muon tag
Definition: DataStructs.h:514
unsigned int CTP_t
Definition: DataStructs.h:41
std::vector< float > VertexScoreWeights
Definition: DataStructs.h:511
std::vector< int > StageNum
Definition: DataStructs.h:352
std::vector< std::vector< std::pair< int, int > > > WireHitRange
Definition: DataStructs.h:499
std::vector< TCHit > fHits
Definition: DataStructs.h:495
float WirePitch
Definition: DataStructs.h:482
std::vector< double > Energy
Definition: DataStructs.h:305
std::vector< float > BeginWir
Definition: DataStructs.h:333
geo::PlaneID DecodeCTP(CTP_t CTP)
Definition: DataStructs.cxx:89
std::vector< float > Match3DCuts
3D matching cuts
Definition: DataStructs.h:517
std::vector< float > EndChg
Definition: DataStructs.h:341
short score
Definition: DataStructs.h:141
std::vector< int > TjIDs
Definition: DataStructs.h:237
CTP_t EncodeCTP(unsigned int cryo, unsigned int tpc, unsigned int plane)
Definition: DataStructs.h:45
unsigned int HitIndex
Definition: DataStructs.h:267
std::vector< simb::MCParticle * > MCPartList
Definition: DataStructs.h:520
std::array< double, 3 > Vector3_t
Definition: DataStructs.h:36
std::vector< ClusterStore > tcl
the clusters we are creating
Definition: DataStructs.h:501
std::array< std::vector< float >, 2 > dEdx
Definition: DataStructs.h:244
std::vector< float > cr_pfpxmin
Definition: DataStructs.h:368
Declaration of basic channel signal object.
std::vector< short > DeltaRayTag
min length, min MCSMom and min separation (WSE) for a delta ray tag
Definition: DataStructs.h:513
accept
Definition: HLTenums.h:16
std::vector< Tj2Pt > mallTraj
vector of trajectory points ordered by increasing X
Definition: DataStructs.h:494
std::vector< float > AngleRanges
list of max angles for each angle range
Definition: DataStructs.h:500
kink found in CheckTraj
Definition: DataStructs.h:379
std::vector< int > EnvShowerID
Definition: DataStructs.h:359
std::vector< float > KinkCuts
kink angle, nPts fit, (alternate) kink angle significance
Definition: DataStructs.h:516
TPEnvironment_t
Definition: DataStructs.h:453
TPCID_t TPC
Index of the TPC within its cryostat.
Definition: geo_types.h:203
std::vector< int > IsShowerTj
Definition: DataStructs.h:349
constexpr unsigned int Cpad
Definition: DataStructs.h:43
std::vector< double > dEdx
Definition: DataStructs.h:309
std::vector< float > Vertex3DCuts
2D vtx -> 3D vtx matching cuts
Definition: DataStructs.h:510
Float_t X
Definition: plot.C:39
std::vector< short > PlaneNum
Definition: DataStructs.h:346
bool DebugMode
print additional info when in debug mode
Definition: DataStructs.h:535
Definition: Step.hh:41
std::vector< unsigned int > NumWires
Definition: DataStructs.h:470
don&#39;t mess with this line
Definition: DataStructs.h:439
short StepDir
the normal user-defined stepping direction = 1 (US -> DS) or -1 (DS -> US)
Definition: DataStructs.h:531
std::array< double, 2 > dir
Definition: DataStructs.h:130
art framework interface to geometry description
struct of temporary clusters
Definition: DataStructs.h:65
const detinfo::DetectorProperties * detprop
Definition: DataStructs.h:527