CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SUSYDQMAnalyzer.cc
Go to the documentation of this file.
1 //authors: Francesco Costanza (DESY)
2 // Dirk Kruecker (DESY)
3 //date: 05/05/11
4 
5 //================================================================
6 // CMS FW and Data Handlers
7 
9 
12 
19 
20 //================================================================
21 // Jet & Jet collections // MET & MET collections
22 
27 
34 
42 
43 //================================================================
44 // SUSY Classes
45 
50 
51 //================================================================
52 // ROOT Classes
53 
54 #include "TH1.h"
55 #include "TVector2.h"
56 #include "TLorentzVector.h"
57 
58 //================================================================
59 // Ordinary C++ stuff
60 
61 #include <cmath>
62 #include <vector>
63 #include <fstream>
64 #include <sstream>
65 #include <string>
66 
67 using namespace edm;
68 using namespace reco;
69 using namespace math;
70 using namespace std;
71 
73 {
74  iConfig = pSet;
75 
76  SUSYFolder = iConfig.getParameter<std::string>("folderName");
77  dqm = edm::Service<DQMStore>().operator->();
78 }
79 
80 const char* SUSYDQMAnalyzer::messageLoggerCatregory = "SUSYDQM";
81 
83  // Load parameters
84  thePFMETCollectionLabel = iConfig.getParameter<edm::InputTag>("PFMETCollectionLabel");
85  theCaloMETCollectionLabel = iConfig.getParameter<edm::InputTag>("CaloMETCollectionLabel");
86  theTCMETCollectionLabel = iConfig.getParameter<edm::InputTag>("TCMETCollectionLabel");
87 
88  theCaloJetCollectionLabel = iConfig.getParameter<edm::InputTag>("CaloJetCollectionLabel");
89  theJPTJetCollectionLabel = iConfig.getParameter<edm::InputTag>("JPTJetCollectionLabel");
90  thePFJetCollectionLabel = iConfig.getParameter<edm::InputTag>("PFJetCollectionLabel");
91 
92  _ptThreshold = iConfig.getParameter<double>("ptThreshold");
93  _maxNJets = iConfig.getParameter<double>("maxNJets");
94  _maxAbsEta = iConfig.getParameter<double>("maxAbsEta");
95 }
96 
97 void SUSYDQMAnalyzer::beginRun(const edm::Run& iRun, const edm::EventSetup& iSetup){
98  if( dqm ) {
99  //===========================================================
100  // book HT histos.
101 
102  std::string dir=SUSYFolder;
103  dir+="HT";
104  dqm->setCurrentFolder(dir);
105  hCaloHT = dqm->book1D("Calo_HT", "", 500, 0., 2000);
106  hPFHT = dqm->book1D("PF_HT" , "", 500, 0., 2000);
107  hJPTHT = dqm->book1D("JPT_HT" , "", 500, 0., 2000);
108 
109  //===========================================================
110  // book MET histos.
111 
112  dir=SUSYFolder;
113  dir+="MET";
114  dqm->setCurrentFolder(dir);
115  hCaloMET = dqm->book1D("Calo_MET", "", 500, 0., 1000);
116  hPFMET = dqm->book1D("PF_MET" , "", 500, 0., 1000);
117  hTCMET = dqm->book1D("TC_MET" , "", 500, 0., 1000);
118 
119  //===========================================================
120  // book MHT histos.
121 
122  dir=SUSYFolder;
123  dir+="MHT";
124  dqm->setCurrentFolder(dir);
125  hCaloMHT = dqm->book1D("Calo_MHT", "", 500, 0., 1000);
126  hPFMHT = dqm->book1D("PF_MHT" , "", 500, 0., 1000);
127  hJPTMHT = dqm->book1D("JPT_MHT" , "", 500, 0., 1000);
128 
129  //===========================================================
130  // book alpha_T histos.
131 
132  dir=SUSYFolder;
133  dir+="Alpha_T";
134  dqm->setCurrentFolder(dir);
135  hCaloAlpha_T = dqm->book1D("Calo_AlphaT", "", 100, 0., 1.);
136  hJPTAlpha_T = dqm->book1D("PF_AlphaT" , "", 100, 0., 1.);
137  hPFAlpha_T = dqm->book1D("JPT_AlphaT" , "", 100, 0., 1.);
138  }
139 }
140 
142 {
143  //###########################################################
144  // HTand MHT
145 
146  //===========================================================
147  // Calo HT, MHT and alpha_T
148 
150 
151  iEvent.getByLabel(theCaloJetCollectionLabel, CaloJetcoll);
152 
153  if(!CaloJetcoll.isValid()) return;
154 
155  std::vector<math::XYZTLorentzVector> Ps;
156  for (reco::CaloJetCollection::const_iterator jet = CaloJetcoll->begin(); jet!=CaloJetcoll->end(); ++jet){
157  if ((jet->pt()>_ptThreshold) && (abs(jet->eta()) < _maxAbsEta)){
158  if(Ps.size()>_maxNJets) {
159  edm::LogInfo(messageLoggerCatregory)<<"NMax Jets exceded..";
160  break;
161  }
162  Ps.push_back(jet->p4());
163  }
164  }
165 
166  hCaloAlpha_T->Fill( alpha_T()(Ps));
167 
168  HT< reco::CaloJetCollection > CaloHT(CaloJetcoll, _ptThreshold, _maxAbsEta);
169 
170  hCaloHT->Fill(CaloHT.ScalarSum);
171  hCaloMHT->Fill(CaloHT.v.Mod());
172 
173  //===========================================================
174  // PF HT, MHT and alpha_T
175 
177 
178  iEvent.getByLabel(thePFJetCollectionLabel, PFjetcoll);
179 
180  if(!PFjetcoll.isValid()) return;
181 
182  Ps.clear();
183  for (reco::PFJetCollection::const_iterator jet = PFjetcoll->begin(); jet!=PFjetcoll->end(); ++jet){
184  if ((jet->pt()>_ptThreshold) && (abs(jet->eta()) < _maxAbsEta)){
185  if(Ps.size()>_maxNJets) {
186  edm::LogInfo(messageLoggerCatregory)<<"NMax Jets exceded..";
187  break;
188  }
189  Ps.push_back(jet->p4());
190  }
191  }
192  hPFAlpha_T->Fill( alpha_T()(Ps));
193 
194  HT<reco::PFJetCollection> PFHT(PFjetcoll, _ptThreshold, _maxAbsEta);
195 
196  hPFHT->Fill(PFHT.ScalarSum);
197  hPFMHT->Fill(PFHT.v.Mod());
198 
199  //===========================================================
200  // JPT HT, MHT and alpha_T
201 
203 
204  iEvent.getByLabel(theJPTJetCollectionLabel, JPTjetcoll);
205 
206  if(!JPTjetcoll.isValid()) return;
207 
208  Ps.clear();
209  for (reco::JPTJetCollection::const_iterator jet = JPTjetcoll->begin(); jet!=JPTjetcoll->end(); ++jet){
210  if ((jet->pt()>_ptThreshold) && (abs(jet->eta())<_maxAbsEta)){
211  if(Ps.size()>_maxNJets) {
212  edm::LogInfo(messageLoggerCatregory)<<"NMax Jets exceded..";
213  break;
214  }
215  Ps.push_back(jet->p4());
216  }
217  }
218  hJPTAlpha_T->Fill( alpha_T()(Ps));
219 
220  HT<reco::JPTJetCollection> JPTHT(JPTjetcoll, _ptThreshold, _maxAbsEta);
221 
222  hJPTHT->Fill(JPTHT.ScalarSum);
223  hJPTMHT->Fill(JPTHT.v.Mod());
224 
225  //###########################################################
226  // MET
227 
228  //===========================================================
229  // Calo MET
230 
232  iEvent.getByLabel(theCaloMETCollectionLabel, calometcoll);
233 
234  if(!calometcoll.isValid()) return;
235 
236  const CaloMETCollection *calometcol = calometcoll.product();
237  const CaloMET *calomet;
238  calomet = &(calometcol->front());
239 
240  hCaloMET->Fill(calomet->pt());
241 
242  //===========================================================
243  // PF MET
244 
246  iEvent.getByLabel(thePFMETCollectionLabel, pfmetcoll);
247 
248  if(!pfmetcoll.isValid()) return;
249 
250  const PFMETCollection *pfmetcol = pfmetcoll.product();
251  const PFMET *pfmet;
252  pfmet = &(pfmetcol->front());
253 
254  hPFMET->Fill(pfmet->pt());
255 
256  //===========================================================
257  // TC MET
258 
260  iEvent.getByLabel(theTCMETCollectionLabel, tcmetcoll);
261 
262  if(!tcmetcoll.isValid()) return;
263 
264  const METCollection *tcmetcol = tcmetcoll.product();
265  const MET *tcmet;
266  tcmet = &(tcmetcol->front());
267 
268  hTCMET->Fill(tcmet->pt());
269 
270 }
271 
273 }
274 
276 }
T getParameter(std::string const &) const
double ScalarSum
Definition: HT.h:28
Collection of Calo MET.
int iEvent
Definition: GenABIO.cc:243
virtual void analyze(const edm::Event &, const edm::EventSetup &)
Definition: MET.h:32
virtual void beginJob()
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
virtual void beginRun(const edm::Run &, const edm::EventSetup &iSetup)
Collection of MET.
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
static const char * messageLoggerCatregory
T const * product() const
Definition: Handle.h:81
SUSYDQMAnalyzer(const edm::ParameterSet &)
dbl *** dir
Definition: mlp_gen.cc:35
TVector2 v
Definition: HT.h:27
Definition: HT.h:20
virtual float pt() const GCC11_FINAL
transverse momentum
virtual void endRun(const edm::Run &, const edm::EventSetup &)
Definition: Run.h:41
Collection of PF MET.