00001 #ifndef _VZero_h_ 00002 #define _VZero_h_ 00003 00004 #include "DataFormats/TrackReco/interface/Track.h" 00005 #include "DataFormats/VZero/interface/VZeroFwd.h" 00006 #include "DataFormats/VertexReco/interface/Vertex.h" 00007 #include "DataFormats/Math/interface/Point3D.h" 00008 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00009 00010 #include <utility> 00011 00012 namespace reco { 00013 00014 class VZeroData 00015 { 00016 public: 00017 float dca, impactMother, armenterosPt,armenterosAlpha; 00018 math::GlobalPoint crossingPoint; 00019 std::pair<GlobalVector,GlobalVector> momenta; 00020 }; 00021 00022 class VZero 00023 { 00024 public: 00025 // default constructor 00026 VZero() { } 00027 00028 // constructor from parameters 00029 VZero(Vertex vertex, VZeroData data); 00030 00031 // decay/conversion vertex 00032 Vertex vertex() const { return vertex_; } 00033 00034 // position of vertex 00035 Vertex::Point crossingPoint() const { return vertex_.position(); } 00036 00037 // reference to positive daughter 00038 TrackRef positiveDaughter() const 00039 { return (*(vertex_.tracks_begin() )).castTo<reco::TrackRef>(); } 00040 00041 // reference to negative daughter 00042 TrackRef negativeDaughter() const 00043 { return (*(vertex_.tracks_begin()+1)).castTo<reco::TrackRef>(); } 00044 00045 // distance of closest approach 00046 float dca() const { return data_.dca; } 00047 00048 // impact parameter of the mother particle 00049 float impactMother() const { return data_.impactMother; } 00050 00051 // Armenteros variables 00052 float armenterosPt() const { return data_.armenterosPt; } 00053 float armenterosAlpha() const { return data_.armenterosAlpha; } 00054 00055 // Momentum 00056 std::pair<GlobalVector,GlobalVector> momenta() const { return data_.momenta; } 00057 00058 private: 00059 Vertex vertex_; 00060 VZeroData data_; 00061 }; 00062 } 00063 00064 #endif