Get the analysis.
140 if ( !HLTresults.
isValid() )
return;
144 bool passed_electron_HLT =
true;
145 bool passed_muon_HLT =
true;
153 iEvent.
getByLabel(
"offlinePrimaryVertices", vertexHandle);
154 if ( !vertexHandle.
isValid() )
return;
156 int vertex_number = vertexCollection.size();
157 VertexCollection::const_iterator
v = vertexCollection.begin();
158 double vertex_chi2 = v->normalizedChi2();
159 double vertex_d0 =
sqrt(v->x()*v->x()+v->y()*v->y());
161 double vertex_numTrks = v->tracksSize();
162 double vertex_sumTrks = 0.0;
163 for (
Vertex::trackRef_iterator vertex_curTrack = v->tracks_begin(); vertex_curTrack!=v->tracks_end(); vertex_curTrack++) {
164 vertex_sumTrks += (*vertex_curTrack)->pt();
171 if ( !caloMETCollection.
isValid() )
return;
172 float missing_et = caloMETCollection->begin()->et();
173 float met_phi = caloMETCollection->begin()->phi();
180 if ( !electronCollection.
isValid() )
return;
183 float electron_et = -8.0;
184 float electron_eta = -8.0;
185 float electron_phi = -8.0;
186 float electron2_et = -9.0;
187 float electron2_eta = -9.0;
188 float electron2_phi = -9.0;
189 float ee_invMass = -9.0;
190 TLorentzVector e1, e2;
193 if( passed_electron_HLT ) {
195 for (reco::GsfElectronCollection::const_iterator recoElectron=electronCollection->begin(); recoElectron!=electronCollection->end(); recoElectron++){
198 if ( recoElectron->et() < 20 || fabs(recoElectron->eta())>2.5 )
continue;
201 if ( recoElectron->deltaPhiSuperClusterTrackAtVtx() > 0.58 ||
202 recoElectron->deltaEtaSuperClusterTrackAtVtx() > 0.01 ||
203 recoElectron->sigmaIetaIeta() > 0.027 )
continue;
205 if (recoElectron->et() > electron_et){
206 electron2_et = electron_et;
207 electron2_eta = electron_eta;
208 electron2_phi = electron_phi;
209 electron_et = recoElectron->et();
210 electron_eta = recoElectron->eta();
211 electron_phi = recoElectron->phi();
212 e1 = TLorentzVector(recoElectron->momentum().x(),recoElectron->momentum().y(),recoElectron->momentum().z(),recoElectron->p());
213 }
else if (recoElectron->et() > electron2_et) {
214 electron2_et = recoElectron->et();
215 electron2_eta = recoElectron->eta();
216 electron2_phi = recoElectron->phi();
217 e2 = TLorentzVector(recoElectron->momentum().x(),recoElectron->momentum().y(),recoElectron->momentum().z(),recoElectron->p());
220 if (electron2_et>0.0) {
221 TLorentzVector pair=e1+e2;
222 ee_invMass = pair.M();
233 if ( !muonCollection.
isValid() )
return;
236 float mm_invMass = -9.0;
237 float muon_pt = -9.0;
238 float muon_eta = -9.0;
239 float muon_phi = -9.0;
240 float muon2_pt = -9.0;
241 float muon2_eta = -9.0;
242 float muon2_phi = -9.0;
243 TLorentzVector m1, m2;
245 if( passed_muon_HLT ) {
246 for (reco::MuonCollection::const_iterator recoMuon=muonCollection->begin(); recoMuon!=muonCollection->end(); recoMuon++){
249 if ( recoMuon->pt() < 20 || !recoMuon->isGlobalMuon() )
continue;
251 if ( recoMuon->globalTrack()->normalizedChi2() > 10 )
continue;
253 if (recoMuon->pt() > muon_pt){
255 muon2_eta = muon_eta;
256 muon2_phi = muon_phi;
257 muon_pt = recoMuon->pt();
258 muon_eta = recoMuon->eta();
259 muon_phi = recoMuon->phi();
260 m1 = TLorentzVector(recoMuon->momentum().x(),recoMuon->momentum().y(),recoMuon->momentum().z(),recoMuon->p());
261 }
else if (recoMuon->pt() > muon2_pt) {
262 muon2_pt = recoMuon->pt();
263 muon2_eta = recoMuon->eta();
264 muon2_phi = recoMuon->phi();
265 m2 = TLorentzVector(recoMuon->momentum().x(),recoMuon->momentum().y(),recoMuon->momentum().z(),recoMuon->p());
270 TLorentzVector pair=m1+m2;
271 mm_invMass = pair.M();
280 if ( !caloJetCollection.
isValid() )
return;
283 float jet_eta = -8.0;
284 float jet_phi = -8.0;
286 float jet2_et = -9.0;
287 float jet2_eta = -9.0;
288 float jet2_phi = -9.0;
289 for (CaloJetCollection::const_iterator i_calojet = caloJetCollection->begin(); i_calojet != caloJetCollection->end(); i_calojet++) {
291 float jet_current_et = i_calojet->et();
294 if ( electron_et>0.0 && fabs(i_calojet->eta()-electron_eta ) < 0.2 &&
calcDeltaPhi(i_calojet->phi(), electron_phi ) < 0.2)
continue;
295 if ( electron2_et>0.0&& fabs(i_calojet->eta()-electron2_eta) < 0.2 &&
calcDeltaPhi(i_calojet->phi(), electron2_phi) < 0.2)
continue;
298 if (jet_current_et < 15)
continue;
301 if (jet_current_et > jet_et) {
305 jet_et = i_calojet->et();
306 jet_eta = i_calojet->eta();
307 jet_phi = i_calojet->phi();
308 }
else if (jet_current_et > jet2_et) {
309 jet2_et = i_calojet->et();
310 jet2_eta = i_calojet->eta();
311 jet2_phi = i_calojet->phi();
322 bool fill_e1 =
false;
323 bool fill_e2 =
false;
324 bool fill_m1 =
false;
325 bool fill_m2 =
false;
326 bool fill_met =
false;
329 if (ee_invMass>0.0) {
336 if (mm_invMass > 0.0) {
343 if (electron_et>0.0&&missing_et>20.0) {
344 float dphiW = fabs(met_phi-electron_phi);
345 float W_mt_e =
sqrt(2*missing_et*electron_et*(1-
cos(dphiW)));
352 if (muon_pt>0.0&&missing_et>20.0) {
353 float dphiW = fabs(met_phi-muon_phi);
354 float W_mt_m =
sqrt(2*missing_et*muon_pt*(1-
cos(dphiW)));
365 if (fill_e1 || fill_m1) {
MonitorElement * h_e1_phi
MonitorElement * h_vertex_d0
MonitorElement * h_m1_phi
MonitorElement * h_m_invWMass
MonitorElement * h_e1_eta
edm::InputTag theCaloMETCollectionLabel
edm::InputTag theCaloJetCollectionLabel
MonitorElement * h_vertex_numTrks
std::vector< Vertex > VertexCollection
collection of Vertex objects
MonitorElement * h_mumu_invMass
MonitorElement * h_e2_eta
MonitorElement * h_m2_phi
MonitorElement * h_e_invWMass
MonitorElement * h_vertex_sumTrks
Cos< T >::type cos(const T &t)
edm::InputTag theElectronCollectionLabel
MonitorElement * h_m1_eta
MonitorElement * h_m2_eta
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
MonitorElement * h_vertex_chi2
MonitorElement * h_ee_invMass
MonitorElement * h_e2_phi
edm::InputTag theTriggerResultsCollection
T const * product() const
MonitorElement * h_jet_et
MonitorElement * h_met_phi
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
edm::InputTag theMuonCollectionLabel
double calcDeltaPhi(double phi1, double phi2)
MonitorElement * h_vertex_number
MonitorElement * h_jet_count