24 for ( std::vector<math::RhoEtaPhiVector>::const_iterator vec = inputVectors.begin(); vec != inputVectors.end(); ++vec ){
33 for(std::vector<math::RThetaPhiVector>::const_iterator vec = inputVectors.begin(); vec != inputVectors.end(); ++vec ){
45 double phi = 0, eIn =-1., eOut=-1.;
46 for(
unsigned int i=0;
i<numberOfSteps; ++
i){
53 if( eOut<0. || sum<eOut ) eOut=sum;
54 if( eIn <0. || sum>eIn ) eIn =sum;
56 return (eIn-eOut)/eIn;
69 for(
unsigned int i=0;
i<numberOfSteps; ++
i){
76 if( circularity<0 ||
tmp<circularity ){
87 TMatrixDSym momentumTensor(3);
88 momentumTensor.Zero();
91 return momentumTensor;
98 double pR = ( r == 2. ) ? p2 : TMath::Power(p2, 0.5*r);
100 double pRminus2 = ( r == 2. ) ? 1. : TMath::Power(p2, 0.5*r - 1.);
118 return (1./norm)*momentumTensor;
126 TVectorD eigenValues(3);
128 if( myTensor.IsSymmetric() ){
129 if( myTensor.NonZeros() != 0 ) myTensor.EigenVectors(eigenValues);
147 return 1.5*(eigenValues(1) + eigenValues(2));
156 return 1.5*eigenValues(2);
166 return 3.*(eigenValues(0)*eigenValues(1) + eigenValues(0)*eigenValues(2) + eigenValues(1)*eigenValues(2));
176 return 27.*eigenValues(0)*eigenValues(1)*eigenValues(2);
TVectorD compEigenValues(double=2.) const
double C(double=2.) const
double circularity(const unsigned int &numberOfSteps=1000) const
const_iterator begin() const
EventShapeVariables(const edm::View< reco::Candidate > &inputVectors)
constructor from reco::Candidates
double sphericity(double=2.) const
std::vector< math::XYZVector > inputVectors_
cashing of input vectors
TMatrixDSym compMomentumTensor(double=2.) const
helper function to fill the 3 dimensional momentum tensor from the inputVecotrs where needed ...
double D(double=2.) const
XYZVectorD XYZVector
spatial vector with cartesian internal representation
double isotropy(const unsigned int &numberOfSteps=1000) const
std::vector< std::vector< double > > tmp
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
const_iterator end() const
double aplanarity(double=2.) const