#include "TMath.h" #include "Peak.h" #include "Database.h" #include #include #include extern database db; using namespace std; Peak::Peak(int peak) { clear(); z_peak = db.peak_1[peak]; sieve_y_peak = db.peak_2[peak]; sieve_x_peak = db.peak_3[peak]; } Peak::Peak(int pkz, int pky) { clear(); z_peak = db.zpeak[pkz]; sieve_y_peak = db.ysievpeak[pky]; sieve_x_peak = 100000.00; } // void Peak::clear() // { // L = realD = vert_realD = z_goodpeak = xtg = th_rad // = y_1 = y_2 = l_1 = 0.0; // } // double Peak::calc_x_tg(double beamx, double beamy) const // { // // double L = db.sp[db.hit_arm[1]].dsiev; // double th_tmp = sieve_x_peak / L; // double x_tmp = -th_tmp*z_goodpeak*cos(th_rad)/cos(phipeak())-beamy; // th_tmp = (sieve_x_peak - x_tmp) / L; // return -th_tmp*z_goodpeak*cos(th_rad)/cos(phipeak())-beamy; // } // void Peak::set(double beamx, double beamy, double x) // { // L = db.sp[db.hit_arm[1]].dsiev; // th_rad = db.sp[db.hit_arm[1]].th*TMath::Pi()/180.; // realD = db.D - beamx/cos(th_rad) ; // vert_realD = beamy +db.vert_D; // z_goodpeak = z_peak + beamx // *(tan(th_rad) + (1./tan((db.target_angle)*TMath::Pi()/180.)) ); // y_2 = -z_goodpeak * sin(th_rad); // l_1 = z_goodpeak * cos(th_rad); // y_1 = -(sieve_y_peak + realD - y_2)*l_1 / (L - l_1); // xtg = x; // } //========================================================= // Modified by Yi, Optimized x calculation void Peak::clear() { L = xtg = th_rad = y_1 = l_1 = 0.0; } double Peak::calc_x_tg(double beamx, double beamy) const { return sieve_x_peak - L * tmp_th; } void Peak::set(double beamx, double beamy, double x) { L = db.sp[db.hit_arm[1]].dsiev; th_rad = db.sp[db.hit_arm[1]].th*TMath::Pi()/180.; y_1 = beamx * cos(th_rad)- z_peak * sin(th_rad); l_1 = -z_peak * cos(th_rad) - beamx * sin(th_rad); xtg = x; tmp_th = (sieve_x_peak + db.vert_D +beamy)/(L+l_1); tmp_ph = (sieve_y_peak + db.D - y_1)/(L+l_1); } double Peak::ypeak() const { return sieve_y_peak - L * tmp_ph; } double Peak::phipeak() const { return tmp_ph; } double Peak::thetapeak() const { return tmp_th; } //============================================================= // double Peak::ypeak() const // { // return y_1 + y_2 - realD; // } // double Peak::phipeak() const // { // return (sieve_y_peak - ypeak()) / L; // } // double Peak::thetapeak() const // { // return (sieve_x_peak - xtg) / L; // } const char* Peak::id() const { return "$Id: Peak.cpp,v 1.6 2004/02/04 22:51:03 ole Exp $"; }