#ifndef ROOT_THaOpticsAnalytical
#define ROOT_THaOpticsAnalytical
#include "THaOptics.h"
#include "TMath.h"
#include "TComplex.h"
class THaTrack;
class THaSpectrometer;
class TVector3;
class TString;
class THaBeam;
#ifdef DEBUG_LEVEL
# undef DEBUG_LEVEL
#endif
#define DEBUG_LEVEL 2
#include "DebugDef.h"
class THaOpticsAnalytical : public THaOptics
{
public:
THaOpticsAnalytical(const char* name, const char* desc, THaSpectrometer *pspec, TString strBeamDetectorName="");
virtual ~THaOpticsAnalytical();
using THaOptics::ApplyOptics;
virtual Int_t ApplyOptics(
Double_t trackX,
Double_t trackY,
Double_t trackTheta,
Double_t trackPhi,
TVector3 beamPos,
TVector3 beamDir,
TVector3 &P,
TVector3 &Vertex,
Double_t &TargetX,
Double_t &TargetY,
Double_t &TargetTheta,
Double_t &TargetPhi,
Double_t &PathLen
);
public:
Double_t CalxA(
Double_t xB,
Double_t zB,
Double_t TanF,
Double_t xx,
Double_t zz
);
Double_t CalR(
Double_t xA,
Double_t xB,
Double_t zB,
Double_t TanF,
Double_t xx,
Double_t zz
);
Double_t SetRCentral();
public:
static inline TComplex CSqrt(Double_t x)
{return TComplex::Sqrt(TComplex(x,0));}
static inline TComplex CSqrt(TComplex x)
{ return TComplex::Sqrt(x); }
static inline Double_t Power(Double_t x, Double_t y)
{ return TMath::Power(x, y); }
static inline TComplex Power(TComplex x, Double_t y)
{ return TComplex::Power(x, y); }
static inline TComplex Complex(Double_t re,Double_t im)
{return TComplex(re,im);}
protected:
virtual Int_t ReadDatabase( const TDatime& date );
public:
inline Double_t GetMagneticFieldFrontShift() {return fMagDL;}
inline Double_t GetMagneticFieldRearSlopeAngle() {return fMagTheta;}
inline Double_t GetMagneticFieldTopCrossing() {return fMagS;}
inline Double_t GetCurveRadiusOfCentralMomentum() {return fRCentral;}
inline Double_t SetMagneticFieldFrontShift(Double_t v) {return fMagDL=v;}
inline Double_t SetMagneticFieldRearSlopeAngle(Double_t v) {return fMagTheta=v;}
inline Double_t SetMagneticFieldTopCrossing(Double_t v) {return fMagS=v;}
inline Double_t SetCurveRadiusOfCentralMomentum(Double_t v) {return fRCentral=v;}
protected:
Double_t fMagDL;
Double_t fMagTheta;
Double_t fMagS;
Double_t fRCentral;
Double_t fRadius2Momentum;
public:
# if DEBUG_LEVEL>1
void Fitter(TString sInputFileName);
# endif
private:
ClassDef(THaOpticsAnalytical,0);
};
#endif
Last update: Tue Jul 7 19:26:17 2009
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.