Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 10:01:31

0001 #ifndef RecoMuon_TrackFinder_StandAloneTrajectoryBuilder_H
0002 #define RecoMuon_TrackFinder_StandAloneTrajectoryBuilder_H
0003 
0004 /** \class StandAloneTrajectoryBuilder
0005  *  Concrete class for the STA Muon reco 
0006  *
0007  *  \author R. Bellan - INFN Torino <riccardo.bellan@cern.ch>
0008  */
0009 
0010 #include "RecoMuon/TrackingTools/interface/MuonTrajectoryBuilder.h"
0011 
0012 #include "RecoMuon/TrackingTools/interface/RecoMuonEnumerators.h"
0013 #include "FWCore/Framework/interface/ConsumesCollector.h"
0014 
0015 class TrajectorySeed;
0016 class StandAloneMuonFilter;
0017 class StandAloneMuonBackwardFilter;
0018 class StandAloneMuonRefitter;
0019 class MuonServiceProxy;
0020 class SeedTransformer;
0021 
0022 namespace edm {
0023   class ParameterSet;
0024 }
0025 
0026 class StandAloneMuonTrajectoryBuilder : public MuonTrajectoryBuilder {
0027 public:
0028   typedef std::pair<const DetLayer*, TrajectoryStateOnSurface> DetLayerWithState;
0029 
0030 public:
0031   /// Constructor with Parameter set and MuonServiceProxy
0032   StandAloneMuonTrajectoryBuilder(const edm::ParameterSet&, const MuonServiceProxy*, edm::ConsumesCollector& iC);
0033 
0034   /// Destructor
0035   ~StandAloneMuonTrajectoryBuilder() override;
0036 
0037   // Returns a vector of the reconstructed trajectories compatible with
0038   // the given seed.
0039   TrajectoryContainer trajectories(const TrajectorySeed&) override;
0040 
0041   /// dummy implementation, unused in this class
0042   CandidateContainer trajectories(const TrackCand&) override { return CandidateContainer(); }
0043 
0044   /// pre-filter
0045   StandAloneMuonFilter* filter() const { return theFilter.get(); }
0046 
0047   /// actual filter
0048   StandAloneMuonFilter* bwfilter() const { return theBWFilter.get(); }
0049 
0050   /// refitter of the hits container
0051   StandAloneMuonRefitter* refitter() const { return theRefitter.get(); }
0052 
0053   /// Pass the Event to the algo at each event
0054   void setEvent(const edm::Event& event) override;
0055 
0056 protected:
0057 private:
0058   DetLayerWithState propagateTheSeedTSOS(TrajectoryStateOnSurface& aTSOS, DetId& aDetId);
0059 
0060 private:
0061   /// Navigation type
0062   /// "Direct","Standard"
0063   std::string theNavigationType;
0064 
0065   recoMuon::SeedPosition theSeedPosition;
0066 
0067   /// Propagator for the seed extrapolation
0068   std::string theSeedPropagatorName;
0069 
0070   std::unique_ptr<StandAloneMuonFilter> theFilter;
0071   std::unique_ptr<StandAloneMuonFilter> theBWFilter;
0072   // FIXME
0073   //  StandAloneMuonBackwardFilter* theBWFilter;
0074   std::unique_ptr<StandAloneMuonRefitter> theRefitter;
0075   std::unique_ptr<SeedTransformer> theSeedTransformer;
0076 
0077   bool doBackwardFilter;
0078   bool doRefit;
0079   bool doSeedRefit;
0080   std::string theBWSeedType;
0081 
0082   const MuonServiceProxy* theService;
0083 };
0084 #endif