hpstr
The Heavy Photon Search Toolkit for Reconstruction (hpstr) provides an interface to physics data from the HPS experiment saved in the LCIO format and converts it into an ROOT based format.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Track.h
Go to the documentation of this file.
1
8#ifndef _TRACK_H_
9#define _TRACK_H_
10
11//----------------//
12// C++ StdLib //
13//----------------//
14#include <cstdio>
15#include <vector>
16#include <cmath>
17
18//----------//
19// ROOT //
20//----------//
21#include "TObject.h"
22#include "TClonesArray.h"
23#include "TRefArray.h"
24#include "TRef.h"
25
26
27//TODO static?
28namespace TRACKINFO {
30}
31
32class Track : public TObject {
33
34 public:
35
38
40 ~Track();
41
43 void Clear(Option_t *option="");
44
50 void addHit(TObject* hit);
51
58 void setTruthLink(TObject* obj) {truth_link_ = obj;};
59 TRef getTruthLink() {return truth_link_;}
60
64 TRefArray getSvtHits() const { return tracker_hits_; };
65
77 void setTrackParameters(const double d0,
78 const double phi0,
79 const double omega,
80 const double tan_lambda,
81 const double z0);
82
84 std::vector<double> getTrackParameters();
85
86
87 double getD0 () const {return d0_;}
88 double getPhi () const {return phi0_;}
89 void setPhi (const double phi0) {phi0_ = phi0;}
90 double getOmega () const {return omega_;}
91 double getTanLambda() const {return tan_lambda_;}
92 double getZ0 () const {return z0_;}
93
95 void setCov(const std::vector<float>& cov) {cov_ = cov;}
96
97 std::vector<float> getCov() {return cov_;}
98
99 std::vector<int> getHitLayers() {return hit_layers_;}
100 void addHitLayer(int layer) {hit_layers_.push_back(layer);}
101
102 void addMcpHit(int layer, int mcpID) {mcp_hits_.push_back(std::make_pair(layer,mcpID));}
103 std::vector<std::pair<int,int>> getMcpHits() {return mcp_hits_;}
104
105 double getD0Err () const {return sqrt(cov_[0]);}
106 double getPhiErr () const {return sqrt(cov_[2]);}
107 double getOmegaErr () const {return sqrt(cov_[5]);}
108 double getTanLambdaErr () const {return sqrt(cov_[14]);}
109 double getZ0Err() const {return sqrt(cov_[9]);}
110 //double getPtErr() const { return pt_err;}
111
112 void setNdf(const float ndf) {ndf_ = ndf;}
113 double getNdf() const {return ndf_;}
114
120 void setChi2(const double chi2) { chi2_ = chi2; };
121
123 double getChi2() const { return chi2_; };
124
126 double getChi2Ndf() const {
127 //avoid check for 0
128 if (ndf_ > 1e-6)
129 return chi2_ / ndf_;
130 else
131 return -999;
132 };
133
140 void setIsolation(const int layer, const double isolation) { isolation_[layer] = isolation; };
141
142
149 double getIsolation(const int layer) const { return isolation_[layer]; };
150
151
153 void setTrackTime(const double track_time) { track_time_ = track_time; };
154
160 double getTrackTime() const { return track_time_; };
161
167 void setTrackVolume(const int track_volume) { track_volume_ = track_volume; };
168
175 void setParticle(TObject* particle) { particle_ = particle; };
176
178 TObject* getParticle() const { return static_cast<TObject*>(particle_.GetObject()); };
179
186 void setPositionAtEcal(const double* position);
187
189 std::vector<double> getPositionAtEcal();
190
197 void setPosition(const double* position);
198
200 std::vector<double> getPosition();
201
208 void setType(const int type) { type_ = type; };
209
211 int getType() const { return type_; };
212
215 //Run Dependent Corrections
216 void applyCorrection(std::string var, double correction);
217
218 //bit1
219 bool is345Seed () const { return ((type_ >> 1) & 0x1);}
220
221 bool is456Seed () const { return ((type_ >> 2) & 0x1);}
222
223 bool is123SeedC4 () const { return ((type_ >> 3) & 0x1);}
224
225 bool is123SeedC5 () const { return ((type_ >> 4) & 0x1);}
226
227 bool isMatchedTrack() const { return (type_ & 0x1);}
228
229 bool isGBLTrack () const { return ((type_ >> 5) & 0x1);}
230
231 bool isKalmanTrack () const { return type_ == 1 ; }
232
233 bool isStrategy(TRACKINFO::STRATEGY strategy) {return (type_ >> strategy) & 0x1;};
234
240 void setCharge(const int charge) { charge_ = charge; };
241
247 int getCharge() const { return charge_; };
248
249
255 void setID(const int id){id_ = id;};
256
262 int getID() const {return id_;};
263
264
271 void setMomentum(double bfield = 0.52);
272
273
280 void setMomentum(std::vector<double> momentum);
281
282 void setMomentum(double px, double py, double pz);
283
285 std::vector<double> getMomentum() { return {px_, py_, pz_}; };
286
291 double getP() const {return sqrt(px_*px_ + py_*py_ + pz_*pz_);};
292
293 double getPt() const {return sqrt(px_*px_ + py_*py_);}
294
301 void setLambdaKink(const int layer, const double lambda_kink) { lambda_kinks_[layer] = lambda_kink; }
302
309 double getLambdaKink(const int layer) const { return lambda_kinks_[layer]; }
310
317 void setPhiKink(const int layer, const double phi_kink) { phi_kinks_[layer] = phi_kink; }
318
325 double getPhiKink(const int layer) const { return phi_kinks_[layer]; }
326
330 bool isTopTrack() const { return track_volume_ ? false : true; };
331
335 bool isBottomTrack() const { return track_volume_ ? true : false; };
336
340 void setTrackerHitCount(int nHits) { n_hits_ = nHits; };
341
345 int getTrackerHitCount() const { return n_hits_; };
346
348 void setNShared(const int nShared) { nShared_ = nShared;};
349
350 int getNShared() const {return nShared_;};
351
352 void setSharedLy0(const bool isShared) {SharedLy0_ = isShared;};
353 void setSharedLy1(const bool isShared) {SharedLy1_ = isShared;};
354
355 bool getSharedLy0() const {return SharedLy0_;};
356 bool getSharedLy1() const {return SharedLy1_;};
357
358
359 //TODO doc
360
361 void Print (Option_t *option="") const;
362
363 private:
364
366 TRefArray tracker_hits_{TRefArray{}};
367
370
372 double isolation_[14];
373
375 int n_hits_{0};
376
378 int track_volume_{-999};
379
381 int type_{-999};
382
384 std::vector<float> cov_;
385
387 std::vector<int> hit_layers_;
388
390 std::vector<std::pair<int,int>> mcp_hits_;
391
393 double d0_{-999.};
394
399 double phi0_{-999.};
400
405 double omega_{-999.};
406
411 double tan_lambda_{-999.};
412
417 double z0_{-999.};
418
420 double chi2_{-999.};
421
423 double ndf_{0.};
424
429 double track_time_{-999.};
430
432 double x_at_ecal_{-999.};
433
435 double y_at_ecal_{-999.};
436
438 double z_at_ecal_{-999.};
439
441 double x_{-999.};
442
444 double y_{-999.};
445
447 double z_{-999.};
448
450 double lambda_kinks_[14];
451
453 double phi_kinks_[14];
454
456 double px_{-9999.};
457 double py_{-9999.};
458 double pz_{-9999.};
459
461 int id_{0};
462
464 int charge_{0};
465
467 int nShared_{0};
468
470 bool SharedLy0_{false};
471
473 bool SharedLy1_{false};
474
477
480
482}; // Track
483
484#endif // __TRACK_H__
Definition Track.h:32
int n_hits_
Definition Track.h:375
void setLambdaKink(const int layer, const double lambda_kink)
Definition Track.h:301
void setIsolation(const int layer, const double isolation)
Definition Track.h:140
bool isKalmanTrack() const
Definition Track.h:231
int type_
Definition Track.h:381
bool isBottomTrack() const
Definition Track.h:335
double getPhiKink(const int layer) const
Definition Track.h:325
void setTrackParameters(const double d0, const double phi0, const double omega, const double tan_lambda, const double z0)
Definition Track.cxx:31
double getTanLambdaErr() const
Definition Track.h:108
bool isTopTrack() const
Definition Track.h:330
double px_
Definition Track.h:456
bool is456Seed() const
Definition Track.h:221
TRef truth_link_
Definition Track.h:476
bool isStrategy(TRACKINFO::STRATEGY strategy)
Definition Track.h:233
double phi0_
Definition Track.h:399
void setPosition(const double *position)
Definition Track.cxx:55
TRef getTruthLink()
Definition Track.h:59
void setSharedLy1(const bool isShared)
Definition Track.h:353
void setNdf(const float ndf)
Definition Track.h:112
std::vector< double > getPosition()
Definition Track.cxx:61
double getPhiErr() const
Definition Track.h:106
int nShared_
Definition Track.h:467
std::vector< int > getHitLayers()
Definition Track.h:99
double getPhi() const
Definition Track.h:88
void addHitLayer(int layer)
Definition Track.h:100
std::vector< float > getCov()
Definition Track.h:97
bool isGBLTrack() const
Definition Track.h:229
std::vector< float > cov_
Definition Track.h:384
bool is345Seed() const
Definition Track.h:219
double getChi2Ndf() const
Definition Track.h:126
double getChi2() const
Definition Track.h:123
int getTrackerHitCount() const
Definition Track.h:345
double tan_lambda_
Definition Track.h:411
void setSharedLy0(const bool isShared)
Definition Track.h:352
std::vector< std::pair< int, int > > mcp_hits_
Definition Track.h:390
void setID(const int id)
Definition Track.h:255
bool SharedLy1_
Definition Track.h:473
double d0_
Definition Track.h:393
double getOmega() const
Definition Track.h:90
double py_
Definition Track.h:457
double getTrackTime() const
Definition Track.h:160
bool SharedLy0_
Definition Track.h:470
void setParticle(TObject *particle)
Definition Track.h:175
void Print(Option_t *option="") const
Definition Track.cxx:100
void setTrackVolume(const int track_volume)
Definition Track.h:167
void setPositionAtEcal(const double *position)
Definition Track.cxx:47
double chi2_
Definition Track.h:420
std::vector< double > getTrackParameters()
Definition Track.cxx:45
void setTrackerHitCount(int nHits)
Definition Track.h:340
bool is123SeedC5() const
Definition Track.h:225
void setNShared(const int nShared)
Definition Track.h:348
std::vector< double > getPositionAtEcal()
Definition Track.cxx:53
double getD0() const
Definition Track.h:87
double isolation_[14]
Definition Track.h:372
TRef particle_
Definition Track.h:369
~Track()
Definition Track.cxx:16
void setCharge(const int charge)
Definition Track.h:240
double x_at_ecal_
Definition Track.h:432
TRefArray tracker_hits_
Definition Track.h:366
double getD0Err() const
Definition Track.h:105
int getCharge() const
Definition Track.h:247
void setType(const int type)
Definition Track.h:208
void Clear(Option_t *option="")
Definition Track.cxx:23
double z_at_ecal_
Definition Track.h:438
bool getSharedLy0() const
Definition Track.h:355
int getID() const
Definition Track.h:262
int getNShared() const
Definition Track.h:350
double getTanLambda() const
Definition Track.h:91
int track_volume_
Definition Track.h:378
double getLambdaKink(const int layer) const
Definition Track.h:309
void setTrackTime(const double track_time)
Definition Track.h:153
TRefArray getSvtHits() const
Definition Track.h:64
bool isMatchedTrack() const
Definition Track.h:227
void setPhiKink(const int layer, const double phi_kink)
Definition Track.h:317
TObject * getParticle() const
Definition Track.h:178
int id_
Definition Track.h:461
double getIsolation(const int layer) const
Definition Track.h:149
double lambda_kinks_[14]
Definition Track.h:450
std::vector< double > getMomentum()
Definition Track.h:285
int charge_
Definition Track.h:464
double pz_
Definition Track.h:458
double z_
Definition Track.h:447
void setTruthLink(TObject *obj)
Definition Track.h:58
void setCov(const std::vector< float > &cov)
Definition Track.h:95
double y_
Definition Track.h:444
std::vector< std::pair< int, int > > getMcpHits()
Definition Track.h:103
bool getSharedLy1() const
Definition Track.h:356
double getZ0() const
Definition Track.h:92
void addHit(TObject *hit)
Definition Track.cxx:86
double x_
Definition Track.h:441
int getType() const
Definition Track.h:211
void addMcpHit(int layer, int mcpID)
Definition Track.h:102
double getPt() const
Definition Track.h:293
TRef mcp_link_
Definition Track.h:479
std::vector< int > hit_layers_
Definition Track.h:387
double getP() const
Definition Track.h:291
void setChi2(const double chi2)
Definition Track.h:120
double getNdf() const
Definition Track.h:113
double phi_kinks_[14]
Definition Track.h:453
double getZ0Err() const
Definition Track.h:109
void setMomentum(double bfield=0.52)
Definition Track.cxx:63
bool is123SeedC4() const
Definition Track.h:223
double omega_
Definition Track.h:405
ClassDef(Track, 1)
void setPhi(const double phi0)
Definition Track.h:89
double y_at_ecal_
Definition Track.h:435
void applyCorrection(std::string var, double correction)
Definition Track.cxx:91
double getOmegaErr() const
Definition Track.h:107
double z0_
Definition Track.h:417
double ndf_
Definition Track.h:423
double track_time_
Definition Track.h:429
@ MATCH
Definition Track.h:29
@ GBL
Definition Track.h:29
@ S123C4
Definition Track.h:29
@ S345
Definition Track.h:29
@ S123C5
Definition Track.h:29
@ S456
Definition Track.h:29