00001
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00027
00028 #ifndef __VECTOR_H__
00029 #define __VECTOR_H__
00030
00031 #include <vector>
00032 #include <math.h>
00033 #include "reference.h"
00034 #include "geom_2d.h"
00035 #include "defines.h"
00036
00037 namespace siscone{
00038
00049 class Cmomentum{
00050 public:
00052 Cmomentum();
00053
00055 Cmomentum(double _px, double _py, double _pz, double _E);
00056
00058 Cmomentum(double _eta, double _phi, Creference _ref);
00059
00061 ~Cmomentum();
00062
00064 inline double perp() const {return sqrt(perp2());}
00065
00067 inline double perp2() const {return px*px+py*py;}
00068
00070 inline double mass() const {return sqrt(mass2());}
00071
00073 inline double mass2() const {return perpmass2()-perp2();}
00074
00076 inline double perpmass() const {return sqrt((E-pz)*(E+pz));}
00077
00079 inline double perpmass2() const {return (E-pz)*(E+pz);}
00080
00082 inline double Et() const {return E/sqrt(1.0+pz*pz/perp2());}
00083
00085 inline double Et2() const {return E*E/(1.0+pz*pz/perp2());}
00086
00088 Cmomentum& operator = (const Cmomentum &v);
00089
00092 const Cmomentum operator + (const Cmomentum &v);
00093
00096 Cmomentum& operator += (const Cmomentum &v);
00097
00100 Cmomentum& operator -= (const Cmomentum &v);
00101
00107 void build_etaphi();
00108
00109 double px;
00110 double py;
00111 double pz;
00112 double E;
00113
00114 double eta;
00115 double phi;
00116 int parent_index;
00117 int index;
00118
00120
00122 Creference ref;
00123 };
00124
00127 bool operator < (const Cmomentum &v1, const Cmomentum &v2);
00128
00130 bool momentum_eta_less(const Cmomentum &v1, const Cmomentum &v2);
00131
00133 bool momentum_pt_less(const Cmomentum &v1, const Cmomentum &v2);
00134
00135
00137
00139
00144 inline double get_distance(double eta, double phi, Cmomentum *v){
00145 double dx, dy;
00146
00147 dx = eta - v->eta;
00148 dy = fabs(phi - v->phi);
00149 if (dy>M_PI)
00150 dy -= twopi;
00151
00152 return dx*dx+dy*dy;
00153 }
00154
00155 }
00156
00157 #endif