CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_10_patch1/src/PhysicsTools/CandUtils/interface/EventShapeVariables.h

Go to the documentation of this file.
00001 #ifndef EventShapeVariables_h
00002 #define EventShapeVariables_h
00003 
00023 #include "DataFormats/Math/interface/Vector3D.h"
00024 #include "DataFormats/Candidate/interface/Candidate.h"
00025 #include "DataFormats/Candidate/interface/CandidateFwd.h"
00026 
00027 #include "TMatrixDSym.h"
00028 #include "TVectorD.h"
00029 
00030 #include <vector>
00031 
00032 class EventShapeVariables {
00033 
00034  public:
00036   explicit EventShapeVariables(const edm::View<reco::Candidate>& inputVectors);  
00038   explicit EventShapeVariables(const std::vector<math::XYZVector>& inputVectors);  
00040   explicit EventShapeVariables(const std::vector<math::RhoEtaPhiVector>& inputVectors);  
00042   explicit EventShapeVariables(const std::vector<math::RThetaPhiVector>& inputVectors);  
00044   ~EventShapeVariables(){};
00045 
00049   double isotropy(const unsigned int& numberOfSteps = 1000) const;
00050   
00053   double circularity(const unsigned int& numberOfSteps = 1000) const;
00054 
00058   double sphericity(double = 2.)  const;
00062   double aplanarity(double = 2.)  const;
00066   double C(double = 2.) const;
00070   double D(double = 2.) const;
00071   
00072  private:
00075   TMatrixDSym compMomentumTensor(double = 2.) const;
00076   TVectorD compEigenValues(double = 2.) const;
00077 
00079   std::vector<math::XYZVector> inputVectors_;
00080 };
00081 
00082 #endif
00083