LArSoft  v07_13_02
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 
54  struct VtxStore {
55  Point2_t Pos {{0,0}};
56  Point2_t PosErr {{2,1}};
57  unsigned short NTraj {0};
58  unsigned short Pass {0}; // Pass in which this vertex was created
59  float ChiDOF {0};
60  // Topo: 0 = end0-end0, 1 = end0(1)-end1(0), 2 = end1-end1, 3 = CI3DV,
61  // 4 = C3DIVIG, 5 = FHV, 6 = FHV2, 7 = SHCH, 8 = CTBC, 9 = Junk, 10 = 3D split, 11 = neutral decay (pizero)
62  short Topo {0};
63  CTP_t CTP {0};
64  int ID {0};
65  int UID {0};
66  int Vx3ID {0};
67  float Score {0};
68  float TjChgFrac {0};
69  std::bitset<16> Stat {0};
70  };
71 
72  typedef enum {
81  } VtxBit_t;
82 
84  struct Vtx3Store {
85  float X {0}; // x position
86  float XErr {0.5}; // x position error
87  float Y {0}; // y position
88  float YErr {0.5}; // y position error
89  float Z {0}; // z position
90  float ZErr {0.5}; // z position error
91  float Score {0};
92  short Wire {-1}; // wire number for an incomplete 3D vertex
94  std::vector<int> Vx2ID; // List of 2D vertex IDs in each plane
95  int ID {0}; // 0 = obsolete vertex
96  int UID {0};
97  bool Primary {false};
98  bool Neutrino {false};
99  };
100 
101  // A temporary struct for matching trajectory points; 1 struct for each TP for
102  // each trajectory. These are put into mallTraj which is then sorted by increasing xlo
103  struct Tj2Pt{
105  unsigned int wire;
106  // x range spanned by hits on the TP
107  float xlo;
108  float xhi;
109  CTP_t ctp;
110  // the Trajectory ID
111  unsigned short id;
112  unsigned short ipt; // The trajectory point
113  // the number of points in the Tj so that the minimum Tj length cut (MatchCuts[2]) can be made
114  unsigned short npts;
115  short score; // 0 = Tj with nice vertex, 1 = high quality Tj, 2 = normal, -1 = already matched
116  };
117 
118  struct TrajPoint {
119  CTP_t CTP {0};
120  Point2_t HitPos {{0,0}}; // Charge weighted position of hits in wire equivalent units
121  Point2_t Pos {{0,0}}; // Trajectory position in wire equivalent units
122  Vector2_t Dir {{0,0}}; // Direction cosines in the StepDir direction
123  double HitPosErr2 {0}; // Uncertainty^2 of the hit position perpendiclar to the direction
124  // HitPosErr2 < 0 = HitPos not defined because no hits used
125  double Ang {0}; // Trajectory angle (-pi, +pi)
126  double AngErr {0.1}; // Trajectory angle error
127  float Chg {0}; // Chargetj2pt
128  float AveChg {-1}; // Average charge of last ~20 TPs
129  float ChgPull {0.1}; // = (Chg - AveChg) / ChgRMS
130  float Delta {0}; // Deviation between trajectory and hits (WSE)
131  float DeltaRMS {0.02}; // RMS of Deviation between trajectory and hits (WSE)
132  float FitChi {0}; // Chi/DOF of the fit
133  unsigned short NTPsFit {2}; // Number of trajectory points fitted to make this point
134  unsigned short Step {0}; // Step number at which this TP was created
135  unsigned short AngleCode {0}; // 0 = small angle, 1 = large angle, 2 = very large angle
136  std::vector<unsigned int> Hits; // vector of fHits indices
137  std::bitset<16> UseHit {0}; // set true if the hit is used in the fit
138  std::bitset<8> Environment {0}; // TPEnvironment_t bitset that describes the environment, e.g. nearby showers or other Tjs
139  };
140 
141  // Global information for the trajectory
142  struct Trajectory {
143  std::vector<TrajPoint> Pts;
144  CTP_t CTP {0};
145  std::bitset<128> AlgMod;
146  int WorkID {0};
147  int ParentID {-1};
148  float AveChg {0};
149  float TotChg {0};
150  float ChgRMS {0.5};
151  float DirFOM {0.5};
152  short MCSMom {0}; //< Crude 2D estimate to use for shower-like vs track-like discrimination
153  float EffPur {0};
154  Point2_t dEdx {{0,0}};
155  std::array<unsigned short, 2> VtxID {{0,0}};
156  std::array<unsigned short, 2> EndPt {{0,0}};
157  int ID;
158  int UID;
159  int SSID {0};
160  unsigned short PDGCode {0};
161  unsigned short Pass {0};
162  short StepDir {0};
163  short StartEnd {-1};
164  unsigned int mcpListIndex {UINT_MAX};
165  std::array<std::bitset<8>, 2> StopFlag {}; // Bitset that encodes the reason for stopping
166  std::bitset<8> Strategy {};
167  bool NeedsUpdate {false};
168  bool IsGood {true};
169  bool MaskedLastTP {false};
170  };
171 
172  struct TjForecast {
173  unsigned short nextForecastUpdate {0};
174  float showerLikeFraction {0};
175  float outlook {-1};
176  float chgSlope {0};
177  float chgSlopeErr {0};
178  float chgFitChiDOF {0};
179  float chgRMS {0};
180  short MCSMom {0};
181  bool leavesBeforeEnd {false};
182  bool foundShower {false};
183  bool endBraggPeak {false};
184  };
185 
186  // struct used for TrajCluster 3D trajectory points
187  struct TrajPoint3 {
188  Point3_t Pos {{ 0.0, 0.0, 0.0 }};
189  Vector3_t Dir {{ 0.0, 0.0, 0.0 }};
190  std::vector<Tj2Pt> Tj2Pts; // list of trajectory points
191  float dEdx {0}; // The charge is stored here before dE/dx is calculated
192  Point2_t AlongTrans; // Longitudinal & transverse position (cm) relative to the trajectory
193  };
194 
195  // Struct for 3D trajectory matching
196  struct MatchStruct {
197  // IDs of Trajectories that match in all planes
198  std::vector<int> TjIDs;
199  std::vector<float> TjCompleteness; // fraction of TP points that are 3D-matched
200  // Count of the number of X-matched hits and de-weight by angle
201  float Count {0}; // Set to 0 if matching failed
202  Point3_t Pos; // Position center using 3D-matched points on the Tjs - 3D fit
203  Vector3_t Dir; // Direction using 3D-matched points on the Tjs - 3D fit
204  };
205 
206  struct PFPStruct {
207  std::vector<int> TjIDs; // used to reference Tjs within a slice
208  std::vector<int> TjUIDs; // used to reference Tjs in any slice
209  std::vector<float> TjCompleteness; // fraction of TP points that are 3D-matched
210  std::vector<TrajPoint3> Tp3s; // TrajCluster 3D trajectory points
211  // Start is 0, End is 1
212  std::array<Point3_t, 2> XYZ; // XYZ position at both ends (cm)
213  std::array<Vector3_t, 2> Dir;
214  std::array<Vector3_t, 2> DirErr;
215  std::array<std::vector<float>, 2> dEdx;
216  std::array<std::vector<float>, 2> dEdxErr;
217  std::array<int, 2> Vx3ID {{ 0, 0 }};
218  int BestPlane {-1};
219  // stuff for constructing the PFParticle
220  int PDGCode {-1};
221  std::vector<int> DtrUIDs;
222  size_t ParentUID {0}; // Parent PFP UID (or 0 if no parent exists)
224  float EffPur {0};
225  unsigned int mcpListIndex {UINT_MAX};
226  unsigned short MatchVecIndex {USHRT_MAX};
227  float CosmicScore{0};
228  int ID {0};
229  int UID {0}; // unique global ID
230  bool Primary; // PFParticle is attached to a primary vertex
231  bool NeedsUpdate {true}; // Set true if the PFParticle needs to be (re-)defined
232  };
233 
234  struct ShowerPoint {
235  Point2_t Pos; // Hit Position in the normal coordinate system
236  Point2_t RotPos; // Position rotated into the shower coordinate system (0 = along, 1 = transverse)
237  float Chg {0}; // Charge of this point
238  unsigned int HitIndex; // the hit index
239  unsigned short TID; // The ID of the tj the point (hit) is in. TODO eliminate this redundant variable
240  };
241 
242  // A temporary structure that defines a 2D shower-like cluster of trajectories
243  struct ShowerStruct {
244  CTP_t CTP;
245  int ShowerTjID {0}; // ID of the shower Trajectory composed of many InShower Tjs
246  std::vector<int> TjIDs; // list of InShower Tjs
247  std::vector<int> NearTjIDs; // list of Tjs that are not InShower but satisfy the maxSep cut
248  std::vector<ShowerPoint> ShPts; // Trajectory points inside the shower
249  float Angle {0}; // Angle of the shower axis
250  float AngleErr {3}; // Error
251  float AspectRatio {1}; // The ratio of charge weighted transverse/longitudinal positions
252  float DirectionFOM {1};
253  std::vector<Point2_t> Envelope; // Vertices of a polygon that encompasses the shower
254  float EnvelopeArea {0};
255  float ChgDensity {0}; // Charge density inside the Envelope
256  float Energy {0};
257  float ParentFOM {10};
258  int ID {0};
259  int UID {0};
260  int ParentID {0}; // The ID of a parent Tj - the one at the start of the shower
261  int TruParentID {0};
262  int SS3ID {0}; // ID of a ShowerStruct3D to which this 2D shower is matched
263  bool NeedsUpdate {true}; // Needs to be updated (e.g. after adding a tj, defining a parent, etc)
264  };
265 
266  // Shower variables filled in MakeShowers. These are in cm and radians
267  struct ShowerStruct3D {
269  Vector3_t DirErr; // DirErr is hijacked to store the shower rms at the start, center and end sections
271  Point3_t StartErr; // PosErr is hijacked to temporarily store the charge in the three sections
272  Point3_t ChgPos; // position of the center of charge
273  Point3_t End; // end position
274  double Len {1};
275  double OpenAngle {0.12};
276  std::vector<double> Energy;
277  std::vector<double> EnergyErr;
278  std::vector<double> MIPEnergy;
279  std::vector<double> MIPEnergyErr;
280  std::vector<double> dEdx;
281  std::vector<double> dEdxErr;
283  std::vector<int> CotIDs; // list of indices of 2D showers in tjs.cots
284  std::vector<unsigned int> Hits;
286  int ID;
287  int UID {0};
288  int ParentID {0}; // The ID of a track-like pfp at the start of the shower, e.g. an electron
289  float MatchFOM;
290  unsigned short PFPIndex {USHRT_MAX}; // The index of the pfp for this shower
291  int Vx3ID {0};
292  bool NeedsUpdate {true}; // This is set true whenever the shower needs to be updated
293  bool Cheat {false};
294  };
295 
297  std::array<int, 2> TjIDs; // pairs of Tjs that shouldn't be clustered in shower reconstruction because...
298  int Vx2ID; // they share a 2D vertex that may be matched to...
299  int Vx3ID; // a high-score 3D vertex
300  };
301 
302  struct ShowerTreeVars {
303  // run, subrun, and event are also saved to this tree
304 
305  std::vector<float> BeginWir; // begin wire
306  std::vector<float> BeginTim; // begin tick
307  std::vector<float> BeginAng; // begin angle
308  std::vector<float> BeginChg; // beginning average charge
309  std::vector<short> BeginVtx; // ID of begin vertex
310  std::vector<float> EndWir; // end wire
311  std::vector<float> EndTim; // end tick
312  std::vector<float> EndAng; // end angle
313  std::vector<float> EndChg; // ending average charge
314  std::vector<short> EndVtx; //ID of end vertex
315 
316  std::vector<short> MCSMom;
317 
318  std::vector<short> PlaneNum;
319 
320  std::vector<int> TjID;
321  std::vector<int> IsShowerTj; // indicates tj is an shower trajectory
322  std::vector<int> ShowerID; // shower ID associated w/ trajectory. -1 = no shower
323  std::vector<int> IsShowerParent; // this tj was chosen as a parent tj
324  std::vector<int> StageNum; // stage of reconstruction
325  std::vector<std::string> StageName; // stage name
326 
327  // envelope information
328  std::vector<float> Envelope;
329  std::vector<int>EnvPlane;
330  std::vector<int>EnvStage;
331  std::vector<int>EnvShowerID;
332 
333  int nStages {0};
334  unsigned short nPlanes {0};
335 
336  };
337 
338  struct CRTreeVars {
339  std::vector<int> cr_origin;
340  std::vector<float> cr_pfpxmin;
341  std::vector<float> cr_pfpxmax;
342  std::vector<float> cr_pfpyzmindis;
343  };
344 
345  // Algorithm modification bits
346  typedef enum {
359  kHED, // High End Delta
414  } AlgBit_t;
415 
416  typedef enum {
421  } Strategy_t;
422 
423  // Stop flag bits
424  typedef enum {
432  } StopFlag_t;
433 
434  // Environment near a trajectory point
435  typedef enum {
443  } TPEnvironment_t;
444 
445  // TrajClusterAlg configuration bits
446  typedef enum {
457  } TCModes_t;
458 
459  extern const std::vector<std::string> AlgBitNames;
460  extern const std::vector<std::string> StopFlagNames;
461  extern const std::vector<std::string> VtxBitNames;
462  extern const std::vector<std::string> StrategyBitNames;
463 
464  // struct for configuration - used in all slices
465  struct TCConfig {
466  std::vector<float> vtx2DCuts;
467  std::vector<float> vtx3DCuts;
468  std::vector<float> vtxScoreWeights;
469  std::vector<float> neutralVxCuts;
470  std::vector<short> deltaRayTag;
471  std::vector<short> muonTag;
472  std::vector<float> electronTag;
473  std::vector<float> chkStopCuts;
474  std::vector<float> showerTag;
475  std::vector<float> kinkCuts;
476  std::vector<float> match3DCuts;
477  std::vector<float> matchTruth;
478  std::vector<float> chargeCuts;
479  std::vector<float> qualityCuts;
480  std::vector<float> pfpStitchCuts;
481  std::vector<float> testBeamCuts;
482  std::vector<unsigned short> minPtsFit;
483  std::vector<unsigned short> minPts;
484  std::vector<unsigned short> maxAngleCode;
485  std::vector<short> minMCSMom;
486  std::vector<float> angleRanges;
487  float wirePitch;
488  float unitsPerTick;
489  std::vector<float> maxPos0;
490  std::vector<float> maxPos1;
491  float multHitSep;
492  float maxChi;
496  TMVA::Reader* showerParentReader;
497  std::vector<float> showerParentVars;
498  float hitErrFac;
502  float VLAStepSize;
503  float JTMaxHitSep2;
504  std::bitset<128> useAlg;
505  std::bitset<128> dbgAlg;
506  short recoSlice {0};
507  bool dbgSlc {true};
508  bool dbgStp {false};
509  bool dbgMrg {false};
510  bool dbg2V {false};
511  bool dbgVxNeutral {false};
512  bool dbgVxMerge {false};
513  bool dbgVxJunk {false};
514  bool dbg3V {false};
515  bool dbgPFP {false};
516  bool dbgDeltaRayTag {false};
517  bool dbgMuonTag {false};
518  bool dbg2S {false};
519  bool dbg3S {false};
520  bool dbgStitch {false};
521  bool dbgSummary {false};
522  bool dbgDump {false};
523  short nPtsAve;
524  std::bitset<16> modes;
525  bool doForecast {false};
526  };
527 
528  struct TCHit {
529  unsigned int allHitsIndex; // index into fHits
530  int InTraj {0}; // ID of the trajectory this hit is used in, 0 = none, < 0 = Tj under construction
531  };
532 
533  // hit collection for all slices, TPCs and cryostats + event information
534  // Note: Ideally this hit collection would be the FULL hit collection before cosmic removal
535  struct TCEvent {
536  std::vector<recob::Hit> const* allHits = nullptr;
537  unsigned int event;
538  unsigned int run;
539  unsigned int subRun;
540  unsigned int eventsProcessed;
541  std::vector<float> aveHitRMS;
542  int WorkID;
549  bool aveHitRMSValid {false};
550  };
551 
552  struct TCSlice {
553  std::vector<unsigned int> nWires;
554  std::vector<unsigned int> firstWire;
555  std::vector<unsigned int> lastWire;
556  float xLo; // fiducial volume of the current tpc
557  float xHi;
558  float yLo;
559  float yHi;
560  float zLo;
561  float zHi;
563  unsigned short nPlanes;
564  int ID;
565  // The variables below do change in size from event to event
566 
567  // Save histograms to develop cosmic removal tools
569  std::vector<TCHit> slHits;
570  std::vector<Trajectory> tjs;
571  std::vector<Tj2Pt> mallTraj;
572  // vector of pairs of first (.first) and last+1 (.second) hit on each wire
573  // in the range fFirstWire to fLastWire. A value of -2 indicates that there
574  // are no hits on the wire. A value of -1 indicates that the wire is dead
575  std::vector<std::vector< std::pair<int, int>>> wireHitRange;
576  std::vector< VtxStore > vtxs;
577  std::vector< Vtx3Store > vtx3s;
578  std::vector<MatchStruct> matchVec;
579  std::vector<PFPStruct> pfps;
580  std::vector<ShowerStruct> cots; // Clusters of Trajectories that define 2D showers
581  std::vector<DontClusterStruct> dontCluster; // pairs of Tjs that shouldn't clustered in one shower
582  std::vector<ShowerStruct3D> showers; // 3D showers
583  bool isValid {false}; // set false if this slice failed reconstruction
584  };
585 
586  extern TCEvent evt;
587  extern TCConfig tcc;
588  extern ShowerTreeVars stv;
589  extern std::vector<TjForecast> tjfs;
590 
591  // vector of hits, tjs, etc in each slice
592  extern std::vector<TCSlice> slices;
593  // vector of seed TPs
594  extern std::vector<TrajPoint> seeds;
595 
596 } // namespace tca
597 
598 #endif // ifndef TRAJCLUSTERALGDATASTRUCT_H
Expect tracks entering from the front face. Don&#39;t create neutrino PFParticles.
Definition: DataStructs.h:448
calo::CalorimetryAlg * caloAlg
Definition: DataStructs.h:495
Point2_t AlongTrans
Definition: DataStructs.h:192
don&#39;t mess with this line
Definition: DataStructs.h:431
std::vector< int > EnvStage
Definition: DataStructs.h:330
Point2_t PosErr
Definition: DataStructs.h:56
std::vector< int > IsShowerParent
Definition: DataStructs.h:323
std::vector< Trajectory > tjs
vector of all trajectories in each plane
Definition: DataStructs.h:570
std::vector< Vtx3Store > vtx3s
3D vertices
Definition: DataStructs.h:577
std::vector< float > cr_pfpyzmindis
Definition: DataStructs.h:342
std::array< std::vector< float >, 2 > dEdxErr
Definition: DataStructs.h:216
std::vector< float > kinkCuts
kink angle, nPts fit, (alternate) kink angle significance
Definition: DataStructs.h:475
unsigned int event
Definition: DataStructs.h:537
std::vector< float > EndWir
Definition: DataStructs.h:310
struct of temporary 2D vertices (end points)
Definition: DataStructs.h:54
FindVtxTraj algorithm tried.
Definition: DataStructs.h:73
std::vector< float > EndAng
Definition: DataStructs.h:312
const std::vector< std::string > AlgBitNames
Definition: DataStructs.cxx:13
std::vector< ShowerStruct > cots
Definition: DataStructs.h:580
unsigned int run
Definition: DataStructs.h:538
std::vector< double > dEdxErr
Definition: DataStructs.h:281
std::vector< float > maxPos0
Definition: DataStructs.h:489
std::vector< unsigned short > minPtsFit
Reconstruct in several passes.
Definition: DataStructs.h:482
std::vector< float > cr_pfpxmax
Definition: DataStructs.h:341
std::vector< int > NearTjIDs
Definition: DataStructs.h:247
std::array< double, 3 > Point3_t
Definition: DataStructs.h:35
std::vector< ShowerStruct3D > showers
Definition: DataStructs.h:582
std::vector< float > vtx3DCuts
2D vtx -> 3D vtx matching cuts
Definition: DataStructs.h:467
short MCSMom(TCSlice &slc, const std::vector< int > &tjIDs)
Definition: Utils.cxx:2914
std::vector< float > qualityCuts
Min points/wire, min consecutive pts after a gap.
Definition: DataStructs.h:479
std::vector< float > BeginTim
Definition: DataStructs.h:306
std::array< int, 2 > TjIDs
Definition: DataStructs.h:297
std::vector< Point2_t > Envelope
Definition: DataStructs.h:253
TCConfig tcc
Definition: DataStructs.cxx:6
unsigned short id
Definition: DataStructs.h:111
vertex position fixed manually - no fitting done
Definition: DataStructs.h:74
std::vector< int > TjIDs
Definition: DataStructs.h:198
Declaration of signal hit object.
std::vector< float > BeginAng
Definition: DataStructs.h:307
std::vector< float > TjCompleteness
Definition: DataStructs.h:209
Float_t Y
Definition: plot.C:39
std::vector< int > Vx2ID
Definition: DataStructs.h:94
The data type to uniquely identify a Plane.
Definition: geo_types.h:250
matched to a high-score 3D vertex
Definition: DataStructs.h:76
std::vector< unsigned int > Hits
Definition: DataStructs.h:136
std::vector< double > MIPEnergy
Definition: DataStructs.h:278
step from US -> DS (true) or DS -> US (false)
Definition: DataStructs.h:447
std::vector< int > TjIDs
Definition: DataStructs.h:246
VtxBit_t
Definition: DataStructs.h:72
unsigned short Pass
Definition: DataStructs.h:58
float maxWireSkipWithSignal
max number of wires to skip with a signal on them
Definition: DataStructs.h:500
call study functions to develop cuts, etc
Definition: DataStructs.h:452
CryostatID_t Cryostat
Index of cryostat.
Definition: geo_types.h:130
unsigned short MatchVecIndex(TCSlice &slc, int tjID)
Definition: Utils.cxx:1138
std::vector< Tj2Pt > Tj2Pts
Definition: DataStructs.h:190
std::vector< float > electronTag
Definition: DataStructs.h:472
a general purpose flag bit used in 3D matching
Definition: DataStructs.h:442
std::vector< float > matchTruth
Match to MC truth.
Definition: DataStructs.h:477
StopFlag_t
Definition: DataStructs.h:424
float ParentFOM(std::string inFcnLabel, TCSlice &slc, PFPStruct &pfp, unsigned short pend, ShowerStruct3D &ss3, bool prt)
Definition: TCShower.cxx:2169
std::vector< unsigned int > lastWire
the last wire with a hit
Definition: DataStructs.h:555
Particle class.
unsigned int eventsProcessed
Definition: DataStructs.h:540
std::vector< int > CotIDs
Definition: DataStructs.h:283
don&#39;t mess with this line
Definition: DataStructs.h:80
std::vector< ShowerPoint > ShPts
Definition: DataStructs.h:248
std::vector< TrajPoint3 > Tp3s
Definition: DataStructs.h:210
Strategy_t
Definition: DataStructs.h:416
AlgBit_t
Definition: DataStructs.h:346
CRTreeVars crt
Definition: DataStructs.h:568
std::vector< float > angleRanges
list of max angles for each angle range
Definition: DataStructs.h:486
std::vector< float > showerTag
[min MCSMom, max separation, min # Tj < separation] for a shower tag
Definition: DataStructs.h:474
Float_t Z
Definition: plot.C:39
std::vector< float > EndTim
Definition: DataStructs.h:311
std::vector< int > ShowerID
Definition: DataStructs.h:322
ShowerTreeVars stv
Definition: DataStructs.cxx:8
std::vector< std::vector< std::pair< int, int > > > wireHitRange
Definition: DataStructs.h:575
unsigned short npts
Definition: DataStructs.h:114
unsigned short TID
Definition: DataStructs.h:239
std::vector< unsigned short > maxAngleCode
max allowed angle code for each pass
Definition: DataStructs.h:484
float projectionErrFactor
Definition: DataStructs.h:501
tagged as a vertex between Tjs that are matched to MC truth neutrino interaction particles ...
Definition: DataStructs.h:77
std::vector< int > TjUIDs
Definition: DataStructs.h:208
save shower tree
Definition: DataStructs.h:456
constexpr unsigned int Tpad
Definition: DataStructs.h:42
unsigned short ipt
Definition: DataStructs.h:112
std::vector< DontClusterStruct > dontCluster
Definition: DataStructs.h:581
const std::vector< std::string > StrategyBitNames
std::vector< std::string > StageName
Definition: DataStructs.h:325
struct of temporary 3D vertices
Definition: DataStructs.h:84
geo::TPCID TPCID
Definition: DataStructs.h:223
short nPtsAve
dump trajectory points
Definition: DataStructs.h:523
std::vector< int > TjID
Definition: DataStructs.h:320
std::vector< float > TjCompleteness
Definition: DataStructs.h:199
std::vector< Tj2Pt > mallTraj
vector of trajectory points ordered by increasing X
Definition: DataStructs.h:571
std::vector< float > testBeamCuts
Definition: DataStructs.h:481
std::array< float, 2 > Point2_t
Definition: DataStructs.h:37
std::vector< float > maxPos1
Definition: DataStructs.h:490
float unitsPerTick
scale factor from Tick to WSE equivalent units
Definition: DataStructs.h:488
std::array< Point3_t, 2 > XYZ
Definition: DataStructs.h:212
const detinfo::DetectorProperties * detprop
Definition: DataStructs.h:494
use the slowing-down strategy
Definition: DataStructs.h:420
std::vector< short > minMCSMom
Min MCSMom for each pass.
Definition: DataStructs.h:485
std::vector< short > BeginVtx
Definition: DataStructs.h:309
geo::TPCID TPCID
Definition: DataStructs.h:93
std::array< Vector3_t, 2 > DirErr
Definition: DataStructs.h:214
unsigned int wire
Definition: DataStructs.h:105
const std::vector< std::string > StopFlagNames
Definition: DataStructs.cxx:82
std::vector< float > aveHitRMS
average RMS of an isolated hit
Definition: DataStructs.h:541
std::vector< TrajPoint > Pts
Trajectory points.
Definition: DataStructs.h:143
TMVA::Reader * showerParentReader
Definition: DataStructs.h:496
std::array< Vector3_t, 2 > Dir
Definition: DataStructs.h:213
std::vector< float > showerParentVars
Definition: DataStructs.h:497
std::vector< float > neutralVxCuts
Definition: DataStructs.h:469
std::vector< short > EndVtx
Definition: DataStructs.h:314
std::vector< int > cr_origin
Definition: DataStructs.h:339
std::vector< float > match3DCuts
3D matching cuts
Definition: DataStructs.h:476
std::vector< float > Envelope
Definition: DataStructs.h:328
the charge fraction is small near this point
Definition: DataStructs.h:441
Point2_t Pos
Definition: DataStructs.h:55
call study functions to develop cuts, etc
Definition: DataStructs.h:453
const geo::GeometryCore * geom
Definition: DataStructs.h:493
std::vector< unsigned short > minPts
min number of Pts required to make a trajectory
Definition: DataStructs.h:483
int UID
a unique ID for all slices
Definition: DataStructs.h:158
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.
std::vector< unsigned int > Hits
Definition: DataStructs.h:284
std::vector< unsigned int > firstWire
the first wire with a hit
Definition: DataStructs.h:554
std::vector< float > BeginChg
Definition: DataStructs.h:308
vertex quality is suspect - No requirement made on chg btw it and the Tj
Definition: DataStructs.h:79
int ID
ID that is local to one slice.
Definition: DataStructs.h:157
std::vector< TCSlice > slices
Definition: DataStructs.cxx:10
std::bitset< 16 > modes
number of points to find AveChg
Definition: DataStructs.h:524
std::vector< TCHit > slHits
Definition: DataStructs.h:569
std::vector< float > chargeCuts
Definition: DataStructs.h:478
std::bitset< 16 > Stat
Vertex status bits using kVtxBit_t.
Definition: DataStructs.h:69
std::vector< int > EnvPlane
Definition: DataStructs.h:329
int ID
set to 0 if killed
Definition: DataStructs.h:64
std::vector< TrajPoint > seeds
Definition: DataStructs.cxx:11
float maxWireSkipNoSignal
max number of wires to skip w/o a signal on them
Definition: DataStructs.h:499
std::vector< short > MCSMom
Definition: DataStructs.h:316
const std::vector< std::string > VtxBitNames
Definition: DataStructs.cxx:91
std::vector< double > EnergyErr
Definition: DataStructs.h:277
std::vector< double > MIPEnergyErr
Definition: DataStructs.h:279
std::vector< float > vtxScoreWeights
Definition: DataStructs.h:468
unsigned int CTP_t
Definition: DataStructs.h:41
geo::TPCID TPCID
Definition: DataStructs.h:562
TCModes_t
Definition: DataStructs.h:446
std::vector< int > StageNum
Definition: DataStructs.h:324
std::vector< TjForecast > tjfs
Definition: DataStructs.cxx:7
std::bitset< 128 > useAlg
Max hit separation for making junk trajectories. < 0 to turn off.
Definition: DataStructs.h:504
std::vector< float > pfpStitchCuts
cuts for stitching between TPCs
Definition: DataStructs.h:480
std::vector< short > deltaRayTag
min length, min MCSMom and min separation (WSE) for a delta ray tag
Definition: DataStructs.h:470
save cosmic ray tree
Definition: DataStructs.h:454
float VLAStepSize
Definition: DataStructs.h:502
std::vector< VtxStore > vtxs
2D vertices
Definition: DataStructs.h:576
std::bitset< 128 > AlgMod
Bit set if algorithm AlgBit_t modifed the trajectory.
Definition: DataStructs.h:145
call study functions to develop cuts, etc
Definition: DataStructs.h:451
std::vector< double > Energy
Definition: DataStructs.h:276
std::vector< short > muonTag
min length and min MCSMom for a muon tag
Definition: DataStructs.h:471
unsigned short NTraj
Definition: DataStructs.h:57
std::vector< float > BeginWir
Definition: DataStructs.h:305
geo::PlaneID DecodeCTP(CTP_t CTP)
std::vector< float > EndChg
Definition: DataStructs.h:313
short score
Definition: DataStructs.h:115
std::vector< int > TjIDs
Definition: DataStructs.h:207
std::bitset< 128 > dbgAlg
Allow user to turn on debug printing in algorithms (that print...)
Definition: DataStructs.h:505
CTP_t EncodeCTP(unsigned int cryo, unsigned int tpc, unsigned int plane)
Definition: DataStructs.h:45
unsigned int HitIndex
Definition: DataStructs.h:238
std::vector< unsigned int > nWires
Definition: DataStructs.h:553
use the stiff electron strategy
Definition: DataStructs.h:418
std::array< double, 3 > Vector3_t
Definition: DataStructs.h:36
std::vector< float > chkStopCuts
[Min Chg ratio, Chg slope pull cut, Chg fit chi cut]
Definition: DataStructs.h:473
int ID
ID of the recob::Slice (not the sub-slice)
Definition: DataStructs.h:564
std::array< std::vector< float >, 2 > dEdx
Definition: DataStructs.h:215
std::vector< float > cr_pfpxmin
Definition: DataStructs.h:340
int UID
unique global ID
Definition: DataStructs.h:65
unsigned int subRun
Definition: DataStructs.h:539
Declaration of basic channel signal object.
std::vector< float > vtx2DCuts
Max position pull, max Position error rms.
Definition: DataStructs.h:466
unsigned short nPlanes
Definition: DataStructs.h:563
std::vector< MatchStruct > matchVec
3D matching vector
Definition: DataStructs.h:578
std::vector< PFPStruct > pfps
Definition: DataStructs.h:579
float multHitSep
preferentially "merge" hits with < this separation
Definition: DataStructs.h:491
kink found in CheckTraj
Definition: DataStructs.h:351
float JTMaxHitSep2
Definition: DataStructs.h:503
std::vector< int > EnvShowerID
Definition: DataStructs.h:331
TPEnvironment_t
Definition: DataStructs.h:435
TCEvent evt
Definition: DataStructs.cxx:5
Vector2_t dir
Definition: DataStructs.h:104
call study functions to develop cuts, etc (see TCTruth.cxx)
Definition: DataStructs.h:450
unsigned int allHitsIndex
Definition: DataStructs.h:529
TPCID_t TPC
Index of the TPC within its cryostat.
Definition: geo_types.h:203
std::vector< int > IsShowerTj
Definition: DataStructs.h:321
constexpr unsigned int Cpad
Definition: DataStructs.h:43
std::vector< double > dEdx
Definition: DataStructs.h:280
Float_t X
Definition: plot.C:39
std::vector< short > PlaneNum
Definition: DataStructs.h:318
float TjChgFrac
Fraction of charge near the vertex that is from hits on the vertex Tjs.
Definition: DataStructs.h:68
master switch for turning on debug mode
Definition: DataStructs.h:449
Definition: Step.hh:41
tag cosmic rays
Definition: DataStructs.h:455
don&#39;t mess with this line
Definition: DataStructs.h:413
art framework interface to geometry description
std::vector< int > DtrUIDs
Definition: DataStructs.h:221
float AspectRatio(TCSlice &slc, std::vector< int > &tjids, CTP_t inCTP)
use the stiff muon strategy
Definition: DataStructs.h:419