CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/RecoVertex/V0Producer/interface/V0Fitter.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    V0Producer
00004 // Class:      V0Fitter
00005 // 
00013 //
00014 // Original Author:  Brian Drell
00015 //         Created:  Fri May 18 22:57:40 CEST 2007
00016 // $Id: V0Fitter.h,v 1.24 2010/08/05 22:06:39 wmtan Exp $
00017 //
00018 //
00019 
00020 #ifndef RECOVERTEX__V0_FITTER_H
00021 #define RECOVERTEX__V0_FITTER_H
00022 
00023 #include "FWCore/Framework/interface/Event.h"
00024 #include "FWCore/Framework/interface/ESHandle.h"
00025 #include "FWCore/Utilities/interface/InputTag.h"
00026 
00027 #include "DataFormats/Common/interface/Ref.h"
00028 
00029 #include "DataFormats/VertexReco/interface/Vertex.h"
00030 #include "DataFormats/TrackReco/interface/Track.h"
00031 #include "RecoVertex/VertexPrimitives/interface/TransientVertex.h"
00032 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00033 #include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h"
00034 #include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h"
00035 
00036 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00037 #include "MagneticField/VolumeBasedEngine/interface/VolumeBasedMagneticField.h"
00038 
00039 #include "DataFormats/Candidate/interface/VertexCompositeCandidate.h"
00040 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h"
00041 
00042 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00043 
00044 #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h"
00045 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h"
00046 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00047 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00048 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00049 #include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h"
00050 
00051 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
00052 
00053 #include <string>
00054 #include <fstream>
00055 
00056 
00057 class V0Fitter {
00058  public:
00059   V0Fitter(const edm::ParameterSet& theParams,
00060            const edm::Event& iEvent, const edm::EventSetup& iSetup);
00061   ~V0Fitter();
00062 
00063   // Switching to L. Lista's reco::Candidate infrastructure for V0 storage
00064   const reco::VertexCompositeCandidateCollection& getKshorts() const;
00065   const reco::VertexCompositeCandidateCollection& getLambdas() const;
00066 
00067  private:
00068   // STL vector of VertexCompositeCandidate that will be filled with VertexCompositeCandidates by fitAll()
00069   reco::VertexCompositeCandidateCollection theKshorts;
00070   reco::VertexCompositeCandidateCollection theLambdas;
00071 
00072   // Tracker geometry for discerning hit positions
00073   const TrackerGeometry* trackerGeom;
00074 
00075   const MagneticField* magField;
00076 
00077   edm::InputTag recoAlg;
00078   bool useRefTrax;
00079   bool storeRefTrax;
00080   bool doKshorts;
00081   bool doLambdas;
00082 
00083   /*bool doPostFitCuts;
00084     bool doTkQualCuts;*/
00085 
00086   // Cuts
00087   double chi2Cut;
00088   double tkChi2Cut;
00089   int tkNhitsCut;
00090   double rVtxCut;
00091   double vtxSigCut;
00092   double vtxSigCut3D;
00093   double collinCut;
00094   double kShortMassCut;
00095   double lambdaMassCut;
00096   double impactParameterSigCut;
00097   double mPiPiCut;
00098   double tkDCACut;
00099   double innerHitPosCut;
00100 
00101   std::vector<reco::TrackBase::TrackQuality> qualities;
00102 
00103   edm::InputTag vtxFitter;
00104 
00105   // Helper method that does the actual fitting using the KalmanVertexFitter
00106   void fitAll(const edm::Event& iEvent, const edm::EventSetup& iSetup);
00107   double findV0MassError(const GlobalPoint &vtxPos, std::vector<reco::TransientTrack> dauTracks);
00108 
00109   // Applies cuts to the VertexCompositeCandidates after they are fitted/created.
00110   //void applyPostFitCuts();
00111 
00112   // Stuff for debug file output.
00113   std::ofstream mPiPiMassOut;
00114 
00115   inline void initFileOutput() {
00116     mPiPiMassOut.open("mPiPi.txt", std::ios::app);
00117   }
00118   inline void cleanupFileOutput() {
00119     mPiPiMassOut.close();
00120   }
00121 };
00122 
00123 #endif