CMS 3D CMS Logo

DigiCollectionProfiler.h
Go to the documentation of this file.
1 #ifndef DPGAnalysis_SiStripTools_DigiCollectionProfile_H
2 #define DPGAnalysis_SiStripTools_DigiCollectionProfile_H
3 
4 #include <vector>
11 
12 class TH1F;
13 class TProfile;
14 class TH2F;
15 
16 namespace edm {
17  class ParameterSet;
18 }
19 
20 template <class T>
22 
23  public:
27 
28  void fill(edm::Handle<T> digis, const std::vector<TH1F*>&, const std::vector<TProfile*>&, const std::vector<TH2F*>&) const;
29 
30  private:
31 
32  bool m_folded;
36 
37  std::vector<DetIdSelector> m_selections;
38 
39 };
40 
41 template <class T>
43  m_folded(false), m_want1dHisto(false), m_wantProfile(false), m_want2dHisto(false), m_selections() { }
44 
45 template <class T>
47  m_folded(iConfig.getUntrackedParameter<bool>("foldedStrips",false)),
48  m_want1dHisto(iConfig.getUntrackedParameter<bool>("want1dHisto",true)),
49  m_wantProfile(iConfig.getUntrackedParameter<bool>("wantProfile",true)),
50  m_want2dHisto(iConfig.getUntrackedParameter<bool>("want2dHisto",false))
51 
52 {
53 
54  std::vector<edm::ParameterSet> selconfigs = iConfig.getParameter<std::vector<edm::ParameterSet> >("selections");
55 
56  for(std::vector<edm::ParameterSet>::const_iterator selconfig=selconfigs.begin();selconfig!=selconfigs.end();++selconfig) {
57  DetIdSelector selection(*selconfig);
58  m_selections.push_back(selection);
59  }
60 
61 }
62 
63 template <class T>
64 void DigiCollectionProfiler<T>::fill(edm::Handle<T> digis, const std::vector<TH1F*>& hist, const std::vector<TProfile*>& hprof, const std::vector<TH2F*>& hist2d) const {
65 
66 }
67 
68 
69 template <>
70 void DigiCollectionProfiler<edm::DetSetVector<SiStripDigi> >::fill(edm::Handle<edm::DetSetVector<SiStripDigi> > digis, const std::vector<TH1F*>& hist, const std::vector<TProfile*>& hprof, const std::vector<TH2F*>& hist2d) const {
71 
72  for(edm::DetSetVector<SiStripDigi>::const_iterator mod = digis->begin();mod!=digis->end();mod++) {
73 
74  for(unsigned int isel=0;isel< m_selections.size(); ++isel) {
75 
76  if(m_selections[isel].isSelected(mod->detId())) {
77  TH1F* tobefilled1d=0;
78  TProfile* tobefilledprof=0;
79  TH2F* tobefilled2d=0;
80 
81  if(m_want1dHisto) tobefilled1d = hist[isel];
82  if(m_wantProfile) tobefilledprof = hprof[isel];
83  if(m_want2dHisto) tobefilled2d = hist2d[isel];
84 
85  for(edm::DetSet<SiStripDigi>::const_iterator digi=mod->begin();digi!=mod->end();digi++) {
86 
87  if(digi->adc()>0) {
88  unsigned int strip = digi->strip();
89  if(m_folded) strip = strip%256;
90  if(tobefilled1d) tobefilled1d->Fill(strip);
91  if(tobefilledprof) tobefilledprof->Fill(strip,digi->adc());
92  if(tobefilled2d) tobefilled2d->Fill(strip,digi->adc());
93  }
94  }
95  }
96  }
97  }
98 }
99 
100 template <>
101 void DigiCollectionProfiler<edm::DetSetVector<SiStripRawDigi> >::fill(edm::Handle<edm::DetSetVector<SiStripRawDigi> > digis, const std::vector<TH1F*>& hist, const std::vector<TProfile*>& hprof, const std::vector<TH2F*>& hist2d) const {
102 
103  for(edm::DetSetVector<SiStripRawDigi>::const_iterator mod = digis->begin();mod!=digis->end();mod++) {
104 
105  for(unsigned int isel=0;isel< m_selections.size(); ++isel) {
106 
107  if(m_selections[isel].isSelected(mod->detId())) {
108  TH1F* tobefilled1d=0;
109  TProfile* tobefilledprof=0;
110  TH2F* tobefilled2d=0;
111 
112  if(m_want1dHisto) tobefilled1d = hist[isel];
113  if(m_wantProfile) tobefilledprof = hprof[isel];
114  if(m_want2dHisto) tobefilled2d = hist2d[isel];
115 
116  unsigned int istrip=0;
117  for(edm::DetSet<SiStripRawDigi>::const_iterator digi=mod->begin();digi!=mod->end();digi++,++istrip) {
118 
119  if(digi->adc()>0) {
120  unsigned int strip = istrip;
121  if(m_folded) strip = strip%256;
122  if(tobefilled1d) tobefilled1d->Fill(strip);
123  if(tobefilledprof) tobefilledprof->Fill(strip,digi->adc());
124  if(tobefilled2d) tobefilled2d->Fill(strip,digi->adc());
125  }
126  }
127  }
128  }
129  }
130 }
131 
132 template <>
133 void DigiCollectionProfiler<edmNew::DetSetVector<SiStripCluster> >::fill(edm::Handle<edmNew::DetSetVector<SiStripCluster> > digis, const std::vector<TH1F*>& hist, const std::vector<TProfile*>& hprof, const std::vector<TH2F*>& hist2d) const {
134 
135  for(edmNew::DetSetVector<SiStripCluster>::const_iterator mod = digis->begin();mod!=digis->end();mod++) {
136 
137  for(unsigned int isel=0;isel< m_selections.size(); ++isel) {
138 
139  if(m_selections[isel].isSelected(mod->detId())) {
140  TH1F* tobefilled1d=0;
141  TProfile* tobefilledprof=0;
142  TH2F* tobefilled2d=0;
143 
144  if(m_want1dHisto) tobefilled1d = hist[isel];
145  if(m_wantProfile) tobefilledprof = hprof[isel];
146  if(m_want2dHisto) tobefilled2d = hist2d[isel];
147 
148  for(edmNew::DetSet<SiStripCluster>::const_iterator clus=mod->begin();clus!=mod->end();clus++) {
149 
150  for(unsigned int digi=0; digi < clus->amplitudes().size() ; ++digi) {
151 
152  if(clus->amplitudes()[digi]>0) {
153  unsigned int strip = clus->firstStrip()+digi;
154  if(m_folded) strip = strip%256;
155  if(tobefilled1d) tobefilled1d->Fill(strip);
156  if(tobefilledprof) tobefilledprof->Fill(strip,clus->amplitudes()[digi]);
157  if(tobefilled2d) tobefilled2d->Fill(strip,clus->amplitudes()[digi]);
158  }
159  }
160  }
161  }
162  }
163  }
164 }
165 
166 #endif // DPGAnalysis_SiStripTools_DigiCollectionProfile_H
T getParameter(std::string const &) const
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
std::vector< DetIdSelector > m_selections
selection
main part
Definition: corrVsCorr.py:98
data_type const * const_iterator
Definition: DetSetNew.h:30
HLT enums.
void fill(edm::Handle< T > digis, const std::vector< TH1F * > &, const std::vector< TProfile * > &, const std::vector< TH2F * > &) const
collection_type::const_iterator const_iterator
Definition: DetSet.h:33
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:104
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4