Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Utilities.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Utilities.h
1 #ifndef UTILITIES_H
2 #define UTILITIES_H
3 
4 #include <vector>
5 
6 #include <TMath.h>
7 #include <TFile.h>
8 #include <TTree.h>
9 
10 template <class T> void CleanVec(std::vector<T> &v)
11 {
12  std::vector<T>().swap(v);
13  v.shrink_to_fit();
14 }
15 
16 float deltaPhi(float phi1, float phi2)
17 {
18  float dPhi = phi1 - phi2;
19  if (dPhi > TMath::Pi())
20  dPhi -= 2. * TMath::Pi();
21  if (dPhi < -TMath::Pi())
22  dPhi += 2. * TMath::Pi();
23  return dPhi;
24 }
25 
26 float deltaR(float eta1, float phi1, float eta2, float phi2)
27 {
28  float dEta, dPhi;
29  dEta = eta1 - eta2;
30  dPhi = deltaPhi(phi1, phi2);
31  return sqrt(dEta * dEta + dPhi * dPhi);
32 }
33 
34 template <typename T> std::string number_to_string(T param_)
35 {
37  if (param_ < 0)
38  {
39  str += "M";
40  param_ = std::abs(param_);
41  }
42  str += std::to_string(param_);
43  std::size_t found = str.find('.');
44  if (found == std::string::npos)
45  return str;
46  str.replace(found, 1, "p");
47  while (*(str.end() - 1) == '0' && *(str.end() - 2) != 'p' && !str.empty())
48  str.erase(str.end() - 1);
49  if (*(str.end() - 1) == '0' && *(str.end() - 2) == 'p')
50  str.erase(str.size() - 2, 2);
51  return str;
52 }
53 
54 // MVTX stave position
55 vector<tuple<float, float, float, float>> MVTXStavePositionXY()
56 {
57  vector<tuple<float, float, float, float>> v; // x1, y1, x2, y2
58  TFile *f = new TFile("./MVTX_geo.root", "READ");
59  f->cd();
60  TTree *t = (TTree *)f->Get("tree");
61  float x1, y1, x2, y2;
62  t->SetBranchAddress("x1", &x1);
63  t->SetBranchAddress("y1", &y1);
64  t->SetBranchAddress("x2", &x2);
65  t->SetBranchAddress("y2", &y2);
66 
67  for (int i = 0; i < t->GetEntries(); i++)
68  {
69  t->GetEntry(i);
70 
71  v.push_back(make_tuple(x1, y1, x2, y2));
72  }
73 
74  return v;
75 }
76 
77 #endif