#include "MET_Cleaning_Utils.h" #include // Constructor MET_Cleaning_Utils::MET_Cleaning_Utils(): GeV(1000) ,jet_THRESHOLD(20*GeV) ,jet_THRESHOLD_1sigma(4*GeV) ,jet_iso(0.1) { eta_min.push_back(0.0);eta_max.push_back(1.45);phi_min.push_back(-0.78847);phi_max.push_back(-0.59213); } //destructor MET_Cleaning_Utils::~MET_Cleaning_Utils(){ } // Common funtions float MET_Cleaning_Utils::DeltaPhi(float phi1, float phi2){ float dphi=fabs(phi1-phi2); if (dphi>TMath::Pi()) dphi=2*TMath::Pi()-dphi; return dphi; } float MET_Cleaning_Utils::DeltaEta(float eta1, float eta2){ float deta=fabs(eta1-eta2); return deta; } float MET_Cleaning_Utils::dr(float phi1, float eta1,float phi2, float eta2){ return sqrt(pow(DeltaEta(eta1,eta2),2.0)+DeltaPhi(phi1,phi2)); } float MET_Cleaning_Utils::dphi_MET_MPT(float &met_phi,std::vector *trk_pt,std::vector *trk_eta, std::vector *trk_d0_wrtPV,std::vector *trk_z0_wrtPV, std::vector *trk_theta_wrtPV,std::vector *trk_phi_wrtPV, std::vector *trk_nPixHits,std::vector *trk_nSCTHits){ float sign=1; float mpt_phi=MPT_Loose_phi(trk_pt,trk_eta,trk_d0_wrtPV,trk_z0_wrtPV,trk_theta_wrtPV,trk_phi_wrtPV,trk_nPixHits,trk_nSCTHits); if(met_phi-mpt_phi<0) sign=-1; return DeltaPhi(met_phi,mpt_phi)*sign; } float MET_Cleaning_Utils::MPT_Loose_phi(std::vector *trk_pt,std::vector *trk_eta,std::vector *trk_d0_wrtPV, std::vector *trk_z0_wrtPV,std::vector *trk_theta_wrtPV, std::vector *trk_phi_wrtPV,std::vector *trk_nPixHits, std::vector *trk_nSCTHits ){ TLorentzVector P(0,0,0,0); for(int i=0; isize();i++){ if(trk_pt->at(i)>500 && fabs(trk_eta->at(i))<2.5 && fabs(trk_d0_wrtPV->at(i))<1.5 && fabs(trk_z0_wrtPV->at(i)*trk_theta_wrtPV->at(i))<1.5 && trk_nPixHits->at(i)>=1 && trk_nSCTHits->at(i)>=6 ){ TLorentzVector LT(0,0,0,0); LT.SetPtEtaPhiM(trk_pt->at(i),0,trk_phi_wrtPV->at(i),0); P-=LT; } } return P.Phi(); } bool MET_Cleaning_Utils::iswithinDeadFEB(float eta, float phi, float objCone, float objIso,bool dosquare){ for(int i=0;ifabs(deta) && fabs(phidiff)>fabs(dphi)) return true; if(fabs(etadiff)>deta && fabs(phidiff+objCone)>fabs(dphi)) return true; if(sqrt(pow(deta-etadiff,2.0)+pow(dphi-phidiff,2.0)) < objCone)return true; } return false; } bool MET_Cleaning_Utils::isJetAffected(std::vector &jet, float iso, float JCone, float minpt ){ for(int i=0;iminpt){ if(iswithinDeadFEB(jet.Eta(),jet.Phi(),JCone,iso)){ return true; } } return false; } bool MET_Cleaning_Utils::hasUnmatchTrackJet(std::vector &jet,float JCone,std::vector &trackjet, float TJCone,float minpt){ for(int i=0;i &jet,TLorentzVector &trackjet){ float JCone=0.4; float TJCone=0.4; float dr_min=999; int jidx=-1; for(int j=0; j &jet, std::vector *BCH_CORR_JET, std::vector *BCH_CORR_CELL, bool isdata, float shift){ if(jet.size()!=BCH_CORR_CELL->size() || jet.size()!=BCH_CORR_JET->size()){ std::cout << "FATAL: jets BCH_CORR_CELL and BCH_CORR_JET do not match! FIX YOU INPUTS " << std::endl; } for(int i=0;iat(i))/(1-BCH_CORR_CELL->at(i)); if(isJetAffected(jet.at(i),0.0,jet_iso,THRESHOLD))return false; } return true; } float MET_Cleaning_Utils::dphi_Jet_MET(std::vector &jet, float met_phi){ float dphi_min=10; for(int i=0;iDphi){ dphi_min=Dphi; } } return dphi_min; }