Create a lattice around mu, sigma

This commit is contained in:
Reka Korei 2017-11-02 12:54:10 +01:00
parent 2cb63ce971
commit eeca7819af
2 changed files with 123 additions and 0 deletions

49
include/Lattice.hh Normal file
View File

@ -0,0 +1,49 @@
#ifndef Lattice_h
#define LAttice_h 1
#include <iostream>
#include <string>
#include <fstream>
#include <cmath>
#include "TMath.h"
//////////////////////////////////////////////////////////
// //
// Create a lattice around the estimated mu, sigma //
// //
//////////////////////////////////////////////////////////
typedef struct {
Double_t mu = 0.0;
Double_t sigma = 0.0;
}MuSigma;
class Lattice{
public:
Lattice();
~Lattice();
void SetNop(Int_t num);
void SetPercent(Int_t num);
void SetLattice(Double_t mu_est, Double_t sigma_est);
MuSigma GetMuSigma(Int_t index);
private:
Int_t _nop; //number of points in [mu-_percent; mu+_percent]
Double_t _percent;
std::vector<MuSigma> ms_vect;
};
#endif

74
src/Lattice.cc Normal file
View File

@ -0,0 +1,74 @@
#include "Lattice.hh"
Lattice::Lattice() : _nop(100), _percent(0.2){;}
Lattice::~Lattice(){;}
void Lattice::SetNop(Int_t num){
_nop = num;
}
void Lattice::SetPercent(Int_t num){
if((num > 1) && (num <= 100))
_percent = num/100.0;
else
std::cout << "Invalid value for percent, set to default" << std::endl;
}
MuSigma Lattice::GetMuSigma(Int_t index){
return ms_vect[index];
}
void Lattice::SetLattice(Double_t mu_est, Double_t sigma_est){
Double_t loc_sigma, loc_mu;
Double_t sigmin, sigmax, mumin, mumax;
Double_t ds, dm;
mumax = mu_est + mu_est*_percent;
mumin = mu_est - mu_est*_percent;
sigmax = sigma_est + sigma_est*_percent;
sigmin = sigma_est - sigma_est*_percent;
dm = (mumax-mumin) / _nop;
ds = (sigmax-sigmin) / _nop;
loc_mu = mumin;
loc_sigma = sigmin;
int i = 0;
while(loc_mu <= mumax){
ms_vect.push_back(MuSigma());
ms_vect[i].mu = loc_mu;
ms_vect[i].sigma = loc_sigma;
i++;
loc_mu += dm;
loc_sigma += ds;
}
}