SmearTraj
class description - source file - inheritance tree
private:
Bool_t checkInside(SmearVolume* pCur)
Int_t circleIntersect(Double_t rv, Double_t* p1, Double_t* p2)
void makeHelixQuantities(Double_t fld)
Double_t phaseChange(Double_t newX, Double_t newY)
Double_t pythagMinus(Double_t x, Double_t y)
Double_t pythagPlus(Double_t x, Double_t y)
Double_t QuadRoot(Double_t a, Double_t b, Double_t c, Bool_t* status)
public:
SmearTraj SmearTraj()
SmearTraj SmearTraj(SmearTraj&)
void ~SmearTraj()
TClass* Class()
Int_t GetCharge()
McPart* GetMc()
Int_t GetMcIx()
Double_t* GetNewMom()
Double_t* GetNewPos()
Double_t GetS()
SmearTraj::PropagateRet HelixPath(Double_t fld, Double_t s)
SmearTraj::PropagateRet HelixToCyl(SmearVolume* pCur, Double_t* pS)
virtual TClass* IsA()
SmearTraj::PropagateRet LinePath(Double_t s)
SmearTraj::PropagateRet LineToCyl(SmearVolume* pCur, Double_t* pS)
void SetParticle(McPart* pPart, Int_t ix)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void Update()
private:
McPart* pPart ptr to particle to be smeared
Int_t particleIx index of part. to be smeared (in list of same)
Int_t q charge
Double_t iP[3] position at starting point
Double_t iM[3] mom. at starting point
Double_t newP[3] position after calling a swim routine
Double_t newM[3] mom. after calling a swim routine
Double_t momMag Magnitude of momentum
Double_t xyMomMag Mag. of momentum projected to xy-plane
Double_t sinLambda
Double_t cosLambda
Double_t rad radius of helix projected to xy-plane
Double_t radQ ..take into account sign of q
Double_t xCenter
Double_t yCenter ... of helix circle
Double_t fieldCnv Parameter derived from mag. field
Double_t deltaS delta path length for last piece of propagation
Double_t totalS (geometrical) path length traversed by particle
public:
static const SmearTraj::PropagateRet INTERSECT_CYLIN
static const SmearTraj::PropagateRet INTERSECT_ZMINUS
static const SmearTraj::PropagateRet INTERSECT_NONE
static const SmearTraj::PropagateRet INTERSECT_ZPLUS
static const SmearTraj::PropagateRet INTERSECT_CYLOUT
static const SmearTraj::PropagateRet INTERSECT_XYMOM
static const SmearTraj::PropagateRet INTERSECT_UNCHARGED
static const SmearTraj::PropagateRet INTERSECT_PATHOK
static const SmearTraj::PropagateRet INTERSECT_ERROR
SmearTraj
This class does the work of propagating particles.
void SetParticle(McPart* pP, Int_t partIx)
Compute and cache some information about this particle
void Update()
Invoke this routine when the result of the last request to propagate is
is deemed OK.
void makeHelixQuantities(Double_t fld)
For a given field (and momementum magnitude of particle which,
for current implementation, is constant throughoutn its life)
compute and store some useful quantities.
Double_t QuadRoot(const Double_t a, const Double_t b,
const Double_t c, Bool_t* status)
Utility used when swimming linearly to cylinder. Return
Smallest positive root, if any.
Int_t circleIntersect(Double_t rv, // radius of cylinder
Double_t p1[], // (x,y) of 1st solution
Double_t p2[]) // (x,y) of 2nd solution
This utility is used by SmearTraj::HelixToCy.
Given two circles, one centered about the origin, find their points of
intersection. The return value is the number of solutions found.
In this application, one circle is the (xy-projection) of a volume
boundary, always centered about the origin. The other the helix which
is typically not centered about the origin.
This algorithm is due to Rasmus Munk Larsen.
Double_t phaseChange(Double_t newX, Double_t newY)
Return change in phase needed to get to (newX, newY) from
initial position
Double_t pythagPlus(const Double_t x, Double_t y)
Compute sqrt(x*x + y*y) in maximally stable fashion
Double_t pythagMinus(const Double_t x, Double_t y)
Compute sqrt(x*x - y*y) maximally stable fashion
Inline Functions
SmearTraj SmearTraj()
SmearTraj::PropagateRet HelixPath(Double_t fld, Double_t s)
SmearTraj::PropagateRet LinePath(Double_t s)
SmearTraj::PropagateRet HelixToCyl(SmearVolume* pCur, Double_t* pS)
SmearTraj::PropagateRet LineToCyl(SmearVolume* pCur, Double_t* pS)
Double_t* GetNewPos()
Double_t* GetNewMom()
Int_t GetCharge()
Double_t GetS()
McPart* GetMc()
Int_t GetMcIx()
Bool_t checkInside(SmearVolume* pCur)
TClass* Class()
TClass* IsA()
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
SmearTraj SmearTraj(SmearTraj&)
void ~SmearTraj()
ROOT page - Class index - Top of the page
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.