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 
51  private:
52 
54  void fillPulseHeights( const CSCStripDigiCollection::Range& rstripd );
55 
57  void findMaxima(const CSCDetId& id);
58  // What we call a peak
59  bool isPeakOK(int iStrip, float heightCluster);
60 
62  float makeCluster( int centerStrip );
63 
65  CSCStripHitData makeStripData( int centerStrip, int offset );
66 
68  bool isNearDeadStrip(const CSCDetId& id, int centralStrip);
69 
71  bool isDeadStrip(const CSCDetId& id, int centralStrip);
72 
74  float findHitOnStripPosition( const std::vector<CSCStripHitData>& data, const int& centerStrip );
75 
76 
77 // MEMBER DATA
78 
79  // Hold pointers to current layer, conditions data
81  const CSCLayer * layer_;
83  // Number of strips in layer
84  unsigned nstrips_;
85  // gain correction weights and crosstalks read in from conditions database.
86  float gainWeight[80];
87 
88  // The specific pedestal calculator
90 
91  // The cuts for forming the strip hits are described in the config file
92  bool useCalib;
93  static const int theClusterSize = 3;
96 
97 
98  // working buffer for sca pulseheights
100 
101  std::vector<int> theMaxima;
102  std::vector<int> theConsecutiveStrips;//... with charge for a given maximum
103  std::vector<int> theClosestMaximum; // this is number of strips to the closest other maximum
104 
105  // Variables entering the CSCStripHit construction:
106  int tmax_cluster; // Peaking time for strip hit, in time bin units
108  std::vector<float> strips_adc;
109  std::vector<float> strips_adcRaw;
110  std::vector<int> theStrips;
111 
112 };
113 
114 #endif
115 
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)