Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:56:14

0001 #ifndef Alignment_CommonAlignmentAlgorithm_TrackerAlignmentProducer_h
0002 #define Alignment_CommonAlignmentAlgorithm_TrackerAlignmentProducer_h
0003 
0004 /// \class AlignmentProducer
0005 ///
0006 /// Package     : Alignment/CommonAlignmentProducer
0007 /// Description : calls alignment algorithms
0008 ///
0009 ///  \author    : Frederic Ronga
0010 
0011 #include "Alignment/CommonAlignmentProducer/interface/AlignmentProducerBase.h"
0012 #include "FWCore/Framework/interface/ESProducerLooper.h"
0013 #include "FWCore/Framework/interface/Run.h"
0014 
0015 class AlignmentProducer : public edm::ESProducerLooper, public AlignmentProducerBase {
0016 public:
0017   /// Constructor
0018   AlignmentProducer(const edm::ParameterSet&);
0019 
0020   /// Destructor
0021   ~AlignmentProducer() override = default;
0022 
0023   /// Produce the tracker geometry
0024   virtual std::shared_ptr<TrackerGeometry> produceTracker(const TrackerDigiGeometryRecord&);
0025 
0026   /// Called at beginning of job
0027   void beginOfJob(const edm::EventSetup&) override;
0028 
0029   /// Called at end of job
0030   void endOfJob() override;
0031 
0032   /// Called at beginning of loop
0033   void startingNewLoop(unsigned int iLoop) override;
0034 
0035   /// Called at end of loop
0036   Status endOfLoop(const edm::EventSetup&, unsigned int iLoop) override;
0037 
0038   /// Called at run start and calling algorithms beginRun
0039   void beginRun(const edm::Run&, const edm::EventSetup&) override;
0040 
0041   /// Called at run end - currently reading TkFittedLasBeam if an InpuTag is given for that
0042   void endRun(const edm::Run&, const edm::EventSetup&) override;
0043 
0044   /// Called at lumi block start, calling algorithm's beginLuminosityBlock
0045   void beginLuminosityBlock(const edm::LuminosityBlock&, const edm::EventSetup&) override;
0046 
0047   /// Called at lumi block end, calling algorithm's endLuminosityBlock
0048   void endLuminosityBlock(const edm::LuminosityBlock&, const edm::EventSetup&) override;
0049 
0050   /// Called at each event
0051   Status duringLoop(const edm::Event&, const edm::EventSetup&) override;
0052 
0053 private:
0054   bool getTrajTrackAssociationCollection(const edm::Event&, edm::Handle<TrajTrackAssociationCollection>&) override;
0055   bool getBeamSpot(const edm::Event&, edm::Handle<reco::BeamSpot>&) override;
0056   bool getTkFittedLasBeamCollection(const edm::Run&, edm::Handle<TkFittedLasBeamCollection>&) override;
0057   bool getTsosVectorCollection(const edm::Run&, edm::Handle<TsosVectorCollection>&) override;
0058   bool getAliClusterValueMap(const edm::Event&, edm::Handle<AliClusterValueMap>&) override;
0059 
0060   const unsigned int maxLoops_;  /// Number of loops to loop
0061 
0062   edm::EDGetTokenT<TrajTrackAssociationCollection> trajTrackAssociationCollectionToken_;
0063   edm::EDGetTokenT<reco::BeamSpot> bsToken_;
0064   edm::EDGetTokenT<TkFittedLasBeamCollection> tkFittedLasBeamCollectionToken_;
0065   edm::EDGetTokenT<TsosVectorCollection> tsosVectorCollectionToken_;
0066   edm::EDGetTokenT<AliClusterValueMap> aliClusterValueMapToken_;
0067 };
0068 
0069 //------------------------------------------------------------------------------
0070 inline bool AlignmentProducer::getTrajTrackAssociationCollection(const edm::Event& event,
0071                                                                  edm::Handle<TrajTrackAssociationCollection>& result) {
0072   return event.getByToken(trajTrackAssociationCollectionToken_, result);
0073 }
0074 
0075 //------------------------------------------------------------------------------
0076 inline bool AlignmentProducer::getBeamSpot(const edm::Event& event, edm::Handle<reco::BeamSpot>& result) {
0077   return event.getByToken(bsToken_, result);
0078 }
0079 
0080 //------------------------------------------------------------------------------
0081 inline bool AlignmentProducer::getTkFittedLasBeamCollection(const edm::Run& run,
0082                                                             edm::Handle<TkFittedLasBeamCollection>& result) {
0083   return run.getByToken(tkFittedLasBeamCollectionToken_, result);
0084 }
0085 
0086 //------------------------------------------------------------------------------
0087 inline bool AlignmentProducer::getTsosVectorCollection(const edm::Run& run, edm::Handle<TsosVectorCollection>& result) {
0088   return run.getByToken(tsosVectorCollectionToken_, result);
0089 }
0090 
0091 //------------------------------------------------------------------------------
0092 inline bool AlignmentProducer::getAliClusterValueMap(const edm::Event& event, edm::Handle<AliClusterValueMap>& result) {
0093   return event.getByToken(aliClusterValueMapToken_, result);
0094 }
0095 
0096 #endif