40 const vector< math::XYZPoint >& cornersxyz) :
48 posrep_( position.Rho(), position.
Eta(), position.
Phi() ),
50 cornersxyz_(cornersxyz)
64 double posx,
double posy,
double posz,
65 double axisx,
double axisy,
double axisz) :
73 position_(posx, posy, posz),
74 posrep_( position_.Rho(),
77 axisxyz_(axisx, axisy, axisz) {
99 energy_(other.energy_),
100 rescale_(other.rescale_),
101 energyUp_(other.energyUp_),
103 position_(other.position_),
104 posrep_(other.posrep_),
105 axisxyz_(other.axisxyz_),
106 cornersxyz_(other.cornersxyz_),
107 cornersrep_(other.cornersrep_),
109 neighbours4_(other.neighbours4_),
110 neighbours8_(other.neighbours8_),
111 neighboursIds4_(other.neighboursIds4_),
112 neighboursIds8_(other.neighboursIds8_)
243 cornersxyz_[i].
Eta(),
244 cornersxyz_[i].
Phi() );
272 for (
unsigned ic=0; ic<
cornersrep_.size(); ++ic ) {
276 if(phi>maxphi) maxphi=
phi;
277 if(phi<minphi) minphi=
phi;
278 if(eta>maxeta) maxeta=
eta;
279 if(eta<mineta) mineta=
eta;
282 deta = maxeta - mineta;
283 dphi = maxphi - minphi;
296 out<<
"hit id:"<<hit.
detId()
300 <<
" rep:"<<posxyz.Rho()<<
","<<posxyz.Eta()<<
","<<posxyz.Phi()<<
"| N:";
void setSECorner(double posx, double posy, double posz)
void add4Neighbour(unsigned index)
static const char layer_[]
std::vector< unsigned > neighbours4_
indices to existing neighbours (1 common side)
REPPoint posrep_
rechit cell centre: rho, eta, phi (transient)
ROOT::Math::PositionVector3D< ROOT::Math::CylindricalEta3D< Double32_t > > REPPoint
std::vector< math::XYZPoint > cornersxyz_
rechit cell corners
void add8Neighbour(unsigned index)
void setNECorner(double posx, double posy, double posz)
unsigned detId() const
rechit detId
static const unsigned nNeighbours_
number of neighbours
static int position[TOTALCHAMBERS][3]
PFLayer::Layer layer() const
rechit layer
virtual ~PFRecHit()
destructor
void setSWCorner(double posx, double posy, double posz)
std::ostream & operator<<(std::ostream &, BeamSpot beam)
Particle flow rechit (rechit + geometry and topology information). See clustering algorithm in PFClus...
layer definition for PFRecHit and PFCluster
void size(double &deta, double &dphi) const
std::vector< unsigned > neighbours8_
indices to existing neighbours (1 common side or diagonal)
void setNWCorner(double posx, double posy, double posz)
search for pointers to neighbours, using neighbours' DetId.
REPPointVector cornersrep_
const math::XYZPoint & position() const
is seed ?
void calculatePositionREP()
calculates rho eta phi position once and for all
math::XYZPoint position_
is this a seed ? (-1:unknown, 0:no, 1 yes) (transient)
XYZVectorD XYZVector
spatial vector with cartesian internal representation
bool isNeighbour4(unsigned id) const
XYZPointD XYZPoint
point in space with cartesian internal representation
double energy() const
rechit energy
bool isNeighbour8(unsigned id) const
static const unsigned nCorners_
number of corners
double time() const
timing for cleaned hits
void setCorner(unsigned i, double posx, double posy, double posz)
set position of one of the corners
PFRecHit()
default constructor. Sets energy and position to zero
const REPPoint & positionREP() const
rechit cell centre rho, eta, phi. call calculatePositionREP before !