ATLAS Offline Software
semilCorr.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 using namespace std;
8 
9 semilCorr::semilCorr(TString fIn, string /*suffix*/, bool DebugIn){
10  m_Debug = DebugIn;
11  m_f = TFile::Open(fIn);
12  m_etas.push_back(0);
13  m_etas.push_back(0.8);
14  m_etas.push_back(1.2);
15  m_etas.push_back(1.7);
16  m_etas.push_back(2.1);
17  m_etas.push_back(2.5);
18 
19  vector<string> etastr;
20  etastr.push_back("_e0");
21  etastr.push_back("_e1");
22  etastr.push_back("_e2");
23  etastr.push_back("_e3");
24  etastr.push_back("_e4");
25 
26  vector<string> prefix;
27  prefix.push_back("corr");
28  prefix.push_back("tagSyst");
29  prefix.push_back("fragSyst");
30  prefix.push_back("decaySyst");
31  prefix.push_back("msSyst");
32  prefix.push_back("idSyst");
33  prefix.push_back("decayRewSyst");
34  prefix.push_back("muRewSyst");
35  prefix.push_back("corrIncl");
36 
37  for(unsigned int j = 0; j<prefix.size(); j++){
38  vector<TH1F*> corr;
39  for(unsigned int i = 0; i<etastr.size(); i++){
40  corr.push_back((TH1F*) m_f->Get((prefix[j]+etastr[i]).c_str()));
41  }
42  m_histos.push_back(corr);
43  }
44 }
45 
46 
48  for(unsigned int i = 0; i<m_histos.size();i++){
49  for(unsigned int j = 0; j<m_histos[i].size();j++){
50  delete m_histos[i][j]; // TH2F's that store response info
51  }
52  }
53  m_f->Close();
54  delete m_f;
55 }
56 
57 float semilCorr::getSemilCorrToIncl(TLorentzVector jet, TLorentzVector mu)
58 {
59  return getSemilCorrToIncl(jet,mu,m_histos[0]);
60 }
61 
62 float semilCorr::getBjetCorrToIncl(TLorentzVector jet, TLorentzVector mu)
63 {
64  return getSemilCorrToIncl(jet,mu,m_histos[8]);
65 }
66 
67 float semilCorr::getSemilCorrToIncl(TLorentzVector jet, TLorentzVector mu,
68  vector<TH1F*> histos)
69 {
70  TLorentzVector jetmu = jet+mu;
71  //correction to get things to 1 (or to pttruth), not to reference
72  float corr = getResponse(jetmu.Pt(), jetmu.Eta(), histos);
73  return corr;
74 }
75 
77 {
78  vector<int> indices;
79  if(syst == semilCorr::ALL){
80  indices.push_back(((int)semilCorr::TAGGINGWEIGHT));
81  indices.push_back(((int)semilCorr::FRAGMENTATION));
82  indices.push_back(((int)semilCorr::DECAY));
83  indices.push_back(((int)semilCorr::MSRESO));
84  indices.push_back(((int)semilCorr::IDRESO));
85  indices.push_back(((int)semilCorr::DECAYREW));
86  indices.push_back(((int)semilCorr::MUONSPECTRUM));
87  }else
88  indices.push_back((int) syst);
89  return indices;
90 }
91 
92 float semilCorr::getSemilCorrToInclSyst(TLorentzVector jet, TLorentzVector mu,
94 {
95  //vector<int> indeces = getHistoIndeces(up,syst);
96  vector<int> indeces1 = getHistoIndeces(syst);
97  float systr = 0;
98  for(unsigned int i = 0; i<indeces1.size(); i++){
99  systr += pow(getSemilCorrToIncl(jet,mu,m_histos[indeces1[i]]),2);
100  }
101  return sqrt(systr);
102 }
103 
104 float semilCorr::getResponse(float pt, float eta, vector<TH1F*> h)
105 {
106  float usePt = pt;
107  int histbin = -1;
108  for(unsigned int i = 0; i<m_etas.size()-1; i++){
109  if(fabs(eta)>=m_etas[i] && fabs(eta)<m_etas[i+1])
110  histbin = i;
111  }
112 
113  if(histbin == -1) histbin = h.size()-1;
114  float min = h[histbin]->GetBinCenter(1);
115  float max = h[histbin]->GetBinCenter(h[histbin]->GetNbinsX());
116  if(pt>max)
117  usePt = max-0.001;
118  if(pt<min) usePt = min+0.001;
119  float result = h[histbin]->Interpolate(usePt);
120  return result;
121 }
122 
get_generator_info.result
result
Definition: get_generator_info.py:21
max
#define max(a, b)
Definition: cfImp.cxx:41
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
Trk::indices
std::pair< long int, long int > indices
Definition: AlSymMatBase.h:24
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
test_pyathena.pt
pt
Definition: test_pyathena.py:11
semilCorr::semilCorr
semilCorr(TString fIn, std::string suffix="", bool DebugIn=false)
Definition: semilCorr.cxx:9
semilCorr::~semilCorr
~semilCorr()
Definition: semilCorr.cxx:47
semilCorr::TAGGINGWEIGHT
@ TAGGINGWEIGHT
Definition: semilCorr.h:19
semilCorr::ALL
@ ALL
Definition: semilCorr.h:26
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
semilCorr::getSemilCorrToIncl
float getSemilCorrToIncl(TLorentzVector jet, TLorentzVector mu, std::vector< TH1F * > histos)
Definition: semilCorr.cxx:67
lumiFormat.i
int i
Definition: lumiFormat.py:85
h
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
semilCorr::Systematics
Systematics
Definition: semilCorr.h:18
min
#define min(a, b)
Definition: cfImp.cxx:40
semilCorr::IDRESO
@ IDRESO
Definition: semilCorr.h:23
semilCorr::MUONSPECTRUM
@ MUONSPECTRUM
Definition: semilCorr.h:25
semilCorr::FRAGMENTATION
@ FRAGMENTATION
Definition: semilCorr.h:20
semilCorr::getHistoIndeces
std::vector< int > getHistoIndeces(semilCorr::Systematics syst)
Definition: semilCorr.cxx:76
semilCorr::getSemilCorrToInclSyst
float getSemilCorrToInclSyst(TLorentzVector jet, TLorentzVector mu, semilCorr::Systematics syst=semilCorr::ALL)
Definition: semilCorr.cxx:92
semilCorr::getBjetCorrToIncl
float getBjetCorrToIncl(TLorentzVector jet, TLorentzVector mu)
Definition: semilCorr.cxx:62
checkCorrelInHIST.histos
dictionary histos
Definition: checkCorrelInHIST.py:413
semilCorr::MSRESO
@ MSRESO
Definition: semilCorr.h:22
semilCorr::DECAY
@ DECAY
Definition: semilCorr.h:21
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
semilCorr::getResponse
float getResponse(float pt, float eta, std::vector< TH1F * > h)
Definition: semilCorr.cxx:104
semilCorr.h
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
MooRTT_summarizeCPU.fIn
fIn
Definition: MooRTT_summarizeCPU.py:11
semilCorr::DECAYREW
@ DECAYREW
Definition: semilCorr.h:24