![]() |
![]() |
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