Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | List of all members
JAANET::JTrk_t Struct Reference

Auxiliary class to set-up Trk. More...

#include <JTrk_t.hh>

Inheritance diagram for JAANET::JTrk_t:
Trk AAObject TObject

Public Member Functions

 JTrk_t (const int id, const int type, const int origin, const Vec &pos, const Vec &dir, const double t, const double E)
 Constructor. More...
 
void read (const Trk &t)
 Read track (useful in python). More...
 
void write (Trk &t) const
 Write track (useful in python). More...
 
double distance_to (const Trk &t) const
 Get distance of closes approach to another track. More...
 
double distance_to (const Vec &p=Vec()) const
 Get distance to given position. More...
 
std::string name () const
 Get the name of the MC particle type. More...
 
bool is_primary () const
 Check if this is a primary particle (i.e. More...
 
bool is_neutrino () const
 Check if this is a netrino. More...
 
bool is_lepton () const
 Check if this is a charged lepton. More...
 
bool is_muon () const
 Check if this is a muon. More...
 
bool is_orphan () const
 Check if this is an orphan. More...
 
std::vector< Trk * > get_daughters (std::vector< Trk > &mctrks)
 Get list of of pointers to tracks, all of which have their mother identifier set to identifier of this track. More...
 
void print (std::ostream &out=std::cout) const
 Print track. More...
 
int idx (const std::string &key) const
 Get index in user data of the item with given key. More...
 
bool haveusr (const std::string &key) const
 Check availability of user data of the item with given key. More...
 
int idxusr_checked (const std::string &key) const
 Get index in user data of the item with given key. More...
 
double getusr (const std::string &key) const
 Get user data item with given key. More...
 
void setusr (const std::string &key, double value)
 Set user data item with given key. More...
 
bool delusr (const std::string &key)
 Remove (first) user data item with given key. More...
 
void clearusr ()
 Clear user data. More...
 
void printusr (std::ostream &out=std::cout)
 Print user data (i.e. More...
 
const char * __str__ () const
 Get class name. More...
 

Public Attributes

int id
 track identifier More...
 
Vec pos
 postion of the track at time t [m] More...
 
Vec dir
 track direction More...
 
double t
 track time [ns] (when the particle is at pos ) More...
 
double E
 Energy [GeV] (either MC truth or reconstructed) More...
 
double len
 length, if applicable [m] More...
 
double lik
 likelihood or lambda value (for aafit, lambda) More...
 
int type
 MC: particle type in PDG encoding. More...
 
int rec_type
 identifyer for the overall fitting algorithm/chain/strategy More...
 
std::vector< int > rec_stages
 list of identifyers of succesfull fitting stages resulting in this track More...
 
int status
 MC status code. More...
 
int mother_id
 MC id of the parent particle. More...
 
std::vector< double > fitinf
 place to store additional fit info, for jgandalf, see JFitParameters.hh More...
 
std::vector< int > hit_ids
 list of associated hit-ids (corresponds to Hit::id). More...
 
std::vector< double > error_matrix
 (NxN) error covariance matrix for fit parameters (stored as linear vector) More...
 
std::string comment
 use as you like More...
 
std::vector< double > usr
 user data More...
 
std::vector< std::string > usr_names
 user keys More...
 
TObjectany
 Pointer to "any" user data. More...
 

Detailed Description

Auxiliary class to set-up Trk.

Definition at line 19 of file JTrk_t.hh.

Constructor & Destructor Documentation

JAANET::JTrk_t::JTrk_t ( const int  id,
const int  type,
const int  origin,
const Vec pos,
const Vec dir,
const double  t,
const double  E 
)
inline

Constructor.

Parameters
ididentifier
typetype
originorigin
posposition
dirdirection
ttime [ns]
Eenergy [GeV]

Definition at line 33 of file JTrk_t.hh.

40  {
41  this->id = id;
42  this->type = type;
43  //this->origin = origin;
44  this->pos = pos;
45  this->dir = dir;
46  this->t = t;
47  this->E = E;
48  }
double t
track time [ns] (when the particle is at pos )
Definition: Trk.hh:17
Vec dir
track direction
Definition: Trk.hh:16
double E
Energy [GeV] (either MC truth or reconstructed)
Definition: Trk.hh:18
int type
MC: particle type in PDG encoding.
Definition: Trk.hh:22
int id
track identifier
Definition: Trk.hh:14
Vec pos
postion of the track at time t [m]
Definition: Trk.hh:15

Member Function Documentation

void Trk::read ( const Trk t)
inlineinherited

Read track (useful in python).

Parameters
ttrack

Definition at line 47 of file Trk.hh.

47 { *this = t;}
double t
track time [ns] (when the particle is at pos )
Definition: Trk.hh:17
void Trk::write ( Trk t) const
inlineinherited

Write track (useful in python).

Parameters
ttrack

Definition at line 54 of file Trk.hh.

54 { t = *this; }
double Trk::distance_to ( const Trk t) const
inlineinherited

Get distance of closes approach to another track.

Parameters
ttrack
Returns
distance

Definition at line 63 of file Trk.hh.

64  {
65  Vec v = dir.cross( t.dir );
66  v /= v.len();
67  const double d = (pos - t.pos ).dot( v );
68  return d>0?d:-d;
69  }
Vec dir
track direction
Definition: Trk.hh:16
double len() const
Get length.
Definition: Vec.hh:145
The Vec class is a straightforward 3-d vector, which also works in pyroot.
Definition: Vec.hh:12
then print_variable DETECTOR INPUT_FILE INTERMEDIATE_FILE check_input_file $DETECTOR $INPUT_FILE check_output_file $INTERMEDIATE_FILE $OUTPUT_FILE JMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
Definition: JPath.sh:52
Vec cross(const Vec r) const
Get cross product.
Definition: Vec.hh:44
Vec pos
postion of the track at time t [m]
Definition: Trk.hh:15
data_type v[N+1][M+1]
Definition: JPolint.hh:707
double Trk::distance_to ( const Vec p = Vec()) const
inlineinherited

Get distance to given position.

Parameters
pposition
Returns
distance

Definition at line 77 of file Trk.hh.

78  {
79  Vec v = p - pos;
80  double dz = v.dot(dir);
81  return v.dot(v) - dz*dz;
82  }
Vec dir
track direction
Definition: Trk.hh:16
double dot(const Vec &v) const
Get dot product.
Definition: Vec.hh:36
The Vec class is a straightforward 3-d vector, which also works in pyroot.
Definition: Vec.hh:12
Vec pos
postion of the track at time t [m]
Definition: Trk.hh:15
data_type v[N+1][M+1]
Definition: JPolint.hh:707
std::string Trk::name ( ) const
inlineinherited

Get the name of the MC particle type.

Returns
name

Definition at line 89 of file Trk.hh.

90  {
91  TParticlePDG* p = TDatabasePDG::Instance()->GetParticle( type );
92  if (!p) return "unnamed state ("+ std::to_string(type)+")";
93  return p->GetName();
94  }
int type
MC: particle type in PDG encoding.
Definition: Trk.hh:22
std::string to_string(const T &value)
Convert value to string.
bool Trk::is_primary ( ) const
inlineinherited

Check if this is a primary particle (i.e.

has not mother).

Returns
true if primary; else false

Definition at line 101 of file Trk.hh.

102  {
103  return mother_id == -1; // and/or status==0 ?
104  }
int mother_id
MC id of the parent particle.
Definition: Trk.hh:27
bool Trk::is_neutrino ( ) const
inlineinherited

Check if this is a netrino.

Note that its is checked if the PDG type is a nu-e, nu-mu or nu-tau.

Returns
true if neutrino; else false

Definition at line 113 of file Trk.hh.

114  {
115  const unsigned t = abs(type);
116  return t == 12 || t == 14 || t == 16;
117  }
double t
track time [ns] (when the particle is at pos )
Definition: Trk.hh:17
int type
MC: particle type in PDG encoding.
Definition: Trk.hh:22
bool Trk::is_lepton ( ) const
inlineinherited

Check if this is a charged lepton.

Note that its is checked if the PDG type is a (anti-)electron, (anti-)muon or (anti-)tua.

Returns
true if charged lepton; else false

Definition at line 126 of file Trk.hh.

127  {
128  const unsigned t = abs(type);
129  return t == 11 || t == 13 || t == 15;
130  }
double t
track time [ns] (when the particle is at pos )
Definition: Trk.hh:17
int type
MC: particle type in PDG encoding.
Definition: Trk.hh:22
bool Trk::is_muon ( ) const
inlineinherited

Check if this is a muon.

Note that its is checked if the PDG type is a (anti-)muon.

Returns
true if muon; else false

Definition at line 139 of file Trk.hh.

139 { return abs(type)==13; }
int type
MC: particle type in PDG encoding.
Definition: Trk.hh:22
bool Trk::is_orphan ( ) const
inlineinherited

Check if this is an orphan.

If a particle's (intermediate) mother has been deleted from the track-list (the 3rd digit of status==1).

Returns
true if orphan; else false

Definition at line 148 of file Trk.hh.

149  {
150  return (status / 100) % 10 == 1;
151  }
int status
MC status code.
Definition: Trk.hh:26
std::vector< Trk* > Trk::get_daughters ( std::vector< Trk > &  mctrks)
inlineinherited

Get list of of pointers to tracks, all of which have their mother identifier set to identifier of this track.

Parameters
mctrkslist of input tracks
Returns
list of pointers to tracks

Definition at line 159 of file Trk.hh.

160  {
162 
163  for( auto& t : mctrks )
164  {
165  if ( t.mother_id == id ) r.push_back( &t );
166  }
167  return r;
168  }
double t
track time [ns] (when the particle is at pos )
Definition: Trk.hh:17
data_type r[M+1]
Definition: JPolint.hh:709
void Trk::print ( std::ostream &  out = std::cout) const
inlineinherited

Print track.

Parameters
outoutput stream

Definition at line 175 of file Trk.hh.

176  {
177  out << "Trk: id=" << id << " pos="; pos.print(out);
178  out << " dir="; dir.print(out);
179  out << " t=" << t << " E=" << E << " pdg-type=" << type;
180  }
double t
track time [ns] (when the particle is at pos )
Definition: Trk.hh:17
Vec dir
track direction
Definition: Trk.hh:16
double E
Energy [GeV] (either MC truth or reconstructed)
Definition: Trk.hh:18
int type
MC: particle type in PDG encoding.
Definition: Trk.hh:22
Vec pos
postion of the track at time t [m]
Definition: Trk.hh:15
void print(std::ostream &out=std::cout) const
Print vector.
Definition: Vec.hh:166
int AAObject::idx ( const std::string &  key) const
inlineinherited

Get index in user data of the item with given key.

Parameters
keykey
Returns
index (-1 if key does not exists)

Definition at line 29 of file AAObject.hh.

30  {
31  auto i = std::find (usr_names.begin(), usr_names.end(), key );
32  if (i == usr_names.end()) return -1;
33  return i - usr_names.begin();
34  }
std::vector< std::string > usr_names
user keys
Definition: AAObject.hh:21
bool AAObject::haveusr ( const std::string &  key) const
inlineinherited

Check availability of user data of the item with given key.

Parameters
keykey
Returns
true if available; else false

Definition at line 42 of file AAObject.hh.

43  {
44  return idx( key ) >= 0;
45  }
int idx(const std::string &key) const
Get index in user data of the item with given key.
Definition: AAObject.hh:29
int AAObject::idxusr_checked ( const std::string &  key) const
inlineinherited

Get index in user data of the item with given key.


This method throws a run-time exception if no user data are available.

Parameters
keykey
Returns
index (-1 if key does not exists)

Definition at line 54 of file AAObject.hh.

55  {
56  int r = idx( key );
57  if (r < 0)
58  {
59  THROW(Exception, "No user data for key " << key << " in aanet object of type " << this -> ClassName());
60  }
61  return r;
62  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
data_type r[M+1]
Definition: JPolint.hh:709
int idx(const std::string &key) const
Get index in user data of the item with given key.
Definition: AAObject.hh:29
General exception.
Definition: Exception.hh:13
double AAObject::getusr ( const std::string &  key) const
inlineinherited

Get user data item with given key.


This method throws a run-time exception if no user data are available.

Parameters
keykey
Returns
value

Definition at line 72 of file AAObject.hh.

73  {
74  const int i = idx( key );
75 
76  if ( i < 0 )
77  {
78  THROW(Exception, "No user data for key " << key << " in aanet object of type " << this -> ClassName());
79  }
80 
81  if ( unsigned(i) >= usr.size() )
82  {
83  THROW(Exception, "Warning: inconsistent user data " << i << " >= " << usr.size());
84  }
85 
86  return usr[i];
87  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
int idx(const std::string &key) const
Get index in user data of the item with given key.
Definition: AAObject.hh:29
General exception.
Definition: Exception.hh:13
std::vector< double > usr
user data
Definition: AAObject.hh:20
void AAObject::setusr ( const std::string &  key,
double  value 
)
inlineinherited

Set user data item with given key.


Parameters
keykey
valuevalue

Definition at line 95 of file AAObject.hh.

96  {
97  int i = idx( key );
98  if (i < 0)
99  {
100  if ( usr.size() < usr_names.size() )
101  {
102  // this should not happen, but let's just add empty data
103  usr.resize( usr_names.size() );
104  }
105  else
106  {
107  // this is possible, add empty ("") names
108  usr_names.resize( usr.size() );
109  }
110 
111  usr_names.push_back( key );
112  usr.push_back( value );
113  }
114  else
115  {
116  usr[i] = value;
117  }
118  }
std::vector< std::string > usr_names
user keys
Definition: AAObject.hh:21
int idx(const std::string &key) const
Get index in user data of the item with given key.
Definition: AAObject.hh:29
std::vector< double > usr
user data
Definition: AAObject.hh:20
bool AAObject::delusr ( const std::string &  key)
inlineinherited

Remove (first) user data item with given key.


Parameters
keykey
Returns
true if data have been removed; else false

Definition at line 126 of file AAObject.hh.

127  {
128  int i = idx( key );
129  if ( i < 0 ) return false;
130 
131  usr.erase ( usr.begin() + i );
132  usr_names.erase( usr_names.begin() + i );
133  return true;
134  }
std::vector< std::string > usr_names
user keys
Definition: AAObject.hh:21
int idx(const std::string &key) const
Get index in user data of the item with given key.
Definition: AAObject.hh:29
std::vector< double > usr
user data
Definition: AAObject.hh:20
void AAObject::clearusr ( )
inlineinherited

Clear user data.

Definition at line 139 of file AAObject.hh.

140  {
141  usr.resize(0);
142  usr_names.resize(0);
143  }
std::vector< std::string > usr_names
user keys
Definition: AAObject.hh:21
std::vector< double > usr
user data
Definition: AAObject.hh:20
void AAObject::printusr ( std::ostream &  out = std::cout)
inlineinherited

Print user data (i.e.

list of all pairs of keys and values).

Parameters
outoutput stream

Definition at line 150 of file AAObject.hh.

151  {
152  unsigned n = std::max( usr.size(), usr_names.size() );
153 
154  for (unsigned i=0; i< n ;i++)
155  {
156  std::string name = "(unnamed)";
157  if ( i < usr_names.size() && usr_names[i] != "" ) name = usr_names[i];
158  out << i << " \t " << name << " : \t ";
159  if ( i < usr.size() ) out << usr[i] << std::endl;
160  else out << "(none)" << std::endl;
161  }
162  }
std::vector< std::string > usr_names
user keys
Definition: AAObject.hh:21
then echo n User name
Definition: JCookie.sh:45
alias put_queue eval echo n
Definition: qlib.csh:19
std::vector< double > usr
user data
Definition: AAObject.hh:20
const char* AAObject::__str__ ( ) const
inlineinherited

Get class name.

Returns
class name

Definition at line 175 of file AAObject.hh.

175 { return Class_Name(); }

Member Data Documentation

int Trk::id
inherited

track identifier

Definition at line 14 of file Trk.hh.

Vec Trk::pos
inherited

postion of the track at time t [m]

Definition at line 15 of file Trk.hh.

Vec Trk::dir
inherited

track direction

Definition at line 16 of file Trk.hh.

double Trk::t
inherited

track time [ns] (when the particle is at pos )

Definition at line 17 of file Trk.hh.

double Trk::E
inherited

Energy [GeV] (either MC truth or reconstructed)

Definition at line 18 of file Trk.hh.

double Trk::len
inherited

length, if applicable [m]

Definition at line 20 of file Trk.hh.

double Trk::lik
inherited

likelihood or lambda value (for aafit, lambda)

Definition at line 21 of file Trk.hh.

int Trk::type
inherited

MC: particle type in PDG encoding.

Definition at line 22 of file Trk.hh.

int Trk::rec_type
inherited

identifyer for the overall fitting algorithm/chain/strategy

Definition at line 23 of file Trk.hh.

std::vector<int> Trk::rec_stages
inherited

list of identifyers of succesfull fitting stages resulting in this track

Definition at line 24 of file Trk.hh.

int Trk::status
inherited

MC status code.

Definition at line 26 of file Trk.hh.

int Trk::mother_id
inherited

MC id of the parent particle.

Definition at line 27 of file Trk.hh.

std::vector<double> Trk::fitinf
inherited

place to store additional fit info, for jgandalf, see JFitParameters.hh

Definition at line 29 of file Trk.hh.

std::vector<int> Trk::hit_ids
inherited

list of associated hit-ids (corresponds to Hit::id).

Definition at line 30 of file Trk.hh.

std::vector<double> Trk::error_matrix
inherited

(NxN) error covariance matrix for fit parameters (stored as linear vector)

Definition at line 31 of file Trk.hh.

std::string Trk::comment
inherited

use as you like

Definition at line 32 of file Trk.hh.

std::vector<double> AAObject::usr
inherited

user data

Definition at line 20 of file AAObject.hh.

std::vector<std::string> AAObject::usr_names
inherited

user keys

Definition at line 21 of file AAObject.hh.

TObject* AAObject::any
inherited

Pointer to "any" user data.

Definition at line 177 of file AAObject.hh.


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