Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:58

0001 #ifndef CSCRecHitD_CSCHitFromWireOnly_h
0002 #define CSCRecHitD_CSCHitFromWireOnly_h
0003 
0004 /**
0005  * \class CSCHitFromWireOnly
0006  *
0007  * Search for hits within the wire groups.  For each of these hits, try forming clusters
0008  * by looking at adjacent wiregroup.  Form a wire Hit out of these clusters by finding 
0009  * the center-of-mass position of the hit in terms of the wire #.
0010  * The DetId, wire hit position, and peaking time are stored in a CSCWireHit collection.
0011  *
0012  *
0013  * To keep wire hits only so they can be used in segment building.
0014  * Only the DetId and wiregroup # are stored in a CSCWireHit collection
0015  *
0016  * \author Dominique Fortin - UCR
0017  * \author Stoyan Stoynev - Northwestern
0018  *
0019  */
0020 
0021 #include <RecoLocalMuon/CSCRecHitD/src/CSCWireHit.h>
0022 
0023 #include <DataFormats/CSCDigi/interface/CSCWireDigiCollection.h>
0024 
0025 #include <RecoLocalMuon/CSCRecHitD/src/CSCRecoConditions.h>
0026 
0027 #include <FWCore/Framework/interface/Frameworkfwd.h>
0028 #include <FWCore/ParameterSet/interface/ParameterSet.h>
0029 
0030 #include <vector>
0031 
0032 class CSCLayer;
0033 class CSCLayerGeometry;
0034 class CSCDetId;
0035 
0036 class CSCHitFromWireOnly {
0037 public:
0038   typedef std::vector<int> ChannelContainer;
0039 
0040   explicit CSCHitFromWireOnly(const edm::ParameterSet& ps);
0041 
0042   ~CSCHitFromWireOnly();
0043 
0044   std::vector<CSCWireHit> runWire(const CSCDetId& id,
0045                                   const CSCLayer* layer,
0046                                   const CSCWireDigiCollection::Range& rwired);
0047   void setConditions(const CSCRecoConditions* reco) { recoConditions_ = reco; }
0048   void makeWireCluster(const CSCWireDigi& digi);
0049   bool addToCluster(const CSCWireDigi& digi);
0050   float findWireHitPosition();
0051 
0052   CSCDetId id_;
0053   const CSCLayer* layer_;
0054   const CSCLayerGeometry* layergeom_;
0055 
0056 private:
0057   bool isDeadWG(const CSCDetId& id, int WG);
0058 
0059   std::vector<CSCWireDigi> wire_cluster;
0060   std::vector<int> wire_in_cluster;
0061   std::vector<float> wire_spacing;
0062   int theTime;
0063   int theLastChannel;
0064   std::vector<int> wire_in_clusterAndBX;  /// To fill BX + wiregroup in CSCWireHit
0065 
0066   int deltaT;
0067   bool useReducedWireTime;
0068   int wireTimeWindow_low;
0069   int wireTimeWindow_high;
0070   //int clusterSize;
0071 
0072   /// Hold pointer to current conditions data
0073   const CSCRecoConditions* recoConditions_;
0074 };
0075 
0076 #endif