ATLAS Offline Software
Loading...
Searching...
No Matches
MissingMassInput.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
5// Class handling the input of the MissingMassCalculator
6// author Michael Huebner <michael.huebner@no.spam.cern.ch>
7
8// Local include(s):
10
11using namespace DiTauMassTools;
12using ROOT::Math::PtEtaPhiMVector;
13using ROOT::Math::XYVector;
14
15// Default Constructor
18
19// Default Desctructor
22
23//------- clearing input
25
26 if(m_fUseVerbose == 1){ Info("DiTauMassTools", "MissingMassCalculator::ClearInput()"); }
27
28 m_MetVec.SetXY(0.,0.);
29 m_vistau1.SetCoordinates(0.,0.,0.,0.);
30 m_vistau2.SetCoordinates(0.,0.,0.,0.);
31
34 m_Nprong_tau1 = 0;
35 m_Nprong_tau2 = 0;
36 m_dataType = 0;
37 m_Njet25 = 0;
38
39 m_METcovphi = 0.;
40 m_METsigmaP = 0.;
41 m_METsigmaL = 0.;
42 m_SumEt = 0.;
43 m_DelPhiTT = 0.;
44 m_MHtSigma1 = 0.;
45 m_MHtSigma2 = 0.;
46 m_MHtGaussFr = 0.;
47 m_HtOffset = 0.;
48
49 m_jet4vecs.clear();
50
51 m_LFVmode = -1;
52
53 return;
54}
55
56
57// Printout of final results
59 if(m_fUseVerbose!=1) return;
60
61 Info("DiTauMassTools", "%s", ("met_x="+std::to_string(m_MetVec.X())+" met_y="+std::to_string(m_MetVec.Y())+" MET="+std::to_string(m_MetVec.R())+" met_phi="+std::to_string(m_MetVec.Phi())).c_str());
62 Info("DiTauMassTools", "%s", ("sumEt="+std::to_string(m_SumEt)+" METsigmaP="+std::to_string(m_METsigmaP)+" METsigmaL="+std::to_string(m_METsigmaL)+" METcovphi="+std::to_string(m_METcovphi)).c_str());
63 //Info("DiTauMassTools", "%s", (" Njet25="+std::to_string(Njet25)+" allowUseHT="+std::to_string(prob->GetAllowUseHT())+" useHT="+std::to_string(prob->GetUseHT())).c_str());
64
65 Info("DiTauMassTools", "%s", ("MHtSigma1="+std::to_string(m_MHtSigma1)+" MHtSigma2="+std::to_string(m_MHtSigma2)
66 +" MHtGaussFr="+std::to_string(m_MHtGaussFr)
67 +" HtOffset="+std::to_string(m_HtOffset)).c_str());
68
69 Info("DiTauMassTools", "%s", ("1st visible tau: type="+std::to_string(m_type_visTau1)+" Nprong="+std::to_string(m_Nprong_tau1)+" P="+std::to_string(m_vistau1.P())+" Pt="+std::to_string(m_vistau1.Pt())
70 +" Eta="+std::to_string(m_vistau1.Eta())+" Phi="+std::to_string(m_vistau1.Phi())+" M="+std::to_string(m_vistau1.M())).c_str());
71 Info("DiTauMassTools", "%s", ("2nd visible tau: type="+std::to_string(m_type_visTau2)+" Nprong="+std::to_string(m_Nprong_tau2)+" P="+std::to_string(m_vistau2.P())+" Pt="+std::to_string(m_vistau2.Pt())
72 +" Eta="+std::to_string(m_vistau2.Eta())+" Phi="+std::to_string(m_vistau2.Phi())+" M="+std::to_string(m_vistau2.M())).c_str());
73
74 if(m_jet4vecs.size()>0)
75 {
76 for(unsigned int i=0; i<m_jet4vecs.size(); i++)
77 {
78 Info("DiTauMassTools", "%s", ("Printing jets: jet "+std::to_string(i)+" E="+std::to_string(m_jet4vecs[i].E())+" Pt="
79 +std::to_string(m_jet4vecs[i].Pt())+" Phi="+std::to_string(m_jet4vecs[i].Phi())+" Eta="+std::to_string(m_jet4vecs[i].Eta())).c_str());
80 }
81 }
82 return;
83}
84
85
86
87// input is sumEt after electrons and taus have been removed
88// data_code=0 for data and =1 for MC
89void MissingMassInput::SetMetScanParamsUE(double sumEt, double phi_scan, int data_code) {
90 m_METcovphi = phi_scan;
91 if(sumEt>2.0*m_beamEnergy) sumEt = sumEt/1000.0; // it's likely that sumEt was entered in MeV; this fix won't work only for a very small fraction of events
92 double sigma = 1.0;
93 double sigmaSyst = 0.10; // 10% systematics for now (be conservative)
94 double METresScale = 0.7; // using inclusive number for winter 2012
95 if(data_code==1) METresScale=0.7; // use the same for data & MC
96 METresScale = METresScale*(1.0+m_METresSyst*sigmaSyst);
97 // MET resolution can't be perfect in presence of other objects (i.e., electrons, jets, taus), so assume minSumEt = 5.0 for now
98 sigma = sumEt>pow(3.0/METresScale,2) ? METresScale*sqrt(sumEt) : 3.0; // assume that MET resolution can't be better than 3 GeV
99 m_METsigmaP = sigma;
100 m_METsigmaL = sigma;
101 m_SumEt = sumEt;
102 m_dataType = data_code; // Sasha added on 09/26/11
103 return;
104}
105
106// ---- input number of jets with Et>25 GeV
108 if(val>-1) m_Njet25 = val;
109 return;
110}
111// ----- input SumEt
112void MissingMassInput::SetSumEt(double sumEt) {
113 m_SumEt = sumEt;
114 return;
115}
116// ----- input vis Tau type
117void MissingMassInput::SetVisTauType(int i, int tautype) {
118 if(i==0) m_type_visTau1 = tautype;
119 if(i==1) m_type_visTau2 = tautype;
120 return;
121}
122// ----- input vis Tau vectors
123void MissingMassInput::SetVisTauVec(int i, const PtEtaPhiMVector & vec) {
124 if(m_fUseVerbose==1) { Info("DiTauMassTools", "%s", ("Seting input "+std::to_string(i)+" to pT="+std::to_string(vec.Pt())).c_str()); }
125 if(i==0) m_vistau1 = vec;
126 if(i==1) m_vistau2 = vec;
127 return;
128}
129// ---- input Met vector
130void MissingMassInput::SetMetVec(const XYVector & vec) {
131 m_MetVec = vec;
132 return;
133}
134
135// not used but might be helpful?
136// ----- input data type
138 if(val==0 || val==1) m_dataType = val;
139 return;
140}
141// ----- input vis Tau N-prong
142void MissingMassInput::SetNprong(int i, int nprong) {
143 if(i==0) m_Nprong_tau1 = nprong;
144 if(i==1) m_Nprong_tau2 = nprong;
145 return;
146}
std::vector< size_t > vec
@ Phi
Definition RPCdef.h:8
@ Eta
Definition RPCdef.h:8
constexpr int pow(int base, int exp) noexcept
void SetMetScanParamsUE(double sumEt, double phi_scan=0.0, int data_code=0)
std::vector< PtEtaPhiMVector > m_jet4vecs
void SetMetVec(const XYVector &vec)
void SetVisTauVec(int i, const PtEtaPhiMVector &vec)
void SetVisTauType(int i, int tautype)