ATLAS Offline Software
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 
11 using namespace DiTauMassTools;
12 
13 // Default Constructor
15 }
16 
17 // Default Desctructor
19 }
20 
21 //------- clearing input
23 
24  if(m_fUseVerbose == 1){ Info("DiTauMassTools", "MissingMassCalculator::ClearInput()"); }
25 
26  m_MetVec.Set(0.,0.);
27  m_vistau1.SetPtEtaPhiM(0.,0.,0.,0.);
28  m_vistau2.SetPtEtaPhiM(0.,0.,0.,0.);
29 
30  m_type_visTau1 = 0;
31  m_type_visTau2 = 0;
32  m_Nprong_tau1 = 0;
33  m_Nprong_tau2 = 0;
34  m_dataType = 0;
35  m_Njet25 = 0;
36 
37  m_METcovphi = 0.;
38  m_METsigmaP = 0.;
39  m_METsigmaL = 0.;
40  m_SumEt = 0.;
41  m_DelPhiTT = 0.;
42  m_MHtSigma1 = 0.;
43  m_MHtSigma2 = 0.;
44  m_MHtGaussFr = 0.;
45  m_HtOffset = 0.;
46 
47  m_jet4vecs.clear();
48 
49  m_LFVmode = -1;
50 
51  return;
52 }
53 
54 
55 // Printout of final results
57  if(m_fUseVerbose!=1) return;
58 
59  Info("DiTauMassTools", "%s", ("met_x="+std::to_string(m_MetVec.Px())+" met_y="+std::to_string(m_MetVec.Py())+" MET="+std::to_string(m_MetVec.Mod())+" met_phi="+std::to_string(m_MetVec.Phi())).c_str());
60  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());
61  //Info("DiTauMassTools", "%s", (" Njet25="+std::to_string(Njet25)+" allowUseHT="+std::to_string(prob->GetAllowUseHT())+" useHT="+std::to_string(prob->GetUseHT())).c_str());
62 
63  Info("DiTauMassTools", "%s", ("MHtSigma1="+std::to_string(m_MHtSigma1)+" MHtSigma2="+std::to_string(m_MHtSigma2)
64  +" MHtGaussFr="+std::to_string(m_MHtGaussFr)
65  +" HtOffset="+std::to_string(m_HtOffset)).c_str());
66 
67  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())
68  +" Eta="+std::to_string(m_vistau1.Eta())+" Phi="+std::to_string(m_vistau1.Phi())+" M="+std::to_string(m_vistau1.M())).c_str());
69  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())
70  +" Eta="+std::to_string(m_vistau2.Eta())+" Phi="+std::to_string(m_vistau2.Phi())+" M="+std::to_string(m_vistau2.M())).c_str());
71 
72  if(m_jet4vecs.size()>0)
73  {
74  for(unsigned int i=0; i<m_jet4vecs.size(); i++)
75  {
76  Info("DiTauMassTools", "%s", ("Printing jets: jet "+std::to_string(i)+" E="+std::to_string(m_jet4vecs[i].E())+" Pt="
77  +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());
78  }
79  }
80  return;
81 }
82 
83 
84 
85 // input is sumEt after electrons and taus have been removed
86 // data_code=0 for data and =1 for MC
87 void MissingMassInput::SetMetScanParamsUE(double sumEt, double phi_scan, int data_code) {
88  m_METcovphi = phi_scan;
89  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
90  double sigma = 1.0;
91  double sigmaSyst = 0.10; // 10% systematics for now (be conservative)
92  double METresScale = 0.7; // using inclusive number for winter 2012
93  if(data_code==1) METresScale=0.7; // use the same for data & MC
94  METresScale = METresScale*(1.0+m_METresSyst*sigmaSyst);
95  // MET resolution can't be perfect in presence of other objects (i.e., electrons, jets, taus), so assume minSumEt = 5.0 for now
96  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_SumEt = sumEt;
100  m_dataType = data_code; // Sasha added on 09/26/11
101  return;
102 }
103 
104 // ---- input number of jets with Et>25 GeV
106  if(val>-1) m_Njet25 = val;
107  return;
108 }
109 // ----- input SumEt
110 void MissingMassInput::SetSumEt(double sumEt) {
111  m_SumEt = sumEt;
112  return;
113 }
114 // ----- input vis Tau type
115 void MissingMassInput::SetVisTauType(int i, int tautype) {
116  if(i==0) m_type_visTau1 = tautype;
117  if(i==1) m_type_visTau2 = tautype;
118  return;
119 }
120 // ----- input vis Tau vectors
121 void MissingMassInput::SetVisTauVec(int i, const TLorentzVector & vec) {
122  if(m_fUseVerbose==1) { Info("DiTauMassTools", "%s", ("Seting input "+std::to_string(i)+" to pT="+std::to_string(vec.Pt())).c_str()); }
123  if(i==0) m_vistau1 = vec;
124  if(i==1) m_vistau2 = vec;
125  return;
126 }
127 // ---- input Met vector
128 void MissingMassInput::SetMetVec(const TVector2 & vec) {
129  m_MetVec = vec;
130  return;
131 }
132 
133 // not used but might be helpful?
134 // ----- input data type
136  if(val==0 || val==1) m_dataType = val;
137  return;
138 }
139 // ----- input vis Tau N-prong
140 void MissingMassInput::SetNprong(int i, int nprong) {
141  if(i==0) m_Nprong_tau1 = nprong;
142  if(i==1) m_Nprong_tau2 = nprong;
143  return;
144 }
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
DiTauMassTools::MissingMassInput::m_METsigmaP
double m_METsigmaP
Definition: MissingMassInput.h:60
DiTauMassTools::MissingMassInput::~MissingMassInput
~MissingMassInput()
Definition: MissingMassInput.cxx:18
DiTauMassTools::MissingMassInput::SetMetScanParamsUE
void SetMetScanParamsUE(double sumEt, double phi_scan=0.0, int data_code=0)
Definition: MissingMassInput.cxx:87
DiTauMassTools::MissingMassInput::m_MHtGaussFr
double m_MHtGaussFr
Definition: MissingMassInput.h:68
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
DiTauMassTools::MissingMassInput::m_MHtSigma1
double m_MHtSigma1
Definition: MissingMassInput.h:66
DiTauMassTools::MissingMassInput::m_METsigmaL
double m_METsigmaL
Definition: MissingMassInput.h:61
Phi
@ Phi
Definition: RPCdef.h:8
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
DiTauMassTools::MissingMassInput::m_jet4vecs
std::vector< TLorentzVector > m_jet4vecs
Definition: MissingMassInput.h:63
DiTauMassTools::MissingMassInput::m_METcovphi
double m_METcovphi
Definition: MissingMassInput.h:59
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
DiTauMassTools::MissingMassInput::m_Njet25
int m_Njet25
Definition: MissingMassInput.h:64
DiTauMassTools
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:22
DiTauMassTools::MissingMassInput::m_SumEt
double m_SumEt
Definition: MissingMassInput.h:62
DiTauMassTools::MissingMassInput::m_Nprong_tau2
int m_Nprong_tau2
Definition: MissingMassInput.h:57
lumiFormat.i
int i
Definition: lumiFormat.py:92
DiTauMassTools::MissingMassInput::m_MHtSigma2
double m_MHtSigma2
Definition: MissingMassInput.h:67
DiTauMassTools::MissingMassInput::SetIsData
void SetIsData(int val)
Definition: MissingMassInput.cxx:135
DiTauMassTools::MissingMassInput::m_Nprong_tau1
int m_Nprong_tau1
Definition: MissingMassInput.h:56
DiTauMassTools::MissingMassInput::m_vistau1
TLorentzVector m_vistau1
Definition: MissingMassInput.h:52
DiTauMassTools::MissingMassInput::SetNjet25
void SetNjet25(int val)
Definition: MissingMassInput.cxx:105
DiTauMassTools::MissingMassInput::SetVisTauVec
void SetVisTauVec(int i, const TLorentzVector &vec)
Definition: MissingMassInput.cxx:121
DiTauMassTools::MissingMassInput::m_dataType
int m_dataType
Definition: MissingMassInput.h:58
DiTauMassTools::MissingMassInput::m_fUseVerbose
bool m_fUseVerbose
Definition: MissingMassInput.h:76
DiTauMassTools::MissingMassInput::m_HtOffset
double m_HtOffset
Definition: MissingMassInput.h:69
DiTauMassTools::MissingMassInput::m_type_visTau2
int m_type_visTau2
Definition: MissingMassInput.h:55
DiTauMassTools::MissingMassInput::m_DelPhiTT
double m_DelPhiTT
Definition: MissingMassInput.h:65
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
DiTauMassTools::MissingMassInput::PrintInputInfo
void PrintInputInfo()
Definition: MissingMassInput.cxx:56
DiTauMassTools::MissingMassInput::m_MetVec
TVector2 m_MetVec
Definition: MissingMassInput.h:51
MissingMassInput.h
DiTauMassTools::MissingMassInput::SetVisTauType
void SetVisTauType(int i, int tautype)
Definition: MissingMassInput.cxx:115
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
DiTauMassTools::MissingMassInput::ClearInput
void ClearInput()
Definition: MissingMassInput.cxx:22
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
DiTauMassTools::MissingMassInput::m_vistau2
TLorentzVector m_vistau2
Definition: MissingMassInput.h:53
DiTauMassTools::MissingMassInput::m_type_visTau1
int m_type_visTau1
Definition: MissingMassInput.h:54
DiTauMassTools::MissingMassInput::m_METresSyst
int m_METresSyst
Definition: MissingMassInput.h:73
DiTauMassTools::MissingMassInput::m_beamEnergy
double m_beamEnergy
Definition: MissingMassInput.h:70
DiTauMassTools::MissingMassInput::SetSumEt
void SetSumEt(double sumEt)
Definition: MissingMassInput.cxx:110
DiTauMassTools::MissingMassInput::SetMetVec
void SetMetVec(const TVector2 &vec)
Definition: MissingMassInput.cxx:128
DiTauMassTools::MissingMassInput::SetNprong
void SetNprong(int i, int nprong)
Definition: MissingMassInput.cxx:140
DiTauMassTools::MissingMassInput::MissingMassInput
MissingMassInput()
Definition: MissingMassInput.cxx:14
DiTauMassTools::MissingMassInput::m_LFVmode
int m_LFVmode
Definition: MissingMassInput.h:82
Eta
@ Eta
Definition: RPCdef.h:8