Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:18:41

0001 #ifndef Muon_HLTMuonPointingFilter_h
0002 #define Muon_HLTMuonPointingFilter_h
0003 
0004 /** \class HLTMuonPointingFilter
0005  *
0006  * EDFilter to select muons that points to a cylinder of configurable radius
0007  * and lenght.
0008  *
0009  * \author Stefano Lacaprara - INFN Legnaro <stefano.lacaprara@pd.infn.it>
0010  *
0011  */
0012 
0013 /* Base Class Headers */
0014 #include "FWCore/Framework/interface/global/EDFilter.h"
0015 
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0018 
0019 /* Collaborating Class Declarations */
0020 class Propagator;
0021 #include "DataFormats/GeometrySurface/interface/Cylinder.h"
0022 #include "DataFormats/GeometrySurface/interface/Plane.h"
0023 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0024 
0025 #include "Geometry/Records/interface/GlobalTrackingGeometryRecord.h"
0026 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
0027 #include "MagneticField/Engine/interface/MagneticField.h"
0028 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
0029 #include "TrackingTools/Records/interface/TrackingComponentsRecord.h"
0030 
0031 /* C++ Headers */
0032 #include <string>
0033 #include <memory>
0034 
0035 /* ====================================================================== */
0036 
0037 /* Class HLTMuonPointingFilter Interface */
0038 
0039 class HLTMuonPointingFilter : public edm::global::EDFilter<> {
0040 public:
0041   /// Constructor
0042   HLTMuonPointingFilter(const edm::ParameterSet &);
0043 
0044   /// Destructor
0045   ~HLTMuonPointingFilter() override;
0046 
0047   /* Operations */
0048   bool filter(edm::StreamID, edm::Event &, edm::EventSetup const &) const override;
0049 
0050   static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0051 
0052 private:
0053   const edm::EDGetTokenT<reco::TrackCollection> theSTAMuonToken;
0054 
0055   const std::string
0056       thePropagatorName;  // name of propagator to be used  const edm::ESGetToken<Propagator, TrackingComponentsRecord> thePropagatorToken;
0057   const edm::ESGetToken<Propagator, TrackingComponentsRecord> thePropagatorToken;
0058   const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> theMGFieldToken;
0059   const edm::ESGetToken<GlobalTrackingGeometry, GlobalTrackingGeometryRecord> theTrackingGeometryToken;
0060 
0061   const double theRadius;          // radius of cylinder
0062   const double theMaxZ;            // half length of cylinder
0063   const unsigned int thePixHits;   // number of pixel hits
0064   const unsigned int theTkLayers;  // number of tracker layers with measurements
0065   const unsigned int theMuonHits;  // number of valid muon hits
0066 
0067   const Cylinder::CylinderPointer theCyl;
0068   const Plane::PlanePointer thePosPlane;
0069   const Plane::PlanePointer theNegPlane;
0070 };
0071 #endif  // Muon_HLTMuonPointingFilter_h