Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef RecoLocalMuon_GEMRecHit_GEMRecHitBaseAlgo_H
0002 #define RecoLocalMuon_GEMRecHit_GEMRecHitBaseAlgo_H
0003 
0004 /** \class GEMRecHitBaseAlgo
0005  *  Abstract algorithmic class to compute Rec Hit
0006  *  form a GEM 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/GEMDigi/interface/GEMDigiCollection.h"
0015 #include "DataFormats/GEMRecHit/interface/GEMRecHit.h"
0016 #include "DataFormats/Common/interface/OwnVector.h"
0017 
0018 #include "RecoLocalMuon/GEMRecHit/interface/GEMEtaPartitionMask.h"
0019 #include "RecoLocalMuon/GEMRecHit/interface/GEMMaskReClusterizer.h"
0020 
0021 class GEMCluster;
0022 class GEMEtaPartition;
0023 class GEMDetId;
0024 
0025 namespace edm {
0026   class ParameterSet;
0027   class EventSetup;
0028 }  // namespace edm
0029 
0030 class GEMRecHitBaseAlgo {
0031 public:
0032   /// Constructor
0033   GEMRecHitBaseAlgo(const edm::ParameterSet& config);
0034 
0035   /// Destructor
0036   virtual ~GEMRecHitBaseAlgo();
0037 
0038   /// Pass the Event Setup to the algo at each event
0039   virtual void setES(const edm::EventSetup& setup) = 0;
0040 
0041   /// Build all hits in the range associated to the gemId, at the 1st step.
0042   virtual edm::OwnVector<GEMRecHit> reconstruct(const GEMEtaPartition& roll,
0043                                                 const GEMDetId& gemId,
0044                                                 const GEMDigiCollection::Range& digiRange,
0045                                                 const EtaPartitionMask& mask);
0046 
0047   /// standard local recHit computation
0048   virtual bool compute(const GEMEtaPartition& roll,
0049                        const GEMCluster& cl,
0050                        LocalPoint& Point,
0051                        LocalError& error) const = 0;
0052 
0053   /// local recHit computation accounting for track direction and
0054   /// absolute position
0055   virtual bool compute(const GEMEtaPartition& roll,
0056                        const GEMCluster& cl,
0057                        const float& angle,
0058                        const GlobalPoint& globPos,
0059                        LocalPoint& Point,
0060                        LocalError& error) const = 0;
0061 };
0062 #endif