#include "hmdcsizescells.h" |
HMdcSizesCells
class description - source file - inheritance tree (.pdf)
protected:
HMdcSizesCells()
~HMdcSizesCells()
Bool_t fillCont(Int_t sec)
Bool_t fillTargetPos(HGeomVector* targetShift = 0)
public:
HMdcSizesCells(const HMdcSizesCells&)
static void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t& zm, Double_t& r0, Double_t& theta, Double_t& phi)
static void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2, Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2, Double_t& zm, Double_t& eZm, Double_t& r0, Double_t& eR0, Double_t& theta, Double_t& eTheta, Double_t& phi, Double_t& ePhi)
static void calcRZToLineXY(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t xBeam, Double_t yBeam, Double_t& zm, Double_t& r0)
void calcRZToTargLine(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t& zm, Double_t& r0) const
static TClass* Class()
void clear()
static void copyTransfToArr(const HGeomTransform& trans, Double_t* arr)
static void deleteCont()
Bool_t fillModCont(Int_t sec, Int_t mod, HGeomTransform* alignTrans = 0, Int_t sysOfAlignTrans = 0)
Bool_t fillModCont(Int_t sec, Int_t mod, Double_t* corr)
Char_t findReadOutSide(Int_t s, Int_t m, Int_t l, Int_t c) const
Bool_t getCellVol(Int_t sec, Int_t mod, Int_t lay, Int_t cell, HMdcTrap& volCell, Double_t sizeFactor = -1.) const
static HMdcSizesCells* getExObject()
Int_t getNumOfTargets() const
static HMdcSizesCells* getObject()
Int_t getSize() const
const HGeomVector& getTargetFirstPoint() const
const HGeomVector& getTargetLastPoint() const
const HGeomVector& getTargetMiddlePoint() const
HGeomVector* getTargets()
Bool_t hasChanged() const
Bool_t initContainer()
virtual TClass* IsA() const
Bool_t modStatus(Int_t s, Int_t m) const
Int_t nModInSeg(Int_t s, Int_t seg) const
HMdcSizesCells& operator=(const HMdcSizesCells&)
HMdcSizesCellsSec& operator[](Int_t i) const
void setNotGeomModified()
static void setTransform(Double_t* par, HGeomTransform& trans)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
protected:
static HMdcSizesCells* fMdcSizesCells
HMdcGetContainers* fGetCont
HMdcLayerGeomPar* fLayerGeomPar
Int_t verLayerGeomPar[3]
HMdcGeomPar* fGeomPar
Int_t verGeomPar[3]
HMdcDetector* fMdcDet
Bool_t mdcStatus[6][4] kTRUE - mdc exist
Int_t nModsSeg[6][2] number of mdc per segment
HMdcGeomStruct* fMdcGeomStruct
HMdcLookupRaw* fMdcLookupRaw
Int_t verLookupRaw[3]
HMdcRawStruct* fMdcRawStruct
HSpecGeomPar* fSpecGeomPar
TObjArray* array array of pointers to HMdcSizesCellsSec
Bool_t changed kTRUE if HMdcSizesCells was recalculated
Bool_t geomModified kTRUE if mdc geometry was changed by user
Int_t numTargets number of targets
HGeomVector* targets targets
HGeomVector targ3p[3] [0] First point of target in lab.sys.
HMdcSizesCells
HMdcSizesCellsSec
HMdcSizesCellsMod
HMdcSizesCellsLayer
HMdcSizesCellsCell
Creating the container and geting the pointer to cont.:
HMdcSizesCells* fSizesCells=HMdcSizesCells::getObject();
Geting the pointer to cont. (without creating):
HMdcSizesCells* fSizesCells=HMdcSizesCells::getExObject();
Deleting of container:
HMdcSizesCells::deleteCont();
Container class keep volumes sizes of wires (2-points/wire)
in coordinate system of sector and transformations layer<->mod,
layer<->sec, ...
It has same useful functions:
HMdcSizesCellsCell
Float_t getWireLength(void)
HMdcSizesCellsLayer:
HGeomTransform* getSecTrans();
HGeomTransform* getModTrans();
void transSecToRotLayer(HGeomVector& point);
Double_t getAlpha(const HGeomVector& p1, const HGeomVector& p2);
Double_t getDist(const HGeomVector& p1,
const HGeomVector& p2, Int_t cell);
void getImpact(const HGeomVector& p1, const HGeomVector& p2,
Int_t cell, Double_t &alpha, Double_t &per);
Double_t getImpact(Double_t x1,Double_t y1,Double_t z1,
Double_t x2,Double_t y2,Double_t z2, Int_t cell, Double_t &alphaPerp);
Bool_t getImpact(Double_t x1,Double_t y1,Double_t z1,
Double_t x2, Double_t y2, Double_t z2,
Int_t cell, Double_t &alphaDrDist, Double_t &driftDist);
Int_t getCellNum(Double_t x, Double_t y):
calculation the the cell number for the point x,y
on the wire plane. (x,y - in coor. sys. of layer, z=0)
Double_t getXSign(Double_t x1, Double_t y1, Double_t z1,
Double_t x2, Double_t y2, Double_t z2, Int_t cell)
Float_t getSignPath(Double_t x1,Double_t y1,Double_t z1,
Double_t x2, Double_t y2, Double_t z2, Int_t cell);
Float_t getSignPath(Double_t x1,Double_t y1,Double_t z1,
Double_t x2, Double_t y2, Double_t z2, Int_t cell, Float_t& outside);
HMdcSizesCellsMod:
HGeomTransform* getSecTrans();
HMdcSizesCellsSec:
HGeomTransform* getLabTrans();
HMdcSizesCells:
Bool_t getCellVol(Int_t sec, Int_t mod, Int_t lay,
Int_t cell, HMdcTrap& volCell);
Char_t findReadOutSide(Int_t s,Int_t m,Int_t l,Int_t c)
HMdcSizesCells(void)
constructor creates an array of pointers of type HMdcSizesCellsSec
~HMdcSizesCells(void)
destructor
Bool_t initContainer(void)
HMdcSizesCells* getObject(void)
void deleteCont(void)
HMdcSizesCells* getExObject(void)
Int_t getSize(void) const
return the size of the pointer array
void clear(void)
clears the container
Bool_t fillCont(Int_t sec)
calculation of the container HMdcSizesCells
with wire's sizes (2-pint) in coordinate system of sector.
Bool_t fillModCont(Int_t sec, Int_t mod,
HGeomTransform * alignTrans, Int_t sysOfAlignTrans)
filling HMdcSizesCellsMod, HMdcSizesCellsLayer, HMdcSizesCellsCell
objects for MDC module "mod" in sector "sec".
if alignTrans>0 - correction of mdc position (must be done after
filling HMdcSizesCells!)
sysOfAlignTrans =0 transform mdc coor.sys. by "alignTrans" respect
coor.sys.of sector
=1 transform mdc coor.sys. by "alignTrans" respect
coor.sys.of mdc module
=2 transform mdc coor.sys. by "alignTrans" respect
lab.coor.sys.
Bool_t fillModCont(Int_t sec, Int_t mod, Double_t * corr)
filling HMdcSizesCellsMod, HMdcSizesCellsLayer, HMdcSizesCellsCell
objects for MDC module "mod" in sector "sec"
Bool_t getCellVol(Int_t sec,Int_t mod,Int_t lay,Int_t cell,
HMdcTrap& volCell, Double_t sizeFactor) const
Return the cell volume as HMdcTrap (8 points) in sector(!) coordinate sys..
Use "sizeFactor" param. for drawing purpose only.
This parameter increase Y and Z cell size on this factor.
Char_t findReadOutSide(Int_t s,Int_t m,Int_t l,Int_t c) const
Function to get the side from which the corresponding wire is read out.
Function return values are '1' for left, '2' for right, '3' for top
and '0' for GEANT data and not connected wires.
Bool_t fillTargetPos(HGeomVector* targetShift)
Filling target parameters
void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1,
Double_t x2, Double_t y2, Double_t z2,
Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2,
Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2,
Double_t& zm, Double_t& eZm, Double_t& r0, Double_t& eR0,
Double_t& theta, Double_t& eTheta, Double_t& phi, Double_t& ePhi)
Calcul. a HMdcSeg hit.
Input and output are in sector coor.sys.
theta=atan(sqrt(dX*dX+dY*dY)/dZ); phi=atan(dY/dX)
zm= z1 - cos(theta)/sin(theta) * (x1*cos(phi)+y1*sin(phi))
r0=y1*cos(phi)-x1*sin(phi)
If (x1,y1,z1)=(x2,y2,z2) dZ will eq.1.!
Input param:
x1,y1,z1 - target or point on plane
x2,y2,z2 - point on plane
eX1,eY1,eZ1, eX2,eY2 - errors (eZ2=0!)
dZ2dX2 = -A2 where A2 - plane param. (z2=D2-A2*x2+B2*y2)
dZ2dY2 = -B2 where B2 - plane param. (z2=D2-A2*x2+B2*y2)
If P1-on plane
eZ1=0;
dZ1dX1 = -A1 where A1 - plane param. (z1=D1-A1*x1+B1*y1)
dZ1dY1 = -B1 where B1 - plane param. (z1=D1-A1*x1+B1*y1)
If P1-target:
dZ1dX1 = dZ1/dY1 = 0;
void calcRZToTargLine(Double_t x1, Double_t y1, Double_t z1,
Double_t x2, Double_t y2, Double_t z2,
Double_t &zm, Double_t &r0) const
Input and output are in lab.sys.
calcRZToLineXY(x1,y1,z1,x2,y2,z2,
targ3p[2].getX(),targ3p[2].getY(),zm,r0);
}
void HMdcSizesCells::calcRZToLineXY(Double_t x1, Double_t y1, Double_t z1,
Double_t x2, Double_t y2, Double_t z2,
Double_t xBeam, Double_t yBeam, Double_t &zm, Double_t &r0)
zm= z1 - cos(theta)/sin(theta) * ((x1-xBeam)*cos(phi)+(y1-yBeam)*sin(phi))
r0=(y1-yBeam)*cos(phi)-(x1-xBeam)*sin(phi)
If (x1,y1,z1)=(x2,y2,z2) dZ will eq.1.!
void setTransform(Double_t* par, HGeomTransform& trans)
Filling HGeomTransform object by 6 parameters
par[0] - shift along X
par[1] - shift along Y
par[2] - shift along Z
par[3] - rotation around X (in degree)
par[4] - rotation around Y (in degree)
par[5] - rotation around Z (in degree)
void copyTransfToArr(const HGeomTransform& trans,
Double_t* arr)
Copy trans to array
Array size must be eq. or more 12!
Inline Functions
HMdcSizesCellsSec& operator[](Int_t i) const
Bool_t hasChanged() const
void calcMdcSeg(Double_t x1, Double_t y1, Double_t z1, Double_t x2, Double_t y2, Double_t z2, Double_t eX1, Double_t eY1, Double_t eZ1, Double_t eX2, Double_t eY2, Double_t dZ1dX1, Double_t dZ1dY1, Double_t dZ2dX2, Double_t dZ2dY2, Double_t& zm, Double_t& eZm, Double_t& r0, Double_t& eR0, Double_t& theta, Double_t& eTheta, Double_t& phi, Double_t& ePhi)
Bool_t modStatus(Int_t s, Int_t m) const
Int_t nModInSeg(Int_t s, Int_t seg) const
const HGeomVector& getTargetFirstPoint() const
const HGeomVector& getTargetMiddlePoint() const
const HGeomVector& getTargetLastPoint() const
Int_t getNumOfTargets() const
HGeomVector* getTargets()
void setNotGeomModified()
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
HMdcSizesCells HMdcSizesCells(const HMdcSizesCells&)
HMdcSizesCells& operator=(const HMdcSizesCells&)
Last update: Fri Jan 26 12:14:47 2007
ROOT page - Class index - Class Hierarchy - 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.