135 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
/**
 | 
						|
 * @file event.hh
 | 
						|
 * @author Christoph Langenbruch, Renata Kopecna
 | 
						|
 * @date 2009-03-18
 | 
						|
 *
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef EVENT_H
 | 
						|
#define EVENT_H
 | 
						|
 | 
						|
#include <string>
 | 
						|
#include <vector>
 | 
						|
 | 
						|
namespace fcnc { //Forward declaration, fully defined in options.hh
 | 
						|
    class options;
 | 
						|
}
 | 
						|
 | 
						|
namespace fcnc {
 | 
						|
 | 
						|
  //  typedef event_type enum {};
 | 
						|
///The event class stores the different event quantities needed to extract the physically interesting parametes in the likelihood fit.
 | 
						|
class event {
 | 
						|
public: 
 | 
						|
  //save the year into each event
 | 
						|
  int year;
 | 
						|
  ///the mass used to separate signal and background 
 | 
						|
  double m;
 | 
						|
  ///the error on the measured mass 
 | 
						|
  double sigma_m;
 | 
						|
  //the reconstructed mass of the K*+
 | 
						|
  double mkpi;
 | 
						|
  ///set in the toy data generation to distinguish background from signal in the plots 
 | 
						|
  int event_type;
 | 
						|
  /// magnet polarity (down = -1 and up = +1)
 | 
						|
  int magnet;
 | 
						|
  ///costhetal
 | 
						|
  double costhetal;
 | 
						|
  ///costhetak
 | 
						|
  double costhetak;
 | 
						|
  ///phi
 | 
						|
  double phi;
 | 
						|
  //full angular angles that are saved even after folding
 | 
						|
  double costhetal_fa;
 | 
						|
  double costhetak_fa;
 | 
						|
  double phi_fa;
 | 
						|
  ///weight
 | 
						|
  double weight;
 | 
						|
  double delta_weight;
 | 
						|
  double max_mu_pt;
 | 
						|
  double kaon_pt;
 | 
						|
  ///xis
 | 
						|
  //double xis[18];
 | 
						|
  //float xis[18];
 | 
						|
  ///q2
 | 
						|
  double q2;
 | 
						|
  ///from opening angle of leptons:
 | 
						|
  double pseudo_q2;
 | 
						|
  ///p2
 | 
						|
  double p2;
 | 
						|
  ///cp_conjugate (B) or not (Bbar)
 | 
						|
  bool cp_conjugate;
 | 
						|
  double sweight;
 | 
						|
  double mjpsipi;
 | 
						|
  event(): 
 | 
						|
    year(2000),
 | 
						|
    m(0.0),
 | 
						|
    sigma_m(0.0),
 | 
						|
    mkpi(892.0),
 | 
						|
    event_type(0),
 | 
						|
    magnet(0),
 | 
						|
    costhetal(0.0),
 | 
						|
    costhetak(0.0),
 | 
						|
    phi(0.0),
 | 
						|
    costhetal_fa(0.0),
 | 
						|
    costhetak_fa(0.0),
 | 
						|
    phi_fa(0.0),
 | 
						|
    weight(1.0),
 | 
						|
    delta_weight(0.0),
 | 
						|
    max_mu_pt(0.0),
 | 
						|
    kaon_pt(0.0),
 | 
						|
    //norm(1.0),
 | 
						|
    q2(0.0),
 | 
						|
    pseudo_q2(0.0),
 | 
						|
    cp_conjugate(false),
 | 
						|
    sweight(1.0)
 | 
						|
  {
 | 
						|
    // xis[0] = 3.0/2.0;
 | 
						|
    // xis[1] = 3.0/4.0;
 | 
						|
    // xis[2] = -1.0/2.0;
 | 
						|
    // xis[3] = -1.0/4.0;
 | 
						|
    // xis[4] = 0.0;
 | 
						|
    // xis[5] = 0.0;
 | 
						|
    // xis[6] = 0.0;
 | 
						|
    // xis[7] = 0.0;
 | 
						|
    // xis[8] = 0.0;
 | 
						|
    // xis[9] = 0.0;
 | 
						|
    // xis[10] = 0.0;
 | 
						|
    // xis[11] = 0.0;
 | 
						|
    // xis[12] = 1.0;
 | 
						|
    // xis[13] = 0.0;
 | 
						|
    // xis[14] = 0.0;
 | 
						|
    // xis[15] = 0.0;
 | 
						|
    // xis[16] = 0.0;
 | 
						|
    // xis[17] = 0.0;
 | 
						|
  };
 | 
						|
 | 
						|
  //reset folded angles back to full angular
 | 
						|
  void reset_angles()
 | 
						|
  {
 | 
						|
      costhetal = costhetal_fa;
 | 
						|
      costhetak = costhetak_fa;
 | 
						|
      phi = phi_fa;
 | 
						|
  };
 | 
						|
  
 | 
						|
};
 | 
						|
 | 
						|
///print the quantities of event meas 
 | 
						|
  void print_event(const event& meas);
 | 
						|
  void save_events(std::string filename, const std::vector<event>& events);
 | 
						|
  void save_eos_events(std::string filename, const std::vector<event>& events);
 | 
						|
  std::vector<event> filterResonances(std::vector<event> events);
 | 
						|
  std::vector<event> load_events(std::string filename, std::string treename="Events", int neventsmax = -1);
 | 
						|
 | 
						|
  ///convert between different angular conventions
 | 
						|
  void lhcbtotheory(const bool bzero, const double ctl_lhcb, const double ctk_lhcb, const double phi_lhcb, double& ctl_th, double& ctk_th, double& phi_th);
 | 
						|
  void theorytolhcb(const bool bzero, const double ctl_th, const double ctk_th, const double phi_th, double& ctl_lhcb, double& ctk_lhcb, double& phi_lhcb);
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
int convert_tuples(int job_id, std::string theFCNCpath, fcnc::options opts, std::vector<int> years);
 | 
						|
 | 
						|
std::vector<fcnc::event> merge_two_evtVecs(std::vector<fcnc::event> one, std::vector<fcnc::event> two);
 | 
						|
 | 
						|
#endif
 |