CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
29 class CSCLayer;
30 class CSCStripDigi;
31 class CSCPedestalChoice;
32 
34 {
35 
36  public:
37 
38  typedef std::vector<CSCStripData> PulseHeightMap;
39 
40  explicit CSCHitFromStripOnly( const edm::ParameterSet& ps );
41 
43 
44  std::vector<CSCStripHit> runStrip( const CSCDetId& id, const CSCLayer* layer, const CSCStripDigiCollection::Range& rstripd );
45 
48  }
49 
50  bool ganged() { return ganged_;}
51  void setGanged( bool ig ) { ganged_ = ig;}
52 
53  private:
54 
56  void fillPulseHeights( const CSCStripDigiCollection::Range& rstripd );
57 
59  void findMaxima(const CSCDetId& id);
60  // What we call a peak
61  bool isPeakOK(int iStrip, float heightCluster);
62 
64  float makeCluster( int centerStrip );
65 
67  CSCStripHitData makeStripData( int centerStrip, int offset );
68 
70  bool isNearDeadStrip(const CSCDetId& id, int centralStrip);
71 
73  bool isDeadStrip(const CSCDetId& id, int centralStrip);
74 
76  float findHitOnStripPosition( const std::vector<CSCStripHitData>& data, const int& centerStrip );
77 
78 
79 // MEMBER DATA
80 
81  // Hold pointers to current layer, conditions data
83  const CSCLayer * layer_;
85  // Number of strips in layer
86  unsigned nstrips_;
87  // gain correction weights and crosstalks read in from conditions database.
88  float gainWeight[80];
89 
90  // The specific pedestal calculator
92 
93  // The cuts for forming the strip hits are described in the config file
94  bool useCalib;
95  static const int theClusterSize = 3;
98 
99 
100  // working buffer for sca pulseheights
102 
103  std::vector<int> theMaxima;
104  std::vector<int> theConsecutiveStrips;//... with charge for a given maximum
105  std::vector<int> theClosestMaximum; // this is number of strips to the closest other maximum
106 
107  // Variables entering the CSCStripHit construction:
108  int tmax_cluster; // Peaking time for strip hit, in time bin units
110  std::vector<float> strips_adc;
111  std::vector<float> strips_adcRaw;
112  std::vector<int> theStrips;
113 
114  bool ganged_; // only True if ME1/1A AND it is ganged
115 
116 };
117 
118 #endif
119 
const CSCLayer * layer_
CSCPedestalChoice * calcped_
void findMaxima(const CSCDetId &id)
Find local maxima.
std::vector< int > theConsecutiveStrips
std::vector< CSCStripHit > runStrip(const CSCDetId &id, const CSCLayer *layer, const CSCStripDigiCollection::Range &rstripd)
std::vector< int > theStrips
bool isDeadStrip(const CSCDetId &id, int centralStrip)
Is the strip &#39;bad&#39;?
std::vector< int > theClosestMaximum
std::vector< CSCStripData > PulseHeightMap
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_
unsigned int offset(bool)
float makeCluster(int centerStrip)
Make clusters using local maxima.
bool isNearDeadStrip(const CSCDetId &id, int centralStrip)
Is either neighbour &#39;bad&#39;?
std::vector< float > strips_adcRaw
std::vector< int > theMaxima
bool isPeakOK(int iStrip, float heightCluster)
void setConditions(const CSCRecoConditions *reco)
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)