Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:15:50

0001 #ifndef HLTDisplacedtktktkVtxProducer_h
0002 #define HLTDisplacedtktktkVtxProducer_h
0003 
0004 /** \class HLTDisplacedtktktkVtxProducer_h
0005  *
0006  *  
0007  *  produces kalman vertices from di-track
0008  *  takes track candidates as input
0009  *  configurable cuts on pt, eta, pair pt, inv. mass
0010  *  the two tracks have to be both tracks or both muons
0011  *
0012  *  \author Alexander.Schmidt@cern.ch
0013  *  \date   3. Feb. 2011
0014  *  \adapted for D Gian.Michele.Innocenti@cern.ch
0015  *  \date   5. Aug. 2015
0016  *
0017  */
0018 
0019 #include "FWCore/Framework/interface/stream/EDProducer.h"
0020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0021 #include "FWCore/Framework/interface/Event.h"
0022 #include "FWCore/Framework/interface/EventSetup.h"
0023 #include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h"
0024 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0025 #include "DataFormats/HLTReco/interface/TriggerFilterObjectWithRefs.h"
0026 #include "DataFormats/HLTReco/interface/TriggerRefsCollections.h"
0027 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
0028 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
0029 #include <vector>
0030 
0031 namespace edm {
0032   class ConfigurationDescriptions;
0033 }
0034 
0035 class HLTDisplacedtktktkVtxProducer : public edm::stream::EDProducer<> {
0036 public:
0037   explicit HLTDisplacedtktktkVtxProducer(const edm::ParameterSet&);
0038   ~HLTDisplacedtktktkVtxProducer() override;
0039   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0040   void produce(edm::Event&, const edm::EventSetup&) override;
0041 
0042 private:
0043   bool checkPreviousCand(const reco::TrackRef& trackref, const std::vector<reco::RecoChargedCandidateRef>& ref2) const;
0044 
0045   const edm::ESGetToken<TransientTrackBuilder, TransientTrackRecord> transientTrackRecordToken_;
0046   const edm::InputTag srcTag_;
0047   const edm::EDGetTokenT<reco::RecoChargedCandidateCollection> srcToken_;
0048   const edm::InputTag previousCandTag_;
0049   const edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> previousCandToken_;
0050   const double maxEta_;
0051   const double minPtTk1_;
0052   const double minPtTk2_;
0053   const double minPtTk3_;
0054   const double minPtRes_;
0055   const double minPtTri_;
0056   const double minInvMassRes_;
0057   const double maxInvMassRes_;
0058   const double minInvMass_;
0059   const double maxInvMass_;
0060   const double massParticle1_;
0061   const double massParticle2_;
0062   const double massParticle3_;
0063   const int chargeOpt_;
0064   const int resOpt_;
0065   const int triggerTypeDaughters_;
0066 
0067   double firstTrackMass;
0068   double secondTrackMass;
0069   double thirdTrackMass;
0070   double firstTrackPt;
0071   double secondTrackPt;
0072   double thirdTrackPt;
0073   double firstTrackMass2;
0074   double secondTrackMass2;
0075   double thirdTrackMass2;
0076 };
0077 
0078 #endif