CMS 3D CMS Logo

CSCHitFromStripOnly.h
Go to the documentation of this file.
1 #ifndef CSCRecHitD_CSCHitFromStripOnly_h
2 #define CSCRecHitD_CSCHitFromStripOnly_h
3 
16 
21 
23 
26 
27 #include <vector>
28 #include <array>
29 
30 class CSCLayer;
31 class CSCStripDigi;
32 class CSCPedestalChoice;
33 
35 {
36 
37  public:
38 
39  typedef std::array<CSCStripData,100> PulseHeightMap;
40 
41  explicit CSCHitFromStripOnly( const edm::ParameterSet& ps );
42 
44 
45  std::vector<CSCStripHit> runStrip( const CSCDetId& id, const CSCLayer* layer, const CSCStripDigiCollection::Range& rstripd );
46 
49  }
50 
51  bool ganged() { return ganged_;}
52  void setGanged( bool ig ) { ganged_ = ig;}
53 
54  private:
55 
57  void fillPulseHeights( const CSCStripDigiCollection::Range& rstripd );
58 
60  void findMaxima(const CSCDetId& id);
61  // What we call a peak
62  bool isPeakOK(int iStrip, float heightCluster);
63 
65  float makeCluster( int centerStrip );
66 
68  CSCStripHitData makeStripData( int centerStrip, int offset );
69 
71  bool isNearDeadStrip(const CSCDetId& id, int centralStrip, int nstrips);
72 
74  bool isDeadStrip(const CSCDetId& id, int centralStrip, int nstrips);
75 
77  float findHitOnStripPosition( const std::vector<CSCStripHitData>& data, const int& centerStrip );
78 
79 
80 // MEMBER DATA
81 
82  // Hold pointers to current layer, conditions data
84  const CSCLayer * layer_;
86  // Number of strips in layer
87  unsigned nstrips_;
88  // gain correction weights and crosstalks read in from conditions database.
89  float gainWeight[80];
90 
91  // The specific pedestal calculator
93 
94  // The cuts for forming the strip hits are described in the config file
95  bool useCalib;
96  static const int theClusterSize = 3;
99 
100 
101  // working buffer for sca pulseheights
102  PulseHeightMap thePulseHeightMap;
103 
104  std::vector<int> theMaxima;
105  std::vector<int> theConsecutiveStrips;//... with charge for a given maximum
106  std::vector<int> theClosestMaximum; // this is number of strips to the closest other maximum
107 
108  // Variables entering the CSCStripHit construction:
109  int tmax_cluster; // Peaking time for strip hit, in time bin units
111  std::vector<float> strips_adc;
112  std::vector<float> strips_adcRaw;
113  std::vector<int> theStrips;
114 
115  bool ganged_; // only True if ME1/1A AND it is ganged
116 
117 };
118 
119 #endif
120 
const CSCLayer * layer_
CSCPedestalChoice * calcped_
bool isNearDeadStrip(const CSCDetId &id, int centralStrip, int nstrips)
Is either neighbour &#39;bad&#39;?
void findMaxima(const CSCDetId &id)
Find local maxima.
std::vector< int > theConsecutiveStrips
bool isDeadStrip(const CSCDetId &id, int centralStrip, int nstrips)
Is the strip &#39;bad&#39;?
std::vector< CSCStripHit > runStrip(const CSCDetId &id, const CSCLayer *layer, const CSCStripDigiCollection::Range &rstripd)
std::vector< int > theStrips
std::vector< int > theClosestMaximum
float findHitOnStripPosition(const std::vector< CSCStripHitData > &data, const int &centerStrip)
Find position of hit in strip cluster in terms of strip #.
CSCHitFromStripOnly(const edm::ParameterSet &ps)
static const int theClusterSize
PulseHeightMap thePulseHeightMap
const CSCRecoConditions * recoConditions_
std::array< CSCStripData, 100 > PulseHeightMap
float makeCluster(int centerStrip)
Make clusters using local maxima.
std::vector< float > strips_adcRaw
std::vector< int > theMaxima
bool isPeakOK(int iStrip, float heightCluster)
void setConditions(const CSCRecoConditions *reco)
fixed size matrix
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
std::vector< float > strips_adc
std::pair< const_iterator, const_iterator > Range
void fillPulseHeights(const CSCStripDigiCollection::Range &rstripd)
Store SCA pulseheight information from strips in digis of one layer.
CSCStripHitData makeStripData(int centerStrip, int offset)