Create a lattice around mu, sigma
This commit is contained in:
		
							parent
							
								
									2cb63ce971
								
							
						
					
					
						commit
						eeca7819af
					
				| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue