Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef RecoLocalMuon_RPCRecHitBaseAlgo_H
0002 #define RecoLocalMuon_RPCRecHitBaseAlgo_H
0003 
0004 /** \class RPCRecHitBaseAlgo
0005  *  Abstract algorithmic class to compute Rec Hit
0006  *  form a RPC digi
0007  *
0008  *  \author M. Maggi -- INFN Bari
0009  */
0010 
0011 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0012 #include "DataFormats/GeometrySurface/interface/LocalError.h"
0013 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0014 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h"
0015 #include "DataFormats/RPCRecHit/interface/RPCRecHit.h"
0016 #include "DataFormats/Common/interface/OwnVector.h"
0017 
0018 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0019 #include "RPCRollMask.h"
0020 
0021 class RPCCluster;
0022 class RPCRoll;
0023 class RPCDetId;
0024 
0025 namespace edm {
0026   class EventSetup;
0027 }
0028 
0029 class RPCRecHitBaseAlgo {
0030 public:
0031   /// Constructor
0032   RPCRecHitBaseAlgo(const edm::ParameterSet& config);
0033 
0034   /// Destructor
0035   virtual ~RPCRecHitBaseAlgo(){};
0036 
0037   /// Pass the Event Setup to the algo at each event
0038   virtual void setES(const edm::EventSetup& setup) = 0;
0039 
0040   /// Build all hits in the range associated to the rpcId, at the 1st step.
0041   virtual edm::OwnVector<RPCRecHit> reconstruct(const RPCRoll& roll,
0042                                                 const RPCDetId& rpcId,
0043                                                 const RPCDigiCollection::Range& digiRange,
0044                                                 const RollMask& mask);
0045 
0046   /// standard local recHit computation
0047   virtual bool compute(const RPCRoll& roll,
0048                        const RPCCluster& cl,
0049                        LocalPoint& Point,
0050                        LocalError& error,
0051                        float& time,
0052                        float& timeErr) const = 0;
0053 
0054   /// local recHit computation accounting for track direction and
0055   /// absolute position
0056   virtual bool compute(const RPCRoll& roll,
0057                        const RPCCluster& cl,
0058                        const float& angle,
0059                        const GlobalPoint& globPos,
0060                        LocalPoint& Point,
0061                        LocalError& error,
0062                        float& time,
0063                        float& timeErr) const = 0;
0064 };
0065 #endif