#ifndef _BFIELD_PROP_H_ #define _BFIELD_PROP_H_ /* * ---- Delphes ---- * A Fast Simulator for general purpose LHC detector * S. Ovyn ~~~~ severine.ovyn@uclouvain.be * * Center for Particle Physics and Phenomenology (CP3) * Universite Catholique de Louvain (UCL) * Louvain-la-Neuve, Belgium * */ #include "TLorentzVector.h" #include "SmearUtil.h" #include "BlockClasses.h" #include "TSimpleArray.h" using namespace std; class TrackPropagation { public: // Constructor TrackPropagation(); TrackPropagation(const string& DetDatacard); TrackPropagation(const RESOLution * DetDatacard); TrackPropagation(const TrackPropagation & tp); TrackPropagation& operator=(const TrackPropagation & tp); ~TrackPropagation() {delete DET;}; void init(); // for constructors // Propagation and bfield are very similar. At the end, after code cleaning, // onle bfield will remain in this class void Propagation(const TRootGenParticle *Part,TLorentzVector &genMomentum); void bfield(const TRootGenParticle *Part, float& etacalo, float& phicalo); private: unsigned int MAXITERATION; RESOLution *DET; /// radial/longitudinal extensions of magnetic field volume double R_max, z_max; /// magnetic field components double B_x, B_y, B_z; /// particle charge double q; /// initial coordinate double phi_0; /// relativistic gamma \times m double gammam; /// giration frequency and radius double omega, r; /// center of the helix in the transverse plane double x_c, y_c, R_c, Phi_c; // variable for an intermediate computing double rr; /// times for exiting the magnetic field volume double t, t_z, t_T; /// coordinates of the exit point double x_t, y_t, z_t, R_t, Phi_t, Theta_t, Eta_t; /// energy-momentum of the exit point [Gev] et c=1 double Px_t, Py_t, Pz_t, PT_t, p_t, E_t; unsigned int loop_overflow_counter; }; #endif