icemc
Tools.h
Go to the documentation of this file.
1 //namespace Tools:
4 
5 #ifndef TOOLS_H_
6 #define TOOLS_H_
7 
8 #include "TRandom3.h"
9 #include <vector>
10 
11 // c++ libraries thingies
12 #include <map>
13 #include <algorithm>
14 #include <iostream>
15 #include <fstream>
16 
17 // ROOT
18 #include "TGraph.h"
19 #include "TROOT.h"
20 #include "TMath.h"
21 #include "TString.h"
22 #include "TSystem.h"
23 #include "TMath.h"
24 #include "Math/Interpolator.h"
25 #include "Math/InterpolationTypes.h"
26 
27 //using std::string;
28 //using std::vector;
29 
30 using namespace std;
31 
32 class TSpline5;
33 class TH1;
34 class TGraph;
35 class TH2F;
36 class TRandom3;
37 class TTree;
38 
40 namespace Tools {
41  double dMax(double,double);
42  double dMax(const double*,int);
43  double dvMax(const vector<double>);
44  double dsMax(TSpline5 *sp);
45  double dMin(const double*,int);
46  double dMinNotZero(const double*,int);
47  double dMin(double,double);
48  double getMaxMagnitude(vector<double> v);
49  int Getifreq(double freq,double freq_low,double freq_high,int n);
50  void InterpolateReal(double* array, const unsigned n);
51  void InterpolateComplex(double *array, const unsigned n);
52 
53  void four1(double *data, const int isign,int nsize);
54  void realft(double *data, const int isign, int nsize);
55 
56  void SWAP(double &a, double &b);// swaps two numbers
57  void NormalTimeOrdering(const int n,double *volts);
58  void reverseTimeOrdering(const int n,double *bitsin,double *bitsout);
59  void reverseTimeOrdering(const int n,int *bitsin,int *bitsout);
60 
61  void ShiftLeft(double *x,const int n,int ishift);
62  void ShiftRight(double *x,const int n,int ishift);
63  double GetFWHM(TH1 *h1);
64  void MakeGraph(int index, int n,double *time,double *volts,TGraph *&mygraph,TH2F *&h2, double scalex,double scaley,string xaxistitle,string yaxistitle);
65 
66  double dDot(double*,double*,int);
67  void dCross(double*,double*,double*);
68  double dSquare(double*);
69  double Step(double x);
70  double dGetTheta(double*);
71  double dGetPhi(double*);
72  int WhichIsMax(double *x,int n);
73  int WhichIsMin(double *x,int n);
74 
75  double dSum(double*,int);
76  int iSum(int*,int);
77  void Print(double*,int);
78  void Print(int*,int);
79  void Zero(double *anarray,int n);
80  void Zero(int *anarray,int n);
81  int NonZero(double *anarray,int n); // how many bins are nonzero
82  void GetNumbersAsStringArray(ifstream& fin, ofstream& fout,vector<string>& vnumbers, int nelements);
83  void GetNext2NumbersAsString(ifstream& fin,ofstream& fout,string& number1,string& number2, string& stherest);
84  void GetNextNumberAsString(ifstream& fin,ofstream& fout,string& number);
85 
86  int findIndex(double *freqlab,double freq,int npoints,double min,double max); // this is the same thing but more general
87  void get_random_rician(double signal, double signal_phase, double sigma, double& amplitude, double &phase);
88  void get_circular_bivariate_normal_random_variable(double& rand_gauss_a, double& rand_gauss_b);
89  int round(double number);
90 
91  double AbbyPhiCalc(double x_abby, double y_abby);
92 
93  TGraph *getInterpolatedGraph(TGraph *grIn, Double_t deltaT);
94 
95  double calculateSNR(double justSig[512], double justNoise[512]);
96 
107  void ConvertHVtoLRTimedomain(const int nfour,double *vvolts,
108  double *hvolts,
109  double *left,double *right);
110 
111 
112  template <class T, class U> void vector_element_convert(const vector<T>& input, vector<U>& output){
113  output.clear();
114  for (unsigned int index = 0; index < input.size(); index++){
115  output.push_back(U (input[index]));
116  }
117  }
118 
119  template <class T, class U> void nested_vector_element_convert(const vector< vector<T> >& input, vector< vector<U> >& output){
120  output.clear();
121  for (unsigned int index = 0; index < input.size(); index++){
122  vector<U> temp;
123  vector_element_convert<T,U>(input[index], temp);
124  output.push_back(temp);
125  }
126  }
127 };
128 #endif
double dMin(double, double)
Definition: Tools.cc:383
void NormalTimeOrdering(const int n, double *volts)
Definition: Tools.cc:572
int NonZero(double *anarray, int n)
Definition: Tools.cc:329
int WhichIsMax(double *x, int n)
void reverseTimeOrdering(const int n, int *bitsin, int *bitsout)
Definition: Tools.cc:592
void ShiftRight(double *x, const int n, int ishift)
Definition: Tools.cc:90
TGraph * getInterpolatedGraph(TGraph *grIn, Double_t deltaT)
Definition: Tools.cc:677
int Getifreq(double freq, double freq_low, double freq_high, int n)
Definition: Tools.cc:440
void nested_vector_element_convert(const vector< vector< T > > &input, vector< vector< U > > &output)
Definition: Tools.h:119
void four1(double *data, const int isign, int nsize)
Definition: Tools.cc:154
void Zero(int *anarray, int n)
Definition: Tools.cc:340
void realft(double *data, const int isign, int nsize)
Definition: Tools.cc:106
double dDot(double *, double *, int)
int round(double number)
Definition: Tools.cc:652
void MakeGraph(int index, int n, double *time, double *volts, TGraph *&mygraph, TH2F *&h2, double scalex, double scaley, string xaxistitle, string yaxistitle)
Definition: Tools.cc:18
void InterpolateReal(double *array, const unsigned n)
Definition: Tools.cc:451
double dGetPhi(double *)
double getMaxMagnitude(vector< double > v)
Definition: Tools.cc:64
double AbbyPhiCalc(double x_abby, double y_abby)
Definition: Tools.cc:657
double calculateSNR(double justSig[512], double justNoise[512])
Definition: Tools.cc:728
double GetFWHM(TH1 *h1)
Definition: Tools.cc:291
Functions to make life easier. Many of these probably exist other places.
Definition: Tools.h:40
double dMax(const double *, int)
Definition: Tools.cc:394
void GetNext2NumbersAsString(ifstream &fin, ofstream &fout, string &number1, string &number2, string &stherest)
Definition: Tools.cc:271
void get_circular_bivariate_normal_random_variable(double &rand_gauss_a, double &rand_gauss_b)
Definition: Tools.cc:639
double dSum(double *, int)
Definition: Tools.cc:352
double Step(double x)
void ConvertHVtoLRTimedomain(const int nfour, double *vvolts, double *hvolts, double *left, double *right)
Definition: Tools.cc:746
void GetNextNumberAsString(ifstream &fin, ofstream &fout, string &number)
Definition: Tools.cc:234
int findIndex(double *freqlab, double freq, int npoints, double min, double max)
Definition: Tools.cc:603
void SWAP(double &a, double &b)
Definition: Tools.cc:147
void InterpolateComplex(double *array, const unsigned n)
Definition: Tools.cc:511
double dGetTheta(double *)
int iSum(int *, int)
Definition: Tools.cc:54
void GetNumbersAsStringArray(ifstream &fin, ofstream &fout, vector< string > &vnumbers, int nelements)
Definition: Tools.cc:247
double dMinNotZero(const double *, int)
Definition: Tools.cc:361
void dCross(double *, double *, double *)
int WhichIsMin(double *x, int n)
Definition: Tools.cc:205
void get_random_rician(double signal, double signal_phase, double sigma, double &amplitude, double &phase)
Definition: Tools.cc:619
double dSquare(double *)
Definition: Tools.cc:200
void Print(int *, int)
Definition: Tools.cc:226
double dvMax(const vector< double >)
Definition: Tools.cc:405
void vector_element_convert(const vector< T > &input, vector< U > &output)
Definition: Tools.h:112
void ShiftLeft(double *x, const int n, int ishift)
Definition: Tools.cc:74
double dsMax(TSpline5 *sp)
Definition: Tools.cc:416