CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2_patch1/src/DataFormats/VZero/interface/VZero.h

Go to the documentation of this file.
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