Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef GEMRecHit_GEMCSCSegAlgoRR_h
0002 #define GEMRecHit_GEMCSCSegAlgoRR_h
0003 
0004 /**

0005  * \class GEMCSCSegAlgoRR

0006  *

0007  * This algorithm is very basic, there is no attempt to deal with ambiguities, such as noise etc.

0008  * The GEMCSC track segment is built starting from a CSC segment and trying to match GEM rechits.

0009  * The GEM rechits are searched inside a conigurable (eta,phi) window and associated to the segment.

0010  * This collection of GEM rechits and CSC semgent is called the GEMCSC Ensemble. <BR>

0011  *

0012  *  \authors Raffaella Radogna 

0013  *

0014  */
0015 
0016 #include <RecoLocalMuon/GEMCSCSegment/plugins/GEMCSCSegmentAlgorithm.h>
0017 #include <DataFormats/GEMRecHit/interface/GEMRecHit.h>
0018 #include <DataFormats/CSCRecHit/interface/CSCSegment.h>
0019 
0020 #include <deque>
0021 #include <vector>
0022 
0023 class GEMCSCSegFit;
0024 
0025 class GEMCSCSegAlgoRR : public GEMCSCSegmentAlgorithm {
0026 public:
0027   /// Constructor

0028   explicit GEMCSCSegAlgoRR(const edm::ParameterSet& ps);
0029 
0030   /// Destructor

0031   ~GEMCSCSegAlgoRR() override;
0032 
0033   /**

0034    * Build segments for all desired groups of hits

0035    */
0036   std::vector<GEMCSCSegment> run(const std::map<uint32_t, const CSCLayer*>& csclayermap,
0037                                  const std::map<uint32_t, const GEMEtaPartition*>& gemrollmap,
0038                                  const std::vector<const CSCSegment*>& cscsegments,
0039                                  const std::vector<const GEMRecHit*>& gemrechits) override;
0040 
0041 private:
0042   /// Utility functions

0043   /**

0044    * Search for GEMHits inside a Box around the position extrapolated from the CSC segment.

0045    */
0046   std::vector<const TrackingRecHit*> chainHitsToSegm(const CSCSegment* cscsegment,
0047                                                      const std::vector<const GEMRecHit*>& gemrechits);
0048 
0049   /**

0050    * Build the GEMCSCSegment.

0051    */
0052   std::vector<GEMCSCSegment> buildSegments(const CSCSegment* cscsegment,
0053                                            const std::vector<const TrackingRecHit*>& rechits);
0054 
0055   /// Configuration parameters

0056   bool debug;
0057   unsigned int minHitsPerSegment;
0058   bool preClustering;
0059   double dXclusBoxMax;
0060   double dYclusBoxMax;
0061   bool preClustering_useChaining;
0062   double dPhiChainBoxMax;
0063   double dThetaChainBoxMax;
0064   double dRChainBoxMax;
0065   int maxRecHitsInCluster;
0066 
0067   /// Member variables

0068   const std::string myName;  // name of the algorithm, here: GEMCSCSegAlgoRR

0069 
0070   std::map<uint32_t, const CSCLayer*> theCSCLayers_;
0071   std::map<uint32_t, const GEMEtaPartition*> theGEMEtaParts_;
0072   GEMCSCSegFit* sfit_;
0073 };
0074 
0075 #endif